ETH Price: $3,830.21 (+5.99%)

Contract

0x3D5b124C7f771792A080CA64AdE179D93642ec1a
 

Overview

ETH Balance

0.210489438368911058 ETH

Eth Value

$806.22 (@ $3,830.21/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Token Out211718402024-11-12 13:16:1129 days ago1731417371IN
0x3D5b124C...93642ec1a
0 ETH0.0024269737.12223641
Token Out211670572024-11-11 21:14:1130 days ago1731359651IN
0x3D5b124C...93642ec1a
0 ETH0.0028126443.02125531
Token Out211552732024-11-10 5:48:1131 days ago1731217691IN
0x3D5b124C...93642ec1a
0 ETH0.0015204823.25690041
Token Out211192282024-11-05 5:02:1136 days ago1730782931IN
0x3D5b124C...93642ec1a
0 ETH0.0008170612.49756639
Token Out211191302024-11-05 4:42:1136 days ago1730781731IN
0x3D5b124C...93642ec1a
0 ETH0.0006070912.5781581
Token Out211140402024-11-04 11:39:1137 days ago1730720351IN
0x3D5b124C...93642ec1a
0 ETH0.0009015613.79002894
Token Out211024252024-11-02 20:45:1139 days ago1730580311IN
0x3D5b124C...93642ec1a
0 ETH0.0010089615.43274895
Token Out210947492024-11-01 19:00:1140 days ago1730487611IN
0x3D5b124C...93642ec1a
0 ETH0.0010384215.88346993
Token Out210933132024-11-01 14:12:1140 days ago1730470331IN
0x3D5b124C...93642ec1a
0 ETH0.001976530.23189456
Token Out210914962024-11-01 8:07:1140 days ago1730448431IN
0x3D5b124C...93642ec1a
0 ETH0.0008315517.22423086
Token Out210843952024-10-31 8:23:1141 days ago1730362991IN
0x3D5b124C...93642ec1a
0 ETH0.0011525717.62936083
Token In210798582024-10-30 17:11:3542 days ago1730308295IN
0x3D5b124C...93642ec1a
0 ETH0.0012061518.88341303
Token In210748012024-10-30 0:12:3543 days ago1730247155IN
0x3D5b124C...93642ec1a
0 ETH0.000538928.43887467
Token Out210742352024-10-29 22:19:1143 days ago1730240351IN
0x3D5b124C...93642ec1a
0 ETH0.001172317.93121188
Coin In210741932024-10-29 22:10:4743 days ago1730239847IN
0x3D5b124C...93642ec1a
0.019 ETH0.000308039.86023035
Token Out210741552024-10-29 22:03:1143 days ago1730239391IN
0x3D5b124C...93642ec1a
0 ETH0.0012435719.02137753
Coin Out210741552024-10-29 22:03:1143 days ago1730239391IN
0x3D5b124C...93642ec1a
0 ETH0.0007205819.02137753
Token Out210734732024-10-29 19:46:1143 days ago1730231171IN
0x3D5b124C...93642ec1a
0 ETH0.0017857327.31407152
Token Out210714792024-10-29 13:06:1143 days ago1730207171IN
0x3D5b124C...93642ec1a
0 ETH0.0022647334.64058696
Token Out210713792024-10-29 12:46:1143 days ago1730205971IN
0x3D5b124C...93642ec1a
0 ETH0.0019086129.19349113
Token In210705002024-10-29 9:49:1143 days ago1730195351IN
0x3D5b124C...93642ec1a
0 ETH0.000542928.5
Token In210704802024-10-29 9:45:1143 days ago1730195111IN
0x3D5b124C...93642ec1a
0 ETH0.0006709210.50386553
Token In210703842024-10-29 9:25:5943 days ago1730193959IN
0x3D5b124C...93642ec1a
0 ETH0.0006826310.68719046
Token In210695902024-10-29 6:45:5943 days ago1730184359IN
0x3D5b124C...93642ec1a
0 ETH0.00056688.25497963
Token In210695212024-10-29 6:31:5943 days ago1730183519IN
0x3D5b124C...93642ec1a
0 ETH0.0007171110.44237411
View all transactions

Latest 10 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
210741552024-10-29 22:03:1143 days ago1730239391
0x3D5b124C...93642ec1a
0.04374981 ETH
210666762024-10-28 21:00:1144 days ago1730149211
0x3D5b124C...93642ec1a
0.00819232 ETH
210617422024-10-28 4:27:1144 days ago1730089631
0x3D5b124C...93642ec1a
0.19752327 ETH
210616372024-10-28 4:06:1144 days ago1730088371
0x3D5b124C...93642ec1a
0.03414579 ETH
203383952024-07-19 5:10:11145 days ago1721365811
0x3D5b124C...93642ec1a
0.00883999 ETH
202247412024-07-03 8:18:11161 days ago1719994691
0x3D5b124C...93642ec1a
0.09956 ETH
198823782024-05-16 11:56:11209 days ago1715860571
0x3D5b124C...93642ec1a
0.01912 ETH
198820302024-05-16 10:46:11209 days ago1715856371
0x3D5b124C...93642ec1a
0.00112 ETH
198679972024-05-14 11:38:23211 days ago1715686703
0x3D5b124C...93642ec1a
0.00923 ETH
198403172024-05-10 14:45:11215 days ago1715352311
0x3D5b124C...93642ec1a
0.00868 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bridge

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-02
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8 .17;

interface ERC20Essential {

    function balanceOf(address user) external view returns(uint256);

    function transfer(address _to, uint256 _amount) external returns(bool);

    function transferFrom(address _from, address _to, uint256 _amount) external returns(bool);

    function mint(address account, uint256 value) external;

    function burn(address account, uint256 value) external;

    function transferOwnership(address newOwner) external;

    function owner() external returns(address);

}


//USDT contract in Ethereum does not follow ERC20 standard so it needs different interface
interface usdtContract {
    function transferFrom(address _from, address _to, uint256 _amount) external;

    function transfer(address _to, uint256 _amount) external;

    function mint(address account, uint256 value) external;

    function burn(address account, uint256 value) external;

    function balanceOf(address user) external view returns(uint256);
}




//*******************************************************************//
//------------------ Contract to Manage Ownership -------------------//
//*******************************************************************//
contract owned {
    address public owner;
    address internal newOwner;
    mapping(address => bool) public signer;

    event OwnershipTransferred(address indexed _from, address indexed _to);
    event SignerUpdated(address indexed signer, bool indexed status);

    constructor() {
        owner = msg.sender;
        //owner does not become signer automatically.
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }


    modifier onlySigner {
        require(signer[msg.sender], 'caller must be signer');
        _;
    }


    function changeSigner(address _signer, bool _status) public onlyOwner {
        signer[_signer] = _status;
        emit SignerUpdated(_signer, _status);
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    //the reason for this flow is to protect owners from sending ownership to unintended address due to human error
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}




//****************************************************************************//
//---------------------        MAIN CODE STARTS HERE     ---------------------//
//****************************************************************************//

contract Bridge is owned {

    uint256 public orderID;
    uint256 public exraCoinRewards; // if we give users extra coins to cover gas cost of some initial transactions.

    address public feeWallet;
    address public reserveWallet;
    address public usdtAddress = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    uint256 public reserveFundThreshold = 10e18;
    uint256 public txFee;

    // /* This mapping contains the status of tokenAddresses who are not under our control like those which we cannot burn or mint*/
    // mapping(address=>bool) public noControl;
    mapping(address => uint256) public tokenFundThreshold;


    // This generates a public event of coin received by contract
    event CoinIn(uint256 indexed orderID, address indexed user, uint256 value, address outputCurrency);
    event CoinOut(uint256 indexed orderID, address indexed user, uint256 value);
    event CoinOutFailed(uint256 indexed orderID, address indexed user, uint256 value);
    event TokenIn(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID, address outputCurrency);
    event TokenOut(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID);
    event TokenOutFailed(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID);




    receive() external payable {
        //nothing happens for incoming fund
    }

    constructor() {

        tokenFundThreshold[0xdAC17F958D2ee523a2206206994597C13D831ec7] = 100e6; /*USDT Ethereum*/
        tokenFundThreshold[0x55d398326f99059fF775485246999027B3197955] = 100e18; /*USDT Binance*/
        tokenFundThreshold[0xc2132D05D31c914a87C6611C10748AEb04B58e8F] = 100e6; /*USDT Matic*/
    }

    function coinIn(address outputCurrency) external payable returns(bool) {
        orderID++;
        uint256 amount = msg.value;


        if (address(this).balance >= reserveFundThreshold) {
            payable(owner).transfer(amount);
        }

        emit CoinIn(orderID, msg.sender, amount, outputCurrency);
        return true;
    }

    function coinOut(address user, uint256 amount, uint256 _orderID) external onlySigner returns(bool) {
        uint256 afterTax;
        uint256 tax;

        if (txFee != 0) {
            (afterTax, tax) = processTax(amount);
            if (feeWallet != address(0)) {
                payable(feeWallet).transfer(tax);
            }
            payable(user).transfer(afterTax);
        } else {
            payable(user).transfer(amount);
            afterTax = amount;
        }

        emit CoinOut(_orderID, user, afterTax);
        return true;
    }


    function tokenIn(address tokenAddress, uint256 tokenAmount, uint256 chainID, address outputCurrency) external returns(bool) {
        orderID++;

        if (tokenAddress == usdtAddress) {
            usdtContract(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
            if (usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]) {
                usdtContract(tokenAddress).transfer(owner, tokenAmount);
            }

        } else {
            ERC20Essential(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
            if (usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]) {
                ERC20Essential(tokenAddress).transfer(owner, tokenAmount);
            }
        }

        emit TokenIn(orderID, tokenAddress, msg.sender, tokenAmount, chainID, outputCurrency);
        return true;
    }


    function tokenOut(address tokenAddress, address user, uint256 tokenAmount, uint256 _orderID, uint256 chainID) external onlySigner returns(bool) {
        uint256 minted = tokenAmount;
        uint256 tax;
        uint256 afterTax;


        if (tokenAddress == usdtAddress) {
            if (txFee != 0) {
                (afterTax, tax) = processTax(tokenAmount);
                usdtContract(tokenAddress).transfer(user, afterTax);
                if (feeWallet != address(0)) {
                    usdtContract(tokenAddress).transfer(feeWallet, tax);
                }
                minted = afterTax;
            } else {
                usdtContract(tokenAddress).transfer(user, tokenAmount);
                minted = tokenAmount;
            }

        } else {
            if (txFee != 0) {
                (afterTax, tax) = processTax(tokenAmount);
                ERC20Essential(tokenAddress).transfer(user, afterTax);
                if (feeWallet != address(0)) {
                    ERC20Essential(tokenAddress).transfer(feeWallet, tax);
                }
                minted = afterTax;
            } else {
                ERC20Essential(tokenAddress).transfer(user, tokenAmount);
                minted = tokenAmount;
            }

        }


        emit TokenOut(_orderID, tokenAddress, user, minted, chainID);

        return true;
    }

    /* Process Tax*/
    function processTax(uint256 amount) internal view returns(uint256 afterTax, uint256 deductedTax) {
        require(amount>txFee, "Fee greater than amount");
        deductedTax = txFee;
        afterTax = amount - deductedTax;
    }


    /*Change feeWallet*/
    function setFeeWallet(address _feeWallet) external onlyOwner returns(address oldWallet, address newWallet) {
        oldWallet = feeWallet;
        feeWallet = _feeWallet;
        newWallet = feeWallet;
    }

    /*Change reserveWallet*/
    function setReserveWallet(address _reserveWallet) external onlyOwner returns(address oldWallet, address newWallet) {
        oldWallet = reserveWallet;
        reserveWallet = _reserveWallet;
        newWallet = reserveWallet;
    }

    /* set usdt token address*/
    function setUSDTAddress(address _tokenAddress) external onlyOwner returns(address newAddress) {
        require(_tokenAddress != address(0), "zero address not allowed");
        require(_tokenAddress != usdtAddress, "same as old address");
        usdtAddress = _tokenAddress;
        newAddress = usdtAddress;
    }

    /* set Threshold*/
    function setFundThreshold(uint256 _amount) external onlyOwner returns(uint256 oldAmount, uint256 newAmount) {
        oldAmount = reserveFundThreshold;
        reserveFundThreshold = _amount;
        newAmount = _amount;
    }

    /* Change owner of the given token contract*/
    function transferTokenOwnership(address ofTokenAddress, address toAddress) external onlyOwner returns(address oldOwner, address newOwner) {
        require(ofTokenAddress != address(0) && toAddress != address(0), "zero address not allowed");
        oldOwner = ERC20Essential(ofTokenAddress).owner();
        ERC20Essential(ofTokenAddress).transferOwnership(toAddress);
        newOwner = ERC20Essential(ofTokenAddress).owner();
    }

    /* Modify the token reserve threshold values
     */
    function setTokenReserveThreshold(address forToken, uint256 threshold) external onlyOwner {
        tokenFundThreshold[forToken] = threshold;
    }

    function rescueNative(uint256 rescueAmount) external onlyOwner {
        if (address(this).balance <= rescueAmount) {
            rescueAmount = address(this).balance;
        }
        payable(owner).transfer(rescueAmount);
    }
    function setTxFee(uint256 amount) external onlyOwner {
        txFee = amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputCurrency","type":"address"}],"name":"CoinIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CoinOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CoinOutFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputCurrency","type":"address"}],"name":"TokenIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"TokenOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"TokenOutFailed","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"outputCurrency","type":"address"}],"name":"coinIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"_orderID","type":"uint256"}],"name":"coinOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exraCoinRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orderID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rescueAmount","type":"uint256"}],"name":"rescueNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveFundThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeWallet","type":"address"}],"name":"setFeeWallet","outputs":[{"internalType":"address","name":"oldWallet","type":"address"},{"internalType":"address","name":"newWallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setFundThreshold","outputs":[{"internalType":"uint256","name":"oldAmount","type":"uint256"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reserveWallet","type":"address"}],"name":"setReserveWallet","outputs":[{"internalType":"address","name":"oldWallet","type":"address"},{"internalType":"address","name":"newWallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forToken","type":"address"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTokenReserveThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setUSDTAddress","outputs":[{"internalType":"address","name":"newAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"signer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenFundThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"address","name":"outputCurrency","type":"address"}],"name":"tokenIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_orderID","type":"uint256"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"tokenOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ofTokenAddress","type":"address"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"transferTokenOwnership","outputs":[{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600780546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec7179055678ac7230489e8000060085534801561004257600080fd5b50600080546001600160a01b03191633178155600a6020526305f5e1007fb7e2958a2abfb668f1e99d86008b48267975d726df44a62b9676fda384beb19581905568056bc75e2d631000007fb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f05573c2132d05d31c914a87c6611c10748aeb04b58e8f9091527f8a10ac49449cc42ad5f1435ba0e39c8ff12ee5867371ae9a8b5024fb3f73cf0055611643806100f86000396000f3fe60806040526004361061016a5760003560e01c80639ab4a445116100d1578063dda4fa8f1161008a578063f25f4b5611610064578063f25f4b5614610465578063f2fde38b14610485578063f3a7cb61146104a5578063fea54d06146104c557600080fd5b8063dda4fa8f1461040f578063f05d16f71461042f578063f1c069061461044f57600080fd5b80639ab4a4451461034e578063b8fb28161461036e578063c7e0af6a1461038e578063cd23e147146103c3578063cf820461146103d9578063d72b11bd146103ef57600080fd5b806355eba8681161012357806355eba868146102705780636fba2983146102a857806379ba5097146102e357806381203d03146102f85780638da5cb5b1461030e57806390d49b9d1461032e57600080fd5b80630536b7231461017657806315a01045146101bb578063256c1ea3146101ce578063383fe467146101ee578063454aa6691461022e57806351295f011461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101a66101913660046113c4565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101a66101c93660046113c4565b6104e5565b3480156101da57600080fd5b506101a66101e93660046113e8565b610591565b3480156101fa57600080fd5b5061020e610209366004611439565b610969565b604080516001600160a01b039384168152929091166020830152016101b2565b34801561023a57600080fd5b5061024e610249366004611472565b610b1a565b005b34801561025c57600080fd5b5061024e61026b366004611499565b610b78565b34801561027c57600080fd5b5061029061028b3660046113c4565b610be3565b6040516001600160a01b0390911681526020016101b2565b3480156102b457600080fd5b506102d56102c33660046113c4565b600a6020526000908152604090205481565b6040519081526020016101b2565b3480156102ef57600080fd5b5061024e610cc3565b34801561030457600080fd5b506102d560035481565b34801561031a57600080fd5b50600054610290906001600160a01b031681565b34801561033a57600080fd5b5061020e6103493660046113c4565b610d3e565b34801561035a57600080fd5b50600754610290906001600160a01b031681565b34801561037a57600080fd5b5061024e6103893660046114c7565b610d80565b34801561039a57600080fd5b506103ae6103a9366004611472565b610db3565b604080519283526020830191909152016101b2565b3480156103cf57600080fd5b506102d560085481565b3480156103e557600080fd5b506102d560095481565b3480156103fb57600080fd5b50600654610290906001600160a01b031681565b34801561041b57600080fd5b5061020e61042a3660046113c4565b610dda565b34801561043b57600080fd5b5061024e61044a366004611472565b610e1c565b34801561045b57600080fd5b506102d560045481565b34801561047157600080fd5b50600554610290906001600160a01b031681565b34801561049157600080fd5b5061024e6104a03660046113c4565b610e38565b3480156104b157600080fd5b506101a66104c03660046114f3565b610e71565b3480156104d157600080fd5b506101a66104e036600461153d565b6111bd565b60038054600091826104f683611588565b90915550506008543490471061054157600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b600354604080518381526001600160a01b03861660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a350600192915050565b3360009081526002602052604081205460ff166105ed5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b600754849060009081906001600160a01b03908116908a160361076f57600954156107055761061b87611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb90604401600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50506005546001600160a01b03161591506106fd90505760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb90604401600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b505050505b809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb90604401600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050869250610903565b6009541561088b5761078087611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb906044016020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906115a1565b506005546001600160a01b0316156106fd5760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb906044016020604051808303816000875af115801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906115a1565b50809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb906044016020604051808303816000875af11580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe91906115a1565b508692505b876001600160a01b0316896001600160a01b0316877f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08689604051610952929190918252602082015260400190565b60405180910390a450600198975050505050505050565b6000805481906001600160a01b0316331461098357600080fd5b6001600160a01b038416158015906109a357506001600160a01b03831615155b6109ea5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906115be565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906115be565b90509250929050565b6000546001600160a01b03163314610b3157600080fd5b804711610b3b5750475b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b74573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b8f57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610bfb57600080fd5b6001600160a01b038216610c4c5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b6007546001600160a01b0390811690831603610ca05760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b60448201526064016105e4565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6001546001600160a01b03163314610cda57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805481906001600160a01b03163314610d5857600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610d9757600080fd5b6001600160a01b039091166000908152600a6020526040902055565b6000805481906001600160a01b03163314610dcd57600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610df457600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e3357600080fd5b600955565b6000546001600160a01b03163314610e4f57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610e8283611588565b90915550506007546001600160a01b0390811690861603610fee576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd90606401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d91906115db565b10610fe95760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb90604401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050505b61115e565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015611041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106591906115a1565b506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906115db565b1061115e5760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906115a1565b505b60035460408051868152602081018690526001600160a01b03858116828401529151339392891692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001949350505050565b3360009081526002602052604081205460ff166112145760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064016105e4565b6000806009546000146112b85761122a85611343565b60055491935091506001600160a01b03161561127c576005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561127a573d6000803e3d6000fd5b505b6040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156112b2573d6000803e3d6000fd5b506112f3565b6040516001600160a01b0387169086156108fc029087906000818181858888f193505050501580156112ee573d6000803e3d6000fd5b508491505b856001600160a01b0316847f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b8460405161132f91815260200190565b60405180910390a350600195945050505050565b60008060095483116113975760405162461bcd60e51b815260206004820152601760248201527f4665652067726561746572207468616e20616d6f756e7400000000000000000060448201526064016105e4565b506009546113a581846115f4565b9150915091565b6001600160a01b03811681146113c157600080fd5b50565b6000602082840312156113d657600080fd5b81356113e1816113ac565b9392505050565b600080600080600060a0868803121561140057600080fd5b853561140b816113ac565b9450602086013561141b816113ac565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561144c57600080fd5b8235611457816113ac565b91506020830135611467816113ac565b809150509250929050565b60006020828403121561148457600080fd5b5035919050565b80151581146113c157600080fd5b600080604083850312156114ac57600080fd5b82356114b7816113ac565b915060208301356114678161148b565b600080604083850312156114da57600080fd5b82356114e5816113ac565b946020939093013593505050565b6000806000806080858703121561150957600080fd5b8435611514816113ac565b935060208501359250604085013591506060850135611532816113ac565b939692955090935050565b60008060006060848603121561155257600080fd5b833561155d816113ac565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161159a5761159a611572565b5060010190565b6000602082840312156115b357600080fd5b81516113e18161148b565b6000602082840312156115d057600080fd5b81516113e1816113ac565b6000602082840312156115ed57600080fd5b5051919050565b8181038181111561160757611607611572565b9291505056fea2646970667358221220e0479cfe8585a242a72a4fffc36eef989bb3d70eccd69fac9be692f5ee593ce064736f6c63430008110033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80639ab4a445116100d1578063dda4fa8f1161008a578063f25f4b5611610064578063f25f4b5614610465578063f2fde38b14610485578063f3a7cb61146104a5578063fea54d06146104c557600080fd5b8063dda4fa8f1461040f578063f05d16f71461042f578063f1c069061461044f57600080fd5b80639ab4a4451461034e578063b8fb28161461036e578063c7e0af6a1461038e578063cd23e147146103c3578063cf820461146103d9578063d72b11bd146103ef57600080fd5b806355eba8681161012357806355eba868146102705780636fba2983146102a857806379ba5097146102e357806381203d03146102f85780638da5cb5b1461030e57806390d49b9d1461032e57600080fd5b80630536b7231461017657806315a01045146101bb578063256c1ea3146101ce578063383fe467146101ee578063454aa6691461022e57806351295f011461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101a66101913660046113c4565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101a66101c93660046113c4565b6104e5565b3480156101da57600080fd5b506101a66101e93660046113e8565b610591565b3480156101fa57600080fd5b5061020e610209366004611439565b610969565b604080516001600160a01b039384168152929091166020830152016101b2565b34801561023a57600080fd5b5061024e610249366004611472565b610b1a565b005b34801561025c57600080fd5b5061024e61026b366004611499565b610b78565b34801561027c57600080fd5b5061029061028b3660046113c4565b610be3565b6040516001600160a01b0390911681526020016101b2565b3480156102b457600080fd5b506102d56102c33660046113c4565b600a6020526000908152604090205481565b6040519081526020016101b2565b3480156102ef57600080fd5b5061024e610cc3565b34801561030457600080fd5b506102d560035481565b34801561031a57600080fd5b50600054610290906001600160a01b031681565b34801561033a57600080fd5b5061020e6103493660046113c4565b610d3e565b34801561035a57600080fd5b50600754610290906001600160a01b031681565b34801561037a57600080fd5b5061024e6103893660046114c7565b610d80565b34801561039a57600080fd5b506103ae6103a9366004611472565b610db3565b604080519283526020830191909152016101b2565b3480156103cf57600080fd5b506102d560085481565b3480156103e557600080fd5b506102d560095481565b3480156103fb57600080fd5b50600654610290906001600160a01b031681565b34801561041b57600080fd5b5061020e61042a3660046113c4565b610dda565b34801561043b57600080fd5b5061024e61044a366004611472565b610e1c565b34801561045b57600080fd5b506102d560045481565b34801561047157600080fd5b50600554610290906001600160a01b031681565b34801561049157600080fd5b5061024e6104a03660046113c4565b610e38565b3480156104b157600080fd5b506101a66104c03660046114f3565b610e71565b3480156104d157600080fd5b506101a66104e036600461153d565b6111bd565b60038054600091826104f683611588565b90915550506008543490471061054157600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b600354604080518381526001600160a01b03861660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a350600192915050565b3360009081526002602052604081205460ff166105ed5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b600754849060009081906001600160a01b03908116908a160361076f57600954156107055761061b87611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb90604401600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50506005546001600160a01b03161591506106fd90505760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb90604401600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b505050505b809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb90604401600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050869250610903565b6009541561088b5761078087611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb906044016020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906115a1565b506005546001600160a01b0316156106fd5760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb906044016020604051808303816000875af115801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906115a1565b50809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb906044016020604051808303816000875af11580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe91906115a1565b508692505b876001600160a01b0316896001600160a01b0316877f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08689604051610952929190918252602082015260400190565b60405180910390a450600198975050505050505050565b6000805481906001600160a01b0316331461098357600080fd5b6001600160a01b038416158015906109a357506001600160a01b03831615155b6109ea5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906115be565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906115be565b90509250929050565b6000546001600160a01b03163314610b3157600080fd5b804711610b3b5750475b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b74573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b8f57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610bfb57600080fd5b6001600160a01b038216610c4c5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b6007546001600160a01b0390811690831603610ca05760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b60448201526064016105e4565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6001546001600160a01b03163314610cda57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805481906001600160a01b03163314610d5857600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610d9757600080fd5b6001600160a01b039091166000908152600a6020526040902055565b6000805481906001600160a01b03163314610dcd57600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610df457600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e3357600080fd5b600955565b6000546001600160a01b03163314610e4f57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610e8283611588565b90915550506007546001600160a01b0390811690861603610fee576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd90606401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d91906115db565b10610fe95760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb90604401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050505b61115e565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015611041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106591906115a1565b506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906115db565b1061115e5760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906115a1565b505b60035460408051868152602081018690526001600160a01b03858116828401529151339392891692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001949350505050565b3360009081526002602052604081205460ff166112145760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064016105e4565b6000806009546000146112b85761122a85611343565b60055491935091506001600160a01b03161561127c576005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561127a573d6000803e3d6000fd5b505b6040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156112b2573d6000803e3d6000fd5b506112f3565b6040516001600160a01b0387169086156108fc029087906000818181858888f193505050501580156112ee573d6000803e3d6000fd5b508491505b856001600160a01b0316847f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b8460405161132f91815260200190565b60405180910390a350600195945050505050565b60008060095483116113975760405162461bcd60e51b815260206004820152601760248201527f4665652067726561746572207468616e20616d6f756e7400000000000000000060448201526064016105e4565b506009546113a581846115f4565b9150915091565b6001600160a01b03811681146113c157600080fd5b50565b6000602082840312156113d657600080fd5b81356113e1816113ac565b9392505050565b600080600080600060a0868803121561140057600080fd5b853561140b816113ac565b9450602086013561141b816113ac565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561144c57600080fd5b8235611457816113ac565b91506020830135611467816113ac565b809150509250929050565b60006020828403121561148457600080fd5b5035919050565b80151581146113c157600080fd5b600080604083850312156114ac57600080fd5b82356114b7816113ac565b915060208301356114678161148b565b600080604083850312156114da57600080fd5b82356114e5816113ac565b946020939093013593505050565b6000806000806080858703121561150957600080fd5b8435611514816113ac565b935060208501359250604085013591506060850135611532816113ac565b939692955090935050565b60008060006060848603121561155257600080fd5b833561155d816113ac565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161159a5761159a611572565b5060010190565b6000602082840312156115b357600080fd5b81516113e18161148b565b6000602082840312156115d057600080fd5b81516113e1816113ac565b6000602082840312156115ed57600080fd5b5051919050565b8181038181111561160757611607611572565b9291505056fea2646970667358221220e0479cfe8585a242a72a4fffc36eef989bb3d70eccd69fac9be692f5ee593ce064736f6c63430008110033

Deployed Bytecode Sourcemap

2724:7584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1359:38;;;;;;;;;;-1:-1:-1;1359:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;1359:38:0;;;;;;;;4559:350;;;;;;:::i;:::-;;:::i;6444:1400::-;;;;;;;;;;-1:-1:-1;6444:1400:0;;;;;:::i;:::-;;:::i;9315:439::-;;;;;;;;;;-1:-1:-1;9315:439:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1816:15:1;;;1798:34;;1868:15;;;;1863:2;1848:18;;1841:43;1733:18;9315:439:0;1586:304:1;9978:235:0;;;;;;;;;;-1:-1:-1;9978:235:0;;;;;:::i;:::-;;:::i;:::-;;1871:161;;;;;;;;;;-1:-1:-1;1871:161:0;;;;;:::i;:::-;;:::i;8673:321::-;;;;;;;;;;-1:-1:-1;8673:321:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2754:32:1;;;2736:51;;2724:2;2709:18;8673:321:0;2590:203:1;3312:53:0;;;;;;;;;;-1:-1:-1;3312:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2944:25:1;;;2932:2;2917:18;3312:53:0;2798:177:1;2267:196:0;;;;;;;;;;;;;:::i;2758:22::-;;;;;;;;;;;;;;;;1300:20;;;;;;;;;;-1:-1:-1;1300:20:0;;;;-1:-1:-1;;;;;1300:20:0;;;8146:212;;;;;;;;;;-1:-1:-1;8146:212:0;;;;;:::i;:::-;;:::i;2972:71::-;;;;;;;;;;-1:-1:-1;2972:71:0;;;;-1:-1:-1;;;;;2972:71:0;;;9821:149;;;;;;;;;;-1:-1:-1;9821:149:0;;;;;:::i;:::-;;:::i;9026:230::-;;;;;;;;;;-1:-1:-1;9026:230:0;;;;;:::i;:::-;;:::i;:::-;;;;3474:25:1;;;3530:2;3515:18;;3508:34;;;;3447:18;9026:230:0;3300:248:1;3050:43:0;;;;;;;;;;;;;;;;3100:20;;;;;;;;;;;;;;;;2937:28;;;;;;;;;;-1:-1:-1;2937:28:0;;;;-1:-1:-1;;;;;2937:28:0;;;8396:236;;;;;;;;;;-1:-1:-1;8396:236:0;;;;;:::i;:::-;;:::i;10219:86::-;;;;;;;;;;-1:-1:-1;10219:86:0;;;;;:::i;:::-;;:::i;2787:30::-;;;;;;;;;;;;;;;;2906:24;;;;;;;;;;-1:-1:-1;2906:24:0;;;;-1:-1:-1;;;;;2906:24:0;;;2040:102;;;;;;;;;;-1:-1:-1;2040:102:0;;;;;:::i;:::-;;:::i;5499:935::-;;;;;;;;;;-1:-1:-1;5499:935:0;;;;;:::i;:::-;;:::i;4917:572::-;;;;;;;;;;-1:-1:-1;4917:572:0;;;;;:::i;:::-;;:::i;4559:350::-;4641:7;:9;;4624:4;;;4641:9;;;:::i;:::-;;;;-1:-1:-1;;4731:20:0;;4678:9;;4706:21;:45;4702:109;;4776:5;;;4768:31;;-1:-1:-1;;;;;4776:5:0;;;;4768:31;;;;;4792:6;;4768:31;4776:5;4768:31;4792:6;4776:5;4768:31;;;;;;;;;;;;;;;;;;;;;4702:109;4835:7;;4828:51;;;4917:25:1;;;-1:-1:-1;;;;;4978:32:1;;4973:2;4958:18;;4951:60;4844:10:0;;4835:7;4828:51;;4890:18:1;4828:51:0;;;;;;;-1:-1:-1;4897:4:0;;4559:350;-1:-1:-1;;4559:350:0:o;6444:1400::-;1804:10;6582:4;1797:18;;;:6;:18;;;;;;;;1789:52;;;;-1:-1:-1;;;1789:52:0;;5224:2:1;1789:52:0;;;5206:21:1;5263:2;5243:18;;;5236:30;-1:-1:-1;;;5282:18:1;;;5275:51;5343:18;;1789:52:0;;;;;;;;;6711:11:::1;::::0;6616;;6599:14:::1;::::0;;;-1:-1:-1;;;;;6711:11:0;;::::1;6695:27:::0;;::::1;::::0;6691:1047:::1;;6743:5;::::0;:10;6739:473:::1;;6792:23;6803:11;6792:10;:23::i;:::-;6834:51;::::0;-1:-1:-1;;;6834:51:0;;-1:-1:-1;;;;;5564:32:1;;;6834:51:0::1;::::0;::::1;5546::1::0;5613:18;;;5606:34;;;6774:41:0;;-1:-1:-1;6774:41:0;;-1:-1:-1;6834:35:0;::::1;::::0;::::1;::::0;5519:18:1;;6834:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6908:9:0::1;::::0;-1:-1:-1;;;;;6908:9:0::1;:23:::0;;-1:-1:-1;6904:123:0::1;::::0;-1:-1:-1;6904:123:0::1;6992:9;::::0;6956:51:::1;::::0;-1:-1:-1;;;6956:51:0;;-1:-1:-1;;;;;6992:9:0;;::::1;6956:51;::::0;::::1;5546::1::0;5613:18;;;5606:34;;;6956:35:0;;::::1;::::0;::::1;::::0;5519:18:1;;6956:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6904:123;7054:8;7045:17;;6691:1047;;6739:473;7103:54;::::0;-1:-1:-1;;;7103:54:0;;-1:-1:-1;;;;;5564:32:1;;;7103:54:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7103:35:0;::::1;::::0;::::1;::::0;5519:18:1;;7103:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7185:11;7176:20;;6691:1047;;;7250:5;::::0;:10;7246:479:::1;;7299:23;7310:11;7299:10;:23::i;:::-;7341:53;::::0;-1:-1:-1;;;7341:53:0;;-1:-1:-1;;;;;5564:32:1;;;7341:53:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7281:41:0;;-1:-1:-1;7281:41:0;;-1:-1:-1;7341:37:0;::::1;::::0;::::1;::::0;5519:18:1;;7341:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7417:9:0::1;::::0;-1:-1:-1;;;;;7417:9:0::1;:23:::0;7413:125:::1;;7503:9;::::0;7465:53:::1;::::0;-1:-1:-1;;;7465:53:0;;-1:-1:-1;;;;;7503:9:0;;::::1;7465:53;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7465:37:0;;::::1;::::0;::::1;::::0;5519:18:1;;7465:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7565:8;7556:17;;7246:479;;;7614:56;::::0;-1:-1:-1;;;7614:56:0;;-1:-1:-1;;;;;5564:32:1;;;7614:56:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7614:37:0;::::1;::::0;::::1;::::0;5519:18:1;;7614:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7698:11;7689:20;;7246:479;7790:4;-1:-1:-1::0;;;;;7757:55:0::1;7776:12;-1:-1:-1::0;;;;;7757:55:0::1;7766:8;7757:55;7796:6;7804:7;7757:55;;;;;;3474:25:1::0;;;3530:2;3515:18;;3508:34;3462:2;3447:18;;3300:248;7757:55:0::1;;;;;;;;-1:-1:-1::0;7832:4:0::1;::::0;6444:1400;-1:-1:-1;;;;;;;;6444:1400:0:o;9315:439::-;9417:16;1722:5;;9417:16;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;9472:28:0;::::1;::::0;;::::1;::::0;:55:::1;;-1:-1:-1::0;;;;;;9504:23:0;::::1;::::0;::::1;9472:55;9464:92;;;::::0;-1:-1:-1;;;9464:92:0;;6103:2:1;9464:92:0::1;::::0;::::1;6085:21:1::0;6142:2;6122:18;;;6115:30;-1:-1:-1;;;6161:18:1;;;6154:54;6225:18;;9464:92:0::1;5901:348:1::0;9464:92:0::1;9593:14;-1:-1:-1::0;;;;;9578:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9627:59;::::0;-1:-1:-1;;;9627:59:0;;-1:-1:-1;;;;;2754:32:1;;;9627:59:0::1;::::0;::::1;2736:51:1::0;9567:49:0;;-1:-1:-1;9627:48:0;;::::1;::::0;::::1;::::0;2709:18:1;;9627:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9723:14;-1:-1:-1::0;;;;;9708:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9697:49;;9315:439:::0;;;;;:::o;9978:235::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;10081:12:::1;10056:21;:37;10052:106;;-1:-1:-1::0;10125:21:0::1;10052:106;10176:5;::::0;;10168:37:::1;::::0;-1:-1:-1;;;;;10176:5:0;;::::1;::::0;10168:37;::::1;;;::::0;10192:12;;10168:37;10176:5;10168:37;10192:12;10176:5;10168:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9978:235:::0;:::o;1871:161::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;1952:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:25;;-1:-1:-1;;1952:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;1993:31;;1952:25;;:15;1993:31:::1;::::0;::::1;1871:161:::0;;:::o;8673:321::-;8747:18;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;8786:27:0;::::1;8778:64;;;::::0;-1:-1:-1;;;8778:64:0;;6103:2:1;8778:64:0::1;::::0;::::1;6085:21:1::0;6142:2;6122:18;;;6115:30;-1:-1:-1;;;6161:18:1;;;6154:54;6225:18;;8778:64:0::1;5901:348:1::0;8778:64:0::1;8878:11;::::0;-1:-1:-1;;;;;8878:11:0;;::::1;8861:28:::0;;::::1;::::0;8853:60:::1;;;::::0;-1:-1:-1;;;8853:60:0;;6712:2:1;8853:60:0::1;::::0;::::1;6694:21:1::0;6751:2;6731:18;;;6724:30;-1:-1:-1;;;6770:18:1;;;6763:49;6829:18;;8853:60:0::1;6510:343:1::0;8853:60:0::1;-1:-1:-1::0;8924:11:0::1;:27:::0;;-1:-1:-1;;;;;8924:27:0;;::::1;-1:-1:-1::0;;;;;;8924:27:0;;::::1;::::0;::::1;::::0;;;8673:321::o;2267:196::-;2334:8;;-1:-1:-1;;;;;2334:8:0;2320:10;:22;2312:31;;;;;;2387:8;;;2380:5;;2359:37;;-1:-1:-1;;;;;2387:8:0;;;;2380:5;;;;2359:37;;;2415:8;;;;2407:16;;-1:-1:-1;;;;;;2407:16:0;;;-1:-1:-1;;;;;2415:8:0;;2407:16;;;;2434:21;;;2267:196::o;8146:212::-;8215:17;1722:5;;8215:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;8276:9:0::1;::::0;;-1:-1:-1;;;;;8296:22:0;;::::1;-1:-1:-1::0;;;;;;8296:22:0;::::1;::::0;::::1;::::0;;;8276:9;;;::::1;::::0;8146:212::o;9821:149::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;9922:28:0;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:40;9821:149::o;9026:230::-;9096:17;1722:5;;9096:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;9157:20:0::1;::::0;;9188:30;;;;9157:20;9026:230::o;8396:236::-;8473:17;1722:5;;8473:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;8534:13:0::1;::::0;;-1:-1:-1;;;;;8558:30:0;;::::1;-1:-1:-1::0;;;;;;8558:30:0;::::1;::::0;::::1;::::0;;;8534:13;;;::::1;::::0;8396:236::o;10219:86::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;10283:5:::1;:14:::0;10219:86::o;2040:102::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;2114:8:::1;:20:::0;;-1:-1:-1;;;;;;2114:20:0::1;-1:-1:-1::0;;;;;2114:20:0;;;::::1;::::0;;;::::1;::::0;;2040:102::o;5499:935::-;5634:7;:9;;5617:4;;;5634:9;;;:::i;:::-;;;;-1:-1:-1;;5676:11:0;;-1:-1:-1;;;;;5676:11:0;;;5660:27;;;;5656:651;;5704:79;;-1:-1:-1;;;5704:79:0;;5744:10;5704:79;;;7098:34:1;5764:4:0;7148:18:1;;;7141:43;7200:18;;;7193:34;;;-1:-1:-1;;;;;5704:39:0;;;;;7033:18:1;;5704:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;5857:32:0;;;;;;:18;:32;;;;;;;;5802:51;;-1:-1:-1;;;5802:51:0;;5847:4;5802:51;;;2736::1;5857:32:0;;;5802:36;;2709:18:1;;5802:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:87;5798:183;;5946:5;;5910:55;;-1:-1:-1;;;5910:55:0;;-1:-1:-1;;;;;5946:5:0;;;5910:55;;;5546:51:1;5613:18;;;5606:34;;;5910:35:0;;;;;;5519:18:1;;5910:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5798:183;5656:651;;;6015:81;;-1:-1:-1;;;6015:81:0;;6057:10;6015:81;;;7098:34:1;6077:4:0;7148:18:1;;;7141:43;7200:18;;;7193:34;;;-1:-1:-1;;;;;6015:41:0;;;;;7033:18:1;;6015:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6170:32:0;;;;;;:18;:32;;;;;;;;6115:51;;-1:-1:-1;;;6115:51:0;;6160:4;6115:51;;;2736::1;6170:32:0;;;6115:36;;2709:18:1;;6115:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:87;6111:185;;6261:5;;6223:57;;-1:-1:-1;;;6223:57:0;;-1:-1:-1;;;;;6261:5:0;;;6223:57;;;5546:51:1;5613:18;;;5606:34;;;6223:37:0;;;;;;5519:18:1;;6223:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6111:185;6332:7;;6324:80;;;7629:25:1;;;7685:2;7670:18;;7663:34;;;-1:-1:-1;;;;;7733:32:1;;;7713:18;;;7706:60;6324:80:0;;6355:10;;6324:80;;;;6332:7;6324:80;;;;;;7617:2:1;6324:80:0;;;-1:-1:-1;6422:4:0;5499:935;;;;;;:::o;4917:572::-;1804:10;5010:4;1797:18;;;:6;:18;;;;;;;;1789:52;;;;-1:-1:-1;;;1789:52:0;;5224:2:1;1789:52:0;;;5206:21:1;5263:2;5243:18;;;5236:30;-1:-1:-1;;;5282:18:1;;;5275:51;5343:18;;1789:52:0;5022:345:1;1789:52:0;5027:16:::1;5054:11:::0;5082:5:::1;;5091:1;5082:10;5078:331;;5127:18;5138:6;5127:10;:18::i;:::-;5164:9;::::0;5109:36;;-1:-1:-1;5109:36:0;-1:-1:-1;;;;;;5164:9:0::1;:23:::0;5160:96:::1;;5216:9;::::0;5208:32:::1;::::0;-1:-1:-1;;;;;5216:9:0;;::::1;::::0;5208:32;::::1;;;::::0;5236:3;;5216:9:::1;5208:32:::0;5216:9;5208:32;5236:3;5216:9;5208:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5160:96;5270:32;::::0;-1:-1:-1;;;;;5270:22:0;::::1;::::0;:32;::::1;;;::::0;5293:8;;5270:32:::1;::::0;;;5293:8;5270:22;:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5078:331;;;5335:30;::::0;-1:-1:-1;;;;;5335:22:0;::::1;::::0;:30;::::1;;;::::0;5358:6;;5335:30:::1;::::0;;;5358:6;5335:22;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5391:6;5380:17;;5078:331;5444:4;-1:-1:-1::0;;;;;5426:33:0::1;5434:8;5426:33;5450:8;5426:33;;;;2944:25:1::0;;2932:2;2917:18;;2798:177;5426:33:0::1;;;;;;;;-1:-1:-1::0;5477:4:0::1;::::0;4917:572;-1:-1:-1;;;;;4917:572:0:o;7874:236::-;7932:16;7950:19;7997:5;;7990:6;:12;7982:48;;;;-1:-1:-1;;;7982:48:0;;7979:2:1;7982:48:0;;;7961:21:1;8018:2;7998:18;;;7991:30;8057:25;8037:18;;;8030:53;8100:18;;7982:48:0;7777:347:1;7982:48:0;-1:-1:-1;8055:5:0;;8082:20;8055:5;8082:6;:20;:::i;:::-;8071:31;;7874:236;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;594:594::-;689:6;697;705;713;721;774:3;762:9;753:7;749:23;745:33;742:53;;;791:1;788;781:12;742:53;830:9;817:23;849:31;874:5;849:31;:::i;:::-;899:5;-1:-1:-1;956:2:1;941:18;;928:32;969:33;928:32;969:33;:::i;:::-;594:594;;1021:7;;-1:-1:-1;;;;1075:2:1;1060:18;;1047:32;;1126:2;1111:18;;1098:32;;1177:3;1162:19;;;1149:33;;-1:-1:-1;594:594:1:o;1193:388::-;1261:6;1269;1322:2;1310:9;1301:7;1297:23;1293:32;1290:52;;;1338:1;1335;1328:12;1290:52;1377:9;1364:23;1396:31;1421:5;1396:31;:::i;:::-;1446:5;-1:-1:-1;1503:2:1;1488:18;;1475:32;1516:33;1475:32;1516:33;:::i;:::-;1568:7;1558:17;;;1193:388;;;;;:::o;1895:180::-;1954:6;2007:2;1995:9;1986:7;1982:23;1978:32;1975:52;;;2023:1;2020;2013:12;1975:52;-1:-1:-1;2046:23:1;;1895:180;-1:-1:-1;1895:180:1:o;2080:118::-;2166:5;2159:13;2152:21;2145:5;2142:32;2132:60;;2188:1;2185;2178:12;2203:382;2268:6;2276;2329:2;2317:9;2308:7;2304:23;2300:32;2297:52;;;2345:1;2342;2335:12;2297:52;2384:9;2371:23;2403:31;2428:5;2403:31;:::i;:::-;2453:5;-1:-1:-1;2510:2:1;2495:18;;2482:32;2523:30;2482:32;2523:30;:::i;2980:315::-;3048:6;3056;3109:2;3097:9;3088:7;3084:23;3080:32;3077:52;;;3125:1;3122;3115:12;3077:52;3164:9;3151:23;3183:31;3208:5;3183:31;:::i;:::-;3233:5;3285:2;3270:18;;;;3257:32;;-1:-1:-1;;;2980:315:1:o;3553:525::-;3639:6;3647;3655;3663;3716:3;3704:9;3695:7;3691:23;3687:33;3684:53;;;3733:1;3730;3723:12;3684:53;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3893:2:1;3878:18;;3865:32;;-1:-1:-1;3944:2:1;3929:18;;3916:32;;-1:-1:-1;4000:2:1;3985:18;;3972:32;4013:33;3972:32;4013:33;:::i;:::-;3553:525;;;;-1:-1:-1;3553:525:1;;-1:-1:-1;;3553:525:1:o;4083:383::-;4160:6;4168;4176;4229:2;4217:9;4208:7;4204:23;4200:32;4197:52;;;4245:1;4242;4235:12;4197:52;4284:9;4271:23;4303:31;4328:5;4303:31;:::i;:::-;4353:5;4405:2;4390:18;;4377:32;;-1:-1:-1;4456:2:1;4441:18;;;4428:32;;4083:383;-1:-1:-1;;;4083:383:1:o;4471:127::-;4532:10;4527:3;4523:20;4520:1;4513:31;4563:4;4560:1;4553:15;4587:4;4584:1;4577:15;4603:135;4642:3;4663:17;;;4660:43;;4683:18;;:::i;:::-;-1:-1:-1;4730:1:1;4719:13;;4603:135::o;5651:245::-;5718:6;5771:2;5759:9;5750:7;5746:23;5742:32;5739:52;;;5787:1;5784;5777:12;5739:52;5819:9;5813:16;5838:28;5860:5;5838:28;:::i;6254:251::-;6324:6;6377:2;6365:9;6356:7;6352:23;6348:32;6345:52;;;6393:1;6390;6383:12;6345:52;6425:9;6419:16;6444:31;6469:5;6444:31;:::i;7238:184::-;7308:6;7361:2;7349:9;7340:7;7336:23;7332:32;7329:52;;;7377:1;7374;7367:12;7329:52;-1:-1:-1;7400:16:1;;7238:184;-1:-1:-1;7238:184:1:o;8129:128::-;8196:9;;;8217:11;;;8214:37;;;8231:18;;:::i;:::-;8129:128;;;;:::o

Swarm Source

ipfs://e0479cfe8585a242a72a4fffc36eef989bb3d70eccd69fac9be692f5ee593ce0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.