ETH Price: $3,777.22 (-1.81%)
Gas: 7 Gwei

Contract

0x4fFbAA89d648079Faafc7852dE49EA1dc92f9976
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Liquidate SAFE149937602022-06-20 0:57:03710 days ago1655686623IN
0x4fFbAA89...dc92f9976
0 ETH0.0074154918.36026949
Remove Authoriza...149745692022-06-16 17:27:50713 days ago1655400470IN
0x4fFbAA89...dc92f9976
0 ETH0.0007039730.4498691
Add Authorizatio...149745372022-06-16 17:20:41713 days ago1655400041IN
0x4fFbAA89...dc92f9976
0 ETH0.0016442434.89488196
Add Authorizatio...149745102022-06-16 17:15:34713 days ago1655399734IN
0x4fFbAA89...dc92f9976
0 ETH0.0017553937.25377791
0x60806040149744062022-06-16 16:48:27713 days ago1655398107IN
 Create: LiquidationEngine
0 ETH0.0766318138.54116245

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LiquidationEngine

Compiler Version
v0.6.7+commit.b8d736ae

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2022-06-16
*/

/// LiquidationEngine.sol

// Copyright (C) 2018 Rain <[email protected]>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity 0.6.7;

abstract contract CollateralAuctionHouseLike {
    function startAuction(
      address forgoneCollateralReceiver,
      address initialBidder,
      uint256 amountToRaise,
      uint256 collateralToSell,
      uint256 initialBid
    ) virtual public returns (uint256);
}
abstract contract SAFESaviourLike {
    function saveSAFE(address,bytes32,address) virtual external returns (bool,uint256,uint256);
}
abstract contract SAFEEngineLike {
    function collateralTypes(bytes32) virtual public view returns (
        uint256 debtAmount,        // [wad]
        uint256 accumulatedRate,   // [ray]
        uint256 safetyPrice,       // [ray]
        uint256 debtCeiling,       // [rad]
        uint256 debtFloor,         // [rad]
        uint256 liquidationPrice   // [ray]
    );
    function safes(bytes32,address) virtual public view returns (
        uint256 lockedCollateral,  // [wad]
        uint256 generatedDebt      // [wad]
    );
    function confiscateSAFECollateralAndDebt(bytes32,address,address,address,int256,int256) virtual external;
    function canModifySAFE(address, address) virtual public view returns (bool);
    function approveSAFEModification(address) virtual external;
    function denySAFEModification(address) virtual external;
}
abstract contract AccountingEngineLike {
    function pushDebtToQueue(uint256) virtual external;
}

contract LiquidationEngine {
    // --- Auth ---
    mapping (address => uint256) public authorizedAccounts;
    /**
     * @notice Add auth to an account
     * @param account Account to add auth to
     */
    function addAuthorization(address account) external isAuthorized {
        authorizedAccounts[account] = 1;
        emit AddAuthorization(account);
    }
    /**
     * @notice Remove auth from an account
     * @param account Account to remove auth from
     */
    function removeAuthorization(address account) external isAuthorized {
        authorizedAccounts[account] = 0;
        emit RemoveAuthorization(account);
    }
    /**
    * @notice Checks whether msg.sender can call an authed function
    **/
    modifier isAuthorized {
        require(authorizedAccounts[msg.sender] == 1, "LiquidationEngine/account-not-authorized");
        _;
    }

    // --- SAFE Saviours ---
    // Contracts that can save SAFEs from liquidation
    mapping (address => uint256) public safeSaviours;
    /**
    * @notice Authed function to add contracts that can save SAFEs from liquidation
    * @param saviour SAFE saviour contract to be whitelisted
    **/
    function connectSAFESaviour(address saviour) external isAuthorized {
        (bool ok, uint256 collateralAdded, uint256 liquidatorReward) =
          SAFESaviourLike(saviour).saveSAFE(address(this), "", address(0));
        require(ok, "LiquidationEngine/saviour-not-ok");
        require(both(collateralAdded == uint256(-1), liquidatorReward == uint256(-1)), "LiquidationEngine/invalid-amounts");
        safeSaviours[saviour] = 1;
        emit ConnectSAFESaviour(saviour);
    }
    /**
    * @notice Governance used function to remove contracts that can save SAFEs from liquidation
    * @param saviour SAFE saviour contract to be removed
    **/
    function disconnectSAFESaviour(address saviour) external isAuthorized {
        safeSaviours[saviour] = 0;
        emit DisconnectSAFESaviour(saviour);
    }

    // --- Data ---
    struct CollateralType {
        // Address of the collateral auction house handling liquidations for this collateral type
        address collateralAuctionHouse;
        // Penalty applied to every liquidation involving this collateral type. Discourages SAFE users from bidding on their own SAFEs
        uint256 liquidationPenalty;                                                                                                   // [wad]
        // Max amount of system coins to request in one auction
        uint256 liquidationQuantity;                                                                                                  // [rad]
    }

    // Collateral types included in the system
    mapping (bytes32 => CollateralType)              public collateralTypes;
    // Saviour contract chosen for each SAFE by its creator
    mapping (bytes32 => mapping(address => address)) public chosenSAFESaviour;
    // Mutex used to block against re-entrancy when 'liquidateSAFE' passes execution to a saviour
    mapping (bytes32 => mapping(address => uint8))   public mutex;

    // Max amount of system coins that can be on liquidation at any time
    uint256 public onAuctionSystemCoinLimit;                                // [rad]
    // Current amount of system coins out for liquidation
    uint256 public currentOnAuctionSystemCoins;                             // [rad]
    // Whether this contract is enabled
    uint256 public contractEnabled;

    SAFEEngineLike       public safeEngine;
    AccountingEngineLike public accountingEngine;

    // --- Events ---
    event AddAuthorization(address account);
    event RemoveAuthorization(address account);
    event ConnectSAFESaviour(address saviour);
    event DisconnectSAFESaviour(address saviour);
    event UpdateCurrentOnAuctionSystemCoins(uint256 currentOnAuctionSystemCoins);
    event ModifyParameters(bytes32 parameter, uint256 data);
    event ModifyParameters(bytes32 parameter, address data);
    event ModifyParameters(
      bytes32 collateralType,
      bytes32 parameter,
      uint256 data
    );
    event ModifyParameters(
      bytes32 collateralType,
      bytes32 parameter,
      address data
    );
    event DisableContract();
    event Liquidate(
      bytes32 indexed collateralType,
      address indexed safe,
      uint256 collateralAmount,
      uint256 debtAmount,
      uint256 amountToRaise,
      address collateralAuctioneer,
      uint256 auctionId
    );
    event SaveSAFE(
      bytes32 indexed collateralType,
      address indexed safe,
      uint256 collateralAddedOrDebtRepaid
    );
    event FailedSAFESave(bytes failReason);
    event ProtectSAFE(
      bytes32 indexed collateralType,
      address indexed safe,
      address saviour
    );

    // --- Init ---
    constructor(address safeEngine_) public {
        authorizedAccounts[msg.sender] = 1;

        safeEngine               = SAFEEngineLike(safeEngine_);
        onAuctionSystemCoinLimit = uint256(-1);
        contractEnabled          = 1;

        emit AddAuthorization(msg.sender);
        emit ModifyParameters("onAuctionSystemCoinLimit", uint256(-1));
    }

    // --- Math ---
    uint256 constant WAD = 10 ** 18;
    uint256 constant RAY = 10 ** 27;
    uint256 constant MAX_LIQUIDATION_QUANTITY = uint256(-1) / RAY;

    function addition(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "LiquidationEngine/add-overflow");
    }
    function subtract(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "LiquidationEngine/sub-underflow");
    }
    function multiply(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require(y == 0 || (z = x * y) / y == x, "LiquidationEngine/mul-overflow");
    }
    function minimum(uint256 x, uint256 y) internal pure returns (uint256 z) {
        if (x > y) { z = y; } else { z = x; }
    }

    // --- Utils ---
    function both(bool x, bool y) internal pure returns (bool z) {
        assembly{ z := and(x, y)}
    }
    function either(bool x, bool y) internal pure returns (bool z) {
        assembly{ z := or(x, y)}
    }

    // --- Administration ---
    /*
    * @notice Modify uint256 parameters
    * @param paramter The name of the parameter modified
    * @param data Value for the new parameter
    */
    function modifyParameters(bytes32 parameter, uint256 data) external isAuthorized {
        if (parameter == "onAuctionSystemCoinLimit") onAuctionSystemCoinLimit = data;
        else revert("LiquidationEngine/modify-unrecognized-param");
        emit ModifyParameters(parameter, data);
    }
    /**
     * @notice Modify contract integrations
     * @param parameter The name of the parameter modified
     * @param data New address for the parameter
     */
    function modifyParameters(bytes32 parameter, address data) external isAuthorized {
        if (parameter == "accountingEngine") accountingEngine = AccountingEngineLike(data);
        else revert("LiquidationEngine/modify-unrecognized-param");
        emit ModifyParameters(parameter, data);
    }
    /**
     * @notice Modify liquidation params
     * @param collateralType The collateral type we change parameters for
     * @param parameter The name of the parameter modified
     * @param data New value for the parameter
     */
    function modifyParameters(
        bytes32 collateralType,
        bytes32 parameter,
        uint256 data
    ) external isAuthorized {
        if (parameter == "liquidationPenalty") collateralTypes[collateralType].liquidationPenalty = data;
        else if (parameter == "liquidationQuantity") {
          require(data <= MAX_LIQUIDATION_QUANTITY, "LiquidationEngine/liquidation-quantity-overflow");
          collateralTypes[collateralType].liquidationQuantity = data;
        }
        else revert("LiquidationEngine/modify-unrecognized-param");
        emit ModifyParameters(
          collateralType,
          parameter,
          data
        );
    }
    /**
     * @notice Modify collateral auction address
     * @param collateralType The collateral type we change parameters for
     * @param parameter The name of the integration modified
     * @param data New address for the integration contract
     */
    function modifyParameters(
        bytes32 collateralType,
        bytes32 parameter,
        address data
    ) external isAuthorized {
        if (parameter == "collateralAuctionHouse") {
            safeEngine.denySAFEModification(collateralTypes[collateralType].collateralAuctionHouse);
            collateralTypes[collateralType].collateralAuctionHouse = data;
            safeEngine.approveSAFEModification(data);
        }
        else revert("LiquidationEngine/modify-unrecognized-param");
        emit ModifyParameters(
            collateralType,
            parameter,
            data
        );
    }
    /**
     * @notice Disable this contract (normally called by GlobalSettlement)
     */
    function disableContract() external isAuthorized {
        contractEnabled = 0;
        emit DisableContract();
    }

    // --- SAFE Liquidation ---
    /**
     * @notice Choose a saviour contract for your SAFE
     * @param collateralType The SAFE's collateral type
     * @param safe The SAFE's address
     * @param saviour The chosen saviour
     */
    function protectSAFE(
        bytes32 collateralType,
        address safe,
        address saviour
    ) external {
        require(
          either(authorizedAccounts[msg.sender] == 1, safeEngine.canModifySAFE(safe, msg.sender)),
          "LiquidationEngine/cannot-modify-safe"
        );
        require(saviour == address(0) || safeSaviours[saviour] == 1, "LiquidationEngine/saviour-not-authorized");
        chosenSAFESaviour[collateralType][safe] = saviour;
        emit ProtectSAFE(
            collateralType,
            safe,
            saviour
        );
    }
    /**
     * @notice Liquidate a SAFE
     * @param collateralType The SAFE's collateral type
     * @param safe The SAFE's address
     */
    function liquidateSAFE(bytes32 collateralType, address safe) external returns (uint256 auctionId) {
        require(mutex[collateralType][safe] == 0, "LiquidationEngine/non-null-mutex");
        mutex[collateralType][safe] = 1;

        (, uint256 accumulatedRate, , , uint256 debtFloor, uint256 liquidationPrice) = safeEngine.collateralTypes(collateralType);
        (uint256 safeCollateral, uint256 safeDebt) = safeEngine.safes(collateralType, safe);

        require(contractEnabled == 1, "LiquidationEngine/contract-not-enabled");
        require(both(
          liquidationPrice > 0,
          multiply(safeCollateral, liquidationPrice) < multiply(safeDebt, accumulatedRate)
        ), "LiquidationEngine/safe-not-unsafe");
        require(
          both(currentOnAuctionSystemCoins < onAuctionSystemCoinLimit,
          subtract(onAuctionSystemCoinLimit, currentOnAuctionSystemCoins) >= debtFloor),
          "LiquidationEngine/liquidation-limit-hit"
        );

        if (chosenSAFESaviour[collateralType][safe] != address(0) &&
            safeSaviours[chosenSAFESaviour[collateralType][safe]] == 1) {
          try SAFESaviourLike(chosenSAFESaviour[collateralType][safe]).saveSAFE(msg.sender, collateralType, safe)
            returns (bool ok, uint256 collateralAddedOrDebtRepaid, uint256) {
            if (both(ok, collateralAddedOrDebtRepaid > 0)) {
              emit SaveSAFE(collateralType, safe, collateralAddedOrDebtRepaid);
            }
          } catch (bytes memory revertReason) {
            emit FailedSAFESave(revertReason);
          }
        }

        // Checks that the saviour didn't take collateral or add more debt to the SAFE
        {
          (uint256 newSafeCollateral, uint256 newSafeDebt) = safeEngine.safes(collateralType, safe);
          require(both(newSafeCollateral >= safeCollateral, newSafeDebt <= safeDebt), "LiquidationEngine/invalid-safe-saviour-operation");
        }

        (, accumulatedRate, , , , liquidationPrice) = safeEngine.collateralTypes(collateralType);
        (safeCollateral, safeDebt) = safeEngine.safes(collateralType, safe);

        if (both(liquidationPrice > 0, multiply(safeCollateral, liquidationPrice) < multiply(safeDebt, accumulatedRate))) {
          CollateralType memory collateralData = collateralTypes[collateralType];

          uint256 limitAdjustedDebt = minimum(
            safeDebt,
            multiply(minimum(collateralData.liquidationQuantity, subtract(onAuctionSystemCoinLimit, currentOnAuctionSystemCoins)), WAD) / accumulatedRate / collateralData.liquidationPenalty
          );
          require(limitAdjustedDebt > 0, "LiquidationEngine/null-auction");
          require(either(limitAdjustedDebt == safeDebt, multiply(subtract(safeDebt, limitAdjustedDebt), accumulatedRate) >= debtFloor), "LiquidationEngine/dusty-safe");

          uint256 collateralToSell = minimum(safeCollateral, multiply(safeCollateral, limitAdjustedDebt) / safeDebt);

          require(collateralToSell > 0, "LiquidationEngine/null-collateral-to-sell");
          require(both(collateralToSell <= 2**255, limitAdjustedDebt <= 2**255), "LiquidationEngine/collateral-or-debt-overflow");

          safeEngine.confiscateSAFECollateralAndDebt(
            collateralType, safe, address(this), address(accountingEngine), -int256(collateralToSell), -int256(limitAdjustedDebt)
          );
          accountingEngine.pushDebtToQueue(multiply(limitAdjustedDebt, accumulatedRate));

          {
            // This calcuation will overflow if multiply(limitAdjustedDebt, accumulatedRate) exceeds ~10^14,
            // i.e. the maximum amountToRaise is roughly 100 trillion system coins.
            uint256 amountToRaise_      = multiply(multiply(limitAdjustedDebt, accumulatedRate), collateralData.liquidationPenalty) / WAD;
            currentOnAuctionSystemCoins = addition(currentOnAuctionSystemCoins, amountToRaise_);

            auctionId = CollateralAuctionHouseLike(collateralData.collateralAuctionHouse).startAuction(
              { forgoneCollateralReceiver: safe
              , initialBidder: address(accountingEngine)
              , amountToRaise: amountToRaise_
              , collateralToSell: collateralToSell
              , initialBid: 0
             });

             emit UpdateCurrentOnAuctionSystemCoins(currentOnAuctionSystemCoins);
          }

          emit Liquidate(collateralType, safe, collateralToSell, limitAdjustedDebt, multiply(limitAdjustedDebt, accumulatedRate), collateralData.collateralAuctionHouse, auctionId);
        }

        mutex[collateralType][safe] = 0;
    }
    /**
     * @notice Remove debt that was being auctioned
     * @param rad The amount of debt to withdraw from currentOnAuctionSystemCoins
     */
    function removeCoinsFromAuction(uint256 rad) public isAuthorized {
        currentOnAuctionSystemCoins = subtract(currentOnAuctionSystemCoins, rad);
        emit UpdateCurrentOnAuctionSystemCoins(currentOnAuctionSystemCoins);
    }

    // --- Getters ---
    /*
    * @notice Get the amount of debt that can currently be covered by a collateral auction for a specific safe
    * @param collateralType The collateral type stored in the SAFE
    * @param safe The SAFE's address/handler
    */
    function getLimitAdjustedDebtToCover(bytes32 collateralType, address safe) external view returns (uint256) {
        (, uint256 accumulatedRate,,,,)            = safeEngine.collateralTypes(collateralType);
        (uint256 safeCollateral, uint256 safeDebt) = safeEngine.safes(collateralType, safe);
        CollateralType memory collateralData       = collateralTypes[collateralType];

        return minimum(
          safeDebt,
          multiply(minimum(collateralData.liquidationQuantity, subtract(onAuctionSystemCoinLimit, currentOnAuctionSystemCoins)), WAD) / accumulatedRate / collateralData.liquidationPenalty
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"safeEngine_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"saviour","type":"address"}],"name":"ConnectSAFESaviour","type":"event"},{"anonymous":false,"inputs":[],"name":"DisableContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"saviour","type":"address"}],"name":"DisconnectSAFESaviour","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"failReason","type":"bytes"}],"name":"FailedSAFESave","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRaise","type":"uint256"},{"indexed":false,"internalType":"address","name":"collateralAuctioneer","type":"address"},{"indexed":false,"internalType":"uint256","name":"auctionId","type":"uint256"}],"name":"Liquidate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"address","name":"saviour","type":"address"}],"name":"ProtectSAFE","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"indexed":true,"internalType":"address","name":"safe","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAddedOrDebtRepaid","type":"uint256"}],"name":"SaveSAFE","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"currentOnAuctionSystemCoins","type":"uint256"}],"name":"UpdateCurrentOnAuctionSystemCoins","type":"event"},{"inputs":[],"name":"accountingEngine","outputs":[{"internalType":"contract AccountingEngineLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"chosenSAFESaviour","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"collateralTypes","outputs":[{"internalType":"address","name":"collateralAuctionHouse","type":"address"},{"internalType":"uint256","name":"liquidationPenalty","type":"uint256"},{"internalType":"uint256","name":"liquidationQuantity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"saviour","type":"address"}],"name":"connectSAFESaviour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractEnabled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentOnAuctionSystemCoins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"saviour","type":"address"}],"name":"disconnectSAFESaviour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"internalType":"address","name":"safe","type":"address"}],"name":"getLimitAdjustedDebtToCover","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"internalType":"address","name":"safe","type":"address"}],"name":"liquidateSAFE","outputs":[{"internalType":"uint256","name":"auctionId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"mutex","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onAuctionSystemCoinLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"collateralType","type":"bytes32"},{"internalType":"address","name":"safe","type":"address"},{"internalType":"address","name":"saviour","type":"address"}],"name":"protectSAFE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"removeCoinsFromAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"safeEngine","outputs":[{"internalType":"contract SAFEEngineLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"safeSaviours","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516122543803806122548339818101604052602081101561003357600080fd5b50513360008181526020818152604091829020600190819055600880546001600160a01b0319166001600160a01b038716179055600019600555600755815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a1604080517f6f6e41756374696f6e53797374656d436f696e4c696d697400000000000000008152600019602082015281517fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a929181900390910190a1506121478061010d6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80634faeff1d116100c357806394f3f81d1161007c57806394f3f81d146103b757806395ffa802146103dd578063961d45c414610403578063d07900bb1461040b578063d4b9311d14610450578063fe4f5890146104795761014d565b80634faeff1d146102fd578063513a3dba146103235780635626da24146103555780636614f0101461037b57806367aea313146103a7578063894ba833146103af5761014d565b806335b281531161011557806335b28153146102255780633896a3841461024b5780633c7999571461027f57806341b3a0d914610287578063456b81811461028f5780634c28be57146102d15761014d565b8063049c92791461015257806324ba5884146101905780632c20afc4146101b657806332d0eefd146101fe578063332bef1114610206575b600080fd5b61017e6004803603604081101561016857600080fd5b50803590602001356001600160a01b031661049c565b60408051918252519081900360200190f35b61017e600480360360208110156101a657600080fd5b50356001600160a01b0316610647565b6101e2600480360360408110156101cc57600080fd5b50803590602001356001600160a01b0316610659565b604080516001600160a01b039092168252519081900360200190f35b61017e61067f565b6102236004803603602081101561021c57600080fd5b5035610685565b005b6102236004803603602081101561023b57600080fd5b50356001600160a01b0316610719565b6102236004803603606081101561026157600080fd5b508035906001600160a01b03602082013581169160400135166107b9565b61017e61096c565b61017e610972565b6102bb600480360360408110156102a557600080fd5b50803590602001356001600160a01b0316610978565b6040805160ff9092168252519081900360200190f35b61017e600480360360408110156102e757600080fd5b50803590602001356001600160a01b0316610998565b6102236004803603602081101561031357600080fd5b50356001600160a01b0316611513565b6102236004803603606081101561033957600080fd5b50803590602081013590604001356001600160a01b03166115b4565b61017e6004803603602081101561036b57600080fd5b50356001600160a01b03166117a1565b6102236004803603604081101561039157600080fd5b50803590602001356001600160a01b03166117b3565b6101e261187e565b61022361188d565b610223600480360360208110156103cd57600080fd5b50356001600160a01b031661190b565b610223600480360360208110156103f357600080fd5b50356001600160a01b03166119aa565b6101e2611b82565b6104286004803603602081101561042157600080fd5b5035611b91565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6102236004803603606081101561046657600080fd5b5080359060208101359060400135611bbd565b6102236004803603604081101561048f57600080fd5b5080359060200135611d0e565b6008546040805163d07900bb60e01b815260048101859052905160009283926001600160a01b039091169163d07900bb9160248082019260c092909190829003018186803b1580156104ed57600080fd5b505afa158015610501573d6000803e3d6000fd5b505050506040513d60c081101561051757600080fd5b506020015160085460408051630f50894160e21b8152600481018890526001600160a01b038781166024830152825194955060009485949190911692633d4225049260448082019391829003018186803b15801561057457600080fd5b505afa158015610588573d6000803e3d6000fd5b505050506040513d604081101561059e57600080fd5b50805160209091015190925090506105b4611f04565b50600086815260026020818152604092839020835160608101855281546001600160a01b031681526001820154928101839052920154928201839052600554600654929361063a938693928992610625926106179261061291611dc8565b611e20565b670de0b6b3a7640000611e38565b8161062c57fe5b048161063457fe5b04611e20565b9450505050505b92915050565b60006020819052908152604090205481565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b60055481565b336000908152602081905260409020546001146106d35760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6106df60065482611dc8565b600681905560408051918252517fe1bbac4c69a9c7825ff4f220089a412e2349521ceba06c7f07c3764522ef04149181900360200190a150565b336000908152602081905260409020546001146107675760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b33600081815260208181526040918290205460085483516350de215d60e01b81526001600160a01b038881166004830152602482019690965293516108549560019093149491909216926350de215d92604480840193829003018186803b15801561082357600080fd5b505afa158015610837573d6000803e3d6000fd5b505050506040513d602081101561084d57600080fd5b5051611ea4565b61088f5760405162461bcd60e51b81526004018080602001828103825260248152602001806120c36024913960400191505060405180910390fd5b6001600160a01b03811615806108be57506001600160a01b038116600090815260016020819052604090912054145b6108f95760405162461bcd60e51b81526004018080602001828103825260288152602001806120726028913960400191505060405180910390fd5b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b031916948616948517905581519384529051909286927f9c0c3b2f97315fb268638262f83f63de4f645ad9ae8ea84e2182f67e7d28d8f792918290030190a3505050565b60065481565b60075481565b600460209081526000928352604080842090915290825290205460ff1681565b60008281526004602090815260408083206001600160a01b038516845290915281205460ff1615610a10576040805162461bcd60e51b815260206004820181905260248201527f4c69717569646174696f6e456e67696e652f6e6f6e2d6e756c6c2d6d75746578604482015290519081900360640190fd5b60008381526004602081815260408084206001600160a01b0380881686529252808420805460ff19166001179055600854815163d07900bb60e01b8152938401889052905184938493929092169163d07900bb9160248083019260c0929190829003018186803b158015610a8357600080fd5b505afa158015610a97573d6000803e3d6000fd5b505050506040513d60c0811015610aad57600080fd5b506020810151608082015160a09092015160085460408051630f50894160e21b8152600481018c90526001600160a01b038b8116602483015282519599509597509295506000948594921692633d4225049260448083019392829003018186803b158015610b1a57600080fd5b505afa158015610b2e573d6000803e3d6000fd5b505050506040513d6040811015610b4457600080fd5b5080516020909101516007549193509150600114610b935760405162461bcd60e51b815260040180806020018281038252602681526020018061204c6026913960400191505060405180910390fd5b610bb460008411610ba48388611e38565b610bae8587611e38565b10611ea8565b610bef5760405162461bcd60e51b8152600401808060200182810382526021815260200180611ffe6021913960400191505060405180910390fd5b610c0f6005546006541085610c08600554600654611dc8565b1015611ea8565b610c4a5760405162461bcd60e51b8152600401808060200182810382526027815260200180611f2f6027913960400191505060405180910390fd5b60008881526003602090815260408083206001600160a01b038b811685529252909120541615801590610cac575060008881526003602090815260408083206001600160a01b03808c1685529083528184205416835260019182905290912054145b15610e875760008881526003602090815260408083206001600160a01b03808c168086529190935281842054825163b9b0bb3960e01b8152336004820152602481018e905260448101929092529151919092169263b9b0bb3992606480820193606093909283900390910190829087803b158015610d2957600080fd5b505af1925050508015610d5d57506040513d6060811015610d4957600080fd5b508051602082015160409092015190919060015b610e30573d808015610d8b576040519150601f19603f3d011682016040523d82523d6000602084013e610d90565b606091505b507fe7862113e21c9c96e382110b92dfc08242b5c58f90259305fe30adc0d77e2a43816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df0578181015183820152602001610dd8565b50505050905090810190601f168015610e1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150610e87565b610e3d8360008411611ea8565b15610e83576040805183815290516001600160a01b038c16918d917f7afee8680e1a5395600115d5fc996ecb20b450ca793815c08c9b19d2dc6663d79181900360200190a35b5050505b60085460408051630f50894160e21b8152600481018b90526001600160a01b038a8116602483015282516000948594921692633d422504926044808301939192829003018186803b158015610edb57600080fd5b505afa158015610eef573d6000803e3d6000fd5b505050506040513d6040811015610f0557600080fd5b5080516020909101519092509050610f238483101584831115611ea8565b610f5e5760405162461bcd60e51b8152600401808060200182810382526030815260200180611f566030913960400191505060405180910390fd5b50506008546040805163d07900bb60e01b8152600481018b905290516001600160a01b039092169163d07900bb9160248082019260c092909190829003018186803b158015610fac57600080fd5b505afa158015610fc0573d6000803e3d6000fd5b505050506040513d60c0811015610fd657600080fd5b50602081015160a09091015160085460408051630f50894160e21b8152600481018d90526001600160a01b038c811660248301528251959a509397509290911692633d422504926044808201939291829003018186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d604081101561106357600080fd5b5080516020909101519092509050611081831515610ba48388611e38565b156114e05761108e611f04565b506000888152600260208181526040808420815160608101835281546001600160a01b0316815260018201549381018490529301549083018190526005546006549394936110f093879390928c92610625926106179290916106129190611dc8565b905060008111611147576040805162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e456e67696e652f6e756c6c2d61756374696f6e0000604482015290519081900360640190fd5b6111688382148761116161115b8786611dc8565b8b611e38565b1015611ea4565b6111b9576040805162461bcd60e51b815260206004820152601c60248201527f4c69717569646174696f6e456e67696e652f64757374792d7361666500000000604482015290519081900360640190fd5b60006111d185856111ca8886611e38565b8161063457fe5b9050600081116112125760405162461bcd60e51b815260040180806020018281038252602981526020018061209a6029913960400191505060405180910390fd5b61122a600160ff1b821115600160ff1b841115611ea8565b6112655760405162461bcd60e51b815260040180806020018281038252602d81526020018061201f602d913960400191505060405180910390fd5b60085460095460408051634e14a96760e01b8152600481018f90526001600160a01b038e8116602483015230604483015292831660648201526000858103608483015286810360a483015291519290931692634e14a9679260c4808301939282900301818387803b1580156112d957600080fd5b505af11580156112ed573d6000803e3d6000fd5b50506009546001600160a01b0316915063a8b30a9f905061130e848b611e38565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561134457600080fd5b505af1158015611358573d6000803e3d6000fd5b505050506000670de0b6b3a764000061137e611374858c611e38565b8660200151611e38565b8161138557fe5b04905061139460065482611eac565b60065583516009546040805163097af09d60e21b81526001600160a01b038f8116600483015292831660248201526044810185905260648101869052600060848201819052915192909316926325ebc2749260a48083019360209383900390910190829087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d602081101561143157600080fd5b50516006546040805191825251919b507fe1bbac4c69a9c7825ff4f220089a412e2349521ceba06c7f07c3764522ef0414919081900360200190a150896001600160a01b03168b7f72d3864f233703680912d39433c137e816d579e8785e5245274ca9f95bea896783856114a5878e611e38565b8851604080519485526020850193909352838301919091526001600160a01b03166060830152608082018e9052519081900360a00190a35050505b505050600094855250506004602090815260408085206001600160a01b0390941685529290529120805460ff1916905590565b336000908152602081905260409020546001146115615760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6001600160a01b038116600081815260016020908152604080832092909255815192835290517ffce504fd9d349038183fa936cbbfadf867e63406485f0f4f9f45f7f2856f813f9281900390910190a150565b336000908152602081905260409020546001146116025760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b8175636f6c6c61746572616c41756374696f6e486f75736560501b141561171d5760085460008481526002602052604080822054815163d49d786760e01b81526001600160a01b039182166004820152915193169263d49d78679260248084019391929182900301818387803b15801561167b57600080fd5b505af115801561168f573d6000803e3d6000fd5b50505060008481526002602052604080822080546001600160a01b0319166001600160a01b038681169182179092556008548351631b29a84160e31b81526004810192909252925192909116935063d94d420892602480830193919282900301818387803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b50505050611754565b60405162461bcd60e51b815260040180806020018281038252602b8152602001806120e7602b913960400191505060405180910390fd5b60408051848152602081018490526001600160a01b0383168183015290517f87c209b94b27bfe8cb3329ca996f854fc16f2ec485116b0932eccd15fac50a409181900360600190a1505050565b60016020526000908152604090205481565b336000908152602081905260409020546001146118015760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b816f6163636f756e74696e67456e67696e6560801b141561171d57600980546001600160a01b0319166001600160a01b038316179055604080518381526001600160a01b038316602082015281517fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1929181900390910190a15050565b6008546001600160a01b031681565b336000908152602081905260409020546001146118db5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b600060078190556040517f2d4b4ecff7bd7503135271925520a2f6c0d98c9473ffc1a1e72c92502f51b25e9190a1565b336000908152602081905260409020546001146119595760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b336000908152602081905260409020546001146119f85760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6040805163b9b0bb3960e01b81523060048201526000604482018190529151829182916001600160a01b0386169163b9b0bb3991606480830192606092919082900301818787803b158015611a4c57600080fd5b505af1158015611a60573d6000803e3d6000fd5b505050506040513d6060811015611a7657600080fd5b5080516020820151604090920151909450909250905082611ade576040805162461bcd60e51b815260206004820181905260248201527f4c69717569646174696f6e456e67696e652f736176696f75722d6e6f742d6f6b604482015290519081900360640190fd5b611af060001983146000198314611ea8565b611b2b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fdd6021913960400191505060405180910390fd5b6001600160a01b03841660008181526001602081815260409283902091909155815192835290517fc2553257d1b78c297941723c1913912f9161a830e997b56133a669b3a3de6a1e9281900390910190a150505050565b6009546001600160a01b031681565b60026020819052600091825260409091208054600182015491909201546001600160a01b039092169183565b33600090815260208190526040902054600114611c0b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b81716c69717569646174696f6e50656e616c747960701b1415611c41576000838152600260205260409020600101819055611cc9565b81726c69717569646174696f6e5175616e7469747960681b141561171d57744f3a68dbc8f03f243baf513267aa9a3ee524f8e028811115611cb35760405162461bcd60e51b815260040180806020018281038252602f815260200180611fae602f913960400191505060405180910390fd5b6000838152600260208190526040909120018190555b604080518481526020810184905280820183905290517fc59b1109b54f213212d2f5af5c1dae5e887f9daa63b595578fae847cb048e8f49181900360600190a1505050565b33600090815260208190526040902054600114611d5c5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b817f6f6e41756374696f6e53797374656d436f696e4c696d69740000000000000000141561171d576005819055604080518381526020810183905281517fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a929181900390910190a15050565b80820382811115610641576040805162461bcd60e51b815260206004820152601f60248201527f4c69717569646174696f6e456e67696e652f7375622d756e646572666c6f7700604482015290519081900360640190fd5b600081831115611e31575080610641565b5090919050565b6000811580611e5357505080820282828281611e5057fe5b04145b610641576040805162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e456e67696e652f6d756c2d6f766572666c6f770000604482015290519081900360640190fd5b1790565b1690565b80820182811015610641576040805162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e456e67696e652f6164642d6f766572666c6f770000604482015290519081900360640190fd5b604051806060016040528060006001600160a01b031681526020016000815260200160008152509056fe4c69717569646174696f6e456e67696e652f6c69717569646174696f6e2d6c696d69742d6869744c69717569646174696f6e456e67696e652f696e76616c69642d736166652d736176696f75722d6f7065726174696f6e4c69717569646174696f6e456e67696e652f6163636f756e742d6e6f742d617574686f72697a65644c69717569646174696f6e456e67696e652f6c69717569646174696f6e2d7175616e746974792d6f766572666c6f774c69717569646174696f6e456e67696e652f696e76616c69642d616d6f756e74734c69717569646174696f6e456e67696e652f736166652d6e6f742d756e736166654c69717569646174696f6e456e67696e652f636f6c6c61746572616c2d6f722d646562742d6f766572666c6f774c69717569646174696f6e456e67696e652f636f6e74726163742d6e6f742d656e61626c65644c69717569646174696f6e456e67696e652f736176696f75722d6e6f742d617574686f72697a65644c69717569646174696f6e456e67696e652f6e756c6c2d636f6c6c61746572616c2d746f2d73656c6c4c69717569646174696f6e456e67696e652f63616e6e6f742d6d6f646966792d736166654c69717569646174696f6e456e67696e652f6d6f646966792d756e7265636f676e697a65642d706172616da264697066735822122068179bf0f11a0a9c78c3eff0f68aa7f04051c7872c191cf0a6f978ae06a8e6b164736f6c63430006070033000000000000000000000000cc88a9d330da1133df3a7bd823b95e52511a6962

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80634faeff1d116100c357806394f3f81d1161007c57806394f3f81d146103b757806395ffa802146103dd578063961d45c414610403578063d07900bb1461040b578063d4b9311d14610450578063fe4f5890146104795761014d565b80634faeff1d146102fd578063513a3dba146103235780635626da24146103555780636614f0101461037b57806367aea313146103a7578063894ba833146103af5761014d565b806335b281531161011557806335b28153146102255780633896a3841461024b5780633c7999571461027f57806341b3a0d914610287578063456b81811461028f5780634c28be57146102d15761014d565b8063049c92791461015257806324ba5884146101905780632c20afc4146101b657806332d0eefd146101fe578063332bef1114610206575b600080fd5b61017e6004803603604081101561016857600080fd5b50803590602001356001600160a01b031661049c565b60408051918252519081900360200190f35b61017e600480360360208110156101a657600080fd5b50356001600160a01b0316610647565b6101e2600480360360408110156101cc57600080fd5b50803590602001356001600160a01b0316610659565b604080516001600160a01b039092168252519081900360200190f35b61017e61067f565b6102236004803603602081101561021c57600080fd5b5035610685565b005b6102236004803603602081101561023b57600080fd5b50356001600160a01b0316610719565b6102236004803603606081101561026157600080fd5b508035906001600160a01b03602082013581169160400135166107b9565b61017e61096c565b61017e610972565b6102bb600480360360408110156102a557600080fd5b50803590602001356001600160a01b0316610978565b6040805160ff9092168252519081900360200190f35b61017e600480360360408110156102e757600080fd5b50803590602001356001600160a01b0316610998565b6102236004803603602081101561031357600080fd5b50356001600160a01b0316611513565b6102236004803603606081101561033957600080fd5b50803590602081013590604001356001600160a01b03166115b4565b61017e6004803603602081101561036b57600080fd5b50356001600160a01b03166117a1565b6102236004803603604081101561039157600080fd5b50803590602001356001600160a01b03166117b3565b6101e261187e565b61022361188d565b610223600480360360208110156103cd57600080fd5b50356001600160a01b031661190b565b610223600480360360208110156103f357600080fd5b50356001600160a01b03166119aa565b6101e2611b82565b6104286004803603602081101561042157600080fd5b5035611b91565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6102236004803603606081101561046657600080fd5b5080359060208101359060400135611bbd565b6102236004803603604081101561048f57600080fd5b5080359060200135611d0e565b6008546040805163d07900bb60e01b815260048101859052905160009283926001600160a01b039091169163d07900bb9160248082019260c092909190829003018186803b1580156104ed57600080fd5b505afa158015610501573d6000803e3d6000fd5b505050506040513d60c081101561051757600080fd5b506020015160085460408051630f50894160e21b8152600481018890526001600160a01b038781166024830152825194955060009485949190911692633d4225049260448082019391829003018186803b15801561057457600080fd5b505afa158015610588573d6000803e3d6000fd5b505050506040513d604081101561059e57600080fd5b50805160209091015190925090506105b4611f04565b50600086815260026020818152604092839020835160608101855281546001600160a01b031681526001820154928101839052920154928201839052600554600654929361063a938693928992610625926106179261061291611dc8565b611e20565b670de0b6b3a7640000611e38565b8161062c57fe5b048161063457fe5b04611e20565b9450505050505b92915050565b60006020819052908152604090205481565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b60055481565b336000908152602081905260409020546001146106d35760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6106df60065482611dc8565b600681905560408051918252517fe1bbac4c69a9c7825ff4f220089a412e2349521ceba06c7f07c3764522ef04149181900360200190a150565b336000908152602081905260409020546001146107675760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b33600081815260208181526040918290205460085483516350de215d60e01b81526001600160a01b038881166004830152602482019690965293516108549560019093149491909216926350de215d92604480840193829003018186803b15801561082357600080fd5b505afa158015610837573d6000803e3d6000fd5b505050506040513d602081101561084d57600080fd5b5051611ea4565b61088f5760405162461bcd60e51b81526004018080602001828103825260248152602001806120c36024913960400191505060405180910390fd5b6001600160a01b03811615806108be57506001600160a01b038116600090815260016020819052604090912054145b6108f95760405162461bcd60e51b81526004018080602001828103825260288152602001806120726028913960400191505060405180910390fd5b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b031916948616948517905581519384529051909286927f9c0c3b2f97315fb268638262f83f63de4f645ad9ae8ea84e2182f67e7d28d8f792918290030190a3505050565b60065481565b60075481565b600460209081526000928352604080842090915290825290205460ff1681565b60008281526004602090815260408083206001600160a01b038516845290915281205460ff1615610a10576040805162461bcd60e51b815260206004820181905260248201527f4c69717569646174696f6e456e67696e652f6e6f6e2d6e756c6c2d6d75746578604482015290519081900360640190fd5b60008381526004602081815260408084206001600160a01b0380881686529252808420805460ff19166001179055600854815163d07900bb60e01b8152938401889052905184938493929092169163d07900bb9160248083019260c0929190829003018186803b158015610a8357600080fd5b505afa158015610a97573d6000803e3d6000fd5b505050506040513d60c0811015610aad57600080fd5b506020810151608082015160a09092015160085460408051630f50894160e21b8152600481018c90526001600160a01b038b8116602483015282519599509597509295506000948594921692633d4225049260448083019392829003018186803b158015610b1a57600080fd5b505afa158015610b2e573d6000803e3d6000fd5b505050506040513d6040811015610b4457600080fd5b5080516020909101516007549193509150600114610b935760405162461bcd60e51b815260040180806020018281038252602681526020018061204c6026913960400191505060405180910390fd5b610bb460008411610ba48388611e38565b610bae8587611e38565b10611ea8565b610bef5760405162461bcd60e51b8152600401808060200182810382526021815260200180611ffe6021913960400191505060405180910390fd5b610c0f6005546006541085610c08600554600654611dc8565b1015611ea8565b610c4a5760405162461bcd60e51b8152600401808060200182810382526027815260200180611f2f6027913960400191505060405180910390fd5b60008881526003602090815260408083206001600160a01b038b811685529252909120541615801590610cac575060008881526003602090815260408083206001600160a01b03808c1685529083528184205416835260019182905290912054145b15610e875760008881526003602090815260408083206001600160a01b03808c168086529190935281842054825163b9b0bb3960e01b8152336004820152602481018e905260448101929092529151919092169263b9b0bb3992606480820193606093909283900390910190829087803b158015610d2957600080fd5b505af1925050508015610d5d57506040513d6060811015610d4957600080fd5b508051602082015160409092015190919060015b610e30573d808015610d8b576040519150601f19603f3d011682016040523d82523d6000602084013e610d90565b606091505b507fe7862113e21c9c96e382110b92dfc08242b5c58f90259305fe30adc0d77e2a43816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df0578181015183820152602001610dd8565b50505050905090810190601f168015610e1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150610e87565b610e3d8360008411611ea8565b15610e83576040805183815290516001600160a01b038c16918d917f7afee8680e1a5395600115d5fc996ecb20b450ca793815c08c9b19d2dc6663d79181900360200190a35b5050505b60085460408051630f50894160e21b8152600481018b90526001600160a01b038a8116602483015282516000948594921692633d422504926044808301939192829003018186803b158015610edb57600080fd5b505afa158015610eef573d6000803e3d6000fd5b505050506040513d6040811015610f0557600080fd5b5080516020909101519092509050610f238483101584831115611ea8565b610f5e5760405162461bcd60e51b8152600401808060200182810382526030815260200180611f566030913960400191505060405180910390fd5b50506008546040805163d07900bb60e01b8152600481018b905290516001600160a01b039092169163d07900bb9160248082019260c092909190829003018186803b158015610fac57600080fd5b505afa158015610fc0573d6000803e3d6000fd5b505050506040513d60c0811015610fd657600080fd5b50602081015160a09091015160085460408051630f50894160e21b8152600481018d90526001600160a01b038c811660248301528251959a509397509290911692633d422504926044808201939291829003018186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d604081101561106357600080fd5b5080516020909101519092509050611081831515610ba48388611e38565b156114e05761108e611f04565b506000888152600260208181526040808420815160608101835281546001600160a01b0316815260018201549381018490529301549083018190526005546006549394936110f093879390928c92610625926106179290916106129190611dc8565b905060008111611147576040805162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e456e67696e652f6e756c6c2d61756374696f6e0000604482015290519081900360640190fd5b6111688382148761116161115b8786611dc8565b8b611e38565b1015611ea4565b6111b9576040805162461bcd60e51b815260206004820152601c60248201527f4c69717569646174696f6e456e67696e652f64757374792d7361666500000000604482015290519081900360640190fd5b60006111d185856111ca8886611e38565b8161063457fe5b9050600081116112125760405162461bcd60e51b815260040180806020018281038252602981526020018061209a6029913960400191505060405180910390fd5b61122a600160ff1b821115600160ff1b841115611ea8565b6112655760405162461bcd60e51b815260040180806020018281038252602d81526020018061201f602d913960400191505060405180910390fd5b60085460095460408051634e14a96760e01b8152600481018f90526001600160a01b038e8116602483015230604483015292831660648201526000858103608483015286810360a483015291519290931692634e14a9679260c4808301939282900301818387803b1580156112d957600080fd5b505af11580156112ed573d6000803e3d6000fd5b50506009546001600160a01b0316915063a8b30a9f905061130e848b611e38565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561134457600080fd5b505af1158015611358573d6000803e3d6000fd5b505050506000670de0b6b3a764000061137e611374858c611e38565b8660200151611e38565b8161138557fe5b04905061139460065482611eac565b60065583516009546040805163097af09d60e21b81526001600160a01b038f8116600483015292831660248201526044810185905260648101869052600060848201819052915192909316926325ebc2749260a48083019360209383900390910190829087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d602081101561143157600080fd5b50516006546040805191825251919b507fe1bbac4c69a9c7825ff4f220089a412e2349521ceba06c7f07c3764522ef0414919081900360200190a150896001600160a01b03168b7f72d3864f233703680912d39433c137e816d579e8785e5245274ca9f95bea896783856114a5878e611e38565b8851604080519485526020850193909352838301919091526001600160a01b03166060830152608082018e9052519081900360a00190a35050505b505050600094855250506004602090815260408085206001600160a01b0390941685529290529120805460ff1916905590565b336000908152602081905260409020546001146115615760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6001600160a01b038116600081815260016020908152604080832092909255815192835290517ffce504fd9d349038183fa936cbbfadf867e63406485f0f4f9f45f7f2856f813f9281900390910190a150565b336000908152602081905260409020546001146116025760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b8175636f6c6c61746572616c41756374696f6e486f75736560501b141561171d5760085460008481526002602052604080822054815163d49d786760e01b81526001600160a01b039182166004820152915193169263d49d78679260248084019391929182900301818387803b15801561167b57600080fd5b505af115801561168f573d6000803e3d6000fd5b50505060008481526002602052604080822080546001600160a01b0319166001600160a01b038681169182179092556008548351631b29a84160e31b81526004810192909252925192909116935063d94d420892602480830193919282900301818387803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b50505050611754565b60405162461bcd60e51b815260040180806020018281038252602b8152602001806120e7602b913960400191505060405180910390fd5b60408051848152602081018490526001600160a01b0383168183015290517f87c209b94b27bfe8cb3329ca996f854fc16f2ec485116b0932eccd15fac50a409181900360600190a1505050565b60016020526000908152604090205481565b336000908152602081905260409020546001146118015760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b816f6163636f756e74696e67456e67696e6560801b141561171d57600980546001600160a01b0319166001600160a01b038316179055604080518381526001600160a01b038316602082015281517fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1929181900390910190a15050565b6008546001600160a01b031681565b336000908152602081905260409020546001146118db5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b600060078190556040517f2d4b4ecff7bd7503135271925520a2f6c0d98c9473ffc1a1e72c92502f51b25e9190a1565b336000908152602081905260409020546001146119595760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b336000908152602081905260409020546001146119f85760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b6040805163b9b0bb3960e01b81523060048201526000604482018190529151829182916001600160a01b0386169163b9b0bb3991606480830192606092919082900301818787803b158015611a4c57600080fd5b505af1158015611a60573d6000803e3d6000fd5b505050506040513d6060811015611a7657600080fd5b5080516020820151604090920151909450909250905082611ade576040805162461bcd60e51b815260206004820181905260248201527f4c69717569646174696f6e456e67696e652f736176696f75722d6e6f742d6f6b604482015290519081900360640190fd5b611af060001983146000198314611ea8565b611b2b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fdd6021913960400191505060405180910390fd5b6001600160a01b03841660008181526001602081815260409283902091909155815192835290517fc2553257d1b78c297941723c1913912f9161a830e997b56133a669b3a3de6a1e9281900390910190a150505050565b6009546001600160a01b031681565b60026020819052600091825260409091208054600182015491909201546001600160a01b039092169183565b33600090815260208190526040902054600114611c0b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b81716c69717569646174696f6e50656e616c747960701b1415611c41576000838152600260205260409020600101819055611cc9565b81726c69717569646174696f6e5175616e7469747960681b141561171d57744f3a68dbc8f03f243baf513267aa9a3ee524f8e028811115611cb35760405162461bcd60e51b815260040180806020018281038252602f815260200180611fae602f913960400191505060405180910390fd5b6000838152600260208190526040909120018190555b604080518481526020810184905280820183905290517fc59b1109b54f213212d2f5af5c1dae5e887f9daa63b595578fae847cb048e8f49181900360600190a1505050565b33600090815260208190526040902054600114611d5c5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f866028913960400191505060405180910390fd5b817f6f6e41756374696f6e53797374656d436f696e4c696d69740000000000000000141561171d576005819055604080518381526020810183905281517fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a929181900390910190a15050565b80820382811115610641576040805162461bcd60e51b815260206004820152601f60248201527f4c69717569646174696f6e456e67696e652f7375622d756e646572666c6f7700604482015290519081900360640190fd5b600081831115611e31575080610641565b5090919050565b6000811580611e5357505080820282828281611e5057fe5b04145b610641576040805162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e456e67696e652f6d756c2d6f766572666c6f770000604482015290519081900360640190fd5b1790565b1690565b80820182811015610641576040805162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e456e67696e652f6164642d6f766572666c6f770000604482015290519081900360640190fd5b604051806060016040528060006001600160a01b031681526020016000815260200160008152509056fe4c69717569646174696f6e456e67696e652f6c69717569646174696f6e2d6c696d69742d6869744c69717569646174696f6e456e67696e652f696e76616c69642d736166652d736176696f75722d6f7065726174696f6e4c69717569646174696f6e456e67696e652f6163636f756e742d6e6f742d617574686f72697a65644c69717569646174696f6e456e67696e652f6c69717569646174696f6e2d7175616e746974792d6f766572666c6f774c69717569646174696f6e456e67696e652f696e76616c69642d616d6f756e74734c69717569646174696f6e456e67696e652f736166652d6e6f742d756e736166654c69717569646174696f6e456e67696e652f636f6c6c61746572616c2d6f722d646562742d6f766572666c6f774c69717569646174696f6e456e67696e652f636f6e74726163742d6e6f742d656e61626c65644c69717569646174696f6e456e67696e652f736176696f75722d6e6f742d617574686f72697a65644c69717569646174696f6e456e67696e652f6e756c6c2d636f6c6c61746572616c2d746f2d73656c6c4c69717569646174696f6e456e67696e652f63616e6e6f742d6d6f646966792d736166654c69717569646174696f6e456e67696e652f6d6f646966792d756e7265636f676e697a65642d706172616da264697066735822122068179bf0f11a0a9c78c3eff0f68aa7f04051c7872c191cf0a6f978ae06a8e6b164736f6c63430006070033

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

000000000000000000000000cc88a9d330da1133df3a7bd823b95e52511a6962

-----Decoded View---------------
Arg [0] : safeEngine_ (address): 0xCC88a9d330da1133Df3A7bD823B95e52511A6962

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


Deployed Bytecode Sourcemap

2185:16301:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2185:16301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;17840:643:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17840:643:0;;;;;;-1:-1:-1;;;;;17840:643:0;;:::i;:::-;;;;;;;;;;;;;;;;2240:54;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2240:54:0;-1:-1:-1;;;;;2240:54:0;;:::i;5097:73::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5097:73:0;;;;;;-1:-1:-1;;;;;5097:73:0;;:::i;:::-;;;;-1:-1:-1;;;;;5097:73:0;;;;;;;;;;;;;;5420:39;;;:::i;17332:234::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17332:234:0;;:::i;:::-;;2404:156;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2404:156:0;-1:-1:-1;;;;;2404:156:0;;:::i;11768:590::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11768:590:0;;;-1:-1:-1;;;;;11768:590:0;;;;;;;;;;;;:::i;5565:42::-;;;:::i;5692:30::-;;;:::i;5276:61::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5276:61:0;;;;;;-1:-1:-1;;;;;5276:61:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;12511:4661;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12511:4661:0;;;;;;-1:-1:-1;;;;;12511:4661:0;;:::i;4054:160::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4054:160:0;-1:-1:-1;;;;;4054:160:0;;:::i;10666:629::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10666:629:0;;;;;;;;;;;-1:-1:-1;;;;;10666:629:0;;:::i;3168:48::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3168:48:0;-1:-1:-1;;;;;3168:48:0;;:::i;9170:300::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9170:300:0;;;;;;-1:-1:-1;;;;;9170:300:0;;:::i;5731:38::-;;;:::i;11395:120::-;;;:::i;2679:162::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2679:162:0;-1:-1:-1;;;;;2679:162:0;;:::i;3388:487::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3388:487:0;-1:-1:-1;;;;;3388:487:0;;:::i;5776:44::-;;;:::i;4958:71::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4958:71:0;;:::i;:::-;;;;-1:-1:-1;;;;;4958:71:0;;;;;;;;;;;;;;;;;;;;;;;;;9719:675;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9719:675:0;;;;;;;;;;;;:::i;8697:294::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8697:294:0;;;;;;;:::i;17840:643::-;18003:10;;:42;;;-1:-1:-1;;;18003:42:0;;;;;;;;;;17938:7;;;;-1:-1:-1;;;;;18003:10:0;;;;:26;;:42;;;;;;;;;;;;;;;:10;:42;;;2:2:-1;;;;27:1;24;17:12;2:2;18003:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18003:42:0;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;18003:42:0;;;18101:10;;18003:42;18101:38;;-1:-1:-1;;;18101:38:0;;;;;;;;-1:-1:-1;;;;;18101:38:0;;;;;;;;;18003:42;;-1:-1:-1;18057:22:0;;;;18101:10;;;;;:16;;:38;;;;;;;;;;;:10;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;18101:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18101:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18101:38:0;;;;;;;;;-1:-1:-1;18101:38:0;-1:-1:-1;18150:36:0;;:::i;:::-;-1:-1:-1;18195:31:0;;;;:15;:31;;;;;;;;;18150:76;;;;;;;;;-1:-1:-1;;;;;18150:76:0;;;;;;;;;;;;;;;;;;;;;;18349:24;;18375:27;;18150:76;;18246:229;;18266:8;;18150:76;18413:15;;18287:123;;18296:108;;18340:63;;:8;:63::i;:::-;18296:7;:108::i;:::-;7511:8;18287;:123::i;:::-;:141;;;;;;:177;;;;;;18246:7;:229::i;:::-;18239:236;;;;;;17840:643;;;;;:::o;2240:54::-;;;;;;;;;;;;;;:::o;5097:73::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5097:73:0;;:::o;5420:39::-;;;;:::o;17332:234::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17438:42:::1;17447:27;;17476:3;17438:8;:42::i;:::-;17408:27;:72:::0;;;17496:62:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;17332:234:::0;:::o;2404:156::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2480:27:0;::::1;:18;:27:::0;;;::::1;::::0;;;;;;;;2510:1:::1;2480:31:::0;;2527:25;;;;;;;::::1;::::0;;;;;;;;::::1;2404:156:::0;:::o;11768:590::-;11944:10;11925:18;:30;;;;;;;;;;;;;11962:10;;:42;;-1:-1:-1;;;11962:42:0;;-1:-1:-1;;;;;11962:42:0;;;;;;;;;;;;;;;;11918:87;;11959:1;11925:35;;;;11962:10;;;;;:24;;:42;;;;;;;;;;:10;:42;;;2:2:-1;;;;27:1;24;17:12;2:2;11962:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11962:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11962:42:0;11918:6;:87::i;:::-;11898:169;;;;-1:-1:-1;;;11898:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12086:21:0;;;;:51;;-1:-1:-1;;;;;;12111:21:0;;;;;;:12;:21;;;;;;;;;:26;12086:51;12078:104;;;;-1:-1:-1;;;12078:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12193:33;;;;:17;:33;;;;;;;;-1:-1:-1;;;;;12193:39:0;;;;;;;;;;;;;:49;;-1:-1:-1;;;;;;12193:49:0;;;;;;;;;12258:92;;;;;;;12193:39;;:33;;12258:92;;;;;;;;;11768:590;;;:::o;5565:42::-;;;;:::o;5692:30::-;;;;:::o;5276:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12511:4661::-;12590:17;12628:21;;;:5;:21;;;;;;;;-1:-1:-1;;;;;12628:27:0;;;;;;;;;;;;:32;12620:77;;;;;-1:-1:-1;;;12620:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12708:21;;;;:5;:21;;;;;;;;-1:-1:-1;;;;;12708:27:0;;;;;;;;;;:31;;-1:-1:-1;;12708:31:0;12738:1;12708:31;;;12831:10;;:42;;-1:-1:-1;;;12831:42:0;;;;;;;;;;12708:21;;;;12831:10;;;;;:26;;:42;;;;;;;;;;;;;;:10;:42;;;2:2:-1;;;;27:1;24;17:12;2:2;12831:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12831:42:0;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;12831:42:0;;;;;;;;;;;;;12929:10;;12831:42;12929:38;;-1:-1:-1;;;12929:38:0;;;;;;;;-1:-1:-1;;;;;12929:38:0;;;;;;;;;12831:42;;-1:-1:-1;12831:42:0;;-1:-1:-1;12831:42:0;;-1:-1:-1;12885:22:0;;;;12929:10;;;:16;;:38;;;;;12831:42;12929:38;;;;;:10;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;12929:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12929:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12929:38:0;;;;;;;12988:15;;12929:38;;-1:-1:-1;12929:38:0;-1:-1:-1;13007:1:0;12988:20;12980:71;;;;-1:-1:-1;;;12980:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13070:141;13106:1;13087:16;:20;13165:35;13174:8;13184:15;13165:8;:35::i;:::-;13120:42;13129:14;13145:16;13120:8;:42::i;:::-;:80;13070:4;:141::i;:::-;13062:187;;;;-1:-1:-1;;;13062:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13280:149;13315:24;;13285:27;;:54;13419:9;13352:63;13361:24;;13387:27;;13352:8;:63::i;:::-;:76;;13280:4;:149::i;:::-;13260:234;;;;-1:-1:-1;;;13260:234:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13562:1;13511:33;;;:17;:33;;;;;;;;-1:-1:-1;;;;;13511:39:0;;;;;;;;;;;;:53;;;;:128;;-1:-1:-1;13581:53:0;13594:33;;;:17;:33;;;;;;;;-1:-1:-1;;;;;13594:39:0;;;;;;;;;;;;;13581:53;;:12;:53;;;;;;;;:58;13511:128;13507:608;;;13674:33;;;;:17;:33;;;;;;;;-1:-1:-1;;;;;13674:39:0;;;;;;;;;;;;;;13658:99;;-1:-1:-1;;;13658:99:0;;13724:10;13658:99;;;;;;;;;;;;;;;;;;;13674:39;;;;;13658:65;;:99;;;;;;;;;;;;;;;;;;13674:39;13658:99;;;2:2:-1;;;;27:1;24;17:12;2:2;13658:99:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13658:99:0;;;;;;;;;;;;;;;;13654:450;;;;14:27:-1;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;14062:28:0;14077:12;14062:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14062:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14008:96;13654:450;;;13854:41;13859:2;13893:1;13863:27;:31;13854:4;:41::i;:::-;13850:144;;;13919:59;;;;;;;;-1:-1:-1;;;;;13919:59:0;;;13928:14;;13919:59;;;;;;;;;13850:144;13771:236;;;13654:450;14279:10;;:38;;;-1:-1:-1;;;14279:38:0;;;;;;;;-1:-1:-1;;;;;14279:38:0;;;;;;;;;14229:25;;;;14279:10;;;:16;;:38;;;;;;;;;;;;:10;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;14279:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14279:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14279:38:0;;;;;;;;;-1:-1:-1;14279:38:0;-1:-1:-1;14338:66:0;14343:35;;;;14380:23;;;;14338:4;:66::i;:::-;14330:127;;;;-1:-1:-1;;;14330:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14527:10:0;;:42;;;-1:-1:-1;;;14527:42:0;;;;;;;;;;-1:-1:-1;;;;;14527:10:0;;;;:26;;:42;;;;;;;;;;;;;;;:10;:42;;;2:2:-1;;;;27:1;24;17:12;2:2;14527:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14527:42:0;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;14527:42:0;;;;;;;;;14609:10;;14527:42;14609:38;;-1:-1:-1;;;14609:38:0;;;;;;;;-1:-1:-1;;;;;14609:38:0;;;;;;;;;14527:42;;-1:-1:-1;14527:42:0;;-1:-1:-1;14609:10:0;;;;;:16;;:38;;;;;14527:42;14609:38;;;;;;:10;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;14609:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14609:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14609:38:0;;;;;;;;;-1:-1:-1;14609:38:0;-1:-1:-1;14664:108:0;14669:20;;;14736:35;14609:38;14755:15;14736:8;:35::i;14664:108::-;14660:2461;;;14787:36;;:::i;:::-;-1:-1:-1;14826:31:0;;;;:15;:31;;;;;;;;14787:70;;;;;;;;;-1:-1:-1;;;;;14787:70:0;;;;;;;;;;;;;;;;;;;;;;15007:24;;15033:27;;14787:70;;14826:31;14900:235;;14922:8;;14787:70;;15071:15;;14945:123;;14954:108;;14787:70;;14998:63;;15007:24;14998:8;:63::i;14900:235::-;14872:263;;15176:1;15156:17;:21;15148:64;;;;;-1:-1:-1;;;15148:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15233:116;15261:8;15240:17;:29;15339:9;15271:64;15280:37;15289:8;15299:17;15280:8;:37::i;:::-;15319:15;15271:8;:64::i;:::-;:77;;15233:6;:116::i;:::-;15225:157;;;;;-1:-1:-1;;;15225:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15397:24;15424:79;15432:14;15494:8;15448:43;15457:14;15473:17;15448:8;:43::i;:::-;:54;;;;15424:79;15397:106;;15545:1;15526:16;:20;15518:74;;;;-1:-1:-1;;;15518:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15613:61;-1:-1:-1;;;15618:16:0;:26;;-1:-1:-1;;;15646:17:0;:27;;15613:4;:61::i;:::-;15605:119;;;;-1:-1:-1;;;15605:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15739:10;;15841:16;;15739:187;;;-1:-1:-1;;;15739:187:0;;;;;;;;-1:-1:-1;;;;;15739:187:0;;;;;;;15826:4;15739:187;;;;15841:16;;;15739:187;;;;:10;15860:25;;;15739:187;;;;15887:26;;;15739:187;;;;;;:10;;;;;:42;;:187;;;;;:10;:187;;;;;:10;;:187;;;2:2:-1;;;;27:1;24;17:12;2:2;15739:187:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15939:16:0;;-1:-1:-1;;;;;15939:16:0;;-1:-1:-1;15939:32:0;;-1:-1:-1;15972:44:0;15981:17;16000:15;15972:8;:44::i;:::-;15939:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15939:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15939:78:0;;;;16242:22;7511:8;16272:89;16281:44;16290:17;16309:15;16281:8;:44::i;:::-;16327:14;:33;;;16272:8;:89::i;:::-;:95;;;;;;16242:125;;16412:53;16421:27;;16450:14;16412:8;:53::i;:::-;16382:27;:83;16521:37;;16663:16;;16494:333;;;-1:-1:-1;;;16494:333:0;;-1:-1:-1;;;;;16494:333:0;;;;;;;16663:16;;;16494:333;;;;;;;;;;;;;;;;16521:37;16494:333;;;;;;;;:78;;;;;;;:333;;;;;;;;;;;;;;;;:78;:333;;;2:2:-1;;;;27:1;24;17:12;2:2;16494:333:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16494:333:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16494:333:0;16884:27;;16850:62;;;;;;;16494:333;;-1:-1:-1;16850:62:0;;;;;;16494:333;16850:62;;;14660:2461;16971:4;-1:-1:-1;;;;;16945:164:0;16955:14;16945:164;16977:16;16995:17;17014:44;17023:17;17042:15;17014:8;:44::i;:::-;17060:37;;16945:164;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16945:164:0;;;;;;;;;;;;;;;;;;;;14660:2461;;;;-1:-1:-1;;;17163:1:0;17133:21;;;-1:-1:-1;;17133:5:0;:21;;;;;;;;-1:-1:-1;;;;;17133:27:0;;;;;;;;;;:31;;-1:-1:-1;;17133:31:0;;;12511:4661;:::o;4054:160::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4135:21:0;::::1;4159:1;4135:21:::0;;;:12:::1;:21;::::0;;;;;;;:25;;;;4176:30;;;;;;;::::1;::::0;;;;;;;;::::1;4054:160:::0;:::o;10666:629::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10820:9:::1;-1:-1:-1::0;;;10820:37:0::1;10816:356;;;10874:10;::::0;::::1;10906:31:::0;;;:15:::1;:31;::::0;;;;;:54;10874:87;;-1:-1:-1;;;10874:87:0;;-1:-1:-1;;;;;10906:54:0;;::::1;10874:87;::::0;::::1;::::0;;;:10;::::1;::::0;:31:::1;::::0;:87;;;;;:10;;:87;;;;;;:10;;:87;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;10874:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;;10976:31:0::1;::::0;;;:15:::1;:31;::::0;;;;;:61;;-1:-1:-1;;;;;;10976:61:0::1;-1:-1:-1::0;;;;;10976:61:0;;::::1;::::0;;::::1;::::0;;;11052:10:::1;::::0;:40;;-1:-1:-1;;;11052:40:0;;::::1;::::0;::::1;::::0;;;;;;:10;;;::::1;::::0;-1:-1:-1;11052:34:0::1;::::0;:40;;;;;10976:31;;11052:40;;;;;10976:31;11052:10;:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;11052:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11052:40:0;;;;10816:356;;;11119:53;;-1:-1:-1::0;;;11119:53:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10816:356;11188:99;::::0;;;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;11188:99:0;::::1;::::0;;;;;;::::1;::::0;;;;;;;::::1;10666:629:::0;;;:::o;3168:48::-;;;;;;;;;;;;;:::o;9170:300::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9266:9:::1;-1:-1:-1::0;;;9266:31:0::1;9262:151;;;9299:16;:45:::0;;-1:-1:-1;;;;;;9299:45:0::1;-1:-1:-1::0;;;;;9299:45:0;::::1;;::::0;;9429:33:::1;::::0;;;;;-1:-1:-1;;;;;9429:33:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;9170:300:::0;;:::o;5731:38::-;;;-1:-1:-1;;;;;5731:38:0;;:::o;11395:120::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11473:1:::1;11455:15;:19:::0;;;11490:17:::1;::::0;::::1;::::0;11473:1;11490:17:::1;11395:120::o:0;2679:162::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2758:27:0;::::1;2788:1;2758:27:::0;;;::::1;::::0;;;;;;;:31;;;;2805:28;;;;;;;::::1;::::0;;;;;;;;::::1;2679:162:::0;:::o;3388:487::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3540:64:::1;::::0;;-1:-1:-1;;;3540:64:0;;3582:4:::1;3540:64;::::0;::::1;::::0;3467:7:::1;3540:64:::0;;;;;;;;3467:7;;;;-1:-1:-1;;;;;3540:33:0;::::1;::::0;::::1;::::0;:64;;;;;::::1;::::0;;;;;;;;3467:7;3540:33;:64;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;3540:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3540:64:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3540:64:0;;::::1;::::0;::::1;::::0;;;;;;;;-1:-1:-1;3540:64:0;;-1:-1:-1;3540:64:0;-1:-1:-1;3540:64:0;3615:47:::1;;;::::0;;-1:-1:-1;;;3615:47:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3681:69;-1:-1:-1::0;;3686:15:0::1;:30;-1:-1:-1::0;;3718:16:0::1;:31;3681:4;:69::i;:::-;3673:115;;;;-1:-1:-1::0;;;3673:115:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3799:21:0;::::1;;::::0;;;3823:1:::1;3799:21;::::0;;;;;;;;:25;;;;3840:27;;;;;;;::::1;::::0;;;;;;;;::::1;3066:1;;;3388:487:::0;:::o;5776:44::-;;;-1:-1:-1;;;;;5776:44:0;;:::o;4958:71::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4958:71:0;;;;;:::o;9719:675::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9873:9:::1;-1:-1:-1::0;;;9873:33:0::1;9869:408;;;9908:31;::::0;;;:15:::1;:31;::::0;;;;:50:::1;;:57:::0;;;9869:408:::1;;;9985:9;-1:-1:-1::0;;;9985:34:0::1;9981:296;;;7608:17:::0;10042:32;::::1;;10034:92;;;;-1:-1:-1::0;;;10034:92:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10139:31;::::0;;;:15:::1;:31;::::0;;;;;;;:51:::1;:58:::0;;;9981:296:::1;10293:93;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;9719:675:::0;;;:::o;8697:294::-;2994:10;2975:18;:30;;;;;;;;;;;3009:1;2975:35;2967:88;;;;-1:-1:-1;;;2967:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8793:9:::1;:39;;8789:145;;;8834:24;:31:::0;;;8950:33:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;8697:294:::0;;:::o;7792:153::-;7890:5;;;7885:16;;;;7877:60;;;;;-1:-1:-1;;;7877:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8123:128;8185:9;8215:1;8211;:5;8207:37;;;-1:-1:-1;8224:1:0;8207:37;;;-1:-1:-1;8240:1:0;;8123:128;-1:-1:-1;8123:128:0:o;7951:166::-;8014:9;8044:6;;;:30;;-1:-1:-1;;8059:5:0;;;8073:1;8068;8059:5;8068:1;8054:15;;;;;:20;8044:30;8036:73;;;;;-1:-1:-1;;;8036:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8391:105;8480:8;;8473:16::o;8281:104::-;8368:9;;8361:17::o;7634:152::-;7732:5;;;7727:16;;;;7719:59;;;;;-1:-1:-1;;;7719:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:16301;;;;;;;;;;-1:-1:-1;;;;;2185:16301:0;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://68179bf0f11a0a9c78c3eff0f68aa7f04051c7872c191cf0a6f978ae06a8e6b1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.