ETH Price: $2,077.54 (-4.41%)

Contract

0xA56eD04EB7A51C62F3e4FeEE15bD5cf0D6EfAa4E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FiRMSlashingModule

Compiler Version
v0.8.29+commit.ab55807c

Optimization Enabled:
No with 200 runs

Other Settings:
cancun EvmVersion
pragma solidity ^0.8.21;

interface IJuniorPool {
    function slash(uint amount) external returns(uint slashed);
}

interface IDBR {
    function markets(address) external view returns(bool);
}

interface IERC20 {
    function approve(address pender, uint amount) external;
}

interface IMarket {
    function debts(address borrower) external view returns(uint);
    function getCollateralValue(address borrower) external view returns(uint);
    function repay(address borrower, uint amount) external;
}

contract FiRMSlashingModule {
    
    IJuniorPool public immutable JUNIOR_POOL;
    IDBR public immutable DBR;
    IERC20 public immutable DOLA;
    address public gov;
    address public pendingGov;
    address public guardian;
    uint public maxCollateralValue = 200e18;
    uint public minDebt = 50e18;
    uint public activationDelay = 14 days;
    uint public constant MIN_ACTIVATION_DELAY = 7 days;


    mapping(address => bool) public allowedMarkets;
    mapping(address => uint) public activationTime;

    constructor(address _slashingPool, address _dbr, address _dola, address _gov){
        require(_gov != address(0), "Zero address");
        JUNIOR_POOL = IJuniorPool(_slashingPool);
        DBR = IDBR(_dbr);
        DOLA = IERC20(_dola);
        gov = _gov;
    }

    modifier onlyRole(address role, string memory errMsg) {
        require(msg.sender == role, errMsg);
        _;
    }

    event NewPendingGov(address);
    event NewGov(address);
    event NewGuardian(address);
    event NewMarket(address, uint activationTime);
    event MarketRemoved(address);
    event Slash(address indexed market, address indexed borrower, uint amount, uint debt, uint collateralValue);
    event MaxCollateralValueSet(uint oldValue, uint newValue);
    event MinDebtSet(uint oldValue, uint newValue);
    event ActivationDelaySet(uint oldValue, uint newValue);


    /**
     * @notice Repays up to the total bad debt incurred by `borrower` in FiRM `market`
     * @dev Bad debt is not guaranteed to be repaid, as their may not be enough funds in the JUNIOR_POOL
     * @param market The FiRM market contract with bad debt
     * @param borrower The borrower that has incurred bad debt
     * @return The amount of repaid bad debt
     */
    function slash(address market, address borrower) public returns(uint) {
        require(allowedMarkets[market], "Market not allowed"); 
        require(DBR.markets(market), "Market not active FiRM market");
        require(activationTime[market] <= block.timestamp && activationTime[market] > 0, "Market protection not activated");
        uint collateralValue = IMarket(market).getCollateralValue(borrower);
        uint debt = IMarket(market).debts(borrower);
        require(debt > collateralValue, "No bad debt");
        //We require debt to be above a minDebtValue to avoid unliquidateable debt being used to drain jDOLA depositors
        require(debt >= minDebt, "Debt too low");
        //We want positions to be liquidated before repaying bad debt, so we enforce a max collateral value
        require(collateralValue <= maxCollateralValue, "Collateral value too high");
        uint slashed = JUNIOR_POOL.slash(debt - collateralValue);
        DOLA.approve(market, slashed);
        IMarket(market).repay(borrower, slashed);
        emit Slash(market, borrower, slashed, debt, collateralValue);
        return slashed;
    }

    /// ADMIN METHODS

    /**
     * @notice Adds a market to the protected pool of markets after an activation delay, allowing bad debt repayments
     * @dev WARNING: MAKE SURE MARKET CONTRACT ISN'T A TROJAN CONTRACT THAT CAN STEAL BAD DEBT REPAYMENTS
     * @param market New market to add to protected pool
     */
    function allowMarket(address market) onlyRole(gov, "ONLY GOV") external {
        allowedMarkets[market] = true;
        activationTime[market] = block.timestamp + activationDelay;
        emit NewMarket(market, block.timestamp + activationDelay);
    }

    /**
     * @notice Removes a market from the protected pool of markets.
     * @dev Guardian role can disallow market during the activation delay
     * @param market Market to have protections removed
     */
    function disallowMarket(address market) external {
        require(msg.sender == guardian || msg.sender == gov, "ONLY GUARDIAN OR GOV");
        if(msg.sender == guardian){
            require(block.timestamp < activationTime[market], "GUARDIAN CANNOT REMOVE ACTIVE MARKET");
        }
        allowedMarkets[market] = false;
        activationTime[market] = 0;
        emit MarketRemoved(market);
    }

    /**
     * @notice Sets the max collateral value for slashings
     * @dev Repayment of bad debt should only happen after liquidations have taken place
     * @param _maxCollateralValue The new max collateral value
     */
    function setMaxCollateralValue(uint _maxCollateralValue) external onlyRole(gov, "ONLY GOV") {
        require(_maxCollateralValue > 0, "Max collateral value must be > 0");
        emit MaxCollateralValueSet(maxCollateralValue, _maxCollateralValue);
        maxCollateralValue = _maxCollateralValue;
    }

    /**
     * @notice Sets the min debt value for slashings
     * @dev Min debt value avoids tiny unliquidateable positions to rack up debt and incur losses for jDOLA depositors
     * @param _minDebt The new min debt
     */
    function setMinDebt(uint _minDebt) external onlyRole(gov, "ONLY GOV") {
        emit MinDebtSet(minDebt, _minDebt);
        minDebt = _minDebt;
    }

    /**
     * @notice Sets the activation delay.
     * @param _activationDelay The new activation delay. Must be above the hardcoded min activation delay.
     */
    function setActivationDelay(uint _activationDelay) external onlyRole(gov, "ONLY GOV") {
        require(_activationDelay >= MIN_ACTIVATION_DELAY, "ACTIVATION DELAY BELOW MIN");
        emit ActivationDelaySet(activationDelay, _activationDelay);
        activationDelay = _activationDelay;
    }

    /**
     * @notice Sets the pending gov
     * @dev Contract uses set-accept pattern for governance change
     * @param _pendingGov The new pending gov
     */
    function setPendingGov(address _pendingGov) onlyRole(gov, "ONLY GOV") external {
        pendingGov = _pendingGov;
        emit NewPendingGov(pendingGov);
    }

    /**
     * @notice Sets the guardian role. Guardian may cancel the inclusion of new markets in the activation period.
     * @param _guardian Address of the new guardian
     */
    function setGuardian(address _guardian) onlyRole(gov, "ONLY GOV") external {
        guardian = _guardian;
        emit NewGuardian(guardian);
    }

    /**
     * @notice Callable by pending gov to accept gov role
     * @dev Contract uses set-accept pattern for governance
     */
    function acceptGov() onlyRole(pendingGov, "ONLY PENDING GOV") external {
        gov = pendingGov;
        pendingGov = address(0);
        emit NewGov(gov);
    }
}

Settings
{
  "remappings": [
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_slashingPool","type":"address"},{"internalType":"address","name":"_dbr","type":"address"},{"internalType":"address","name":"_dola","type":"address"},{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"ActivationDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"MarketRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxCollateralValueSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinDebtSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"NewGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"NewGuardian","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"activationTime","type":"uint256"}],"name":"NewMarket","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"NewPendingGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"market","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"collateralValue","type":"uint256"}],"name":"Slash","type":"event"},{"inputs":[],"name":"DBR","outputs":[{"internalType":"contract IDBR","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOLA","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"JUNIOR_POOL","outputs":[{"internalType":"contract IJuniorPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_ACTIVATION_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activationDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"activationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"allowMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedMarkets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"disallowMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCollateralValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_activationDelay","type":"uint256"}],"name":"setActivationDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxCollateralValue","type":"uint256"}],"name":"setMaxCollateralValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minDebt","type":"uint256"}],"name":"setMinDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingGov","type":"address"}],"name":"setPendingGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"address","name":"borrower","type":"address"}],"name":"slash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60e0604052680ad78ebc5ac62000006003556802b5e3af16b188000060045562127500600555348015610030575f5ffd5b506040516123b93803806123b983398181016040528101906100529190610202565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b7906102c0565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506102de565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101d1826101a8565b9050919050565b6101e1816101c7565b81146101eb575f5ffd5b50565b5f815190506101fc816101d8565b92915050565b5f5f5f5f6080858703121561021a576102196101a4565b5b5f610227878288016101ee565b9450506020610238878288016101ee565b9350506040610249878288016101ee565b925050606061025a878288016101ee565b91505092959194509250565b5f82825260208201905092915050565b7f5a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f6102aa600c83610266565b91506102b582610276565b602082019050919050565b5f6020820190508181035f8301526102d78161029e565b9050919050565b60805160a05160c05161209c61031d5f395f8181610b96015261102d01525f81816106e0015261078e01525f81816105640152610af0015261209c5ff3fe608060405234801561000f575f5ffd5b5060043610610135575f3560e01c80637bc6729b116100b6578063b5456b9b1161007a578063b5456b9b14610303578063b98e325b14610321578063cd8d200a1461033d578063e027ff911461036d578063efdf0bb014610389578063f17336d7146103a557610135565b80637bc6729b146102855780638a0dac4a1461028f5780638ab0e241146102ab57806392c592d0146102c9578063ac39680b146102e757610135565b806340f6405d116100fd57806340f6405d146101cd578063452a9320146101fd5780636234dc211461021b5780636d124715146102375780637aeccce91461025557610135565b806312d43a511461013957806322d672d714610157578063252408101461017357806328daf145146101915780633a8c0786146101af575b5f5ffd5b6101416103c3565b60405161014e91906117a7565b60405180910390f35b610171600480360381019061016c91906117f7565b6103e7565b005b61017b61053d565b60405161018891906117a7565b60405180910390f35b610199610562565b6040516101a6919061187d565b60405180910390f35b6101b7610586565b6040516101c491906118a5565b60405180910390f35b6101e760048036038101906101e291906118e8565b61058c565b6040516101f4919061192d565b60405180910390f35b6102056105a9565b60405161021291906117a7565b60405180910390f35b610235600480360381019061023091906117f7565b6105ce565b005b61023f6106de565b60405161024c9190611966565b60405180910390f35b61026f600480360381019061026a919061197f565b610702565b60405161027c91906118a5565b60405180910390f35b61028d610cf9565b005b6102a960048036038101906102a491906118e8565b610ebe565b005b6102b3611024565b6040516102c091906118a5565b60405180910390f35b6102d161102b565b6040516102de91906119dd565b60405180910390f35b61030160048036038101906102fc91906117f7565b61104f565b005b61030b6111a1565b60405161031891906118a5565b60405180910390f35b61033b600480360381019061033691906118e8565b6111a7565b005b610357600480360381019061035291906118e8565b61135e565b60405161036491906118a5565b60405180910390f35b610387600480360381019061038291906118e8565b611373565b005b6103a3600480360381019061039e91906118e8565b6115fc565b005b6103ad611762565b6040516103ba91906118a5565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161481906104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a69190611a66565b60405180910390fd5b5062093a808310156104f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ed90611ad0565b60405180910390fd5b7f293d72af226bd6f48fc96e954fa80023f4ba3238f6c8803bf4bcd27b97bebf5e60055484604051610529929190611aee565b60405180910390a182600581905550505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60055481565b6006602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d9190611a66565b60405180910390fd5b507f20bfb3b3367e6616b14087d1a8ee9ba1d84283da7c89eb9a7e88019b195c3042600454846040516106ca929190611aee565b60405180910390a182600481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078390611b5f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638e8f294b846040518263ffffffff1660e01b81526004016107e591906117a7565b602060405180830381865afa158015610800573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108249190611ba7565b610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90611c1c565b60405180910390fd5b4260075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054111580156108ec57505f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b61092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290611c84565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166397904e42846040518263ffffffff1660e01b815260040161096591906117a7565b602060405180830381865afa158015610980573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a49190611cb6565b90505f8473ffffffffffffffffffffffffffffffffffffffff16632ecd4e7d856040518263ffffffff1660e01b81526004016109e091906117a7565b602060405180830381865afa1580156109fb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1f9190611cb6565b9050818111610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90611d2b565b60405180910390fd5b600454811015610aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9f90611d93565b60405180910390fd5b600354821115610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490611dfb565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166345bc4d108484610b369190611e46565b6040518263ffffffff1660e01b8152600401610b5291906118a5565b6020604051808303815f875af1158015610b6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b929190611cb6565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b387836040518363ffffffff1660e01b8152600401610bef929190611e79565b5f604051808303815f87803b158015610c06575f5ffd5b505af1158015610c18573d5f5f3e3d5ffd5b505050508573ffffffffffffffffffffffffffffffffffffffff166322867d7886836040518363ffffffff1660e01b8152600401610c57929190611e79565b5f604051808303815f87803b158015610c6e575f5ffd5b505af1158015610c80573d5f5f3e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f90b0ec766ec13736f33b5835a5299270b027c72ba2f120df8105b329c22ba3c0838587604051610ce593929190611ea0565b60405180910390a380935050505092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601081526020017f4f4e4c592050454e44494e4720474f56000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db99190611a66565b60405180910390fd5b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f639717155292ce2c3e699929a8b65d14a637640f75ab5b6d165a4e735d82a4555f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610eb291906117a7565b60405180910390a15050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9190611a66565b60405180910390fd5b508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb6182387b7ea948602a7e04e662a27ce251dc3dd014eacaed10dce36b41bf1a560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161101791906117a7565b60405180910390a1505050565b62093a8081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110e9190611a66565b60405180910390fd5b505f831161115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190611f1f565b60405180910390fd5b7f3adbc0315c34ed2efcdc227e34bbc83e6a1cbc0725bd7b547a98a7f158d175576003548460405161118d929190611aee565b60405180910390a182600381905550505050565b60035481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614819061126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112669190611a66565b60405180910390fd5b50600160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600554426112d39190611f3d565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507eb8be5dd10422b2f44dca129cc52d80d2fecf400db379442066acc2dcc21f6783600554426113439190611f3d565b604051611351929190611e79565b60405180910390a1505050565b6007602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061141957505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90611fba565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361152c5760075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054421061152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290612048565b60405180910390fd5b5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f59d7b1e52008dc342c9421dadfc773114b914a65682a4e4b53cf60a970df0d77816040516115f191906117a7565b60405180910390a150565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161481906116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9190611a66565b60405180910390fd5b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff74ae56780e3765c0c0897ef57fb50a10a237584f419631812daf040913e1c9f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161175591906117a7565b60405180910390a1505050565b60045481565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61179182611768565b9050919050565b6117a181611787565b82525050565b5f6020820190506117ba5f830184611798565b92915050565b5f5ffd5b5f819050919050565b6117d6816117c4565b81146117e0575f5ffd5b50565b5f813590506117f1816117cd565b92915050565b5f6020828403121561180c5761180b6117c0565b5b5f611819848285016117e3565b91505092915050565b5f819050919050565b5f61184561184061183b84611768565b611822565b611768565b9050919050565b5f6118568261182b565b9050919050565b5f6118678261184c565b9050919050565b6118778161185d565b82525050565b5f6020820190506118905f83018461186e565b92915050565b61189f816117c4565b82525050565b5f6020820190506118b85f830184611896565b92915050565b6118c781611787565b81146118d1575f5ffd5b50565b5f813590506118e2816118be565b92915050565b5f602082840312156118fd576118fc6117c0565b5b5f61190a848285016118d4565b91505092915050565b5f8115159050919050565b61192781611913565b82525050565b5f6020820190506119405f83018461191e565b92915050565b5f6119508261184c565b9050919050565b61196081611946565b82525050565b5f6020820190506119795f830184611957565b92915050565b5f5f60408385031215611995576119946117c0565b5b5f6119a2858286016118d4565b92505060206119b3858286016118d4565b9150509250929050565b5f6119c78261184c565b9050919050565b6119d7816119bd565b82525050565b5f6020820190506119f05f8301846119ce565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a38826119f6565b611a428185611a00565b9350611a52818560208601611a10565b611a5b81611a1e565b840191505092915050565b5f6020820190508181035f830152611a7e8184611a2e565b905092915050565b7f41435449564154494f4e2044454c41592042454c4f57204d494e0000000000005f82015250565b5f611aba601a83611a00565b9150611ac582611a86565b602082019050919050565b5f6020820190508181035f830152611ae781611aae565b9050919050565b5f604082019050611b015f830185611896565b611b0e6020830184611896565b9392505050565b7f4d61726b6574206e6f7420616c6c6f77656400000000000000000000000000005f82015250565b5f611b49601283611a00565b9150611b5482611b15565b602082019050919050565b5f6020820190508181035f830152611b7681611b3d565b9050919050565b611b8681611913565b8114611b90575f5ffd5b50565b5f81519050611ba181611b7d565b92915050565b5f60208284031215611bbc57611bbb6117c0565b5b5f611bc984828501611b93565b91505092915050565b7f4d61726b6574206e6f7420616374697665204669524d206d61726b65740000005f82015250565b5f611c06601d83611a00565b9150611c1182611bd2565b602082019050919050565b5f6020820190508181035f830152611c3381611bfa565b9050919050565b7f4d61726b65742070726f74656374696f6e206e6f7420616374697661746564005f82015250565b5f611c6e601f83611a00565b9150611c7982611c3a565b602082019050919050565b5f6020820190508181035f830152611c9b81611c62565b9050919050565b5f81519050611cb0816117cd565b92915050565b5f60208284031215611ccb57611cca6117c0565b5b5f611cd884828501611ca2565b91505092915050565b7f4e6f2062616420646562740000000000000000000000000000000000000000005f82015250565b5f611d15600b83611a00565b9150611d2082611ce1565b602082019050919050565b5f6020820190508181035f830152611d4281611d09565b9050919050565b7f4465627420746f6f206c6f7700000000000000000000000000000000000000005f82015250565b5f611d7d600c83611a00565b9150611d8882611d49565b602082019050919050565b5f6020820190508181035f830152611daa81611d71565b9050919050565b7f436f6c6c61746572616c2076616c756520746f6f2068696768000000000000005f82015250565b5f611de5601983611a00565b9150611df082611db1565b602082019050919050565b5f6020820190508181035f830152611e1281611dd9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e50826117c4565b9150611e5b836117c4565b9250828203905081811115611e7357611e72611e19565b5b92915050565b5f604082019050611e8c5f830185611798565b611e996020830184611896565b9392505050565b5f606082019050611eb35f830186611896565b611ec06020830185611896565b611ecd6040830184611896565b949350505050565b7f4d617820636f6c6c61746572616c2076616c7565206d757374206265203e20305f82015250565b5f611f09602083611a00565b9150611f1482611ed5565b602082019050919050565b5f6020820190508181035f830152611f3681611efd565b9050919050565b5f611f47826117c4565b9150611f52836117c4565b9250828201905080821115611f6a57611f69611e19565b5b92915050565b7f4f4e4c5920475541524449414e204f5220474f560000000000000000000000005f82015250565b5f611fa4601483611a00565b9150611faf82611f70565b602082019050919050565b5f6020820190508181035f830152611fd181611f98565b9050919050565b7f475541524449414e2043414e4e4f542052454d4f564520414354495645204d415f8201527f524b455400000000000000000000000000000000000000000000000000000000602082015250565b5f612032602483611a00565b915061203d82611fd8565b604082019050919050565b5f6020820190508181035f83015261205f81612026565b905091905056fea2646970667358221220aaf1a2d19736bb64c574c5eef0746deaab8d4c2977c02c295fd5f6a3adabef5c64736f6c634300081d00330000000000000000000000005bacafbe2788b0ec837eb95f05938daf49224f54000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d710000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610135575f3560e01c80637bc6729b116100b6578063b5456b9b1161007a578063b5456b9b14610303578063b98e325b14610321578063cd8d200a1461033d578063e027ff911461036d578063efdf0bb014610389578063f17336d7146103a557610135565b80637bc6729b146102855780638a0dac4a1461028f5780638ab0e241146102ab57806392c592d0146102c9578063ac39680b146102e757610135565b806340f6405d116100fd57806340f6405d146101cd578063452a9320146101fd5780636234dc211461021b5780636d124715146102375780637aeccce91461025557610135565b806312d43a511461013957806322d672d714610157578063252408101461017357806328daf145146101915780633a8c0786146101af575b5f5ffd5b6101416103c3565b60405161014e91906117a7565b60405180910390f35b610171600480360381019061016c91906117f7565b6103e7565b005b61017b61053d565b60405161018891906117a7565b60405180910390f35b610199610562565b6040516101a6919061187d565b60405180910390f35b6101b7610586565b6040516101c491906118a5565b60405180910390f35b6101e760048036038101906101e291906118e8565b61058c565b6040516101f4919061192d565b60405180910390f35b6102056105a9565b60405161021291906117a7565b60405180910390f35b610235600480360381019061023091906117f7565b6105ce565b005b61023f6106de565b60405161024c9190611966565b60405180910390f35b61026f600480360381019061026a919061197f565b610702565b60405161027c91906118a5565b60405180910390f35b61028d610cf9565b005b6102a960048036038101906102a491906118e8565b610ebe565b005b6102b3611024565b6040516102c091906118a5565b60405180910390f35b6102d161102b565b6040516102de91906119dd565b60405180910390f35b61030160048036038101906102fc91906117f7565b61104f565b005b61030b6111a1565b60405161031891906118a5565b60405180910390f35b61033b600480360381019061033691906118e8565b6111a7565b005b610357600480360381019061035291906118e8565b61135e565b60405161036491906118a5565b60405180910390f35b610387600480360381019061038291906118e8565b611373565b005b6103a3600480360381019061039e91906118e8565b6115fc565b005b6103ad611762565b6040516103ba91906118a5565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161481906104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a69190611a66565b60405180910390fd5b5062093a808310156104f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ed90611ad0565b60405180910390fd5b7f293d72af226bd6f48fc96e954fa80023f4ba3238f6c8803bf4bcd27b97bebf5e60055484604051610529929190611aee565b60405180910390a182600581905550505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000005bacafbe2788b0ec837eb95f05938daf49224f5481565b60055481565b6006602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d9190611a66565b60405180910390fd5b507f20bfb3b3367e6616b14087d1a8ee9ba1d84283da7c89eb9a7e88019b195c3042600454846040516106ca929190611aee565b60405180910390a182600481905550505050565b7f000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d71081565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078390611b5f565b60405180910390fd5b7f000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d71073ffffffffffffffffffffffffffffffffffffffff16638e8f294b846040518263ffffffff1660e01b81526004016107e591906117a7565b602060405180830381865afa158015610800573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108249190611ba7565b610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90611c1c565b60405180910390fd5b4260075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054111580156108ec57505f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b61092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290611c84565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166397904e42846040518263ffffffff1660e01b815260040161096591906117a7565b602060405180830381865afa158015610980573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a49190611cb6565b90505f8473ffffffffffffffffffffffffffffffffffffffff16632ecd4e7d856040518263ffffffff1660e01b81526004016109e091906117a7565b602060405180830381865afa1580156109fb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1f9190611cb6565b9050818111610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90611d2b565b60405180910390fd5b600454811015610aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9f90611d93565b60405180910390fd5b600354821115610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490611dfb565b60405180910390fd5b5f7f0000000000000000000000005bacafbe2788b0ec837eb95f05938daf49224f5473ffffffffffffffffffffffffffffffffffffffff166345bc4d108484610b369190611e46565b6040518263ffffffff1660e01b8152600401610b5291906118a5565b6020604051808303815f875af1158015610b6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b929190611cb6565b90507f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff1663095ea7b387836040518363ffffffff1660e01b8152600401610bef929190611e79565b5f604051808303815f87803b158015610c06575f5ffd5b505af1158015610c18573d5f5f3e3d5ffd5b505050508573ffffffffffffffffffffffffffffffffffffffff166322867d7886836040518363ffffffff1660e01b8152600401610c57929190611e79565b5f604051808303815f87803b158015610c6e575f5ffd5b505af1158015610c80573d5f5f3e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f90b0ec766ec13736f33b5835a5299270b027c72ba2f120df8105b329c22ba3c0838587604051610ce593929190611ea0565b60405180910390a380935050505092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601081526020017f4f4e4c592050454e44494e4720474f56000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db99190611a66565b60405180910390fd5b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f639717155292ce2c3e699929a8b65d14a637640f75ab5b6d165a4e735d82a4555f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610eb291906117a7565b60405180910390a15050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9190611a66565b60405180910390fd5b508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb6182387b7ea948602a7e04e662a27ce251dc3dd014eacaed10dce36b41bf1a560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161101791906117a7565b60405180910390a1505050565b62093a8081565b7f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148190611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110e9190611a66565b60405180910390fd5b505f831161115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190611f1f565b60405180910390fd5b7f3adbc0315c34ed2efcdc227e34bbc83e6a1cbc0725bd7b547a98a7f158d175576003548460405161118d929190611aee565b60405180910390a182600381905550505050565b60035481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614819061126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112669190611a66565b60405180910390fd5b50600160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600554426112d39190611f3d565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507eb8be5dd10422b2f44dca129cc52d80d2fecf400db379442066acc2dcc21f6783600554426113439190611f3d565b604051611351929190611e79565b60405180910390a1505050565b6007602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061141957505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90611fba565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361152c5760075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054421061152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290612048565b60405180910390fd5b5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f59d7b1e52008dc342c9421dadfc773114b914a65682a4e4b53cf60a970df0d77816040516115f191906117a7565b60405180910390a150565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600881526020017f4f4e4c5920474f560000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161481906116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9190611a66565b60405180910390fd5b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff74ae56780e3765c0c0897ef57fb50a10a237584f419631812daf040913e1c9f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161175591906117a7565b60405180910390a1505050565b60045481565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61179182611768565b9050919050565b6117a181611787565b82525050565b5f6020820190506117ba5f830184611798565b92915050565b5f5ffd5b5f819050919050565b6117d6816117c4565b81146117e0575f5ffd5b50565b5f813590506117f1816117cd565b92915050565b5f6020828403121561180c5761180b6117c0565b5b5f611819848285016117e3565b91505092915050565b5f819050919050565b5f61184561184061183b84611768565b611822565b611768565b9050919050565b5f6118568261182b565b9050919050565b5f6118678261184c565b9050919050565b6118778161185d565b82525050565b5f6020820190506118905f83018461186e565b92915050565b61189f816117c4565b82525050565b5f6020820190506118b85f830184611896565b92915050565b6118c781611787565b81146118d1575f5ffd5b50565b5f813590506118e2816118be565b92915050565b5f602082840312156118fd576118fc6117c0565b5b5f61190a848285016118d4565b91505092915050565b5f8115159050919050565b61192781611913565b82525050565b5f6020820190506119405f83018461191e565b92915050565b5f6119508261184c565b9050919050565b61196081611946565b82525050565b5f6020820190506119795f830184611957565b92915050565b5f5f60408385031215611995576119946117c0565b5b5f6119a2858286016118d4565b92505060206119b3858286016118d4565b9150509250929050565b5f6119c78261184c565b9050919050565b6119d7816119bd565b82525050565b5f6020820190506119f05f8301846119ce565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a38826119f6565b611a428185611a00565b9350611a52818560208601611a10565b611a5b81611a1e565b840191505092915050565b5f6020820190508181035f830152611a7e8184611a2e565b905092915050565b7f41435449564154494f4e2044454c41592042454c4f57204d494e0000000000005f82015250565b5f611aba601a83611a00565b9150611ac582611a86565b602082019050919050565b5f6020820190508181035f830152611ae781611aae565b9050919050565b5f604082019050611b015f830185611896565b611b0e6020830184611896565b9392505050565b7f4d61726b6574206e6f7420616c6c6f77656400000000000000000000000000005f82015250565b5f611b49601283611a00565b9150611b5482611b15565b602082019050919050565b5f6020820190508181035f830152611b7681611b3d565b9050919050565b611b8681611913565b8114611b90575f5ffd5b50565b5f81519050611ba181611b7d565b92915050565b5f60208284031215611bbc57611bbb6117c0565b5b5f611bc984828501611b93565b91505092915050565b7f4d61726b6574206e6f7420616374697665204669524d206d61726b65740000005f82015250565b5f611c06601d83611a00565b9150611c1182611bd2565b602082019050919050565b5f6020820190508181035f830152611c3381611bfa565b9050919050565b7f4d61726b65742070726f74656374696f6e206e6f7420616374697661746564005f82015250565b5f611c6e601f83611a00565b9150611c7982611c3a565b602082019050919050565b5f6020820190508181035f830152611c9b81611c62565b9050919050565b5f81519050611cb0816117cd565b92915050565b5f60208284031215611ccb57611cca6117c0565b5b5f611cd884828501611ca2565b91505092915050565b7f4e6f2062616420646562740000000000000000000000000000000000000000005f82015250565b5f611d15600b83611a00565b9150611d2082611ce1565b602082019050919050565b5f6020820190508181035f830152611d4281611d09565b9050919050565b7f4465627420746f6f206c6f7700000000000000000000000000000000000000005f82015250565b5f611d7d600c83611a00565b9150611d8882611d49565b602082019050919050565b5f6020820190508181035f830152611daa81611d71565b9050919050565b7f436f6c6c61746572616c2076616c756520746f6f2068696768000000000000005f82015250565b5f611de5601983611a00565b9150611df082611db1565b602082019050919050565b5f6020820190508181035f830152611e1281611dd9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e50826117c4565b9150611e5b836117c4565b9250828203905081811115611e7357611e72611e19565b5b92915050565b5f604082019050611e8c5f830185611798565b611e996020830184611896565b9392505050565b5f606082019050611eb35f830186611896565b611ec06020830185611896565b611ecd6040830184611896565b949350505050565b7f4d617820636f6c6c61746572616c2076616c7565206d757374206265203e20305f82015250565b5f611f09602083611a00565b9150611f1482611ed5565b602082019050919050565b5f6020820190508181035f830152611f3681611efd565b9050919050565b5f611f47826117c4565b9150611f52836117c4565b9250828201905080821115611f6a57611f69611e19565b5b92915050565b7f4f4e4c5920475541524449414e204f5220474f560000000000000000000000005f82015250565b5f611fa4601483611a00565b9150611faf82611f70565b602082019050919050565b5f6020820190508181035f830152611fd181611f98565b9050919050565b7f475541524449414e2043414e4e4f542052454d4f564520414354495645204d415f8201527f524b455400000000000000000000000000000000000000000000000000000000602082015250565b5f612032602483611a00565b915061203d82611fd8565b604082019050919050565b5f6020820190508181035f83015261205f81612026565b905091905056fea2646970667358221220aaf1a2d19736bb64c574c5eef0746deaab8d4c2977c02c295fd5f6a3adabef5c64736f6c634300081d0033

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

0000000000000000000000005bacafbe2788b0ec837eb95f05938daf49224f54000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d710000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b

-----Decoded View---------------
Arg [0] : _slashingPool (address): 0x5BaCAfBe2788b0EC837eB95f05938DAf49224f54
Arg [1] : _dbr (address): 0xAD038Eb671c44b853887A7E32528FaB35dC5D710
Arg [2] : _dola (address): 0x865377367054516e17014CcdED1e7d814EDC9ce4
Arg [3] : _gov (address): 0x926dF14a23BE491164dCF93f4c468A50ef659D5B

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000005bacafbe2788b0ec837eb95f05938daf49224f54
Arg [1] : 000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d710
Arg [2] : 000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4
Arg [3] : 000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b


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

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.