ETH Price: $1,917.42 (-5.56%)
 

Overview

ETH Balance

0.023500000000000001 ETH

Eth Value

$45.06 (@ $1,917.42/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Bet On Outcome A184441992023-10-27 21:22:47853 days ago1698441767IN
0x3caf2e1B...00a38Ca5d
0.01 ETH0.0030714220.95121753
Start New Match184440382023-10-27 20:50:35853 days ago1698439835IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0019729425.34708264
Distribute Winni...184440362023-10-27 20:50:11853 days ago1698439811IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0013970624.38972863
Declare Outcome184440002023-10-27 20:42:59853 days ago1698439379IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0012639222.131714
Bet On Outcome A184439892023-10-27 20:40:47853 days ago1698439247IN
0x3caf2e1B...00a38Ca5d
0.02 ETH0.0025131919.40709434
Bet On Outcome B184439552023-10-27 20:33:59853 days ago1698438839IN
0x3caf2e1B...00a38Ca5d
0.02 ETH0.0027291818.61652514
Start New Match184438432023-10-27 20:11:11853 days ago1698437471IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0020873820.42233751
Distribute Winni...184438382023-10-27 20:10:11853 days ago1698437411IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0015854121.6184968
Declare Outcome184438362023-10-27 20:09:47853 days ago1698437387IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0012457821.8141245
Bet On Outcome A184438032023-10-27 20:03:11853 days ago1698436991IN
0x3caf2e1B...00a38Ca5d
0.1 ETH0.0020371418.12230803
Bet On Outcome B184437872023-10-27 19:59:47853 days ago1698436787IN
0x3caf2e1B...00a38Ca5d
0.01 ETH0.0022802220.28668883
Bet On Outcome B184437602023-10-27 19:54:23853 days ago1698436463IN
0x3caf2e1B...00a38Ca5d
0.1 ETH0.0025850717.6321072
Bet On Outcome A184437192023-10-27 19:46:11853 days ago1698435971IN
0x3caf2e1B...00a38Ca5d
0.01 ETH0.0024553721.84519922
Bet On Outcome A184437142023-10-27 19:45:11853 days ago1698435911IN
0x3caf2e1B...00a38Ca5d
0.01 ETH0.0023644518.25851328
Start New Match184437112023-10-27 19:44:35853 days ago1698435875IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0020429819.16461832
Distribute Winni...184437062023-10-27 19:43:35853 days ago1698435815IN
0x3caf2e1B...00a38Ca5d
0 ETH0.001845318.48484153
Declare Outcome184437022023-10-27 19:42:47853 days ago1698435767IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0009314317.15061576
Bet On Outcome B184436932023-10-27 19:40:59853 days ago1698435659IN
0x3caf2e1B...00a38Ca5d
0.02 ETH0.0019421317.27878279
Bet On Outcome B184436912023-10-27 19:40:35853 days ago1698435635IN
0x3caf2e1B...00a38Ca5d
0.1 ETH0.0020860916.10738506
Bet On Outcome A184436882023-10-27 19:39:59853 days ago1698435599IN
0x3caf2e1B...00a38Ca5d
0.02 ETH0.0019823817.63699871
Bet On Outcome A184436842023-10-27 19:39:11853 days ago1698435551IN
0x3caf2e1B...00a38Ca5d
0.05 ETH0.0019127717.01768827
Bet On Outcome A184436812023-10-27 19:38:35853 days ago1698435515IN
0x3caf2e1B...00a38Ca5d
0.01 ETH0.0019485417.33599347
Bet On Outcome A184436792023-10-27 19:38:11853 days ago1698435491IN
0x3caf2e1B...00a38Ca5d
0.02 ETH0.0026028317.75479413
Start New Match184435822023-10-27 19:18:47854 days ago1698434327IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0013232217
Distribute Winni...184435142023-10-27 19:05:11854 days ago1698433511IN
0x3caf2e1B...00a38Ca5d
0 ETH0.0014387919.34360296
View all transactions

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer184440362023-10-27 20:50:11853 days ago1698439811
0x3caf2e1B...00a38Ca5d
0.039 ETH
Transfer184438382023-10-27 20:10:11853 days ago1698437411
0x3caf2e1B...00a38Ca5d
0.02036363 ETH
Transfer184438382023-10-27 20:10:11853 days ago1698437411
0x3caf2e1B...00a38Ca5d
0.20363636 ETH
Transfer184437062023-10-27 19:43:35853 days ago1698435815
0x3caf2e1B...00a38Ca5d
0.0428 ETH
Transfer184437062023-10-27 19:43:35853 days ago1698435815
0x3caf2e1B...00a38Ca5d
0.107 ETH
Transfer184437062023-10-27 19:43:35853 days ago1698435815
0x3caf2e1B...00a38Ca5d
0.0214 ETH
Transfer184437062023-10-27 19:43:35853 days ago1698435815
0x3caf2e1B...00a38Ca5d
0.0428 ETH
Transfer184435142023-10-27 19:05:11854 days ago1698433511
0x3caf2e1B...00a38Ca5d
0.0195 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
DuelBettingContract

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

contract DuelBettingContract is Ownable, ReentrancyGuard {
    using SafeMath for uint256;

    enum MatchOutcome { NOT_FINISHED, A, B }

    event NewMatchStarted();
    event BetPlaced(address indexed bettor, MatchOutcome outcome, uint256 amount);
    event OutcomeDeclared(MatchOutcome outcome);
    event WinningsDistributed(MatchOutcome winningOutcome);
    event AdminFeesWithdrawn(uint256 amount);

    struct Match {
        uint256 betA;
        uint256 betB;
        MatchOutcome outcome;
        mapping(address => uint256) betsA;
        mapping(address => uint256) betsB;
        address[] bettorsA;
        address[] bettorsB;
    }

    Match currentMatch;
    bool public matchActive = false;
    uint256 public minBetAmount = 10000000000000000; // 0.01e
    uint256 public maxBetAmount = 100000000000000000; // 0.1e
    uint256 public adminFeePercentage = 5;
    uint256 public playerLimit = 25;
    uint256 public accumulatedFees;
    MatchOutcome previousOutcome;

    mapping(address => uint256) lastParticipatedMatch;
    uint256 public currentMatchNonce = 0;

    function startNewMatch() external onlyOwner {
        require(!matchActive, "Finish the current match first");
        
        // bad code but scalable on l2 if required
        for (uint i = 0; i < currentMatch.bettorsA.length; i++) {
            delete currentMatch.betsA[currentMatch.bettorsA[i]];
            delete currentMatch.bettorsA[i];
        }
        for (uint i = 0; i < currentMatch.bettorsB.length; i++) {
            delete currentMatch.betsB[currentMatch.bettorsB[i]];
            delete currentMatch.bettorsB[i];
        }

        currentMatch.betA = 0;
        currentMatch.betB = 0;
        currentMatch.outcome = MatchOutcome.NOT_FINISHED;
        currentMatch.bettorsA = new address[](0);
        currentMatch.bettorsB = new address[](0);
        
        matchActive = true;
        currentMatchNonce = currentMatchNonce.add(1);

        emit NewMatchStarted();
    }

    function _recordBettor(address[] storage bettors, address bettor) private {
        if (lastParticipatedMatch[bettor] < currentMatchNonce) {
            bettors.push(bettor);
            lastParticipatedMatch[bettor] = currentMatchNonce;
        } else if (lastParticipatedMatch[bettor] == currentMatchNonce) {
            revert("You can only bet once per match.");
        }
    }

    function _isContract(address addr) private view returns(bool) {
        uint32 size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    function _betOnOutcome(MatchOutcome outcome, uint256 amount) private {
        require(!_isContract(msg.sender), "Contracts are not allowed to bet");
        require(matchActive, "No active match");
        require(amount >= minBetAmount && amount <= maxBetAmount, "Invalid bet amount");
        require(msg.value == amount, "Mismatched ether sent");

        if (outcome == MatchOutcome.A) {
            require(currentMatch.bettorsA.length < playerLimit, "Player limit reached for Outcome A");
            _recordBettor(currentMatch.bettorsA, msg.sender);
            currentMatch.betA = currentMatch.betA.add(amount);
            currentMatch.betsA[msg.sender] = currentMatch.betsA[msg.sender].add(amount);
        } else if (outcome == MatchOutcome.B) {
            require(currentMatch.bettorsB.length < playerLimit, "Player limit reached for Outcome B");
            _recordBettor(currentMatch.bettorsB, msg.sender);
            currentMatch.betB = currentMatch.betB.add(amount);
            currentMatch.betsB[msg.sender] = currentMatch.betsB[msg.sender].add(amount);
        }

        emit BetPlaced(msg.sender, outcome, amount);
    }

    function betOnOutcomeA(uint256 amount) external payable {
        _betOnOutcome(MatchOutcome.A, amount);
    }

    function betOnOutcomeB(uint256 amount) external payable {
        _betOnOutcome(MatchOutcome.B, amount);
    }

    function declareOutcome(MatchOutcome outcome) external onlyOwner {
        require(matchActive, "No active match");
        require(outcome != MatchOutcome.NOT_FINISHED, "Invalid outcome");
        require(currentMatch.bettorsA.length > 0, "No bets on Outcome A.");
        require(currentMatch.bettorsB.length > 0, "No bets on Outcome B.");
        
        currentMatch.outcome = outcome;
        previousOutcome = outcome;
        
        matchActive = false;

        emit OutcomeDeclared(outcome);
    }

    function distributeWinnings() external onlyOwner nonReentrant {
        require(!matchActive, "Match is still active");
        require(currentMatch.outcome != MatchOutcome.NOT_FINISHED, "Match hasn't finished yet");

        if (currentMatch.outcome == MatchOutcome.A) {
            uint256 adminFee = currentMatch.betB.mul(adminFeePercentage).div(100);
            accumulatedFees = accumulatedFees.add(adminFee);

            uint256 payoutPool = currentMatch.betB.sub(adminFee);
            for (uint i = 0; i < currentMatch.bettorsA.length; i++) {
                address bettor = currentMatch.bettorsA[i];
                uint256 initialBet = currentMatch.betsA[bettor];
                uint256 reward = payoutPool.mul(initialBet).div(currentMatch.betA).add(initialBet); // Added initial bet
                currentMatch.betsA[bettor] = 0; // Prevent re-entrancy
                payable(bettor).transfer(reward);
            }
        } else if (currentMatch.outcome == MatchOutcome.B) {
            uint256 adminFee = currentMatch.betA.mul(adminFeePercentage).div(100);
            accumulatedFees = accumulatedFees.add(adminFee);

            uint256 payoutPool = currentMatch.betA.sub(adminFee);
            for (uint i = 0; i < currentMatch.bettorsB.length; i++) {
                address bettor = currentMatch.bettorsB[i];
                uint256 initialBet = currentMatch.betsB[bettor];
                uint256 reward = payoutPool.mul(initialBet).div(currentMatch.betB).add(initialBet); // Added initial bet
                currentMatch.betsB[bettor] = 0; // Prevent re-entrancy
                payable(bettor).transfer(reward);
            }
        }

        emit WinningsDistributed(currentMatch.outcome);
    }

    function withdrawAccumulatedFees() external onlyOwner {
        require(accumulatedFees > 0, "No fees to withdraw");

        uint256 amount = accumulatedFees;
        accumulatedFees = 0;
        payable(owner()).transfer(amount);

        emit AdminFeesWithdrawn(amount);
    }

    function setLimits(uint256 _minBetAmount, uint256 _maxBetAmount, uint256 _playerLimit) external onlyOwner {
        require(_minBetAmount < _maxBetAmount, "Invalid bet limits");
        require(!matchActive, "Finish the current match first");
        minBetAmount = _minBetAmount;
        maxBetAmount = _maxBetAmount;
        playerLimit = _playerLimit;
    }

    function setAdminFeePercentage(uint256 _adminFeePercentage) external onlyOwner {
        require(_adminFeePercentage < 100, "Fee percentage too high");
        adminFeePercentage = _adminFeePercentage;
    }

    function getNumberOfBettors() external view returns (uint256 numBettorsA, uint256 numBettorsB) {
        numBettorsA = currentMatch.bettorsA.length;
        numBettorsB = currentMatch.bettorsB.length;
    }

    function getMatchBetAmount() external view returns (uint256 betAmountA, uint256 betAmountB) {
        betAmountA = currentMatch.betA;
        betAmountB = currentMatch.betB;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AdminFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bettor","type":"address"},{"indexed":false,"internalType":"enum DuelBettingContract.MatchOutcome","name":"outcome","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetPlaced","type":"event"},{"anonymous":false,"inputs":[],"name":"NewMatchStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum DuelBettingContract.MatchOutcome","name":"outcome","type":"uint8"}],"name":"OutcomeDeclared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum DuelBettingContract.MatchOutcome","name":"winningOutcome","type":"uint8"}],"name":"WinningsDistributed","type":"event"},{"inputs":[],"name":"accumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"betOnOutcomeA","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"betOnOutcomeB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"currentMatchNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum DuelBettingContract.MatchOutcome","name":"outcome","type":"uint8"}],"name":"declareOutcome","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeWinnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMatchBetAmount","outputs":[{"internalType":"uint256","name":"betAmountA","type":"uint256"},{"internalType":"uint256","name":"betAmountB","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfBettors","outputs":[{"internalType":"uint256","name":"numBettorsA","type":"uint256"},{"internalType":"uint256","name":"numBettorsB","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"matchActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_adminFeePercentage","type":"uint256"}],"name":"setAdminFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBetAmount","type":"uint256"},{"internalType":"uint256","name":"_maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"_playerLimit","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startNewMatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAccumulatedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040525f60095f6101000a81548160ff021916908315150217905550662386f26fc10000600a5567016345785d8a0000600b556005600c556019600d555f60115534801561004d575f80fd5b505f61005d61010560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001808190555061010c565b5f33905090565b6128f0806101195f395ff3fe608060405260043610610113575f3560e01c8063964676b21161009f578063f1ee843011610063578063f1ee8430146102f4578063f8bb7ec21461031f578063f997e80814610349578063fa968eea14610373578063fe9d08721461039d57610113565b8063964676b214610254578063b3e1e4051461027c578063b433e47c14610298578063cab11d5d146102ae578063cc4c55c1146102d857610113565b8063587f5ed7116100e6578063587f5ed7146101aa578063715018a6146101d45780637d2026cd146101ea578063831490f9146102005780638da5cb5b1461022a57610113565b80630cd62e8d14610117578063189ae5f2146101425780631a0676fe1461016a5780632e185ec714610194575b5f80fd5b348015610122575f80fd5b5061012b6103c5565b604051610139929190611cc7565b60405180910390f35b34801561014d575f80fd5b5061016860048036038101906101639190611d1c565b6103e1565b005b348015610175575f80fd5b5061017e610520565b60405161018b9190611d6c565b60405180910390f35b34801561019f575f80fd5b506101a8610526565b005b3480156101b5575f80fd5b506101be610690565b6040516101cb9190611d6c565b60405180910390f35b3480156101df575f80fd5b506101e8610696565b005b3480156101f5575f80fd5b506101fe6107e4565b005b34801561020b575f80fd5b50610214610dcf565b6040516102219190611d6c565b60405180910390f35b348015610235575f80fd5b5061023e610dd5565b60405161024b9190611dc4565b60405180910390f35b34801561025f575f80fd5b5061027a60048036038101906102759190611e00565b610dfc565b005b61029660048036038101906102919190611e2b565b61107f565b005b3480156102a3575f80fd5b506102ac61108d565b005b3480156102b9575f80fd5b506102c26114a6565b6040516102cf9190611d6c565b60405180910390f35b6102f260048036038101906102ed9190611e2b565b6114ac565b005b3480156102ff575f80fd5b506103086114ba565b604051610316929190611cc7565b60405180910390f35b34801561032a575f80fd5b506103336114cf565b6040516103409190611d6c565b60405180910390f35b348015610354575f80fd5b5061035d6114d5565b60405161036a9190611e70565b60405180910390f35b34801561037e575f80fd5b506103876114e7565b6040516103949190611d6c565b60405180910390f35b3480156103a8575f80fd5b506103c360048036038101906103be9190611e2b565b6114ed565b005b5f80600260050180549050915060026006018054905090509091565b6103e96115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046c90611ee3565b60405180910390fd5b8183106104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ae90611f4b565b60405180910390fd5b60095f9054906101000a900460ff1615610506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd90611fb3565b60405180910390fd5b82600a8190555081600b8190555080600d81905550505050565b60115481565b61052e6115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190611ee3565b60405180910390fd5b5f600e54116105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f59061201b565b60405180910390fd5b5f600e5490505f600e81905550610613610dd5565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610655573d5f803e3d5ffd5b507f7b9b39abdbad5ebd784c4a30b87ebacf8e568dadd9ce0392b7863d1e916eb26c816040516106859190611d6c565b60405180910390a150565b600e5481565b61069e6115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072190611ee3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6107ec6115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90611ee3565b60405180910390fd5b6108806115d5565b60095f9054906101000a900460ff16156108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690612083565b60405180910390fd5b5f60028111156108e2576108e16120a1565b5b600280015f9054906101000a900460ff166002811115610905576109046120a1565b5b03610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612118565b60405180910390fd5b60016002811115610959576109586120a1565b5b600280015f9054906101000a900460ff16600281111561097c5761097b6120a1565b5b03610b64575f6109af60646109a1600c5460026001015461162490919063ffffffff16565b61163990919063ffffffff16565b90506109c681600e5461164e90919063ffffffff16565b600e819055505f6109e58260026001015461166390919063ffffffff16565b90505f5b600260050180549050811015610b5c575f60026005018281548110610a1157610a10612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60026003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f610abb82610aad60025f0154610a9f868a61162490919063ffffffff16565b61163990919063ffffffff16565b61164e90919063ffffffff16565b90505f60026003015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b45573d5f803e3d5ffd5b505050508080610b5490612190565b9150506109e9565b505050610d7e565b600280811115610b7757610b766120a1565b5b600280015f9054906101000a900460ff166002811115610b9a57610b996120a1565b5b03610d7d575f610bcc6064610bbe600c5460025f015461162490919063ffffffff16565b61163990919063ffffffff16565b9050610be381600e5461164e90919063ffffffff16565b600e819055505f610c018260025f015461166390919063ffffffff16565b90505f5b600260060180549050811015610d79575f60026006018281548110610c2d57610c2c612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60026004015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f610cd882610cca600260010154610cbc868a61162490919063ffffffff16565b61163990919063ffffffff16565b61164e90919063ffffffff16565b90505f60026004015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d62573d5f803e3d5ffd5b505050508080610d7190612190565b915050610c05565b5050505b5b7fbf7f8a5d205753f1dc65122fdb3f428abcde7078f83d0af8cd16c704c94fe9ed600280015f9054906101000a900460ff16604051610dbd919061221d565b60405180910390a1610dcd611678565b565b600c5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e046115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790611ee3565b60405180910390fd5b60095f9054906101000a900460ff16610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612280565b60405180910390fd5b5f6002811115610ef157610ef06120a1565b5b816002811115610f0457610f036120a1565b5b03610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906122e8565b60405180910390fd5b5f60026005018054905011610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612350565b60405180910390fd5b5f60026006018054905011610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906123b8565b60405180910390fd5b80600280015f6101000a81548160ff02191690836002811115610ffe57610ffd6120a1565b5b021790555080600f5f6101000a81548160ff02191690836002811115611027576110266120a1565b5b02179055505f60095f6101000a81548160ff0219169083151502179055507f0a53a1872465adbb6013c72ee52a209362180ab1b257a485c505e17875e3b4ea81604051611074919061221d565b60405180910390a150565b61108a600282611681565b50565b6110956115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111890611ee3565b60405180910390fd5b60095f9054906101000a900460ff1615611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790611fb3565b60405180910390fd5b5f5b6002600501805490508110156112575760026003015f6002600501838154811061119f5761119e612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90556002600501818154811061121a57611219612136565b5b905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808061124f90612190565b915050611172565b505f5b60026006018054905081101561133f5760026004015f6002600601838154811061128757611286612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90556002600601818154811061130257611301612136565b5b905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808061133790612190565b91505061125a565b505f60025f01819055505f6002600101819055505f600280015f6101000a81548160ff02191690836002811115611379576113786120a1565b5b02179055505f67ffffffffffffffff811115611398576113976123d6565b5b6040519080825280602002602001820160405280156113c65781602001602082028036833780820191505090505b50600260050190805190602001906113df929190611c0d565b505f67ffffffffffffffff8111156113fa576113f96123d6565b5b6040519080825280602002602001820160405280156114285781602001602082028036833780820191505090505b5060026006019080519060200190611441929190611c0d565b50600160095f6101000a81548160ff021916908315150217905550611472600160115461164e90919063ffffffff16565b6011819055507fc284988e0695413d6925535f5d1123d7de8b507032892a0c33280c2fc51c760c60405160405180910390a1565b600b5481565b6114b7600182611681565b50565b5f8060025f0154915060026001015490509091565b600d5481565b60095f9054906101000a900460ff1681565b600a5481565b6114f56115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157890611ee3565b60405180910390fd5b606481106115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb9061244d565b60405180910390fd5b80600c8190555050565b5f33905090565b60026001540361161a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611611906124b5565b60405180910390fd5b6002600181905550565b5f818361163191906124d3565b905092915050565b5f81836116469190612541565b905092915050565b5f818361165b9190612571565b905092915050565b5f818361167091906125a4565b905092915050565b60018081905550565b61168a33611a81565b156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190612621565b60405180910390fd5b60095f9054906101000a900460ff16611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612280565b60405180910390fd5b600a54811015801561172c5750600b548111155b61176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612689565b60405180910390fd5b8034146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a4906126f1565b60405180910390fd5b600160028111156117c1576117c06120a1565b5b8260028111156117d4576117d36120a1565b5b036118ee57600d5460026005018054905010611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c9061277f565b60405180910390fd5b611833600260050133611a98565b61184a8160025f015461164e90919063ffffffff16565b60025f01819055506118a58160026003015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461164e90919063ffffffff16565b60026003015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a2d565b600280811115611901576119006120a1565b5b826002811115611914576119136120a1565b5b03611a2c57600d5460026006018054905010611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c9061280d565b60405180910390fd5b611973600260060133611a98565b61198b8160026001015461164e90919063ffffffff16565b6002600101819055506119e78160026004015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461164e90919063ffffffff16565b60026004015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b3373ffffffffffffffffffffffffffffffffffffffff167f9f6b4cced64244a64465098f682029975b1614400b96bc6bd12c6680837191668383604051611a7592919061282b565b60405180910390a25050565b5f80823b90505f8163ffffffff1611915050919050565b60115460105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611b87578181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115460105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c09565b60115460105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff9061289c565b60405180910390fd5b5b5050565b828054828255905f5260205f20908101928215611c83579160200282015b82811115611c82578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611c2b565b5b509050611c909190611c94565b5090565b5b80821115611cab575f815f905550600101611c95565b5090565b5f819050919050565b611cc181611caf565b82525050565b5f604082019050611cda5f830185611cb8565b611ce76020830184611cb8565b9392505050565b5f80fd5b611cfb81611caf565b8114611d05575f80fd5b50565b5f81359050611d1681611cf2565b92915050565b5f805f60608486031215611d3357611d32611cee565b5b5f611d4086828701611d08565b9350506020611d5186828701611d08565b9250506040611d6286828701611d08565b9150509250925092565b5f602082019050611d7f5f830184611cb8565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611dae82611d85565b9050919050565b611dbe81611da4565b82525050565b5f602082019050611dd75f830184611db5565b92915050565b60038110611de9575f80fd5b50565b5f81359050611dfa81611ddd565b92915050565b5f60208284031215611e1557611e14611cee565b5b5f611e2284828501611dec565b91505092915050565b5f60208284031215611e4057611e3f611cee565b5b5f611e4d84828501611d08565b91505092915050565b5f8115159050919050565b611e6a81611e56565b82525050565b5f602082019050611e835f830184611e61565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611ecd602083611e89565b9150611ed882611e99565b602082019050919050565b5f6020820190508181035f830152611efa81611ec1565b9050919050565b7f496e76616c696420626574206c696d69747300000000000000000000000000005f82015250565b5f611f35601283611e89565b9150611f4082611f01565b602082019050919050565b5f6020820190508181035f830152611f6281611f29565b9050919050565b7f46696e697368207468652063757272656e74206d6174636820666972737400005f82015250565b5f611f9d601e83611e89565b9150611fa882611f69565b602082019050919050565b5f6020820190508181035f830152611fca81611f91565b9050919050565b7f4e6f206665657320746f207769746864726177000000000000000000000000005f82015250565b5f612005601383611e89565b915061201082611fd1565b602082019050919050565b5f6020820190508181035f83015261203281611ff9565b9050919050565b7f4d61746368206973207374696c6c2061637469766500000000000000000000005f82015250565b5f61206d601583611e89565b915061207882612039565b602082019050919050565b5f6020820190508181035f83015261209a81612061565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4d61746368206861736e27742066696e697368656420796574000000000000005f82015250565b5f612102601983611e89565b915061210d826120ce565b602082019050919050565b5f6020820190508181035f83015261212f816120f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61219a82611caf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121cc576121cb612163565b5b600182019050919050565b600381106121e8576121e76120a1565b5b50565b5f8190506121f8826121d7565b919050565b5f612207826121eb565b9050919050565b612217816121fd565b82525050565b5f6020820190506122305f83018461220e565b92915050565b7f4e6f20616374697665206d6174636800000000000000000000000000000000005f82015250565b5f61226a600f83611e89565b915061227582612236565b602082019050919050565b5f6020820190508181035f8301526122978161225e565b9050919050565b7f496e76616c6964206f7574636f6d6500000000000000000000000000000000005f82015250565b5f6122d2600f83611e89565b91506122dd8261229e565b602082019050919050565b5f6020820190508181035f8301526122ff816122c6565b9050919050565b7f4e6f2062657473206f6e204f7574636f6d6520412e00000000000000000000005f82015250565b5f61233a601583611e89565b915061234582612306565b602082019050919050565b5f6020820190508181035f8301526123678161232e565b9050919050565b7f4e6f2062657473206f6e204f7574636f6d6520422e00000000000000000000005f82015250565b5f6123a2601583611e89565b91506123ad8261236e565b602082019050919050565b5f6020820190508181035f8301526123cf81612396565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4665652070657263656e7461676520746f6f20686967680000000000000000005f82015250565b5f612437601783611e89565b915061244282612403565b602082019050919050565b5f6020820190508181035f8301526124648161242b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f61249f601f83611e89565b91506124aa8261246b565b602082019050919050565b5f6020820190508181035f8301526124cc81612493565b9050919050565b5f6124dd82611caf565b91506124e883611caf565b92508282026124f681611caf565b9150828204841483151761250d5761250c612163565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61254b82611caf565b915061255683611caf565b92508261256657612565612514565b5b828204905092915050565b5f61257b82611caf565b915061258683611caf565b925082820190508082111561259e5761259d612163565b5b92915050565b5f6125ae82611caf565b91506125b983611caf565b92508282039050818111156125d1576125d0612163565b5b92915050565b7f436f6e74726163747320617265206e6f7420616c6c6f77656420746f206265745f82015250565b5f61260b602083611e89565b9150612616826125d7565b602082019050919050565b5f6020820190508181035f830152612638816125ff565b9050919050565b7f496e76616c69642062657420616d6f756e7400000000000000000000000000005f82015250565b5f612673601283611e89565b915061267e8261263f565b602082019050919050565b5f6020820190508181035f8301526126a081612667565b9050919050565b7f4d69736d6174636865642065746865722073656e7400000000000000000000005f82015250565b5f6126db601583611e89565b91506126e6826126a7565b602082019050919050565b5f6020820190508181035f830152612708816126cf565b9050919050565b7f506c61796572206c696d6974207265616368656420666f72204f7574636f6d655f8201527f2041000000000000000000000000000000000000000000000000000000000000602082015250565b5f612769602283611e89565b91506127748261270f565b604082019050919050565b5f6020820190508181035f8301526127968161275d565b9050919050565b7f506c61796572206c696d6974207265616368656420666f72204f7574636f6d655f8201527f2042000000000000000000000000000000000000000000000000000000000000602082015250565b5f6127f7602283611e89565b91506128028261279d565b604082019050919050565b5f6020820190508181035f830152612824816127eb565b9050919050565b5f60408201905061283e5f83018561220e565b61284b6020830184611cb8565b9392505050565b7f596f752063616e206f6e6c7920626574206f6e636520706572206d617463682e5f82015250565b5f612886602083611e89565b915061289182612852565b602082019050919050565b5f6020820190508181035f8301526128b38161287a565b905091905056fea2646970667358221220042e12d739d2f985a2eeacfda9ed791042d4350a4489781c9b2340ec6cbe520564736f6c63430008140033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063964676b21161009f578063f1ee843011610063578063f1ee8430146102f4578063f8bb7ec21461031f578063f997e80814610349578063fa968eea14610373578063fe9d08721461039d57610113565b8063964676b214610254578063b3e1e4051461027c578063b433e47c14610298578063cab11d5d146102ae578063cc4c55c1146102d857610113565b8063587f5ed7116100e6578063587f5ed7146101aa578063715018a6146101d45780637d2026cd146101ea578063831490f9146102005780638da5cb5b1461022a57610113565b80630cd62e8d14610117578063189ae5f2146101425780631a0676fe1461016a5780632e185ec714610194575b5f80fd5b348015610122575f80fd5b5061012b6103c5565b604051610139929190611cc7565b60405180910390f35b34801561014d575f80fd5b5061016860048036038101906101639190611d1c565b6103e1565b005b348015610175575f80fd5b5061017e610520565b60405161018b9190611d6c565b60405180910390f35b34801561019f575f80fd5b506101a8610526565b005b3480156101b5575f80fd5b506101be610690565b6040516101cb9190611d6c565b60405180910390f35b3480156101df575f80fd5b506101e8610696565b005b3480156101f5575f80fd5b506101fe6107e4565b005b34801561020b575f80fd5b50610214610dcf565b6040516102219190611d6c565b60405180910390f35b348015610235575f80fd5b5061023e610dd5565b60405161024b9190611dc4565b60405180910390f35b34801561025f575f80fd5b5061027a60048036038101906102759190611e00565b610dfc565b005b61029660048036038101906102919190611e2b565b61107f565b005b3480156102a3575f80fd5b506102ac61108d565b005b3480156102b9575f80fd5b506102c26114a6565b6040516102cf9190611d6c565b60405180910390f35b6102f260048036038101906102ed9190611e2b565b6114ac565b005b3480156102ff575f80fd5b506103086114ba565b604051610316929190611cc7565b60405180910390f35b34801561032a575f80fd5b506103336114cf565b6040516103409190611d6c565b60405180910390f35b348015610354575f80fd5b5061035d6114d5565b60405161036a9190611e70565b60405180910390f35b34801561037e575f80fd5b506103876114e7565b6040516103949190611d6c565b60405180910390f35b3480156103a8575f80fd5b506103c360048036038101906103be9190611e2b565b6114ed565b005b5f80600260050180549050915060026006018054905090509091565b6103e96115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046c90611ee3565b60405180910390fd5b8183106104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ae90611f4b565b60405180910390fd5b60095f9054906101000a900460ff1615610506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd90611fb3565b60405180910390fd5b82600a8190555081600b8190555080600d81905550505050565b60115481565b61052e6115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190611ee3565b60405180910390fd5b5f600e54116105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f59061201b565b60405180910390fd5b5f600e5490505f600e81905550610613610dd5565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610655573d5f803e3d5ffd5b507f7b9b39abdbad5ebd784c4a30b87ebacf8e568dadd9ce0392b7863d1e916eb26c816040516106859190611d6c565b60405180910390a150565b600e5481565b61069e6115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072190611ee3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6107ec6115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90611ee3565b60405180910390fd5b6108806115d5565b60095f9054906101000a900460ff16156108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690612083565b60405180910390fd5b5f60028111156108e2576108e16120a1565b5b600280015f9054906101000a900460ff166002811115610905576109046120a1565b5b03610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612118565b60405180910390fd5b60016002811115610959576109586120a1565b5b600280015f9054906101000a900460ff16600281111561097c5761097b6120a1565b5b03610b64575f6109af60646109a1600c5460026001015461162490919063ffffffff16565b61163990919063ffffffff16565b90506109c681600e5461164e90919063ffffffff16565b600e819055505f6109e58260026001015461166390919063ffffffff16565b90505f5b600260050180549050811015610b5c575f60026005018281548110610a1157610a10612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60026003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f610abb82610aad60025f0154610a9f868a61162490919063ffffffff16565b61163990919063ffffffff16565b61164e90919063ffffffff16565b90505f60026003015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b45573d5f803e3d5ffd5b505050508080610b5490612190565b9150506109e9565b505050610d7e565b600280811115610b7757610b766120a1565b5b600280015f9054906101000a900460ff166002811115610b9a57610b996120a1565b5b03610d7d575f610bcc6064610bbe600c5460025f015461162490919063ffffffff16565b61163990919063ffffffff16565b9050610be381600e5461164e90919063ffffffff16565b600e819055505f610c018260025f015461166390919063ffffffff16565b90505f5b600260060180549050811015610d79575f60026006018281548110610c2d57610c2c612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60026004015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f610cd882610cca600260010154610cbc868a61162490919063ffffffff16565b61163990919063ffffffff16565b61164e90919063ffffffff16565b90505f60026004015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d62573d5f803e3d5ffd5b505050508080610d7190612190565b915050610c05565b5050505b5b7fbf7f8a5d205753f1dc65122fdb3f428abcde7078f83d0af8cd16c704c94fe9ed600280015f9054906101000a900460ff16604051610dbd919061221d565b60405180910390a1610dcd611678565b565b600c5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e046115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790611ee3565b60405180910390fd5b60095f9054906101000a900460ff16610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612280565b60405180910390fd5b5f6002811115610ef157610ef06120a1565b5b816002811115610f0457610f036120a1565b5b03610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906122e8565b60405180910390fd5b5f60026005018054905011610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612350565b60405180910390fd5b5f60026006018054905011610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906123b8565b60405180910390fd5b80600280015f6101000a81548160ff02191690836002811115610ffe57610ffd6120a1565b5b021790555080600f5f6101000a81548160ff02191690836002811115611027576110266120a1565b5b02179055505f60095f6101000a81548160ff0219169083151502179055507f0a53a1872465adbb6013c72ee52a209362180ab1b257a485c505e17875e3b4ea81604051611074919061221d565b60405180910390a150565b61108a600282611681565b50565b6110956115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111890611ee3565b60405180910390fd5b60095f9054906101000a900460ff1615611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790611fb3565b60405180910390fd5b5f5b6002600501805490508110156112575760026003015f6002600501838154811061119f5761119e612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90556002600501818154811061121a57611219612136565b5b905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808061124f90612190565b915050611172565b505f5b60026006018054905081101561133f5760026004015f6002600601838154811061128757611286612136565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90556002600601818154811061130257611301612136565b5b905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808061133790612190565b91505061125a565b505f60025f01819055505f6002600101819055505f600280015f6101000a81548160ff02191690836002811115611379576113786120a1565b5b02179055505f67ffffffffffffffff811115611398576113976123d6565b5b6040519080825280602002602001820160405280156113c65781602001602082028036833780820191505090505b50600260050190805190602001906113df929190611c0d565b505f67ffffffffffffffff8111156113fa576113f96123d6565b5b6040519080825280602002602001820160405280156114285781602001602082028036833780820191505090505b5060026006019080519060200190611441929190611c0d565b50600160095f6101000a81548160ff021916908315150217905550611472600160115461164e90919063ffffffff16565b6011819055507fc284988e0695413d6925535f5d1123d7de8b507032892a0c33280c2fc51c760c60405160405180910390a1565b600b5481565b6114b7600182611681565b50565b5f8060025f0154915060026001015490509091565b600d5481565b60095f9054906101000a900460ff1681565b600a5481565b6114f56115ce565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157890611ee3565b60405180910390fd5b606481106115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb9061244d565b60405180910390fd5b80600c8190555050565b5f33905090565b60026001540361161a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611611906124b5565b60405180910390fd5b6002600181905550565b5f818361163191906124d3565b905092915050565b5f81836116469190612541565b905092915050565b5f818361165b9190612571565b905092915050565b5f818361167091906125a4565b905092915050565b60018081905550565b61168a33611a81565b156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190612621565b60405180910390fd5b60095f9054906101000a900460ff16611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612280565b60405180910390fd5b600a54811015801561172c5750600b548111155b61176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612689565b60405180910390fd5b8034146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a4906126f1565b60405180910390fd5b600160028111156117c1576117c06120a1565b5b8260028111156117d4576117d36120a1565b5b036118ee57600d5460026005018054905010611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c9061277f565b60405180910390fd5b611833600260050133611a98565b61184a8160025f015461164e90919063ffffffff16565b60025f01819055506118a58160026003015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461164e90919063ffffffff16565b60026003015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a2d565b600280811115611901576119006120a1565b5b826002811115611914576119136120a1565b5b03611a2c57600d5460026006018054905010611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c9061280d565b60405180910390fd5b611973600260060133611a98565b61198b8160026001015461164e90919063ffffffff16565b6002600101819055506119e78160026004015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461164e90919063ffffffff16565b60026004015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b3373ffffffffffffffffffffffffffffffffffffffff167f9f6b4cced64244a64465098f682029975b1614400b96bc6bd12c6680837191668383604051611a7592919061282b565b60405180910390a25050565b5f80823b90505f8163ffffffff1611915050919050565b60115460105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611b87578181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115460105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c09565b60115460105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff9061289c565b60405180910390fd5b5b5050565b828054828255905f5260205f20908101928215611c83579160200282015b82811115611c82578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611c2b565b5b509050611c909190611c94565b5090565b5b80821115611cab575f815f905550600101611c95565b5090565b5f819050919050565b611cc181611caf565b82525050565b5f604082019050611cda5f830185611cb8565b611ce76020830184611cb8565b9392505050565b5f80fd5b611cfb81611caf565b8114611d05575f80fd5b50565b5f81359050611d1681611cf2565b92915050565b5f805f60608486031215611d3357611d32611cee565b5b5f611d4086828701611d08565b9350506020611d5186828701611d08565b9250506040611d6286828701611d08565b9150509250925092565b5f602082019050611d7f5f830184611cb8565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611dae82611d85565b9050919050565b611dbe81611da4565b82525050565b5f602082019050611dd75f830184611db5565b92915050565b60038110611de9575f80fd5b50565b5f81359050611dfa81611ddd565b92915050565b5f60208284031215611e1557611e14611cee565b5b5f611e2284828501611dec565b91505092915050565b5f60208284031215611e4057611e3f611cee565b5b5f611e4d84828501611d08565b91505092915050565b5f8115159050919050565b611e6a81611e56565b82525050565b5f602082019050611e835f830184611e61565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611ecd602083611e89565b9150611ed882611e99565b602082019050919050565b5f6020820190508181035f830152611efa81611ec1565b9050919050565b7f496e76616c696420626574206c696d69747300000000000000000000000000005f82015250565b5f611f35601283611e89565b9150611f4082611f01565b602082019050919050565b5f6020820190508181035f830152611f6281611f29565b9050919050565b7f46696e697368207468652063757272656e74206d6174636820666972737400005f82015250565b5f611f9d601e83611e89565b9150611fa882611f69565b602082019050919050565b5f6020820190508181035f830152611fca81611f91565b9050919050565b7f4e6f206665657320746f207769746864726177000000000000000000000000005f82015250565b5f612005601383611e89565b915061201082611fd1565b602082019050919050565b5f6020820190508181035f83015261203281611ff9565b9050919050565b7f4d61746368206973207374696c6c2061637469766500000000000000000000005f82015250565b5f61206d601583611e89565b915061207882612039565b602082019050919050565b5f6020820190508181035f83015261209a81612061565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4d61746368206861736e27742066696e697368656420796574000000000000005f82015250565b5f612102601983611e89565b915061210d826120ce565b602082019050919050565b5f6020820190508181035f83015261212f816120f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61219a82611caf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121cc576121cb612163565b5b600182019050919050565b600381106121e8576121e76120a1565b5b50565b5f8190506121f8826121d7565b919050565b5f612207826121eb565b9050919050565b612217816121fd565b82525050565b5f6020820190506122305f83018461220e565b92915050565b7f4e6f20616374697665206d6174636800000000000000000000000000000000005f82015250565b5f61226a600f83611e89565b915061227582612236565b602082019050919050565b5f6020820190508181035f8301526122978161225e565b9050919050565b7f496e76616c6964206f7574636f6d6500000000000000000000000000000000005f82015250565b5f6122d2600f83611e89565b91506122dd8261229e565b602082019050919050565b5f6020820190508181035f8301526122ff816122c6565b9050919050565b7f4e6f2062657473206f6e204f7574636f6d6520412e00000000000000000000005f82015250565b5f61233a601583611e89565b915061234582612306565b602082019050919050565b5f6020820190508181035f8301526123678161232e565b9050919050565b7f4e6f2062657473206f6e204f7574636f6d6520422e00000000000000000000005f82015250565b5f6123a2601583611e89565b91506123ad8261236e565b602082019050919050565b5f6020820190508181035f8301526123cf81612396565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4665652070657263656e7461676520746f6f20686967680000000000000000005f82015250565b5f612437601783611e89565b915061244282612403565b602082019050919050565b5f6020820190508181035f8301526124648161242b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f61249f601f83611e89565b91506124aa8261246b565b602082019050919050565b5f6020820190508181035f8301526124cc81612493565b9050919050565b5f6124dd82611caf565b91506124e883611caf565b92508282026124f681611caf565b9150828204841483151761250d5761250c612163565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61254b82611caf565b915061255683611caf565b92508261256657612565612514565b5b828204905092915050565b5f61257b82611caf565b915061258683611caf565b925082820190508082111561259e5761259d612163565b5b92915050565b5f6125ae82611caf565b91506125b983611caf565b92508282039050818111156125d1576125d0612163565b5b92915050565b7f436f6e74726163747320617265206e6f7420616c6c6f77656420746f206265745f82015250565b5f61260b602083611e89565b9150612616826125d7565b602082019050919050565b5f6020820190508181035f830152612638816125ff565b9050919050565b7f496e76616c69642062657420616d6f756e7400000000000000000000000000005f82015250565b5f612673601283611e89565b915061267e8261263f565b602082019050919050565b5f6020820190508181035f8301526126a081612667565b9050919050565b7f4d69736d6174636865642065746865722073656e7400000000000000000000005f82015250565b5f6126db601583611e89565b91506126e6826126a7565b602082019050919050565b5f6020820190508181035f830152612708816126cf565b9050919050565b7f506c61796572206c696d6974207265616368656420666f72204f7574636f6d655f8201527f2041000000000000000000000000000000000000000000000000000000000000602082015250565b5f612769602283611e89565b91506127748261270f565b604082019050919050565b5f6020820190508181035f8301526127968161275d565b9050919050565b7f506c61796572206c696d6974207265616368656420666f72204f7574636f6d655f8201527f2042000000000000000000000000000000000000000000000000000000000000602082015250565b5f6127f7602283611e89565b91506128028261279d565b604082019050919050565b5f6020820190508181035f830152612824816127eb565b9050919050565b5f60408201905061283e5f83018561220e565b61284b6020830184611cb8565b9392505050565b7f596f752063616e206f6e6c7920626574206f6e636520706572206d617463682e5f82015250565b5f612886602083611e89565b915061289182612852565b602082019050919050565b5f6020820190508181035f8301526128b38161287a565b905091905056fea2646970667358221220042e12d739d2f985a2eeacfda9ed791042d4350a4489781c9b2340ec6cbe520564736f6c63430008140033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.