ETH Price: $2,961.63 (+1.06%)
 

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
Update Rate123881352021-05-07 16:07:171663 days ago1620403637IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.04090708163.8
Update Rate123869992021-05-07 11:57:561663 days ago1620388676IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0148388157.40000175
Update Rate123859102021-05-07 7:47:561663 days ago1620373676IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0111226443.0042
Update Rate123847972021-05-07 3:37:531663 days ago1620358673IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0124731348.3
Update Rate123837232021-05-06 23:28:481664 days ago1620343728IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.012917450
Update Rate123825832021-05-06 19:17:351664 days ago1620328655IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0252843998
Update Rate123814502021-05-06 15:12:231664 days ago1620313943IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0188472173
Update Rate123803332021-05-06 10:58:331664 days ago1620298713IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0118916446
Update Rate123792302021-05-06 6:47:521664 days ago1620283672IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0113847344
Update Rate123780932021-05-06 2:38:301664 days ago1620268710IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0103479640
Update Rate123769672021-05-05 22:29:131665 days ago1620253753IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0136515853
Update Rate123758092021-05-05 18:17:501665 days ago1620238670IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0173020867
Update Rate123746472021-05-05 14:08:351665 days ago1620223715IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.03016915117
Update Rate123735492021-05-05 9:58:361665 days ago1620208716IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0085337633
Update Rate123724452021-05-05 5:50:571665 days ago1620193857IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0077534730
Update Rate123712982021-05-05 1:39:071666 days ago1620178747IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0116457345
Update Rate123702192021-05-04 21:33:011666 days ago1620163981IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0129340550
Update Rate123690832021-05-04 17:19:171666 days ago1620148757IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0186055272
Update Rate123679352021-05-04 13:08:081666 days ago1620133688IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0131904851
Update Rate123668282021-05-04 8:59:591666 days ago1620118799IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0093274936
Update Rate123657282021-05-04 4:48:201666 days ago1620103700IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0085344233
Update Rate123645382021-05-04 0:37:561667 days ago1620088676IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.014983658
Update Rate123633942021-05-03 20:28:081667 days ago1620073688IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0227438688
Update Rate123622612021-05-03 16:17:541667 days ago1620058674IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0164650463.7
Update Rate123611352021-05-03 12:08:211667 days ago1620043701IN
Reflexer Finance: GEB RRFM Setter
0 ETH0.0099360738.4
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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:
RateSetter

Compiler Version
v0.6.7+commit.b8d736ae

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-02-14
*/

// Copyright (C) 2020 Maker Ecosystem Growth Holdings, INC, Reflexer Labs, INC.

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU 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 General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

pragma solidity 0.6.7;

contract GebMath {
    uint256 public constant RAY = 10 ** 27;
    uint256 public constant WAD = 10 ** 18;

    function ray(uint x) public pure returns (uint z) {
        z = multiply(x, 10 ** 9);
    }
    function rad(uint x) public pure returns (uint z) {
        z = multiply(x, 10 ** 27);
    }
    function minimum(uint x, uint y) public pure returns (uint z) {
        z = (x <= y) ? x : y;
    }
    function addition(uint x, uint y) public pure returns (uint z) {
        z = x + y;
        require(z >= x, "uint-uint-add-overflow");
    }
    function subtract(uint x, uint y) public pure returns (uint z) {
        z = x - y;
        require(z <= x, "uint-uint-sub-underflow");
    }
    function multiply(uint x, uint y) public pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "uint-uint-mul-overflow");
    }
    function rmultiply(uint x, uint y) public pure returns (uint z) {
        z = multiply(x, y) / RAY;
    }
    function rdivide(uint x, uint y) public pure returns (uint z) {
        z = multiply(x, RAY) / y;
    }
    function wdivide(uint x, uint y) public pure returns (uint z) {
        z = multiply(x, WAD) / y;
    }
    function wmultiply(uint x, uint y) public pure returns (uint z) {
        z = multiply(x, y) / WAD;
    }
    function rpower(uint x, uint n, uint base) public pure returns (uint z) {
        assembly {
            switch x case 0 {switch n case 0 {z := base} default {z := 0}}
            default {
                switch mod(n, 2) case 0 { z := base } default { z := x }
                let half := div(base, 2)  // for rounding.
                for { n := div(n, 2) } n { n := div(n,2) } {
                    let xx := mul(x, x)
                    if iszero(eq(div(xx, x), x)) { revert(0,0) }
                    let xxRound := add(xx, half)
                    if lt(xxRound, xx) { revert(0,0) }
                    x := div(xxRound, base)
                    if mod(n,2) {
                        let zx := mul(z, x)
                        if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0,0) }
                        let zxRound := add(zx, half)
                        if lt(zxRound, zx) { revert(0,0) }
                        z := div(zxRound, base)
                    }
                }
            }
        }
    }
}

abstract contract StabilityFeeTreasuryLike {
    function getAllowance(address) virtual external view returns (uint, uint);
    function systemCoin() virtual external view returns (address);
    function pullFunds(address, address, uint) virtual external;
}

contract IncreasingTreasuryReimbursement is GebMath {
    // --- Auth ---
    mapping (address => uint) public authorizedAccounts;
    function addAuthorization(address account) virtual external isAuthorized {
        authorizedAccounts[account] = 1;
        emit AddAuthorization(account);
    }
    function removeAuthorization(address account) virtual external isAuthorized {
        authorizedAccounts[account] = 0;
        emit RemoveAuthorization(account);
    }
    modifier isAuthorized {
        require(authorizedAccounts[msg.sender] == 1, "IncreasingTreasuryReimbursement/account-not-authorized");
        _;
    }

    // --- Variables ---
    // Starting reward for the fee receiver/keeper
    uint256 public baseUpdateCallerReward;          // [wad]
    // Max possible reward for the fee receiver/keeper
    uint256 public maxUpdateCallerReward;           // [wad]
    // Max delay taken into consideration when calculating the adjusted reward
    uint256 public maxRewardIncreaseDelay;          // [seconds]
    // Rate applied to baseUpdateCallerReward every extra second passed beyond a certain point (e.g next time when a specific function needs to be called)
    uint256 public perSecondCallerRewardIncrease;   // [ray]

    // SF treasury
    StabilityFeeTreasuryLike  public treasury;

    // --- Events ---
    event AddAuthorization(address account);
    event RemoveAuthorization(address account);
    event ModifyParameters(
      bytes32 parameter,
      address addr
    );
    event ModifyParameters(
      bytes32 parameter,
      uint256 val
    );
    event FailRewardCaller(bytes revertReason, address feeReceiver, uint256 amount);

    constructor(
      address treasury_,
      uint256 baseUpdateCallerReward_,
      uint256 maxUpdateCallerReward_,
      uint256 perSecondCallerRewardIncrease_
    ) public {
        if (address(treasury_) != address(0)) {
          require(StabilityFeeTreasuryLike(treasury_).systemCoin() != address(0), "IncreasingTreasuryReimbursement/treasury-coin-not-set");
        }
        require(maxUpdateCallerReward_ >= baseUpdateCallerReward_, "IncreasingTreasuryReimbursement/invalid-max-caller-reward");
        require(perSecondCallerRewardIncrease_ >= RAY, "IncreasingTreasuryReimbursement/invalid-per-second-reward-increase");
        authorizedAccounts[msg.sender] = 1;

        treasury                        = StabilityFeeTreasuryLike(treasury_);
        baseUpdateCallerReward          = baseUpdateCallerReward_;
        maxUpdateCallerReward           = maxUpdateCallerReward_;
        perSecondCallerRewardIncrease   = perSecondCallerRewardIncrease_;
        maxRewardIncreaseDelay          = uint(-1);

        emit AddAuthorization(msg.sender);
        emit ModifyParameters("treasury", treasury_);
        emit ModifyParameters("baseUpdateCallerReward", baseUpdateCallerReward);
        emit ModifyParameters("maxUpdateCallerReward", maxUpdateCallerReward);
        emit ModifyParameters("perSecondCallerRewardIncrease", perSecondCallerRewardIncrease);
    }

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

    // --- Treasury ---
    /**
    * @notice This returns the stability fee treasury allowance for this contract by taking the minimum between the per block and the total allowances
    **/
    function treasuryAllowance() public view returns (uint256) {
        (uint total, uint perBlock) = treasury.getAllowance(address(this));
        return minimum(total, perBlock);
    }
    /*
    * @notice Get the SF reward that can be sent to a function caller right now
    */
    function getCallerReward(uint256 timeOfLastUpdate, uint256 defaultDelayBetweenCalls) public view returns (uint256) {
        bool nullRewards = (baseUpdateCallerReward == 0 && maxUpdateCallerReward == 0);
        if (either(timeOfLastUpdate >= now, nullRewards)) return 0;
        uint256 timeElapsed = (timeOfLastUpdate == 0) ? defaultDelayBetweenCalls : subtract(now, timeOfLastUpdate);
        if (either(timeElapsed < defaultDelayBetweenCalls, baseUpdateCallerReward == 0)) {
            return 0;
        }
        uint256 adjustedTime      = subtract(timeElapsed, defaultDelayBetweenCalls);
        uint256 maxPossibleReward = minimum(maxUpdateCallerReward, treasuryAllowance() / RAY);
        if (adjustedTime > maxRewardIncreaseDelay) {
            return maxPossibleReward;
        }
        uint256 calculatedReward = baseUpdateCallerReward;
        if (adjustedTime > 0) {
            calculatedReward = rmultiply(rpower(perSecondCallerRewardIncrease, adjustedTime, RAY), calculatedReward);
        }
        if (calculatedReward > maxPossibleReward) {
            calculatedReward = maxPossibleReward;
        }
        return calculatedReward;
    }
    /**
    * @notice Send a stability fee reward to an address
    * @param proposedFeeReceiver The SF receiver
    * @param reward The system coin amount to send
    **/
    function rewardCaller(address proposedFeeReceiver, uint256 reward) internal {
        if (address(treasury) == proposedFeeReceiver) return;
        if (either(address(treasury) == address(0), reward == 0)) return;
        address finalFeeReceiver = (proposedFeeReceiver == address(0)) ? msg.sender : proposedFeeReceiver;
        try treasury.pullFunds(finalFeeReceiver, treasury.systemCoin(), reward) {}
        catch(bytes memory revertReason) {
            emit FailRewardCaller(revertReason, finalFeeReceiver, reward);
        }
    }
}

abstract contract OracleLike {
    function getResultWithValidity() virtual external view returns (uint256, bool);
}
abstract contract OracleRelayerLike {
    function redemptionPrice() virtual external returns (uint256);
    function modifyParameters(bytes32,uint256) virtual external;
}
abstract contract PIDCalculator {
    function computeRate(uint256, uint256, uint256) virtual external returns (uint256);
    function rt(uint256, uint256, uint256) virtual external view returns (uint256);
    function pscl() virtual external view returns (uint256);
    function tlv() virtual external view returns (uint256);
}

contract RateSetter is IncreasingTreasuryReimbursement {
    // --- Variables ---
    // Settlement flag
    uint256 public contractEnabled;                 // [0 or 1]
    // Last recorded system coin market price
    uint256 public latestMarketPrice;               // [ray]
    // When the price feed was last updated
    uint256 public lastUpdateTime;                  // [timestamp]
    // Enforced gap between calls
    uint256 public updateRateDelay;                 // [seconds]

    // --- System Dependencies ---
    // OSM or medianizer for the system coin
    OracleLike                public orcl;
    // OracleRelayer where the redemption price is stored
    OracleRelayerLike         public oracleRelayer;
    // Calculator for the redemption rate
    PIDCalculator             public pidCalculator;

    // --- Events ---
    event UpdateRedemptionRate(
        uint marketPrice,
        uint redemptionPrice,
        uint redemptionRate
    );
    event FailUpdateRedemptionRate(
        bytes reason
    );
    event FailUpdateOracle(bytes revertReason, address orcl);

    constructor(
      address oracleRelayer_,
      address orcl_,
      address treasury_,
      address pidCalculator_,
      uint256 baseUpdateCallerReward_,
      uint256 maxUpdateCallerReward_,
      uint256 perSecondCallerRewardIncrease_,
      uint256 updateRateDelay_
    ) public IncreasingTreasuryReimbursement(treasury_, baseUpdateCallerReward_, maxUpdateCallerReward_, perSecondCallerRewardIncrease_) {
        oracleRelayer    = OracleRelayerLike(oracleRelayer_);
        orcl             = OracleLike(orcl_);
        pidCalculator    = PIDCalculator(pidCalculator_);

        updateRateDelay  = updateRateDelay_;
        contractEnabled  = 1;

        emit ModifyParameters("orcl", orcl_);
        emit ModifyParameters("oracleRelayer", oracleRelayer_);
        emit ModifyParameters("pidCalculator", pidCalculator_);
        emit ModifyParameters("updateRateDelay", updateRateDelay_);
    }

    // --- Management ---
    function modifyParameters(bytes32 parameter, address addr) external isAuthorized {
        require(contractEnabled == 1, "RateSetter/contract-not-enabled");
        if (parameter == "orcl") orcl = OracleLike(addr);
        else if (parameter == "oracleRelayer") oracleRelayer = OracleRelayerLike(addr);
        else if (parameter == "treasury") {
          require(StabilityFeeTreasuryLike(addr).systemCoin() != address(0), "RateSetter/treasury-coin-not-set");
          treasury = StabilityFeeTreasuryLike(addr);
        }
        else if (parameter == "pidCalculator") {
          pidCalculator = PIDCalculator(addr);
        }
        else revert("RateSetter/modify-unrecognized-param");
        emit ModifyParameters(
          parameter,
          addr
        );
    }
    function modifyParameters(bytes32 parameter, uint256 val) external isAuthorized {
        require(contractEnabled == 1, "RateSetter/contract-not-enabled");
        if (parameter == "baseUpdateCallerReward") {
          require(val <= maxUpdateCallerReward, "RateSetter/invalid-base-caller-reward");
          baseUpdateCallerReward = val;
        }
        else if (parameter == "maxUpdateCallerReward") {
          require(val >= baseUpdateCallerReward, "RateSetter/invalid-max-caller-reward");
          maxUpdateCallerReward = val;
        }
        else if (parameter == "perSecondCallerRewardIncrease") {
          require(val >= RAY, "RateSetter/invalid-caller-reward-increase");
          perSecondCallerRewardIncrease = val;
        }
        else if (parameter == "maxRewardIncreaseDelay") {
          require(val > 0, "RateSetter/invalid-max-increase-delay");
          maxRewardIncreaseDelay = val;
        }
        else if (parameter == "updateRateDelay") {
          require(val >= 0, "RateSetter/invalid-call-gap-length");
          updateRateDelay = val;
        }
        else revert("RateSetter/modify-unrecognized-param");
        emit ModifyParameters(
          parameter,
          val
        );
    }
    function disableContract() external isAuthorized {
        contractEnabled = 0;
    }

    // --- Feedback Mechanism ---
    /**
    * @notice Compute and set a new redemption rate
    * @param feeReceiver The proposed address that should receive the reward for calling this function
    *        (unless it's address(0) in which case msg.sender will get it)
    **/
    function updateRate(address feeReceiver) external {
        require(contractEnabled == 1, "RateSetter/contract-not-enabled");
        // Check delay between calls
        require(either(subtract(now, lastUpdateTime) >= updateRateDelay, lastUpdateTime == 0), "RateSetter/wait-more");
        // Get price feed updates
        (uint256 marketPrice, bool hasValidValue) = orcl.getResultWithValidity();
        // If the oracle has a value
        require(hasValidValue, "RateSetter/invalid-oracle-value");
        // If the price is non-zero
        require(marketPrice > 0, "RateSetter/null-price");
        // Get the latest redemption price
        uint redemptionPrice = oracleRelayer.redemptionPrice();
        // Get the caller's reward
        uint256 callerReward = getCallerReward(lastUpdateTime, updateRateDelay);
        // Store the latest market price
        latestMarketPrice = ray(marketPrice);
        // Calculate the rate
        uint256 tlv       = pidCalculator.tlv();
        uint256 iapcr     = rpower(pidCalculator.pscl(), tlv, RAY);
        uint256 validated = pidCalculator.computeRate(
            marketPrice,
            redemptionPrice,
            iapcr
        );
        // Store the timestamp of the update
        lastUpdateTime = now;
        // Update the rate inside the system (if it doesn't throw)
        try oracleRelayer.modifyParameters("redemptionRate", validated) {
          // Emit success event
          emit UpdateRedemptionRate(
            ray(marketPrice),
            redemptionPrice,
            validated
          );
        }
        catch(bytes memory revertReason) {
          emit FailUpdateRedemptionRate(
            revertReason
          );
        }
        // Pay the caller for updating the rate
        rewardCaller(feeReceiver, callerReward);
    }

    // --- Getters ---
    /**
    * @notice Get the market price from the system coin oracle
    **/
    function getMarketPrice() external view returns (uint256) {
        (uint256 marketPrice, ) = orcl.getResultWithValidity();
        return marketPrice;
    }
    /**
    * @notice Get the redemption and the market prices for the system coin
    **/
    function getRedemptionAndMarketPrices() external returns (uint256 marketPrice, uint256 redemptionPrice) {
        (marketPrice, ) = orcl.getResultWithValidity();
        redemptionPrice = oracleRelayer.redemptionPrice();
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"oracleRelayer_","type":"address"},{"internalType":"address","name":"orcl_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"},{"internalType":"address","name":"pidCalculator_","type":"address"},{"internalType":"uint256","name":"baseUpdateCallerReward_","type":"uint256"},{"internalType":"uint256","name":"maxUpdateCallerReward_","type":"uint256"},{"internalType":"uint256","name":"perSecondCallerRewardIncrease_","type":"uint256"},{"internalType":"uint256","name":"updateRateDelay_","type":"uint256"}],"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":"bytes","name":"revertReason","type":"bytes"},{"indexed":false,"internalType":"address","name":"feeReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FailRewardCaller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"revertReason","type":"bytes"},{"indexed":false,"internalType":"address","name":"orcl","type":"address"}],"name":"FailUpdateOracle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"FailUpdateRedemptionRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redemptionPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redemptionRate","type":"uint256"}],"name":"UpdateRedemptionRate","type":"event"},{"inputs":[],"name":"RAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"addition","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseUpdateCallerReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractEnabled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeOfLastUpdate","type":"uint256"},{"internalType":"uint256","name":"defaultDelayBetweenCalls","type":"uint256"}],"name":"getCallerReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRedemptionAndMarketPrices","outputs":[{"internalType":"uint256","name":"marketPrice","type":"uint256"},{"internalType":"uint256","name":"redemptionPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestMarketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRewardIncreaseDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxUpdateCallerReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"minimum","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"uint256","name":"val","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"multiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oracleRelayer","outputs":[{"internalType":"contract OracleRelayerLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orcl","outputs":[{"internalType":"contract OracleLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perSecondCallerRewardIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pidCalculator","outputs":[{"internalType":"contract PIDCalculator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"rad","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"ray","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rdivide","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rmultiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"base","type":"uint256"}],"name":"rpower","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"subtract","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"contract StabilityFeeTreasuryLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"feeReceiver","type":"address"}],"name":"updateRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateRateDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"wdivide","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"wmultiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"}]

60806040523480156200001157600080fd5b506040516200345a3803806200345a83398181016040526101008110156200003857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085848484600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614620001d457600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1663a7e944556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012757600080fd5b505afa1580156200013c573d6000803e3d6000fd5b505050506040513d60208110156200015357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415620001d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180620033ec6035913960400191505060405180910390fd5b5b828210156200022f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180620034216039913960400191505060405180910390fd5b6b033b2e3c9fd0803ce800000081101562000296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180620033aa6042913960600191505060405180910390fd5b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260018190555081600281905550806004819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003819055507f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f700010233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d18460405180807f74726561737572790000000000000000000000000000000000000000000000008152506020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a60015460405180807f6261736555706461746543616c6c65725265776172640000000000000000000081525060200182815260200191505060405180910390a17fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a60025460405180807f6d617855706461746543616c6c6572526577617264000000000000000000000081525060200182815260200191505060405180910390a17fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a60045460405180807f7065725365636f6e6443616c6c6572526577617264496e63726561736500000081525060200182815260200191505060405180910390a15050505087600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060098190555060016006819055507fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d18760405180807f6f72636c000000000000000000000000000000000000000000000000000000008152506020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d18860405180807f6f7261636c6552656c61796572000000000000000000000000000000000000008152506020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d18560405180807f70696443616c63756c61746f72000000000000000000000000000000000000008152506020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a8160405180807f7570646174655261746544656c6179000000000000000000000000000000000081525060200182815260200191505060405180910390a15050505050505050612b5480620008566000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806361d027b311610125578063a0871637116100ad578063dd2d2a121161007c578063dd2d2a12146108b0578063f238ffd2146108fc578063f74826bb14610948578063f752fdc31461098c578063fe4f5890146109d85761021c565b8063a0871637146107d2578063c8f33c911461081e578063d243f6b71461083c578063d6e882dc1461085a5761021c565b80636614f010116100f45780636614f010146106fa57806369dec276146107485780636a14602414610766578063894ba8331461078457806394f3f81d1461078e5761021c565b806361d027b31461064f57806363ac7ca71461069957806363c9f725146106be578063660e16c3146106dc5761021c565b80633ef5e445116101a857806346f3e81c1161017757806346f3e81c1461050f5780634a8d632c146105515780634faf61ab1461059b57806354f363a3146105e5578063552033c4146106315761021c565b80633ef5e4451461043d57806341b3a0d91461048957806343943b6b146104a7578063448a2638146104c55761021c565b80632009e568116101ef5780632009e5681461031957806324ba5884146103375780633425677e1461038f57806335b28153146103ad5780633c8bb3e6146103f15761021c565b8063056640b714610221578063102134471461026d578063165c4a16146102af5780631c1f908c146102fb575b600080fd5b6102576004803603604081101561023757600080fd5b810190808035906020019092919080359060200190929190505050610a10565b6040518082815260200191505060405180910390f35b6102996004803603602081101561028357600080fd5b8101908080359060200190929190505050610a39565b6040518082815260200191505060405180910390f35b6102e5600480360360408110156102c557600080fd5b810190808035906020019092919080359060200190929190505050610a50565b6040518082815260200191505060405180910390f35b610303610ae5565b6040518082815260200191505060405180910390f35b610321610aeb565b6040518082815260200191505060405180910390f35b6103796004803603602081101561034d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af1565b6040518082815260200191505060405180910390f35b610397610b09565b6040518082815260200191505060405180910390f35b6103ef600480360360208110156103c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c06565b005b6104276004803603604081101561040757600080fd5b810190808035906020019092919080359060200190929190505050610d47565b6040518082815260200191505060405180910390f35b6104736004803603604081101561045357600080fd5b810190808035906020019092919080359060200190929190505050610d6c565b6040518082815260200191505060405180910390f35b610491610def565b6040518082815260200191505060405180910390f35b6104af610df5565b6040518082815260200191505060405180910390f35b6104cd610dfb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053b6004803603602081101561052557600080fd5b8101908080359060200190929190505050610e21565b6040518082815260200191505060405180910390f35b610559610e40565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105a3610e66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61061b600480360360408110156105fb57600080fd5b810190808035906020019092919080359060200190929190505050610e8c565b6040518082815260200191505060405180910390f35b610639610f0f565b6040518082815260200191505060405180910390f35b610657610f1f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a1610f45565b604051808381526020018281526020019250505060405180910390f35b6106c66110a4565b6040518082815260200191505060405180910390f35b6106e46110aa565b6040518082815260200191505060405180910390f35b6107466004803603604081101561071057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611163565b005b610750611610565b6040518082815260200191505060405180910390f35b61076e611616565b6040518082815260200191505060405180910390f35b61078c611622565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c3565b005b610808600480360360408110156107e857600080fd5b810190808035906020019092919080359060200190929190505050611804565b6040518082815260200191505060405180910390f35b61082661182d565b6040518082815260200191505060405180910390f35b610844611833565b6040518082815260200191505060405180910390f35b61089a6004803603606081101561087057600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611839565b6040518082815260200191505060405180910390f35b6108e6600480360360408110156108c657600080fd5b8101908080359060200190929190803590602001909291905050506118ff565b6040518082815260200191505060405180910390f35b6109326004803603604081101561091257600080fd5b810190808035906020019092919080359060200190929190505050611919565b6040518082815260200191505060405180910390f35b61098a6004803603602081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2b565b005b6109c2600480360360408110156109a257600080fd5b8101908080359060200190929190803590602001909291905050506121b3565b6040518082815260200191505060405180910390f35b610a0e600480360360408110156109ee57600080fd5b8101908080359060200190929190803590602001909291905050506121d8565b005b60006b033b2e3c9fd0803ce8000000610a298484610a50565b81610a3057fe5b04905092915050565b6000610a4982633b9aca00610a50565b9050919050565b600080821480610a6d5750828283850292508281610a6a57fe5b04145b610adf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f75696e742d75696e742d6d756c2d6f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b60015481565b60035481565b60006020528060005260406000206000915090505481565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb5a662e306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604080518083038186803b158015610bac57600080fd5b505afa158015610bc0573d6000803e3d6000fd5b505050506040513d6040811015610bd657600080fd5b81019080805190602001909291908051906020019092919050505091509150610bff82826118ff565b9250505090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f700010281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000670de0b6b3a7640000610d5c8484610a50565b81610d6357fe5b04905092915050565b6000818303905082811115610de9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f75696e742d75696e742d7375622d756e646572666c6f7700000000000000000081525060200191505060405180910390fd5b92915050565b60065481565b60045481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e39826b033b2e3c9fd0803ce8000000610a50565b9050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000818301905082811015610f09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f75696e742d75696e742d6164642d6f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6b033b2e3c9fd0803ce800000081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015610faf57600080fd5b505afa158015610fc3573d6000803e3d6000fd5b505050506040513d6040811015610fd957600080fd5b8101908080519060200190929190805190602001909291905050505080925050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5b748c06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b505050506040513d602081101561108d57600080fd5b810190808051906020019092919050505090509091565b60095481565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b15801561111457600080fd5b505afa158015611128573d6000803e3d6000fd5b505050506040513d604081101561113e57600080fd5b8101908080519060200190929190805190602001909291905050505090508091505090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b600160065414611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f636f6e74726163742d6e6f742d656e61626c65640081525060200191505060405180910390fd5b7f6f72636c000000000000000000000000000000000000000000000000000000008214156112e05780600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115a1565b7f6f7261636c6552656c617965720000000000000000000000000000000000000082141561134e5780600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115a0565b7f74726561737572790000000000000000000000000000000000000000000000008214156114df57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663a7e944556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d457600080fd5b505afa1580156113e8573d6000803e3d6000fd5b505050506040513d60208110156113fe57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f526174655365747465722f74726561737572792d636f696e2d6e6f742d73657481525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061159f565b7f70696443616c63756c61746f720000000000000000000000000000000000000082141561154d5780600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061159e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ac56024913960400191505060405180910390fd5b5b5b5b7fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d18282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60025481565b670de0b6b3a764000081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b6000600681905550565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461175a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b90381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008161181d846b033b2e3c9fd0803ce8000000610a50565b8161182457fe5b04905092915050565b60085481565b60075481565b600083600081146118df5760028406600081146118585785925061185c565b8392505b50600283046002850494505b84156118d957858602868782041461187f57600080fd5b8181018181101561188f57600080fd5b858104975060028706156118cc5787850285898204141589151516156118b457600080fd5b838101818110156118c457600080fd5b878104965050505b5050600285049450611868565b506118f7565b83600081146118f157600092506118f5565b8392505b505b509392505050565b60008183111561190f5781611911565b825b905092915050565b600080600060015414801561193057506000600254145b905061193f4285101582612651565b1561194e576000915050611a25565b6000808514611966576119614286610d6c565b611968565b835b905061197b848210600060015414612651565b1561198b57600092505050611a25565b60006119978286610d6c565b905060006119c36002546b033b2e3c9fd0803ce80000006119b6610b09565b816119bd57fe5b046118ff565b90506003548211156119db5780945050505050611a25565b600060015490506000831115611a1057611a0d611a07600454856b033b2e3c9fd0803ce8000000611839565b82610a10565b90505b81811115611a1c578190505b80955050505050505b92915050565b600160065414611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f636f6e74726163742d6e6f742d656e61626c65640081525060200191505060405180910390fd5b611ac2600954611ab542600854610d6c565b1015600060085414612651565b611b34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f526174655365747465722f776169742d6d6f726500000000000000000000000081525060200191505060405180910390fd5b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015611b9e57600080fd5b505afa158015611bb2573d6000803e3d6000fd5b505050506040513d6040811015611bc857600080fd5b8101908080519060200190929190805190602001909291905050509150915080611c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f696e76616c69642d6f7261636c652d76616c75650081525060200191505060405180910390fd5b60008211611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f526174655365747465722f6e756c6c2d7072696365000000000000000000000081525060200191505060405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5b748c06040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d3c57600080fd5b505af1158015611d50573d6000803e3d6000fd5b505050506040513d6020811015611d6657600080fd5b810190808051906020019092919050505090506000611d89600854600954611919565b9050611d9484610a39565b6007819055506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e3126ef6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0457600080fd5b505afa158015611e18573d6000803e3d6000fd5b505050506040513d6020811015611e2e57600080fd5b810190808051906020019092919050505090506000611efc600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f1b0b986040518163ffffffff1660e01b815260040160206040518083038186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d6020811015611ed857600080fd5b8101908080519060200190929190505050836b033b2e3c9fd0803ce8000000611839565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166371c7132e8887856040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b158015611f8557600080fd5b505af1158015611f99573d6000803e3d6000fd5b505050506040513d6020811015611faf57600080fd5b8101908080519060200190929190505050905042600881905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe4f5890826040518263ffffffff1660e01b815260040180807f726564656d7074696f6e52617465000000000000000000000000000000000000815250602001828152602001915050600060405180830381600087803b15801561206657600080fd5b505af1925050508015612077575060015b61214f573d80600081146120a7576040519150601f19603f3d011682016040523d82523d6000602084013e6120ac565b606091505b507f2b6fb175766701d6a337a6f637d3453fd6d350d0ea5a93c7c56691006ade63b9816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561210f5780820151818401526020810190506120f4565b50505050905090810190601f16801561213c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a15061219f565b7f16abce12916e67b821a9cdabe7103d806d6f4280a69d5830925b3e34c83f52a861217988610a39565b868360405180848152602001838152602001828152602001935050505060405180910390a15b6121a9888561265e565b5050505050505050565b6000816121c884670de0b6b3a7640000610a50565b816121cf57fe5b04905092915050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461226f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b6001600654146122e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f636f6e74726163742d6e6f742d656e61626c65640081525060200191505060405180910390fd5b7f6261736555706461746543616c6c6572526577617264000000000000000000008214156123765760025481111561236a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a0c6025913960400191505060405180910390fd5b8060018190555061260e565b7f6d617855706461746543616c6c65725265776172640000000000000000000000821415612405576001548110156123f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a7f6024913960400191505060405180910390fd5b8060028190555061260d565b7f7065725365636f6e6443616c6c6572526577617264496e63726561736500000082141561249e576b033b2e3c9fd0803ce8000000811015612492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612a566029913960400191505060405180910390fd5b8060048190555061260c565b7f6d6178526577617264496e63726561736544656c61790000000000000000000082141561252b576000811161251f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a316025913960400191505060405180910390fd5b8060038190555061260b565b7f7570646174655261746544656c617900000000000000000000000000000000008214156125b95760008110156125ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612aa36022913960400191505060405180910390fd5b8060098190555061260a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ac56024913960400191505060405180910390fd5b5b5b5b5b7fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a8282604051808381526020018281526020019250505060405180910390a15050565b6000818317905092915050565b8173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156126b957612a07565b612717600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161460008314612651565b1561272157612a07565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461275c578261275e565b335b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663201add9b82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7e944556040518163ffffffff1660e01b815260040160206040518083038186803b15801561280757600080fd5b505afa15801561281b573d6000803e3d6000fd5b505050506040513d602081101561283157600080fd5b8101908080519060200190929190505050856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156128df57600080fd5b505af19250505080156128f0575060015b612a04573d8060008114612920576040519150601f19603f3d011682016040523d82523d6000602084013e612925565b606091505b507ff7bf1f7447ce563690edb2abe40636178ff64fc766b07bf3e171b16102794a5481838560405180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156129c25780820151818401526020810190506129a7565b50505050905090810190601f1680156129ef5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a150612a05565b5b505b505056fe526174655365747465722f696e76616c69642d626173652d63616c6c65722d726577617264526174655365747465722f696e76616c69642d6d61782d696e6372656173652d64656c6179526174655365747465722f696e76616c69642d63616c6c65722d7265776172642d696e637265617365526174655365747465722f696e76616c69642d6d61782d63616c6c65722d726577617264526174655365747465722f696e76616c69642d63616c6c2d6761702d6c656e677468526174655365747465722f6d6f646966792d756e7265636f676e697a65642d706172616d496e6372656173696e6754726561737572795265696d62757273656d656e742f6163636f756e742d6e6f742d617574686f72697a6564a2646970667358221220b81bb5ef487e55709b1cda124e7fb551d64e88f74359bca2c7fa81e5b640b1f564736f6c63430006070033496e6372656173696e6754726561737572795265696d62757273656d656e742f696e76616c69642d7065722d7365636f6e642d7265776172642d696e637265617365496e6372656173696e6754726561737572795265696d62757273656d656e742f74726561737572792d636f696e2d6e6f742d736574496e6372656173696e6754726561737572795265696d62757273656d656e742f696e76616c69642d6d61782d63616c6c65722d7265776172640000000000000000000000004ed9c0dca0479bc64d8f4eb3007126d5791f785100000000000000000000000012a5e1c81b10b264a575930aeae80681ddf595fe00000000000000000000000083533fdd3285f48204215e9cf38c785371258e76000000000000000000000000cfa37dce6dfe80857c3b8dba100b592775ae268800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000033b57034a98502542e4fba80000000000000000000000000000000000000000000000000000000000003840

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061021c5760003560e01c806361d027b311610125578063a0871637116100ad578063dd2d2a121161007c578063dd2d2a12146108b0578063f238ffd2146108fc578063f74826bb14610948578063f752fdc31461098c578063fe4f5890146109d85761021c565b8063a0871637146107d2578063c8f33c911461081e578063d243f6b71461083c578063d6e882dc1461085a5761021c565b80636614f010116100f45780636614f010146106fa57806369dec276146107485780636a14602414610766578063894ba8331461078457806394f3f81d1461078e5761021c565b806361d027b31461064f57806363ac7ca71461069957806363c9f725146106be578063660e16c3146106dc5761021c565b80633ef5e445116101a857806346f3e81c1161017757806346f3e81c1461050f5780634a8d632c146105515780634faf61ab1461059b57806354f363a3146105e5578063552033c4146106315761021c565b80633ef5e4451461043d57806341b3a0d91461048957806343943b6b146104a7578063448a2638146104c55761021c565b80632009e568116101ef5780632009e5681461031957806324ba5884146103375780633425677e1461038f57806335b28153146103ad5780633c8bb3e6146103f15761021c565b8063056640b714610221578063102134471461026d578063165c4a16146102af5780631c1f908c146102fb575b600080fd5b6102576004803603604081101561023757600080fd5b810190808035906020019092919080359060200190929190505050610a10565b6040518082815260200191505060405180910390f35b6102996004803603602081101561028357600080fd5b8101908080359060200190929190505050610a39565b6040518082815260200191505060405180910390f35b6102e5600480360360408110156102c557600080fd5b810190808035906020019092919080359060200190929190505050610a50565b6040518082815260200191505060405180910390f35b610303610ae5565b6040518082815260200191505060405180910390f35b610321610aeb565b6040518082815260200191505060405180910390f35b6103796004803603602081101561034d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af1565b6040518082815260200191505060405180910390f35b610397610b09565b6040518082815260200191505060405180910390f35b6103ef600480360360208110156103c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c06565b005b6104276004803603604081101561040757600080fd5b810190808035906020019092919080359060200190929190505050610d47565b6040518082815260200191505060405180910390f35b6104736004803603604081101561045357600080fd5b810190808035906020019092919080359060200190929190505050610d6c565b6040518082815260200191505060405180910390f35b610491610def565b6040518082815260200191505060405180910390f35b6104af610df5565b6040518082815260200191505060405180910390f35b6104cd610dfb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053b6004803603602081101561052557600080fd5b8101908080359060200190929190505050610e21565b6040518082815260200191505060405180910390f35b610559610e40565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105a3610e66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61061b600480360360408110156105fb57600080fd5b810190808035906020019092919080359060200190929190505050610e8c565b6040518082815260200191505060405180910390f35b610639610f0f565b6040518082815260200191505060405180910390f35b610657610f1f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a1610f45565b604051808381526020018281526020019250505060405180910390f35b6106c66110a4565b6040518082815260200191505060405180910390f35b6106e46110aa565b6040518082815260200191505060405180910390f35b6107466004803603604081101561071057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611163565b005b610750611610565b6040518082815260200191505060405180910390f35b61076e611616565b6040518082815260200191505060405180910390f35b61078c611622565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c3565b005b610808600480360360408110156107e857600080fd5b810190808035906020019092919080359060200190929190505050611804565b6040518082815260200191505060405180910390f35b61082661182d565b6040518082815260200191505060405180910390f35b610844611833565b6040518082815260200191505060405180910390f35b61089a6004803603606081101561087057600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611839565b6040518082815260200191505060405180910390f35b6108e6600480360360408110156108c657600080fd5b8101908080359060200190929190803590602001909291905050506118ff565b6040518082815260200191505060405180910390f35b6109326004803603604081101561091257600080fd5b810190808035906020019092919080359060200190929190505050611919565b6040518082815260200191505060405180910390f35b61098a6004803603602081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2b565b005b6109c2600480360360408110156109a257600080fd5b8101908080359060200190929190803590602001909291905050506121b3565b6040518082815260200191505060405180910390f35b610a0e600480360360408110156109ee57600080fd5b8101908080359060200190929190803590602001909291905050506121d8565b005b60006b033b2e3c9fd0803ce8000000610a298484610a50565b81610a3057fe5b04905092915050565b6000610a4982633b9aca00610a50565b9050919050565b600080821480610a6d5750828283850292508281610a6a57fe5b04145b610adf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f75696e742d75696e742d6d756c2d6f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b60015481565b60035481565b60006020528060005260406000206000915090505481565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb5a662e306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604080518083038186803b158015610bac57600080fd5b505afa158015610bc0573d6000803e3d6000fd5b505050506040513d6040811015610bd657600080fd5b81019080805190602001909291908051906020019092919050505091509150610bff82826118ff565b9250505090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f700010281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000670de0b6b3a7640000610d5c8484610a50565b81610d6357fe5b04905092915050565b6000818303905082811115610de9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f75696e742d75696e742d7375622d756e646572666c6f7700000000000000000081525060200191505060405180910390fd5b92915050565b60065481565b60045481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e39826b033b2e3c9fd0803ce8000000610a50565b9050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000818301905082811015610f09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f75696e742d75696e742d6164642d6f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6b033b2e3c9fd0803ce800000081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015610faf57600080fd5b505afa158015610fc3573d6000803e3d6000fd5b505050506040513d6040811015610fd957600080fd5b8101908080519060200190929190805190602001909291905050505080925050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5b748c06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b505050506040513d602081101561108d57600080fd5b810190808051906020019092919050505090509091565b60095481565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b15801561111457600080fd5b505afa158015611128573d6000803e3d6000fd5b505050506040513d604081101561113e57600080fd5b8101908080519060200190929190805190602001909291905050505090508091505090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b600160065414611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f636f6e74726163742d6e6f742d656e61626c65640081525060200191505060405180910390fd5b7f6f72636c000000000000000000000000000000000000000000000000000000008214156112e05780600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115a1565b7f6f7261636c6552656c617965720000000000000000000000000000000000000082141561134e5780600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115a0565b7f74726561737572790000000000000000000000000000000000000000000000008214156114df57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663a7e944556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d457600080fd5b505afa1580156113e8573d6000803e3d6000fd5b505050506040513d60208110156113fe57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f526174655365747465722f74726561737572792d636f696e2d6e6f742d73657481525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061159f565b7f70696443616c63756c61746f720000000000000000000000000000000000000082141561154d5780600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061159e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ac56024913960400191505060405180910390fd5b5b5b5b7fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d18282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60025481565b670de0b6b3a764000081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b6000600681905550565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461175a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b90381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008161181d846b033b2e3c9fd0803ce8000000610a50565b8161182457fe5b04905092915050565b60085481565b60075481565b600083600081146118df5760028406600081146118585785925061185c565b8392505b50600283046002850494505b84156118d957858602868782041461187f57600080fd5b8181018181101561188f57600080fd5b858104975060028706156118cc5787850285898204141589151516156118b457600080fd5b838101818110156118c457600080fd5b878104965050505b5050600285049450611868565b506118f7565b83600081146118f157600092506118f5565b8392505b505b509392505050565b60008183111561190f5781611911565b825b905092915050565b600080600060015414801561193057506000600254145b905061193f4285101582612651565b1561194e576000915050611a25565b6000808514611966576119614286610d6c565b611968565b835b905061197b848210600060015414612651565b1561198b57600092505050611a25565b60006119978286610d6c565b905060006119c36002546b033b2e3c9fd0803ce80000006119b6610b09565b816119bd57fe5b046118ff565b90506003548211156119db5780945050505050611a25565b600060015490506000831115611a1057611a0d611a07600454856b033b2e3c9fd0803ce8000000611839565b82610a10565b90505b81811115611a1c578190505b80955050505050505b92915050565b600160065414611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f636f6e74726163742d6e6f742d656e61626c65640081525060200191505060405180910390fd5b611ac2600954611ab542600854610d6c565b1015600060085414612651565b611b34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f526174655365747465722f776169742d6d6f726500000000000000000000000081525060200191505060405180910390fd5b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015611b9e57600080fd5b505afa158015611bb2573d6000803e3d6000fd5b505050506040513d6040811015611bc857600080fd5b8101908080519060200190929190805190602001909291905050509150915080611c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f696e76616c69642d6f7261636c652d76616c75650081525060200191505060405180910390fd5b60008211611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f526174655365747465722f6e756c6c2d7072696365000000000000000000000081525060200191505060405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5b748c06040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d3c57600080fd5b505af1158015611d50573d6000803e3d6000fd5b505050506040513d6020811015611d6657600080fd5b810190808051906020019092919050505090506000611d89600854600954611919565b9050611d9484610a39565b6007819055506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e3126ef6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0457600080fd5b505afa158015611e18573d6000803e3d6000fd5b505050506040513d6020811015611e2e57600080fd5b810190808051906020019092919050505090506000611efc600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f1b0b986040518163ffffffff1660e01b815260040160206040518083038186803b158015611eae57600080fd5b505afa158015611ec2573d6000803e3d6000fd5b505050506040513d6020811015611ed857600080fd5b8101908080519060200190929190505050836b033b2e3c9fd0803ce8000000611839565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166371c7132e8887856040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b158015611f8557600080fd5b505af1158015611f99573d6000803e3d6000fd5b505050506040513d6020811015611faf57600080fd5b8101908080519060200190929190505050905042600881905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe4f5890826040518263ffffffff1660e01b815260040180807f726564656d7074696f6e52617465000000000000000000000000000000000000815250602001828152602001915050600060405180830381600087803b15801561206657600080fd5b505af1925050508015612077575060015b61214f573d80600081146120a7576040519150601f19603f3d011682016040523d82523d6000602084013e6120ac565b606091505b507f2b6fb175766701d6a337a6f637d3453fd6d350d0ea5a93c7c56691006ade63b9816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561210f5780820151818401526020810190506120f4565b50505050905090810190601f16801561213c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a15061219f565b7f16abce12916e67b821a9cdabe7103d806d6f4280a69d5830925b3e34c83f52a861217988610a39565b868360405180848152602001838152602001828152602001935050505060405180910390a15b6121a9888561265e565b5050505050505050565b6000816121c884670de0b6b3a7640000610a50565b816121cf57fe5b04905092915050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461226f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ae96036913960400191505060405180910390fd5b6001600654146122e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526174655365747465722f636f6e74726163742d6e6f742d656e61626c65640081525060200191505060405180910390fd5b7f6261736555706461746543616c6c6572526577617264000000000000000000008214156123765760025481111561236a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a0c6025913960400191505060405180910390fd5b8060018190555061260e565b7f6d617855706461746543616c6c65725265776172640000000000000000000000821415612405576001548110156123f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a7f6024913960400191505060405180910390fd5b8060028190555061260d565b7f7065725365636f6e6443616c6c6572526577617264496e63726561736500000082141561249e576b033b2e3c9fd0803ce8000000811015612492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612a566029913960400191505060405180910390fd5b8060048190555061260c565b7f6d6178526577617264496e63726561736544656c61790000000000000000000082141561252b576000811161251f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a316025913960400191505060405180910390fd5b8060038190555061260b565b7f7570646174655261746544656c617900000000000000000000000000000000008214156125b95760008110156125ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612aa36022913960400191505060405180910390fd5b8060098190555061260a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ac56024913960400191505060405180910390fd5b5b5b5b5b7fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a8282604051808381526020018281526020019250505060405180910390a15050565b6000818317905092915050565b8173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156126b957612a07565b612717600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161460008314612651565b1561272157612a07565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461275c578261275e565b335b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663201add9b82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7e944556040518163ffffffff1660e01b815260040160206040518083038186803b15801561280757600080fd5b505afa15801561281b573d6000803e3d6000fd5b505050506040513d602081101561283157600080fd5b8101908080519060200190929190505050856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156128df57600080fd5b505af19250505080156128f0575060015b612a04573d8060008114612920576040519150601f19603f3d011682016040523d82523d6000602084013e612925565b606091505b507ff7bf1f7447ce563690edb2abe40636178ff64fc766b07bf3e171b16102794a5481838560405180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156129c25780820151818401526020810190506129a7565b50505050905090810190601f1680156129ef5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a150612a05565b5b505b505056fe526174655365747465722f696e76616c69642d626173652d63616c6c65722d726577617264526174655365747465722f696e76616c69642d6d61782d696e6372656173652d64656c6179526174655365747465722f696e76616c69642d63616c6c65722d7265776172642d696e637265617365526174655365747465722f696e76616c69642d6d61782d63616c6c65722d726577617264526174655365747465722f696e76616c69642d63616c6c2d6761702d6c656e677468526174655365747465722f6d6f646966792d756e7265636f676e697a65642d706172616d496e6372656173696e6754726561737572795265696d62757273656d656e742f6163636f756e742d6e6f742d617574686f72697a6564a2646970667358221220b81bb5ef487e55709b1cda124e7fb551d64e88f74359bca2c7fa81e5b640b1f564736f6c63430006070033

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

0000000000000000000000004ed9c0dca0479bc64d8f4eb3007126d5791f785100000000000000000000000012a5e1c81b10b264a575930aeae80681ddf595fe00000000000000000000000083533fdd3285f48204215e9cf38c785371258e76000000000000000000000000cfa37dce6dfe80857c3b8dba100b592775ae268800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000033b57034a98502542e4fba80000000000000000000000000000000000000000000000000000000000003840

-----Decoded View---------------
Arg [0] : oracleRelayer_ (address): 0x4ed9C0dCa0479bC64d8f4EB3007126D5791f7851
Arg [1] : orcl_ (address): 0x12A5E1c81B10B264A575930aEae80681DDF595fe
Arg [2] : treasury_ (address): 0x83533fdd3285f48204215E9CF38C785371258E76
Arg [3] : pidCalculator_ (address): 0xcFa37DcE6DFE80857c3B8DbA100b592775aE2688
Arg [4] : baseUpdateCallerReward_ (uint256): 0
Arg [5] : maxUpdateCallerReward_ (uint256): 10000000000000000000
Arg [6] : perSecondCallerRewardIncrease_ (uint256): 1000192559420674483977255848
Arg [7] : updateRateDelay_ (uint256): 14400

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000004ed9c0dca0479bc64d8f4eb3007126d5791f7851
Arg [1] : 00000000000000000000000012a5e1c81b10b264a575930aeae80681ddf595fe
Arg [2] : 00000000000000000000000083533fdd3285f48204215e9cf38c785371258e76
Arg [3] : 000000000000000000000000cfa37dce6dfe80857c3b8dba100b592775ae2688
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000008ac7230489e80000
Arg [6] : 0000000000000000000000000000000000000000033b57034a98502542e4fba8
Arg [7] : 0000000000000000000000000000000000000000000000000000000000003840


Deployed Bytecode Sourcemap

9707:6977:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9707:6977:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1639:107:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1639:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;881:93;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;881:93:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1486:147;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1486:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4142:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4402;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3497:51;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3497:51:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6868:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3555:164;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3555:164:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1974:107;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1974:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1336:144;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1336:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9819:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4624:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10490:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;980:94;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;980:94:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10291:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10394:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1187:143;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1187:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;789:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4708:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16452:229;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10141:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16192:160;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11786:790;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11786:790:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4260:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;834:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13839:87;;;:::i;:::-;;3725:170;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3725:170:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1752:105;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1752:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10038:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9931:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2087:1058;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2087:1058:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1080:101;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1080:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7157:1182;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7157:1182:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14220:1858;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14220:1858:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1863:105;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1863:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12582:1251;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12582:1251:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1639:107;1695:6;819:8;1718:14;1727:1;1730;1718:8;:14::i;:::-;:20;;;;;;1714:24;;1639:107;;;;:::o;881:93::-;923:6;946:20;955:1;958:7;946:8;:20::i;:::-;942:24;;881:93;;;:::o;1486:147::-;1541:6;1573:1;1568;:6;:30;;;;1597:1;1592;1587;1583;:5;1579:9;;;1578:15;;;;;;:20;1568:30;1560:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:147;;;;:::o;4142:37::-;;;;:::o;4402:::-;;;;:::o;3497:51::-;;;;;;;;;;;;;;;;;:::o;6868:186::-;6918:7;6939:10;6951:13;6968:8;;;;;;;;;;;:21;;;6998:4;6968:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6968:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6968:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6968:36:0;;;;;;;;;;;;;;;;;;;;;;;;;6938:66;;;;7022:24;7030:5;7037:8;7022:7;:24::i;:::-;7015:31;;;;6868:186;:::o;3555:164::-;3976:1;3942:18;:30;3961:10;3942:30;;;;;;;;;;;;;;;;:35;3934:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3669:1:::1;3639:18;:27:::0;3658:7:::1;3639:27;;;;;;;;;;;;;;;:31;;;;3686:25;3703:7;3686:25;;;;;;;;;;;;;;;;;;;;;;3555:164:::0;:::o;1974:107::-;2030:6;864:8;2053:14;2062:1;2065;2053:8;:14::i;:::-;:20;;;;;;2049:24;;1974:107;;;;:::o;1336:144::-;1391:6;1418:1;1414;:5;1410:9;;1443:1;1438;:6;;1430:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:144;;;;:::o;9819:30::-;;;;:::o;4624:44::-;;;;:::o;10490:46::-;;;;;;;;;;;;;:::o;980:94::-;1022:6;1045:21;1054:1;1057:8;1045;:21::i;:::-;1041:25;;980:94;;;:::o;10291:37::-;;;;;;;;;;;;;:::o;10394:46::-;;;;;;;;;;;;;:::o;1187:143::-;1242:6;1269:1;1265;:5;1261:9;;1294:1;1289;:6;;1281:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1187:143;;;;:::o;789:38::-;819:8;789:38;:::o;4708:41::-;;;;;;;;;;;;;:::o;16452:229::-;16510:19;16531:23;16585:4;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16585:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16585:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16585:28:0;;;;;;;;;;;;;;;;;;;;;;;;;16567:46;;;;;16642:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16642:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16642:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16642:31:0;;;;;;;;;;;;;;;;16624:49;;16452:229;;:::o;10141:30::-;;;;:::o;16192:160::-;16241:7;16262:19;16287:4;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16287:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16287:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16287:28:0;;;;;;;;;;;;;;;;;;;;;;;;;16261:54;;;16333:11;16326:18;;;16192:160;:::o;11786:790::-;3976:1;3942:18;:30;3961:10;3942:30;;;;;;;;;;;;;;;;:35;3934:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11905:1:::1;11886:15;;:20;11878:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11957:19;:9;:19;11953:533;;;11996:4;11978;;:23;;;;;;;;;;;;;;;;;;11953:533;;;12021:28;:9;:28;12017:469;;;12085:4;12051:13;;:39;;;;;;;;;;;;;;;;;;12017:469;;;12110:23;:9;:23;12106:380;;;12211:1;12156:57;;12181:4;12156:41;;;:43;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12156:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12156:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;12156:43:0;;;;;;;;;;;;;;;;:57;;;;12148:102;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12299:4;12263:8;;:41;;;;;;;;;;;;;;;;;;12106:380;;;12335:28;:9;:28;12331:155;;;12408:4;12378:13;;:35;;;;;;;;;;;;;;;;;;12331:155;;;12440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12331:155;12106:380;12017:469;11953:533;12502:66;12531:9;12553:4;12502:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;11786:790:::0;;:::o;4260:36::-;;;;:::o;834:38::-;864:8;834:38;:::o;13839:87::-;3976:1;3942:18;:30;3961:10;3942:30;;;;;;;;;;;;;;;;:35;3934:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13917:1:::1;13899:15;:19;;;;13839:87::o:0;3725:170::-;3976:1;3942:18;:30;3961:10;3942:30;;;;;;;;;;;;;;;;:35;3934:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3842:1:::1;3812:18:::0;:27:::1;3831:7;3812:27;;;;;;;;;;;;;;;:31;;;;3859:28;3879:7;3859:28;;;;;;;;;;;;;;;;;;;;;;3725:170:::0;:::o;1752:105::-;1806:6;1848:1;1829:16;1838:1;819:8;1829;:16::i;:::-;:20;;;;;;1825:24;;1752:105;;;;:::o;10038:29::-;;;;:::o;9931:32::-;;;;:::o;2087:1058::-;2151:6;2201:1;2208;2203:53;;;;2311:1;2308;2304:9;2319:1;2314:20;;;;2350:1;2345:6;;2297:56;;2314:20;2328:4;2323:9;;2297:56;;2393:1;2387:4;2383:12;2449:1;2446;2442:9;2437:14;;2431:681;2454:1;2431:681;;;2514:1;2511;2507:9;2563:1;2559;2555:2;2551:10;2548:17;2538:2;;2578:1;2576;2569:11;2538:2;2627:4;2623:2;2619:13;2669:2;2660:7;2657:15;2654:2;;;2684:1;2682;2675:11;2654:2;2728:4;2719:7;2715:18;2710:23;;2764:1;2762;2758:8;2755:2;;;2811:1;2808;2804:9;2887:1;2883;2879:2;2875:10;2872:17;2865:25;2860:1;2853:9;2846:17;2842:49;2839:2;;;2903:1;2901;2894:11;2839:2;2956:4;2952:2;2948:13;3002:2;2993:7;2990:15;2987:2;;;3017:1;3015;3008:11;2987:2;3065:4;3056:7;3052:18;3047:23;;2767:326;;2755:2;2474:638;;2469:1;2467;2463:8;2458:13;;2431:681;;;2278:849;2194:933;;2203:53;2218:1;2225;2220:18;;;;2253:1;2248:6;;2211:44;;2220:18;2233:4;2228:9;;2211:44;;2194:933;;2179:959;;;;;:::o;1080:101::-;1134:6;1163:1;1158;:6;;1157:16;;1172:1;1157:16;;;1168:1;1157:16;1153:20;;1080:101;;;;:::o;7157:1182::-;7263:7;7283:16;7329:1;7303:22;;:27;:57;;;;;7359:1;7334:21;;:26;7303:57;7283:78;;7376:44;7403:3;7383:16;:23;;7408:11;7376:6;:44::i;:::-;7372:58;;;7429:1;7422:8;;;;;7372:58;7441:19;7484:1;7464:16;:21;7463:84;;7516:31;7525:3;7530:16;7516:8;:31::i;:::-;7463:84;;;7489:24;7463:84;7441:106;;7562:75;7583:24;7569:11;:38;7635:1;7609:22;;:27;7562:6;:75::i;:::-;7558:116;;;7661:1;7654:8;;;;;;7558:116;7684:20;7712:47;7721:11;7734:24;7712:8;:47::i;:::-;7684:75;;7770:25;7798:57;7806:21;;819:8;7829:19;:17;:19::i;:::-;:25;;;;;;7798:7;:57::i;:::-;7770:85;;7885:22;;7870:12;:37;7866:94;;;7931:17;7924:24;;;;;;;;7866:94;7970:24;7997:22;;7970:49;;8049:1;8034:12;:16;8030:153;;;8086:85;8096:56;8103:29;;8134:12;819:8;8096:6;:56::i;:::-;8154:16;8086:9;:85::i;:::-;8067:104;;8030:153;8216:17;8197:16;:36;8193:105;;;8269:17;8250:36;;8193:105;8315:16;8308:23;;;;;;;7157:1182;;;;;:::o;14220:1858::-;14308:1;14289:15;;:20;14281:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14402:77;14442:15;;14409:29;14418:3;14423:14;;14409:8;:29::i;:::-;:48;;14477:1;14459:14;;:19;14402:6;:77::i;:::-;14394:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14551:19;14572:18;14594:4;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14594:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14594:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14594:28:0;;;;;;;;;;;;;;;;;;;;;;;;;14550:72;;;;14679:13;14671:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14798:1;14784:11;:15;14776:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14880:20;14903:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14903:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14903:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14903:31:0;;;;;;;;;;;;;;;;14880:54;;14981:20;15004:48;15020:14;;15036:15;;15004;:48::i;:::-;14981:71;;15125:16;15129:11;15125:3;:16::i;:::-;15105:17;:36;;;;15183:11;15203:13;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15203:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15203:19:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15203:19:0;;;;;;;;;;;;;;;;15183:39;;15233:13;15253:38;15260:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15260:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15260:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15260:20:0;;;;;;;;;;;;;;;;15282:3;819:8;15253:6;:38::i;:::-;15233:58;;15302:17;15322:13;;;;;;;;;;;:25;;;15362:11;15388:15;15418:5;15322:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15322:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15322:112:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15322:112:0;;;;;;;;;;;;;;;;15302:132;;15508:3;15491:14;:20;;;;15594:13;;;;;;;;;;;:30;;;15643:9;15594:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15594:59:0;;;;;;;;;;;;;;15590:382;;;12:1:-1;19;14:27;;;;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;;15896:64:0;15935:12;15896:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15896:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15845:127;15590:382;;;15705:118;15740:16;15744:11;15740:3;:16::i;:::-;15771:15;15801:9;15705:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15590:382;16031:39;16044:11;16057:12;16031;:39::i;:::-;14220:1858;;;;;;;;:::o;1863:105::-;1917:6;1959:1;1940:16;1949:1;864:8;1940;:16::i;:::-;:20;;;;;;1936:24;;1863:105;;;;:::o;12582:1251::-;3976:1;3942:18;:30;3961:10;3942:30;;;;;;;;;;;;;;;;:35;3934:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12700:1:::1;12681:15;;:20;12673:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12752:37;:9;:37;12748:996;;;12819:21;;12812:3;:28;;12804:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12920:3;12895:22;:28;;;;12748:996;;;12954:36;:9;:36;12950:794;;;13020:22;;13013:3;:29;;13005:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13120:3;13096:21;:27;;;;12950:794;;;13154:44;:9;:44;13150:594;;;819:8;13221:3;:10;;13213:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:3;13290:29;:35;;;;13150:594;;;13356:37;:9;:37;13352:392;;;13422:1;13416:3;:7;13408:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13503:3;13478:22;:28;;;;13352:392;;;13537:30;:9;:30;13533:211;;;13597:1;13590:3;:8;;13582:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13668:3;13650:15;:21;;;;13533:211;;;13698:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13533:211;13352:392;13150:594;12950:794;12748:996;13760:65;13789:9;13811:3;13760:65;;;;;;;;;;;;;;;;;;;;;;;;12582:1251:::0;;:::o;6560:105::-;6615:6;6655:1;6652;6649:8;6644:13;;6642:16;;;;:::o;8522:545::-;8634:19;8613:40;;8621:8;;;;;;;;;;;8613:40;;;8609:53;;;8655:7;;8609:53;8676:52;8712:1;8683:31;;8691:8;;;;;;;;;;;8683:31;;;8726:1;8716:6;:11;8676:6;:52::i;:::-;8672:65;;;8730:7;;8672:65;8747:24;8806:1;8775:33;;:19;:33;;;8774:70;;8825:19;8774:70;;;8812:10;8774:70;8747:97;;8859:8;;;;;;;;;;;:18;;;8878:16;8896:8;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8896:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8896:21:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8896:21:0;;;;;;;;;;;;;;;;8919:6;8859:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8859:67:0;;;;;;;;;;;;;;8855:205;;;12:1:-1;19;14:27;;;;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;;8992:56:0;9009:12;9023:16;9041:6;8992:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8992:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8939:121;8855:205;;;;8522:545;;;;:::o

Swarm Source

ipfs://b81bb5ef487e55709b1cda124e7fb551d64e88f74359bca2c7fa81e5b640b1f5

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