ETH Price: $3,637.64 (-6.34%)

Contract

0xc62fC1562A108cEb8Fe962fD87f07F0f967da2e5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint213685332024-12-10 0:28:598 days ago1733790539IN
0xc62fC156...f967da2e5
0.675 ETH0.013702926.47321652
Mint208772752024-10-02 10:39:4777 days ago1727865587IN
0xc62fC156...f967da2e5
0.6075 ETH0.001306726.01811962
Mint208760652024-10-02 6:37:2377 days ago1727851043IN
0xc62fC156...f967da2e5
0.675 ETH0.00136836.93451574
Mint207918332024-09-20 12:35:1189 days ago1726835711IN
0xc62fC156...f967da2e5
2.7 ETH0.0019896710.14136513
Mint207583392024-09-15 20:14:2394 days ago1726431263IN
0xc62fC156...f967da2e5
0.6075 ETH0.000701173.26305749
Mint207356512024-09-12 16:13:5997 days ago1726157639IN
0xc62fC156...f967da2e5
0.6075 ETH0.004366218.12428678
Mint207205542024-09-10 13:37:3599 days ago1725975455IN
0xc62fC156...f967da2e5
0.6075 ETH0.0057340310.6694099
Mint206910492024-09-06 10:47:11103 days ago1725619631IN
0xc62fC156...f967da2e5
0.6075 ETH0.003974017.39449976
Mint206405362024-08-30 9:36:23110 days ago1725010583IN
0xc62fC156...f967da2e5
0.6075 ETH0.000783991.45881789
Mint206342202024-08-29 12:24:23111 days ago1724934263IN
0xc62fC156...f967da2e5
0.6075 ETH0.001344712.50202758
Mint206044572024-08-25 8:37:23115 days ago1724575043IN
0xc62fC156...f967da2e5
0.6975 ETH0.000212410.9586426
Mint205980272024-08-24 11:01:23116 days ago1724497283IN
0xc62fC156...f967da2e5
0.6975 ETH0.000200050.90285951
Mint205628082024-08-19 12:55:23121 days ago1724072123IN
0xc62fC156...f967da2e5
0.6975 ETH0.000984194.44169506
Mint204694182024-08-06 12:05:47134 days ago1722945947IN
0xc62fC156...f967da2e5
1.215 ETH0.001670323.10799741
Mint204600862024-08-05 4:50:23135 days ago1722833423IN
0xc62fC156...f967da2e5
3.4875 ETH0.0047574221.25360361
Mint204377692024-08-02 2:07:11138 days ago1722564431IN
0xc62fC156...f967da2e5
1.215 ETH0.00145872.71423792
Mint203942852024-07-27 0:24:59144 days ago1722039899IN
0xc62fC156...f967da2e5
0.675 ETH0.000300261.53925655
Mint203790192024-07-24 21:14:59147 days ago1721855699IN
0xc62fC156...f967da2e5
0.6075 ETH0.003147475.85537917
Mint203787852024-07-24 20:27:47147 days ago1721852867IN
0xc62fC156...f967da2e5
0.675 ETH0.002384564.60683693
Mint203597872024-07-22 4:48:59149 days ago1721623739IN
0xc62fC156...f967da2e5
0.675 ETH0.000648683.32539834
Mint202824542024-07-11 9:45:47160 days ago1720691147IN
0xc62fC156...f967da2e5
0.6075 ETH0.0059570411.08386448
Mint202815272024-07-11 6:39:47160 days ago1720679987IN
0xc62fC156...f967da2e5
0.6075 ETH0.000733653.41416955
Mint202759432024-07-10 11:56:59161 days ago1720612619IN
0xc62fC156...f967da2e5
1.215 ETH0.001082645.03773527
Mint202344552024-07-04 16:51:11167 days ago1720111871IN
0xc62fC156...f967da2e5
3.3075 ETH0.0025490711.46266477
Mint201563972024-06-23 19:12:35178 days ago1719169955IN
0xc62fC156...f967da2e5
0.675 ETH0.001470382.84070728
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
213685332024-12-10 0:28:598 days ago1733790539
0xc62fC156...f967da2e5
0.675 ETH
208772752024-10-02 10:39:4777 days ago1727865587
0xc62fC156...f967da2e5
0.54675 ETH
208772752024-10-02 10:39:4777 days ago1727865587
0xc62fC156...f967da2e5
0.06075 ETH
208760652024-10-02 6:37:2377 days ago1727851043
0xc62fC156...f967da2e5
0.675 ETH
207918332024-09-20 12:35:1189 days ago1726835711
0xc62fC156...f967da2e5
2.7 ETH
207583392024-09-15 20:14:2394 days ago1726431263
0xc62fC156...f967da2e5
0.54675 ETH
207583392024-09-15 20:14:2394 days ago1726431263
0xc62fC156...f967da2e5
0.06075 ETH
207356512024-09-12 16:13:5997 days ago1726157639
0xc62fC156...f967da2e5
0.54675 ETH
207356512024-09-12 16:13:5997 days ago1726157639
0xc62fC156...f967da2e5
0.06075 ETH
207205542024-09-10 13:37:3599 days ago1725975455
0xc62fC156...f967da2e5
0.54675 ETH
207205542024-09-10 13:37:3599 days ago1725975455
0xc62fC156...f967da2e5
0.06075 ETH
206910492024-09-06 10:47:11103 days ago1725619631
0xc62fC156...f967da2e5
0.54675 ETH
206910492024-09-06 10:47:11103 days ago1725619631
0xc62fC156...f967da2e5
0.06075 ETH
206405362024-08-30 9:36:23110 days ago1725010583
0xc62fC156...f967da2e5
0.54675 ETH
206405362024-08-30 9:36:23110 days ago1725010583
0xc62fC156...f967da2e5
0.06075 ETH
206342202024-08-29 12:24:23111 days ago1724934263
0xc62fC156...f967da2e5
0.54675 ETH
206342202024-08-29 12:24:23111 days ago1724934263
0xc62fC156...f967da2e5
0.06075 ETH
206044572024-08-25 8:37:23115 days ago1724575043
0xc62fC156...f967da2e5
0.62775 ETH
206044572024-08-25 8:37:23115 days ago1724575043
0xc62fC156...f967da2e5
0.06975 ETH
205980272024-08-24 11:01:23116 days ago1724497283
0xc62fC156...f967da2e5
0.62775 ETH
205980272024-08-24 11:01:23116 days ago1724497283
0xc62fC156...f967da2e5
0.06975 ETH
205628082024-08-19 12:55:23121 days ago1724072123
0xc62fC156...f967da2e5
0.62775 ETH
205628082024-08-19 12:55:23121 days ago1724072123
0xc62fC156...f967da2e5
0.06975 ETH
204694182024-08-06 12:05:47134 days ago1722945947
0xc62fC156...f967da2e5
1.0935 ETH
204694182024-08-06 12:05:47134 days ago1722945947
0xc62fC156...f967da2e5
0.1215 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
paymentHandler

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-04-05
*/

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// 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;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/paymentHandler.sol


pragma solidity ^0.8.20;



contract paymentHandler is Ownable, ReentrancyGuard {

    address public fundsHandler;
    uint public totalMinted;

    //mappings
    mapping(uint => uint) public tierLeftover;
    mapping (uint => uint) public tierMaxSupply;
    mapping(uint => uint) public tierToPrice;
    mapping (address => uint) public userMinted;
    mapping (address => uint) public rewardsEarned;
    mapping(address => mapping(uint=> uint)) public userTierLeftover;
    mapping(address => string) public referralCodes;
    mapping(string => address) public codeToAddress;
    mapping (address => bool) public isInitialized;
    
    //events
    event paymentReceived(address indexed minter, uint256 amount, uint quantity, string refCode);
    event Refer(address indexed referrer, address indexed referee, uint tokenId, uint referralRewards);

    constructor(address initialOwner) 
        Ownable(initialOwner) {}
    

    function mint(uint quantity, string memory refCode) public payable nonReentrant {
        
        if(!isInitialized[msg.sender]){
            initializeUser(msg.sender);
        }
        require(msg.value == calcPrice(quantity, msg.sender, refCode), "Low value sent");
        uint finalPayment = msg.value;

        if (codeToAddress[refCode] != address(0)) {
            address referrer = codeToAddress[refCode];
            uint referRewards = msg.value * 10 / 100;
            finalPayment = finalPayment * 90 / 100;
            (bool referSuccess, ) = payable(referrer).call{value: referRewards}("");
            require(referSuccess, "Payment failed");
            rewardsEarned[referrer]+= referRewards;
            emit Refer(referrer, msg.sender, quantity, referRewards);
        }

        (bool success, ) = payable(fundsHandler).call{value: finalPayment}("");
        require(success, "Payment failed");
        deductMint(quantity,msg.sender);
        userMinted[msg.sender] += quantity;
        totalMinted += quantity;
        emit paymentReceived( msg.sender, finalPayment, quantity, refCode );
    }

    // Core logic set functions
    function setTiers(uint tier, uint totalAllocated, uint priceTier) external onlyOwner {
        require(tier >0 && tier <= 15 && priceTier >= 0.075 ether);
        tierLeftover[tier] = totalAllocated;
        tierMaxSupply[tier] = totalAllocated;
        tierToPrice[tier] = priceTier;
    }

    function setReferralCode(string[] memory code, address[] memory wallet) external  onlyOwner {
        require(code.length == wallet.length);
        for (uint i = 0; i< code.length; i++) {
            referralCodes[wallet[i]] = code[i];
            codeToAddress[code[i]] = wallet[i];
        }
    }

    function setFundsHandler(address _newFundsHandler) external onlyOwner{
        require(_newFundsHandler != address(0), "Invalid address");
        fundsHandler = _newFundsHandler;
    }
    
    //internal functions
    function initializeUser(address userToInit) internal {
        require(!isInitialized[userToInit]);
        for(uint i=1; i<=15; i++) {
            userTierLeftover[userToInit][i] = i;
            if(i == 5) {
                userTierLeftover[userToInit][i] = 0;
            }
        }
        isInitialized[userToInit] = !isInitialized[userToInit];
    }

    function deductMint(uint amount, address minter) internal {
        require(isInitialized[minter]);
        require(maxMintable(minter) >= amount);
        uint remAmount = amount;   
        for (uint256 i = 1; i <= 15; i++) {
            if(tierLeftover[i] >= userTierLeftover[minter][i] ) {
                if(remAmount >= userTierLeftover[minter][i]) {
                    tierLeftover[i] -= userTierLeftover[minter][i];
                    remAmount -= userTierLeftover[minter][i];
                    userTierLeftover[minter][i] = 0;
                }
                else{
                    userTierLeftover[minter][i] -= remAmount;
                    tierLeftover[i] -= remAmount;
                    remAmount = 0;
                    break;
                }
            }
            else {
                userTierLeftover[minter][i] -= tierLeftover[i];
                
                remAmount -= tierLeftover[i];
                tierLeftover[i] = 0;
            }
        }
    }

    

    

    //view functions
    function calcPrice(uint amount, address minter, string memory refCode) public view returns (uint) {
        require(isInitialized[minter]);
        require(maxMintable(minter) >= amount);
        uint price;
        uint remAmount = amount;
        uint finalPrice;    
        for (uint256 i = 1; i <= 15; i++) {
            
            if(tierLeftover[i] >= userTierLeftover[minter][i] ) {
                if(remAmount >= userTierLeftover[minter][i]) {
                    price += tierToPrice[i] * userTierLeftover[minter][i];
                    remAmount -= userTierLeftover[minter][i];
                }
                
                else {
                    price += tierToPrice[i] * remAmount;
                    remAmount = 0;
                    break;
                }

            }
            else {
                price += tierToPrice[i] * (tierLeftover[i]);
                remAmount -= tierLeftover[i];
            }
        }
        finalPrice = price;
        if(codeToAddress[refCode] != address(0)) {
            finalPrice = finalPrice * 90 / 100;
        }
        return finalPrice;
    }

    function maxMintable(address userToCheck) public view returns(uint) {
        uint maxMint;
        if (!isInitialized[userToCheck]) {
            for(uint i = 1; i<= 15; i++) {
                if(tierLeftover[i]>=i) {
                    maxMint += i;
                }
                else {
                    maxMint += tierLeftover[i];
                }
            }
        }
        else {
            for(uint i = 1; i<= 15; i++) {
                if(userTierLeftover[userToCheck][i] > tierLeftover[i]) {
                    maxMint += tierLeftover[i];
                }
                else{
                    maxMint += userTierLeftover[userToCheck][i]; 
                }
            }
        }
        return maxMint;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"referee","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referralRewards","type":"uint256"}],"name":"Refer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"string","name":"refCode","type":"string"}],"name":"paymentReceived","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"string","name":"refCode","type":"string"}],"name":"calcPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"codeToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundsHandler","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userToCheck","type":"address"}],"name":"maxMintable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"string","name":"refCode","type":"string"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referralCodes","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardsEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newFundsHandler","type":"address"}],"name":"setFundsHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"code","type":"string[]"},{"internalType":"address[]","name":"wallet","type":"address[]"}],"name":"setReferralCode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"totalAllocated","type":"uint256"},{"internalType":"uint256","name":"priceTier","type":"uint256"}],"name":"setTiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierLeftover","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierToPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userTierLeftover","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801562000010575f80fd5b5060405162002b4e38038062002b4e8339818101604052810190620000369190620001f0565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a1919062000231565b60405180910390fd5b620000bb81620000ca60201b60201c565b5060018081905550506200024c565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620001ba826200018f565b9050919050565b620001cc81620001ae565b8114620001d7575f80fd5b50565b5f81519050620001ea81620001c1565b92915050565b5f602082840312156200020857620002076200018b565b5b5f6200021784828501620001da565b91505092915050565b6200022b81620001ae565b82525050565b5f602082019050620002465f83018462000220565b92915050565b6128f4806200025a5f395ff3fe60806040526004361061011e575f3560e01c806392bad1d21161009f578063ba40e53111610063578063ba40e53114610400578063d02611451461042a578063d60b347f14610466578063ef4db6d1146104a2578063f2fde38b146104de5761011e565b806392bad1d2146102e65780639534dd3e146103225780639932dc051461035e578063a2309ff81461039a578063a78bf96e146103c45761011e565b806377097fc8116100e657806377097fc81461020057806380e48b051461021c5780638bfea439146102445780638da5cb5b146102805780638e584a1e146102aa5761011e565b80630f8343e5146101225780631aa5e8721461014a5780635ed88ecf14610186578063715018a6146101c25780637645e2d0146101d8575b5f80fd5b34801561012d575f80fd5b5061014860048036038101906101439190611b00565b610506565b005b348015610155575f80fd5b50610170600480360381019061016b9190611baa565b610581565b60405161017d9190611be4565b60405180910390f35b348015610191575f80fd5b506101ac60048036038101906101a79190611baa565b610596565b6040516101b99190611be4565b60405180910390f35b3480156101cd575f80fd5b506101d6610768565b005b3480156101e3575f80fd5b506101fe60048036038101906101f99190611edb565b61077b565b005b61021a60048036038101906102159190611f51565b6108c2565b005b348015610227575f80fd5b50610242600480360381019061023d9190611baa565b610d5e565b005b34801561024f575f80fd5b5061026a60048036038101906102659190611baa565b610e17565b6040516102779190611be4565b60405180910390f35b34801561028b575f80fd5b50610294610e2c565b6040516102a19190611fba565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190611fd3565b610e53565b6040516102dd9190611be4565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190612011565b610e73565b6040516103199190611be4565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190611baa565b6111bc565b60405161035591906120f7565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190612117565b611257565b6040516103919190611fba565b60405180910390f35b3480156103a5575f80fd5b506103ae61129f565b6040516103bb9190611be4565b60405180910390f35b3480156103cf575f80fd5b506103ea60048036038101906103e5919061215e565b6112a5565b6040516103f79190611be4565b60405180910390f35b34801561040b575f80fd5b506104146112ba565b6040516104219190611fba565b60405180910390f35b348015610435575f80fd5b50610450600480360381019061044b919061215e565b6112df565b60405161045d9190611be4565b60405180910390f35b348015610471575f80fd5b5061048c60048036038101906104879190611baa565b6112f4565b60405161049991906121a3565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c3919061215e565b611311565b6040516104d59190611be4565b60405180910390f35b3480156104e9575f80fd5b5061050460048036038101906104ff9190611baa565b611326565b005b61050e6113aa565b5f8311801561051e5750600f8311155b8015610532575067010a741a462780008110155b61053a575f80fd5b8160045f8581526020019081526020015f20819055508160055f8581526020019081526020015f20819055508060065f8581526020019081526020015f2081905550505050565b6007602052805f5260405f205f915090505481565b5f80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610658575f600190505b600f8111610652578060045f8381526020019081526020015f20541061061f57808261061891906121e9565b915061063f565b60045f8281526020019081526020015f20548261063c91906121e9565b91505b808061064a9061221c565b9150506105ec565b5061075f565b5f600190505b600f811161075d5760045f8281526020019081526020015f205460095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205411156106ef5760045f8281526020019081526020015f2054826106e891906121e9565b915061074a565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f20548261074791906121e9565b91505b80806107559061221c565b91505061065e565b505b80915050919050565b6107706113aa565b6107795f611431565b565b6107836113aa565b8051825114610790575f80fd5b5f5b82518110156108bd578281815181106107ae576107ad612263565b5b6020026020010151600a5f8484815181106107cc576107cb612263565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209081610819919061248a565b5081818151811061082d5761082c612263565b5b6020026020010151600b84838151811061084a57610849612263565b5b602002602001015160405161085f9190612593565b90815260200160405180910390205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806108b59061221c565b915050610792565b505050565b6108ca6114f2565b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166109225761092133611541565b5b61092d823383610e73565b341461096e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610965906125f3565b60405180910390fd5b5f3490505f73ffffffffffffffffffffffffffffffffffffffff16600b836040516109999190612593565b90815260200160405180910390205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0575f600b836040516109f39190612593565b90815260200160405180910390205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f6064600a34610a339190612611565b610a3d919061267f565b90506064605a84610a4e9190612611565b610a58919061267f565b92505f8273ffffffffffffffffffffffffffffffffffffffff1682604051610a7f906126dc565b5f6040518083038185875af1925050503d805f8114610ab9576040519150601f19603f3d011682016040523d82523d5f602084013e610abe565b606091505b5050905080610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af99061273a565b60405180910390fd5b8160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b4e91906121e9565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8d18887765d28767491ec2ecd1a362b342dd3e8ab98255a0f066ea8ba2c496f38885604051610bb4929190612758565b60405180910390a35050505b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610c06906126dc565b5f6040518083038185875af1925050503d805f8114610c40576040519150601f19603f3d011682016040523d82523d5f602084013e610c45565b606091505b5050905080610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c809061273a565b60405180910390fd5b610c938433611702565b8360075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610cdf91906121e9565b925050819055508360035f828254610cf791906121e9565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fc90d26b4fb421df9062edaab20c9339badd780b9d3eca619a1a4444bddd3ae9a838686604051610d489392919061277f565b60405180910390a25050610d5a611aac565b5050565b610d666113aa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90612805565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6008602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ec6575f80fd5b83610ed084610596565b1015610eda575f80fd5b5f808590505f80600190505b600f811161111f5760095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460045f8381526020019081526020015f2054106110b15760095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f2054831061107a5760095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460065f8381526020019081526020015f205461100e9190612611565b8461101991906121e9565b935060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f2054836110739190612823565b92506110ac565b8260065f8381526020019081526020015f20546110979190612611565b846110a291906121e9565b93505f925061111f565b61110c565b60045f8281526020019081526020015f205460065f8381526020019081526020015f20546110df9190612611565b846110ea91906121e9565b935060045f8281526020019081526020015f2054836111099190612823565b92505b80806111179061221c565b915050610ee6565b508290505f73ffffffffffffffffffffffffffffffffffffffff16600b8660405161114a9190612593565b90815260200160405180910390205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576064605a826111a29190612611565b6111ac919061267f565b90505b8093505050509392505050565b600a602052805f5260405f205f9150905080546111d8906122bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611204906122bd565b801561124f5780601f106112265761010080835404028352916020019161124f565b820191905f5260205f20905b81548152906001019060200180831161123257829003601f168201915b505050505081565b600b818051602081018201805184825260208301602085012081835280955050505050505f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6005602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052805f5260405f205f915090505481565b600c602052805f5260405f205f915054906101000a900460ff1681565b6004602052805f5260405f205f915090505481565b61132e6113aa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361139e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113959190611fba565b60405180910390fd5b6113a781611431565b50565b6113b2611ab5565b73ffffffffffffffffffffffffffffffffffffffff166113d0610e2c565b73ffffffffffffffffffffffffffffffffffffffff161461142f576113f3611ab5565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016114269190611fba565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906128a0565b60405180910390fd5b6002600181905550565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611594575f80fd5b5f600190505b600f8111611660578060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055506005810361164d575f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055505b80806116589061221c565b91505061159a565b50600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611754575f80fd5b8161175e82610596565b1015611768575f80fd5b5f8290505f600190505b600f8111611aa65760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460045f8381526020019081526020015f2054106119ea5760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205482106119545760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460045f8381526020019081526020015f205f82825461189d9190612823565b9250508190555060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f2054826118fc9190612823565b91505f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055506119e5565b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f8282546119af9190612823565b925050819055508160045f8381526020019081526020015f205f8282546119d69190612823565b925050819055505f9150611aa6565b611a93565b60045f8281526020019081526020015f205460095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f828254611a569190612823565b9250508190555060045f8281526020019081526020015f205482611a7a9190612823565b91505f60045f8381526020019081526020015f20819055505b8080611a9e9061221c565b915050611772565b50505050565b60018081905550565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b611adf81611acd565b8114611ae9575f80fd5b50565b5f81359050611afa81611ad6565b92915050565b5f805f60608486031215611b1757611b16611ac5565b5b5f611b2486828701611aec565b9350506020611b3586828701611aec565b9250506040611b4686828701611aec565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b7982611b50565b9050919050565b611b8981611b6f565b8114611b93575f80fd5b50565b5f81359050611ba481611b80565b92915050565b5f60208284031215611bbf57611bbe611ac5565b5b5f611bcc84828501611b96565b91505092915050565b611bde81611acd565b82525050565b5f602082019050611bf75f830184611bd5565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c4782611c01565b810181811067ffffffffffffffff82111715611c6657611c65611c11565b5b80604052505050565b5f611c78611abc565b9050611c848282611c3e565b919050565b5f67ffffffffffffffff821115611ca357611ca2611c11565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff821115611cd657611cd5611c11565b5b611cdf82611c01565b9050602081019050919050565b828183375f83830152505050565b5f611d0c611d0784611cbc565b611c6f565b905082815260208101848484011115611d2857611d27611cb8565b5b611d33848285611cec565b509392505050565b5f82601f830112611d4f57611d4e611bfd565b5b8135611d5f848260208601611cfa565b91505092915050565b5f611d7a611d7584611c89565b611c6f565b90508083825260208201905060208402830185811115611d9d57611d9c611cb4565b5b835b81811015611de457803567ffffffffffffffff811115611dc257611dc1611bfd565b5b808601611dcf8982611d3b565b85526020850194505050602081019050611d9f565b5050509392505050565b5f82601f830112611e0257611e01611bfd565b5b8135611e12848260208601611d68565b91505092915050565b5f67ffffffffffffffff821115611e3557611e34611c11565b5b602082029050602081019050919050565b5f611e58611e5384611e1b565b611c6f565b90508083825260208201905060208402830185811115611e7b57611e7a611cb4565b5b835b81811015611ea45780611e908882611b96565b845260208401935050602081019050611e7d565b5050509392505050565b5f82601f830112611ec257611ec1611bfd565b5b8135611ed2848260208601611e46565b91505092915050565b5f8060408385031215611ef157611ef0611ac5565b5b5f83013567ffffffffffffffff811115611f0e57611f0d611ac9565b5b611f1a85828601611dee565b925050602083013567ffffffffffffffff811115611f3b57611f3a611ac9565b5b611f4785828601611eae565b9150509250929050565b5f8060408385031215611f6757611f66611ac5565b5b5f611f7485828601611aec565b925050602083013567ffffffffffffffff811115611f9557611f94611ac9565b5b611fa185828601611d3b565b9150509250929050565b611fb481611b6f565b82525050565b5f602082019050611fcd5f830184611fab565b92915050565b5f8060408385031215611fe957611fe8611ac5565b5b5f611ff685828601611b96565b925050602061200785828601611aec565b9150509250929050565b5f805f6060848603121561202857612027611ac5565b5b5f61203586828701611aec565b935050602061204686828701611b96565b925050604084013567ffffffffffffffff81111561206757612066611ac9565b5b61207386828701611d3b565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156120b4578082015181840152602081019050612099565b5f8484015250505050565b5f6120c98261207d565b6120d38185612087565b93506120e3818560208601612097565b6120ec81611c01565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b5f6020828403121561212c5761212b611ac5565b5b5f82013567ffffffffffffffff81111561214957612148611ac9565b5b61215584828501611d3b565b91505092915050565b5f6020828403121561217357612172611ac5565b5b5f61218084828501611aec565b91505092915050565b5f8115159050919050565b61219d81612189565b82525050565b5f6020820190506121b65f830184612194565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121f382611acd565b91506121fe83611acd565b9250828201905080821115612216576122156121bc565b5b92915050565b5f61222682611acd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612258576122576121bc565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122d457607f821691505b6020821081036122e7576122e6612290565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026123497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261230e565b612353868361230e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61238e61238961238484611acd565b61236b565b611acd565b9050919050565b5f819050919050565b6123a783612374565b6123bb6123b382612395565b84845461231a565b825550505050565b5f90565b6123cf6123c3565b6123da81848461239e565b505050565b5b818110156123fd576123f25f826123c7565b6001810190506123e0565b5050565b601f82111561244257612413816122ed565b61241c846122ff565b8101602085101561242b578190505b61243f612437856122ff565b8301826123df565b50505b505050565b5f82821c905092915050565b5f6124625f1984600802612447565b1980831691505092915050565b5f61247a8383612453565b9150826002028217905092915050565b6124938261207d565b67ffffffffffffffff8111156124ac576124ab611c11565b5b6124b682546122bd565b6124c1828285612401565b5f60209050601f8311600181146124f2575f84156124e0578287015190505b6124ea858261246f565b865550612551565b601f198416612500866122ed565b5f5b8281101561252757848901518255600182019150602085019450602081019050612502565b868310156125445784890151612540601f891682612453565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f61256d8261207d565b6125778185612559565b9350612587818560208601612097565b80840191505092915050565b5f61259e8284612563565b915081905092915050565b7f4c6f772076616c75652073656e740000000000000000000000000000000000005f82015250565b5f6125dd600e83612087565b91506125e8826125a9565b602082019050919050565b5f6020820190508181035f83015261260a816125d1565b9050919050565b5f61261b82611acd565b915061262683611acd565b925082820261263481611acd565b9150828204841483151761264b5761264a6121bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61268982611acd565b915061269483611acd565b9250826126a4576126a3612652565b5b828204905092915050565b5f81905092915050565b50565b5f6126c75f836126af565b91506126d2826126b9565b5f82019050919050565b5f6126e6826126bc565b9150819050919050565b7f5061796d656e74206661696c65640000000000000000000000000000000000005f82015250565b5f612724600e83612087565b915061272f826126f0565b602082019050919050565b5f6020820190508181035f83015261275181612718565b9050919050565b5f60408201905061276b5f830185611bd5565b6127786020830184611bd5565b9392505050565b5f6060820190506127925f830186611bd5565b61279f6020830185611bd5565b81810360408301526127b181846120bf565b9050949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6127ef600f83612087565b91506127fa826127bb565b602082019050919050565b5f6020820190508181035f83015261281c816127e3565b9050919050565b5f61282d82611acd565b915061283883611acd565b92508282039050818111156128505761284f6121bc565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f61288a601f83612087565b915061289582612856565b602082019050919050565b5f6020820190508181035f8301526128b78161287e565b905091905056fea264697066735822122074e4c1d71c076cbb9af381a0b80688b2144231489ad652640cc116815f27d87e64736f6c63430008140033000000000000000000000000b3aea1dcbc7f6714026c6c8bb0103fd08b09dd4e

Deployed Bytecode

0x60806040526004361061011e575f3560e01c806392bad1d21161009f578063ba40e53111610063578063ba40e53114610400578063d02611451461042a578063d60b347f14610466578063ef4db6d1146104a2578063f2fde38b146104de5761011e565b806392bad1d2146102e65780639534dd3e146103225780639932dc051461035e578063a2309ff81461039a578063a78bf96e146103c45761011e565b806377097fc8116100e657806377097fc81461020057806380e48b051461021c5780638bfea439146102445780638da5cb5b146102805780638e584a1e146102aa5761011e565b80630f8343e5146101225780631aa5e8721461014a5780635ed88ecf14610186578063715018a6146101c25780637645e2d0146101d8575b5f80fd5b34801561012d575f80fd5b5061014860048036038101906101439190611b00565b610506565b005b348015610155575f80fd5b50610170600480360381019061016b9190611baa565b610581565b60405161017d9190611be4565b60405180910390f35b348015610191575f80fd5b506101ac60048036038101906101a79190611baa565b610596565b6040516101b99190611be4565b60405180910390f35b3480156101cd575f80fd5b506101d6610768565b005b3480156101e3575f80fd5b506101fe60048036038101906101f99190611edb565b61077b565b005b61021a60048036038101906102159190611f51565b6108c2565b005b348015610227575f80fd5b50610242600480360381019061023d9190611baa565b610d5e565b005b34801561024f575f80fd5b5061026a60048036038101906102659190611baa565b610e17565b6040516102779190611be4565b60405180910390f35b34801561028b575f80fd5b50610294610e2c565b6040516102a19190611fba565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190611fd3565b610e53565b6040516102dd9190611be4565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190612011565b610e73565b6040516103199190611be4565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190611baa565b6111bc565b60405161035591906120f7565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190612117565b611257565b6040516103919190611fba565b60405180910390f35b3480156103a5575f80fd5b506103ae61129f565b6040516103bb9190611be4565b60405180910390f35b3480156103cf575f80fd5b506103ea60048036038101906103e5919061215e565b6112a5565b6040516103f79190611be4565b60405180910390f35b34801561040b575f80fd5b506104146112ba565b6040516104219190611fba565b60405180910390f35b348015610435575f80fd5b50610450600480360381019061044b919061215e565b6112df565b60405161045d9190611be4565b60405180910390f35b348015610471575f80fd5b5061048c60048036038101906104879190611baa565b6112f4565b60405161049991906121a3565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c3919061215e565b611311565b6040516104d59190611be4565b60405180910390f35b3480156104e9575f80fd5b5061050460048036038101906104ff9190611baa565b611326565b005b61050e6113aa565b5f8311801561051e5750600f8311155b8015610532575067010a741a462780008110155b61053a575f80fd5b8160045f8581526020019081526020015f20819055508160055f8581526020019081526020015f20819055508060065f8581526020019081526020015f2081905550505050565b6007602052805f5260405f205f915090505481565b5f80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610658575f600190505b600f8111610652578060045f8381526020019081526020015f20541061061f57808261061891906121e9565b915061063f565b60045f8281526020019081526020015f20548261063c91906121e9565b91505b808061064a9061221c565b9150506105ec565b5061075f565b5f600190505b600f811161075d5760045f8281526020019081526020015f205460095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205411156106ef5760045f8281526020019081526020015f2054826106e891906121e9565b915061074a565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f20548261074791906121e9565b91505b80806107559061221c565b91505061065e565b505b80915050919050565b6107706113aa565b6107795f611431565b565b6107836113aa565b8051825114610790575f80fd5b5f5b82518110156108bd578281815181106107ae576107ad612263565b5b6020026020010151600a5f8484815181106107cc576107cb612263565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209081610819919061248a565b5081818151811061082d5761082c612263565b5b6020026020010151600b84838151811061084a57610849612263565b5b602002602001015160405161085f9190612593565b90815260200160405180910390205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806108b59061221c565b915050610792565b505050565b6108ca6114f2565b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166109225761092133611541565b5b61092d823383610e73565b341461096e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610965906125f3565b60405180910390fd5b5f3490505f73ffffffffffffffffffffffffffffffffffffffff16600b836040516109999190612593565b90815260200160405180910390205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0575f600b836040516109f39190612593565b90815260200160405180910390205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f6064600a34610a339190612611565b610a3d919061267f565b90506064605a84610a4e9190612611565b610a58919061267f565b92505f8273ffffffffffffffffffffffffffffffffffffffff1682604051610a7f906126dc565b5f6040518083038185875af1925050503d805f8114610ab9576040519150601f19603f3d011682016040523d82523d5f602084013e610abe565b606091505b5050905080610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af99061273a565b60405180910390fd5b8160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b4e91906121e9565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8d18887765d28767491ec2ecd1a362b342dd3e8ab98255a0f066ea8ba2c496f38885604051610bb4929190612758565b60405180910390a35050505b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610c06906126dc565b5f6040518083038185875af1925050503d805f8114610c40576040519150601f19603f3d011682016040523d82523d5f602084013e610c45565b606091505b5050905080610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c809061273a565b60405180910390fd5b610c938433611702565b8360075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610cdf91906121e9565b925050819055508360035f828254610cf791906121e9565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fc90d26b4fb421df9062edaab20c9339badd780b9d3eca619a1a4444bddd3ae9a838686604051610d489392919061277f565b60405180910390a25050610d5a611aac565b5050565b610d666113aa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90612805565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6008602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ec6575f80fd5b83610ed084610596565b1015610eda575f80fd5b5f808590505f80600190505b600f811161111f5760095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460045f8381526020019081526020015f2054106110b15760095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f2054831061107a5760095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460065f8381526020019081526020015f205461100e9190612611565b8461101991906121e9565b935060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f2054836110739190612823565b92506110ac565b8260065f8381526020019081526020015f20546110979190612611565b846110a291906121e9565b93505f925061111f565b61110c565b60045f8281526020019081526020015f205460065f8381526020019081526020015f20546110df9190612611565b846110ea91906121e9565b935060045f8281526020019081526020015f2054836111099190612823565b92505b80806111179061221c565b915050610ee6565b508290505f73ffffffffffffffffffffffffffffffffffffffff16600b8660405161114a9190612593565b90815260200160405180910390205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576064605a826111a29190612611565b6111ac919061267f565b90505b8093505050509392505050565b600a602052805f5260405f205f9150905080546111d8906122bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611204906122bd565b801561124f5780601f106112265761010080835404028352916020019161124f565b820191905f5260205f20905b81548152906001019060200180831161123257829003601f168201915b505050505081565b600b818051602081018201805184825260208301602085012081835280955050505050505f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6005602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052805f5260405f205f915090505481565b600c602052805f5260405f205f915054906101000a900460ff1681565b6004602052805f5260405f205f915090505481565b61132e6113aa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361139e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113959190611fba565b60405180910390fd5b6113a781611431565b50565b6113b2611ab5565b73ffffffffffffffffffffffffffffffffffffffff166113d0610e2c565b73ffffffffffffffffffffffffffffffffffffffff161461142f576113f3611ab5565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016114269190611fba565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906128a0565b60405180910390fd5b6002600181905550565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611594575f80fd5b5f600190505b600f8111611660578060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055506005810361164d575f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055505b80806116589061221c565b91505061159a565b50600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611754575f80fd5b8161175e82610596565b1015611768575f80fd5b5f8290505f600190505b600f8111611aa65760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460045f8381526020019081526020015f2054106119ea5760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205482106119545760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205460045f8381526020019081526020015f205f82825461189d9190612823565b9250508190555060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f2054826118fc9190612823565b91505f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055506119e5565b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f8282546119af9190612823565b925050819055508160045f8381526020019081526020015f205f8282546119d69190612823565b925050819055505f9150611aa6565b611a93565b60045f8281526020019081526020015f205460095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f828254611a569190612823565b9250508190555060045f8281526020019081526020015f205482611a7a9190612823565b91505f60045f8381526020019081526020015f20819055505b8080611a9e9061221c565b915050611772565b50505050565b60018081905550565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b611adf81611acd565b8114611ae9575f80fd5b50565b5f81359050611afa81611ad6565b92915050565b5f805f60608486031215611b1757611b16611ac5565b5b5f611b2486828701611aec565b9350506020611b3586828701611aec565b9250506040611b4686828701611aec565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b7982611b50565b9050919050565b611b8981611b6f565b8114611b93575f80fd5b50565b5f81359050611ba481611b80565b92915050565b5f60208284031215611bbf57611bbe611ac5565b5b5f611bcc84828501611b96565b91505092915050565b611bde81611acd565b82525050565b5f602082019050611bf75f830184611bd5565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c4782611c01565b810181811067ffffffffffffffff82111715611c6657611c65611c11565b5b80604052505050565b5f611c78611abc565b9050611c848282611c3e565b919050565b5f67ffffffffffffffff821115611ca357611ca2611c11565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff821115611cd657611cd5611c11565b5b611cdf82611c01565b9050602081019050919050565b828183375f83830152505050565b5f611d0c611d0784611cbc565b611c6f565b905082815260208101848484011115611d2857611d27611cb8565b5b611d33848285611cec565b509392505050565b5f82601f830112611d4f57611d4e611bfd565b5b8135611d5f848260208601611cfa565b91505092915050565b5f611d7a611d7584611c89565b611c6f565b90508083825260208201905060208402830185811115611d9d57611d9c611cb4565b5b835b81811015611de457803567ffffffffffffffff811115611dc257611dc1611bfd565b5b808601611dcf8982611d3b565b85526020850194505050602081019050611d9f565b5050509392505050565b5f82601f830112611e0257611e01611bfd565b5b8135611e12848260208601611d68565b91505092915050565b5f67ffffffffffffffff821115611e3557611e34611c11565b5b602082029050602081019050919050565b5f611e58611e5384611e1b565b611c6f565b90508083825260208201905060208402830185811115611e7b57611e7a611cb4565b5b835b81811015611ea45780611e908882611b96565b845260208401935050602081019050611e7d565b5050509392505050565b5f82601f830112611ec257611ec1611bfd565b5b8135611ed2848260208601611e46565b91505092915050565b5f8060408385031215611ef157611ef0611ac5565b5b5f83013567ffffffffffffffff811115611f0e57611f0d611ac9565b5b611f1a85828601611dee565b925050602083013567ffffffffffffffff811115611f3b57611f3a611ac9565b5b611f4785828601611eae565b9150509250929050565b5f8060408385031215611f6757611f66611ac5565b5b5f611f7485828601611aec565b925050602083013567ffffffffffffffff811115611f9557611f94611ac9565b5b611fa185828601611d3b565b9150509250929050565b611fb481611b6f565b82525050565b5f602082019050611fcd5f830184611fab565b92915050565b5f8060408385031215611fe957611fe8611ac5565b5b5f611ff685828601611b96565b925050602061200785828601611aec565b9150509250929050565b5f805f6060848603121561202857612027611ac5565b5b5f61203586828701611aec565b935050602061204686828701611b96565b925050604084013567ffffffffffffffff81111561206757612066611ac9565b5b61207386828701611d3b565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156120b4578082015181840152602081019050612099565b5f8484015250505050565b5f6120c98261207d565b6120d38185612087565b93506120e3818560208601612097565b6120ec81611c01565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b5f6020828403121561212c5761212b611ac5565b5b5f82013567ffffffffffffffff81111561214957612148611ac9565b5b61215584828501611d3b565b91505092915050565b5f6020828403121561217357612172611ac5565b5b5f61218084828501611aec565b91505092915050565b5f8115159050919050565b61219d81612189565b82525050565b5f6020820190506121b65f830184612194565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121f382611acd565b91506121fe83611acd565b9250828201905080821115612216576122156121bc565b5b92915050565b5f61222682611acd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612258576122576121bc565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122d457607f821691505b6020821081036122e7576122e6612290565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026123497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261230e565b612353868361230e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61238e61238961238484611acd565b61236b565b611acd565b9050919050565b5f819050919050565b6123a783612374565b6123bb6123b382612395565b84845461231a565b825550505050565b5f90565b6123cf6123c3565b6123da81848461239e565b505050565b5b818110156123fd576123f25f826123c7565b6001810190506123e0565b5050565b601f82111561244257612413816122ed565b61241c846122ff565b8101602085101561242b578190505b61243f612437856122ff565b8301826123df565b50505b505050565b5f82821c905092915050565b5f6124625f1984600802612447565b1980831691505092915050565b5f61247a8383612453565b9150826002028217905092915050565b6124938261207d565b67ffffffffffffffff8111156124ac576124ab611c11565b5b6124b682546122bd565b6124c1828285612401565b5f60209050601f8311600181146124f2575f84156124e0578287015190505b6124ea858261246f565b865550612551565b601f198416612500866122ed565b5f5b8281101561252757848901518255600182019150602085019450602081019050612502565b868310156125445784890151612540601f891682612453565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f61256d8261207d565b6125778185612559565b9350612587818560208601612097565b80840191505092915050565b5f61259e8284612563565b915081905092915050565b7f4c6f772076616c75652073656e740000000000000000000000000000000000005f82015250565b5f6125dd600e83612087565b91506125e8826125a9565b602082019050919050565b5f6020820190508181035f83015261260a816125d1565b9050919050565b5f61261b82611acd565b915061262683611acd565b925082820261263481611acd565b9150828204841483151761264b5761264a6121bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61268982611acd565b915061269483611acd565b9250826126a4576126a3612652565b5b828204905092915050565b5f81905092915050565b50565b5f6126c75f836126af565b91506126d2826126b9565b5f82019050919050565b5f6126e6826126bc565b9150819050919050565b7f5061796d656e74206661696c65640000000000000000000000000000000000005f82015250565b5f612724600e83612087565b915061272f826126f0565b602082019050919050565b5f6020820190508181035f83015261275181612718565b9050919050565b5f60408201905061276b5f830185611bd5565b6127786020830184611bd5565b9392505050565b5f6060820190506127925f830186611bd5565b61279f6020830185611bd5565b81810360408301526127b181846120bf565b9050949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6127ef600f83612087565b91506127fa826127bb565b602082019050919050565b5f6020820190508181035f83015261281c816127e3565b9050919050565b5f61282d82611acd565b915061283883611acd565b92508282039050818111156128505761284f6121bc565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f61288a601f83612087565b915061289582612856565b602082019050919050565b5f6020820190508181035f8301526128b78161287e565b905091905056fea264697066735822122074e4c1d71c076cbb9af381a0b80688b2144231489ad652640cc116815f27d87e64736f6c63430008140033

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

000000000000000000000000b3aea1dcbc7f6714026c6c8bb0103fd08b09dd4e

-----Decoded View---------------
Arg [0] : initialOwner (address): 0xB3aea1dCBc7f6714026c6C8BB0103fd08B09Dd4E

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


Deployed Bytecode Sourcemap

7512:6329:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9627:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7800:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13073:763;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6601:103;;;;;;;;;;;;;:::i;:::-;;9930:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8443:1143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10244:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7850:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5926:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7903:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11912:1153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7974:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8028;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7607:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7573:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7753:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7655:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6859:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9627:295;5812:13;:11;:13::i;:::-;9737:1:::1;9731:4;:7;:21;;;;;9750:2;9742:4;:10;;9731:21;:49;;;;;9769:11;9756:9;:24;;9731:49;9723:58;;;::::0;::::1;;9813:14;9792:12;:18;9805:4;9792:18;;;;;;;;;;;:35;;;;9860:14;9838:13;:19;9852:4;9838:19;;;;;;;;;;;:36;;;;9905:9;9885:11;:17;9897:4;9885:17;;;;;;;;;;;:29;;;;9627:295:::0;;;:::o;7800:43::-;;;;;;;;;;;;;;;;;:::o;13073:763::-;13135:4;13152:12;13180:13;:26;13194:11;13180:26;;;;;;;;;;;;;;;;;;;;;;;;;13175:629;;13227:6;13236:1;13227:10;;13223:233;13243:2;13239:1;:6;13223:233;;13291:1;13274:12;:15;13287:1;13274:15;;;;;;;;;;;;:18;13271:170;;13328:1;13317:12;;;;;:::i;:::-;;;13271:170;;;13406:12;:15;13419:1;13406:15;;;;;;;;;;;;13395:26;;;;;:::i;:::-;;;13271:170;13247:3;;;;;:::i;:::-;;;;13223:233;;;;13175:629;;;13501:6;13510:1;13501:10;;13497:296;13517:2;13513:1;:6;13497:296;;13583:12;:15;13596:1;13583:15;;;;;;;;;;;;13548:16;:29;13565:11;13548:29;;;;;;;;;;;;;;;:32;13578:1;13548:32;;;;;;;;;;;;:50;13545:233;;;13634:12;:15;13647:1;13634:15;;;;;;;;;;;;13623:26;;;;;:::i;:::-;;;13545:233;;;13725:16;:29;13742:11;13725:29;;;;;;;;;;;;;;;:32;13755:1;13725:32;;;;;;;;;;;;13714:43;;;;;:::i;:::-;;;13545:233;13521:3;;;;;:::i;:::-;;;;13497:296;;;;13175:629;13821:7;13814:14;;;13073:763;;;:::o;6601:103::-;5812:13;:11;:13::i;:::-;6666:30:::1;6693:1;6666:18;:30::i;:::-;6601:103::o:0;9930:306::-;5812:13;:11;:13::i;:::-;10056:6:::1;:13;10041:4;:11;:28;10033:37;;;::::0;::::1;;10086:6;10081:148;10101:4;:11;10098:1;:14;10081:148;;;10161:4;10166:1;10161:7;;;;;;;;:::i;:::-;;;;;;;;10134:13;:24;10148:6;10155:1;10148:9;;;;;;;;:::i;:::-;;;;;;;;10134:24;;;;;;;;;;;;;;;:34;;;;;;:::i;:::-;;10208:6;10215:1;10208:9;;;;;;;;:::i;:::-;;;;;;;;10183:13;10197:4;10202:1;10197:7;;;;;;;;:::i;:::-;;;;;;;;10183:22;;;;;;:::i;:::-;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;10114:3;;;;;:::i;:::-;;;;10081:148;;;;9930:306:::0;;:::o;8443:1143::-;2345:21;:19;:21::i;:::-;8548:13:::1;:25;8562:10;8548:25;;;;;;;;;;;;;;;;;;;;;;;;;8544:83;;8589:26;8604:10;8589:14;:26::i;:::-;8544:83;8658:40;8668:8;8678:10;8690:7;8658:9;:40::i;:::-;8645:9;:53;8637:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8728:17;8748:9;8728:29;;8808:1;8774:36;;:13;8788:7;8774:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:36;;;8770:482;;8827:16;8846:13;8860:7;8846:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8827:41;;8883:17;8920:3;8915:2;8903:9;:14;;;;:::i;:::-;:20;;;;:::i;:::-;8883:40;;8973:3;8968:2;8953:12;:17;;;;:::i;:::-;:23;;;;:::i;:::-;8938:38;;8992:17;9023:8;9015:22;;9045:12;9015:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8991:71;;;9085:12;9077:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;9157:12;9131:13;:23;9145:8;9131:23;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;9205:10;9189:51;;9195:8;9189:51;;;9217:8;9227:12;9189:51;;;;;;;:::i;:::-;;;;;;;;8812:440;;;8770:482;9265:12;9291;;;;;;;;;;;9283:26;;9317:12;9283:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9264:70;;;9353:7;9345:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;9390:31;9401:8;9410:10;9390;:31::i;:::-;9458:8;9432:10;:22;9443:10;9432:22;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;9492:8;9477:11;;:23;;;;;;;:::i;:::-;;;;;;;;9533:10;9516:62;;;9545:12;9559:8;9569:7;9516:62;;;;;;;;:::i;:::-;;;;;;;;8523:1063;;2389:20:::0;:18;:20::i;:::-;8443:1143;;:::o;10244:188::-;5812:13;:11;:13::i;:::-;10360:1:::1;10332:30;;:16;:30;;::::0;10324:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10408:16;10393:12;;:31;;;;;;;;;;;;;;;;;;10244:188:::0;:::o;7850:46::-;;;;;;;;;;;;;;;;;:::o;5926:87::-;5972:7;5999:6;;;;;;;;;;;5992:13;;5926:87;:::o;7903:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11912:1153::-;12004:4;12029:13;:21;12043:6;12029:21;;;;;;;;;;;;;;;;;;;;;;;;;12021:30;;;;;;12093:6;12070:19;12082:6;12070:11;:19::i;:::-;:29;;12062:38;;;;;;12111:10;12132:14;12149:6;12132:23;;12166:15;12201:9;12213:1;12201:13;;12196:693;12221:2;12216:1;:7;12196:693;;12281:16;:24;12298:6;12281:24;;;;;;;;;;;;;;;:27;12306:1;12281:27;;;;;;;;;;;;12262:12;:15;12275:1;12262:15;;;;;;;;;;;;:46;12259:619;;12346:16;:24;12363:6;12346:24;;;;;;;;;;;;;;;:27;12371:1;12346:27;;;;;;;;;;;;12333:9;:40;12330:387;;12424:16;:24;12441:6;12424:24;;;;;;;;;;;;;;;:27;12449:1;12424:27;;;;;;;;;;;;12407:11;:14;12419:1;12407:14;;;;;;;;;;;;:44;;;;:::i;:::-;12398:53;;;;;:::i;:::-;;;12487:16;:24;12504:6;12487:24;;;;;;;;;;;;;;;:27;12512:1;12487:27;;;;;;;;;;;;12474:40;;;;;:::i;:::-;;;12330:387;;;12624:9;12607:11;:14;12619:1;12607:14;;;;;;;;;;;;:26;;;;:::i;:::-;12598:35;;;;;:::i;:::-;;;12668:1;12656:13;;12692:5;;12330:387;12259:619;;;12799:12;:15;12812:1;12799:15;;;;;;;;;;;;12781:11;:14;12793:1;12781:14;;;;;;;;;;;;:34;;;;:::i;:::-;12772:43;;;;;:::i;:::-;;;12847:12;:15;12860:1;12847:15;;;;;;;;;;;;12834:28;;;;;:::i;:::-;;;12259:619;12225:3;;;;;:::i;:::-;;;;12196:693;;;;12912:5;12899:18;;12965:1;12931:36;;:13;12945:7;12931:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:36;;;12928:102;;13015:3;13010:2;12997:10;:15;;;;:::i;:::-;:21;;;;:::i;:::-;12984:34;;12928:102;13047:10;13040:17;;;;;11912:1153;;;;;:::o;7974:47::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8028:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7607:23::-;;;;:::o;7703:43::-;;;;;;;;;;;;;;;;;:::o;7573:27::-;;;;;;;;;;;;;:::o;7753:40::-;;;;;;;;;;;;;;;;;:::o;8082:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;7655:41::-;;;;;;;;;;;;;;;;;:::o;6859:220::-;5812:13;:11;:13::i;:::-;6964:1:::1;6944:22;;:8;:22;;::::0;6940:93:::1;;7018:1;6990:31;;;;;;;;;;;:::i;:::-;;;;;;;;6940:93;7043:28;7062:8;7043:18;:28::i;:::-;6859:220:::0;:::o;6091:166::-;6162:12;:10;:12::i;:::-;6151:23;;:7;:5;:7::i;:::-;:23;;;6147:103;;6225:12;:10;:12::i;:::-;6198:40;;;;;;;;;;;:::i;:::-;;;;;;;;6147:103;6091:166::o;7239:191::-;7313:16;7332:6;;;;;;;;;;;7313:25;;7358:8;7349:6;;:17;;;;;;;;;;;;;;;;;;7413:8;7382:40;;7403:8;7382:40;;;;;;;;;;;;7302:128;7239:191;:::o;2425:293::-;1827:1;2559:7;;:19;2551:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1827:1;2692:7;:18;;;;2425:293::o;10470:365::-;10543:13;:25;10557:10;10543:25;;;;;;;;;;;;;;;;;;;;;;;;;10542:26;10534:35;;;;;;10584:6;10591:1;10584:8;;10580:183;10597:2;10594:1;:5;10580:183;;10655:1;10621:16;:28;10638:10;10621:28;;;;;;;;;;;;;;;:31;10650:1;10621:31;;;;;;;;;;;:35;;;;10679:1;10674;:6;10671:81;;10735:1;10701:16;:28;10718:10;10701:28;;;;;;;;;;;;;;;:31;10730:1;10701:31;;;;;;;;;;;:35;;;;10671:81;10601:3;;;;;:::i;:::-;;;;10580:183;;;;10802:13;:25;10816:10;10802:25;;;;;;;;;;;;;;;;;;;;;;;;;10801:26;10773:13;:25;10787:10;10773:25;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;10470:365;:::o;10843:1023::-;10920:13;:21;10934:6;10920:21;;;;;;;;;;;;;;;;;;;;;;;;;10912:30;;;;;;10984:6;10961:19;10973:6;10961:11;:19::i;:::-;:29;;10953:38;;;;;;11002:14;11019:6;11002:23;;11044:9;11056:1;11044:13;;11039:820;11064:2;11059:1;:7;11039:820;;11110:16;:24;11127:6;11110:24;;;;;;;;;;;;;;;:27;11135:1;11110:27;;;;;;;;;;;;11091:12;:15;11104:1;11091:15;;;;;;;;;;;;:46;11088:760;;11175:16;:24;11192:6;11175:24;;;;;;;;;;;;;;;:27;11200:1;11175:27;;;;;;;;;;;;11162:9;:40;11159:471;;11246:16;:24;11263:6;11246:24;;;;;;;;;;;;;;;:27;11271:1;11246:27;;;;;;;;;;;;11227:12;:15;11240:1;11227:15;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;11309:16;:24;11326:6;11309:24;;;;;;;;;;;;;;;:27;11334:1;11309:27;;;;;;;;;;;;11296:40;;;;;:::i;:::-;;;11389:1;11359:16;:24;11376:6;11359:24;;;;;;;;;;;;;;;:27;11384:1;11359:27;;;;;;;;;;;:31;;;;11159:471;;;11486:9;11455:16;:24;11472:6;11455:24;;;;;;;;;;;;;;;:27;11480:1;11455:27;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;;;;;;;11537:9;11518:12;:15;11531:1;11518:15;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;11581:1;11569:13;;11605:5;;11159:471;11088:760;;;11714:12;:15;11727:1;11714:15;;;;;;;;;;;;11683:16;:24;11700:6;11683:24;;;;;;;;;;;;;;;:27;11708:1;11683:27;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;11779:12;:15;11792:1;11779:15;;;;;;;;;;;;11766:28;;;;;:::i;:::-;;;11831:1;11813:12;:15;11826:1;11813:15;;;;;;;;;;;:19;;;;11088:760;11068:3;;;;;:::i;:::-;;;;11039:820;;;;10901:965;10843:1023;;:::o;2726:213::-;1783:1;2909:7;:22;;;;2726:213::o;3935:98::-;3988:7;4015:10;4008:17;;3935:98;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:619::-;767:6;775;783;832:2;820:9;811:7;807:23;803:32;800:119;;;838:79;;:::i;:::-;800:119;958:1;983:53;1028:7;1019:6;1008:9;1004:22;983:53;:::i;:::-;973:63;;929:117;1085:2;1111:53;1156:7;1147:6;1136:9;1132:22;1111:53;:::i;:::-;1101:63;;1056:118;1213:2;1239:53;1284:7;1275:6;1264:9;1260:22;1239:53;:::i;:::-;1229:63;;1184:118;690:619;;;;;:::o;1315:126::-;1352:7;1392:42;1385:5;1381:54;1370:65;;1315:126;;;:::o;1447:96::-;1484:7;1513:24;1531:5;1513:24;:::i;:::-;1502:35;;1447:96;;;:::o;1549:122::-;1622:24;1640:5;1622:24;:::i;:::-;1615:5;1612:35;1602:63;;1661:1;1658;1651:12;1602:63;1549:122;:::o;1677:139::-;1723:5;1761:6;1748:20;1739:29;;1777:33;1804:5;1777:33;:::i;:::-;1677:139;;;;:::o;1822:329::-;1881:6;1930:2;1918:9;1909:7;1905:23;1901:32;1898:119;;;1936:79;;:::i;:::-;1898:119;2056:1;2081:53;2126:7;2117:6;2106:9;2102:22;2081:53;:::i;:::-;2071:63;;2027:117;1822:329;;;;:::o;2157:118::-;2244:24;2262:5;2244:24;:::i;:::-;2239:3;2232:37;2157:118;;:::o;2281:222::-;2374:4;2412:2;2401:9;2397:18;2389:26;;2425:71;2493:1;2482:9;2478:17;2469:6;2425:71;:::i;:::-;2281:222;;;;:::o;2509:117::-;2618:1;2615;2608:12;2632:102;2673:6;2724:2;2720:7;2715:2;2708:5;2704:14;2700:28;2690:38;;2632:102;;;:::o;2740:180::-;2788:77;2785:1;2778:88;2885:4;2882:1;2875:15;2909:4;2906:1;2899:15;2926:281;3009:27;3031:4;3009:27;:::i;:::-;3001:6;2997:40;3139:6;3127:10;3124:22;3103:18;3091:10;3088:34;3085:62;3082:88;;;3150:18;;:::i;:::-;3082:88;3190:10;3186:2;3179:22;2969:238;2926:281;;:::o;3213:129::-;3247:6;3274:20;;:::i;:::-;3264:30;;3303:33;3331:4;3323:6;3303:33;:::i;:::-;3213:129;;;:::o;3348:321::-;3435:4;3525:18;3517:6;3514:30;3511:56;;;3547:18;;:::i;:::-;3511:56;3597:4;3589:6;3585:17;3577:25;;3657:4;3651;3647:15;3639:23;;3348:321;;;:::o;3675:117::-;3784:1;3781;3774:12;3798:117;3907:1;3904;3897:12;3921:308;3983:4;4073:18;4065:6;4062:30;4059:56;;;4095:18;;:::i;:::-;4059:56;4133:29;4155:6;4133:29;:::i;:::-;4125:37;;4217:4;4211;4207:15;4199:23;;3921:308;;;:::o;4235:146::-;4332:6;4327:3;4322;4309:30;4373:1;4364:6;4359:3;4355:16;4348:27;4235:146;;;:::o;4387:425::-;4465:5;4490:66;4506:49;4548:6;4506:49;:::i;:::-;4490:66;:::i;:::-;4481:75;;4579:6;4572:5;4565:21;4617:4;4610:5;4606:16;4655:3;4646:6;4641:3;4637:16;4634:25;4631:112;;;4662:79;;:::i;:::-;4631:112;4752:54;4799:6;4794:3;4789;4752:54;:::i;:::-;4471:341;4387:425;;;;;:::o;4832:340::-;4888:5;4937:3;4930:4;4922:6;4918:17;4914:27;4904:122;;4945:79;;:::i;:::-;4904:122;5062:6;5049:20;5087:79;5162:3;5154:6;5147:4;5139:6;5135:17;5087:79;:::i;:::-;5078:88;;4894:278;4832:340;;;;:::o;5194:945::-;5300:5;5325:91;5341:74;5408:6;5341:74;:::i;:::-;5325:91;:::i;:::-;5316:100;;5436:5;5465:6;5458:5;5451:21;5499:4;5492:5;5488:16;5481:23;;5552:4;5544:6;5540:17;5532:6;5528:30;5581:3;5573:6;5570:15;5567:122;;;5600:79;;:::i;:::-;5567:122;5715:6;5698:435;5732:6;5727:3;5724:15;5698:435;;;5821:3;5808:17;5857:18;5844:11;5841:35;5838:122;;;5879:79;;:::i;:::-;5838:122;6003:11;5995:6;5991:24;6041:47;6084:3;6072:10;6041:47;:::i;:::-;6036:3;6029:60;6118:4;6113:3;6109:14;6102:21;;5774:359;;5758:4;5753:3;5749:14;5742:21;;5698:435;;;5702:21;5306:833;;5194:945;;;;;:::o;6161:390::-;6242:5;6291:3;6284:4;6276:6;6272:17;6268:27;6258:122;;6299:79;;:::i;:::-;6258:122;6416:6;6403:20;6441:104;6541:3;6533:6;6526:4;6518:6;6514:17;6441:104;:::i;:::-;6432:113;;6248:303;6161:390;;;;:::o;6557:311::-;6634:4;6724:18;6716:6;6713:30;6710:56;;;6746:18;;:::i;:::-;6710:56;6796:4;6788:6;6784:17;6776:25;;6856:4;6850;6846:15;6838:23;;6557:311;;;:::o;6891:710::-;6987:5;7012:81;7028:64;7085:6;7028:64;:::i;:::-;7012:81;:::i;:::-;7003:90;;7113:5;7142:6;7135:5;7128:21;7176:4;7169:5;7165:16;7158:23;;7229:4;7221:6;7217:17;7209:6;7205:30;7258:3;7250:6;7247:15;7244:122;;;7277:79;;:::i;:::-;7244:122;7392:6;7375:220;7409:6;7404:3;7401:15;7375:220;;;7484:3;7513:37;7546:3;7534:10;7513:37;:::i;:::-;7508:3;7501:50;7580:4;7575:3;7571:14;7564:21;;7451:144;7435:4;7430:3;7426:14;7419:21;;7375:220;;;7379:21;6993:608;;6891:710;;;;;:::o;7624:370::-;7695:5;7744:3;7737:4;7729:6;7725:17;7721:27;7711:122;;7752:79;;:::i;:::-;7711:122;7869:6;7856:20;7894:94;7984:3;7976:6;7969:4;7961:6;7957:17;7894:94;:::i;:::-;7885:103;;7701:293;7624:370;;;;:::o;8000:914::-;8128:6;8136;8185:2;8173:9;8164:7;8160:23;8156:32;8153:119;;;8191:79;;:::i;:::-;8153:119;8339:1;8328:9;8324:17;8311:31;8369:18;8361:6;8358:30;8355:117;;;8391:79;;:::i;:::-;8355:117;8496:88;8576:7;8567:6;8556:9;8552:22;8496:88;:::i;:::-;8486:98;;8282:312;8661:2;8650:9;8646:18;8633:32;8692:18;8684:6;8681:30;8678:117;;;8714:79;;:::i;:::-;8678:117;8819:78;8889:7;8880:6;8869:9;8865:22;8819:78;:::i;:::-;8809:88;;8604:303;8000:914;;;;;:::o;8920:654::-;8998:6;9006;9055:2;9043:9;9034:7;9030:23;9026:32;9023:119;;;9061:79;;:::i;:::-;9023:119;9181:1;9206:53;9251:7;9242:6;9231:9;9227:22;9206:53;:::i;:::-;9196:63;;9152:117;9336:2;9325:9;9321:18;9308:32;9367:18;9359:6;9356:30;9353:117;;;9389:79;;:::i;:::-;9353:117;9494:63;9549:7;9540:6;9529:9;9525:22;9494:63;:::i;:::-;9484:73;;9279:288;8920:654;;;;;:::o;9580:118::-;9667:24;9685:5;9667:24;:::i;:::-;9662:3;9655:37;9580:118;;:::o;9704:222::-;9797:4;9835:2;9824:9;9820:18;9812:26;;9848:71;9916:1;9905:9;9901:17;9892:6;9848:71;:::i;:::-;9704:222;;;;:::o;9932:474::-;10000:6;10008;10057:2;10045:9;10036:7;10032:23;10028:32;10025:119;;;10063:79;;:::i;:::-;10025:119;10183:1;10208:53;10253:7;10244:6;10233:9;10229:22;10208:53;:::i;:::-;10198:63;;10154:117;10310:2;10336:53;10381:7;10372:6;10361:9;10357:22;10336:53;:::i;:::-;10326:63;;10281:118;9932:474;;;;;:::o;10412:799::-;10499:6;10507;10515;10564:2;10552:9;10543:7;10539:23;10535:32;10532:119;;;10570:79;;:::i;:::-;10532:119;10690:1;10715:53;10760:7;10751:6;10740:9;10736:22;10715:53;:::i;:::-;10705:63;;10661:117;10817:2;10843:53;10888:7;10879:6;10868:9;10864:22;10843:53;:::i;:::-;10833:63;;10788:118;10973:2;10962:9;10958:18;10945:32;11004:18;10996:6;10993:30;10990:117;;;11026:79;;:::i;:::-;10990:117;11131:63;11186:7;11177:6;11166:9;11162:22;11131:63;:::i;:::-;11121:73;;10916:288;10412:799;;;;;:::o;11217:99::-;11269:6;11303:5;11297:12;11287:22;;11217:99;;;:::o;11322:169::-;11406:11;11440:6;11435:3;11428:19;11480:4;11475:3;11471:14;11456:29;;11322:169;;;;:::o;11497:246::-;11578:1;11588:113;11602:6;11599:1;11596:13;11588:113;;;11687:1;11682:3;11678:11;11672:18;11668:1;11663:3;11659:11;11652:39;11624:2;11621:1;11617:10;11612:15;;11588:113;;;11735:1;11726:6;11721:3;11717:16;11710:27;11559:184;11497:246;;;:::o;11749:377::-;11837:3;11865:39;11898:5;11865:39;:::i;:::-;11920:71;11984:6;11979:3;11920:71;:::i;:::-;11913:78;;12000:65;12058:6;12053:3;12046:4;12039:5;12035:16;12000:65;:::i;:::-;12090:29;12112:6;12090:29;:::i;:::-;12085:3;12081:39;12074:46;;11841:285;11749:377;;;;:::o;12132:313::-;12245:4;12283:2;12272:9;12268:18;12260:26;;12332:9;12326:4;12322:20;12318:1;12307:9;12303:17;12296:47;12360:78;12433:4;12424:6;12360:78;:::i;:::-;12352:86;;12132:313;;;;:::o;12451:509::-;12520:6;12569:2;12557:9;12548:7;12544:23;12540:32;12537:119;;;12575:79;;:::i;:::-;12537:119;12723:1;12712:9;12708:17;12695:31;12753:18;12745:6;12742:30;12739:117;;;12775:79;;:::i;:::-;12739:117;12880:63;12935:7;12926:6;12915:9;12911:22;12880:63;:::i;:::-;12870:73;;12666:287;12451:509;;;;:::o;12966:329::-;13025:6;13074:2;13062:9;13053:7;13049:23;13045:32;13042:119;;;13080:79;;:::i;:::-;13042:119;13200:1;13225:53;13270:7;13261:6;13250:9;13246:22;13225:53;:::i;:::-;13215:63;;13171:117;12966:329;;;;:::o;13301:90::-;13335:7;13378:5;13371:13;13364:21;13353:32;;13301:90;;;:::o;13397:109::-;13478:21;13493:5;13478:21;:::i;:::-;13473:3;13466:34;13397:109;;:::o;13512:210::-;13599:4;13637:2;13626:9;13622:18;13614:26;;13650:65;13712:1;13701:9;13697:17;13688:6;13650:65;:::i;:::-;13512:210;;;;:::o;13728:180::-;13776:77;13773:1;13766:88;13873:4;13870:1;13863:15;13897:4;13894:1;13887:15;13914:191;13954:3;13973:20;13991:1;13973:20;:::i;:::-;13968:25;;14007:20;14025:1;14007:20;:::i;:::-;14002:25;;14050:1;14047;14043:9;14036:16;;14071:3;14068:1;14065:10;14062:36;;;14078:18;;:::i;:::-;14062:36;13914:191;;;;:::o;14111:233::-;14150:3;14173:24;14191:5;14173:24;:::i;:::-;14164:33;;14219:66;14212:5;14209:77;14206:103;;14289:18;;:::i;:::-;14206:103;14336:1;14329:5;14325:13;14318:20;;14111:233;;;:::o;14350:180::-;14398:77;14395:1;14388:88;14495:4;14492:1;14485:15;14519:4;14516:1;14509:15;14536:180;14584:77;14581:1;14574:88;14681:4;14678:1;14671:15;14705:4;14702:1;14695:15;14722:320;14766:6;14803:1;14797:4;14793:12;14783:22;;14850:1;14844:4;14840:12;14871:18;14861:81;;14927:4;14919:6;14915:17;14905:27;;14861:81;14989:2;14981:6;14978:14;14958:18;14955:38;14952:84;;15008:18;;:::i;:::-;14952:84;14773:269;14722:320;;;:::o;15048:141::-;15097:4;15120:3;15112:11;;15143:3;15140:1;15133:14;15177:4;15174:1;15164:18;15156:26;;15048:141;;;:::o;15195:93::-;15232:6;15279:2;15274;15267:5;15263:14;15259:23;15249:33;;15195:93;;;:::o;15294:107::-;15338:8;15388:5;15382:4;15378:16;15357:37;;15294:107;;;;:::o;15407:393::-;15476:6;15526:1;15514:10;15510:18;15549:97;15579:66;15568:9;15549:97;:::i;:::-;15667:39;15697:8;15686:9;15667:39;:::i;:::-;15655:51;;15739:4;15735:9;15728:5;15724:21;15715:30;;15788:4;15778:8;15774:19;15767:5;15764:30;15754:40;;15483:317;;15407:393;;;;;:::o;15806:60::-;15834:3;15855:5;15848:12;;15806:60;;;:::o;15872:142::-;15922:9;15955:53;15973:34;15982:24;16000:5;15982:24;:::i;:::-;15973:34;:::i;:::-;15955:53;:::i;:::-;15942:66;;15872:142;;;:::o;16020:75::-;16063:3;16084:5;16077:12;;16020:75;;;:::o;16101:269::-;16211:39;16242:7;16211:39;:::i;:::-;16272:91;16321:41;16345:16;16321:41;:::i;:::-;16313:6;16306:4;16300:11;16272:91;:::i;:::-;16266:4;16259:105;16177:193;16101:269;;;:::o;16376:73::-;16421:3;16376:73;:::o;16455:189::-;16532:32;;:::i;:::-;16573:65;16631:6;16623;16617:4;16573:65;:::i;:::-;16508:136;16455:189;;:::o;16650:186::-;16710:120;16727:3;16720:5;16717:14;16710:120;;;16781:39;16818:1;16811:5;16781:39;:::i;:::-;16754:1;16747:5;16743:13;16734:22;;16710:120;;;16650:186;;:::o;16842:543::-;16943:2;16938:3;16935:11;16932:446;;;16977:38;17009:5;16977:38;:::i;:::-;17061:29;17079:10;17061:29;:::i;:::-;17051:8;17047:44;17244:2;17232:10;17229:18;17226:49;;;17265:8;17250:23;;17226:49;17288:80;17344:22;17362:3;17344:22;:::i;:::-;17334:8;17330:37;17317:11;17288:80;:::i;:::-;16947:431;;16932:446;16842:543;;;:::o;17391:117::-;17445:8;17495:5;17489:4;17485:16;17464:37;;17391:117;;;;:::o;17514:169::-;17558:6;17591:51;17639:1;17635:6;17627:5;17624:1;17620:13;17591:51;:::i;:::-;17587:56;17672:4;17666;17662:15;17652:25;;17565:118;17514:169;;;;:::o;17688:295::-;17764:4;17910:29;17935:3;17929:4;17910:29;:::i;:::-;17902:37;;17972:3;17969:1;17965:11;17959:4;17956:21;17948:29;;17688:295;;;;:::o;17988:1395::-;18105:37;18138:3;18105:37;:::i;:::-;18207:18;18199:6;18196:30;18193:56;;;18229:18;;:::i;:::-;18193:56;18273:38;18305:4;18299:11;18273:38;:::i;:::-;18358:67;18418:6;18410;18404:4;18358:67;:::i;:::-;18452:1;18476:4;18463:17;;18508:2;18500:6;18497:14;18525:1;18520:618;;;;19182:1;19199:6;19196:77;;;19248:9;19243:3;19239:19;19233:26;19224:35;;19196:77;19299:67;19359:6;19352:5;19299:67;:::i;:::-;19293:4;19286:81;19155:222;18490:887;;18520:618;18572:4;18568:9;18560:6;18556:22;18606:37;18638:4;18606:37;:::i;:::-;18665:1;18679:208;18693:7;18690:1;18687:14;18679:208;;;18772:9;18767:3;18763:19;18757:26;18749:6;18742:42;18823:1;18815:6;18811:14;18801:24;;18870:2;18859:9;18855:18;18842:31;;18716:4;18713:1;18709:12;18704:17;;18679:208;;;18915:6;18906:7;18903:19;18900:179;;;18973:9;18968:3;18964:19;18958:26;19016:48;19058:4;19050:6;19046:17;19035:9;19016:48;:::i;:::-;19008:6;19001:64;18923:156;18900:179;19125:1;19121;19113:6;19109:14;19105:22;19099:4;19092:36;18527:611;;;18490:887;;18080:1303;;;17988:1395;;:::o;19389:148::-;19491:11;19528:3;19513:18;;19389:148;;;;:::o;19543:390::-;19649:3;19677:39;19710:5;19677:39;:::i;:::-;19732:89;19814:6;19809:3;19732:89;:::i;:::-;19725:96;;19830:65;19888:6;19883:3;19876:4;19869:5;19865:16;19830:65;:::i;:::-;19920:6;19915:3;19911:16;19904:23;;19653:280;19543:390;;;;:::o;19939:275::-;20071:3;20093:95;20184:3;20175:6;20093:95;:::i;:::-;20086:102;;20205:3;20198:10;;19939:275;;;;:::o;20220:164::-;20360:16;20356:1;20348:6;20344:14;20337:40;20220:164;:::o;20390:366::-;20532:3;20553:67;20617:2;20612:3;20553:67;:::i;:::-;20546:74;;20629:93;20718:3;20629:93;:::i;:::-;20747:2;20742:3;20738:12;20731:19;;20390:366;;;:::o;20762:419::-;20928:4;20966:2;20955:9;20951:18;20943:26;;21015:9;21009:4;21005:20;21001:1;20990:9;20986:17;20979:47;21043:131;21169:4;21043:131;:::i;:::-;21035:139;;20762:419;;;:::o;21187:410::-;21227:7;21250:20;21268:1;21250:20;:::i;:::-;21245:25;;21284:20;21302:1;21284:20;:::i;:::-;21279:25;;21339:1;21336;21332:9;21361:30;21379:11;21361:30;:::i;:::-;21350:41;;21540:1;21531:7;21527:15;21524:1;21521:22;21501:1;21494:9;21474:83;21451:139;;21570:18;;:::i;:::-;21451:139;21235:362;21187:410;;;;:::o;21603:180::-;21651:77;21648:1;21641:88;21748:4;21745:1;21738:15;21772:4;21769:1;21762:15;21789:185;21829:1;21846:20;21864:1;21846:20;:::i;:::-;21841:25;;21880:20;21898:1;21880:20;:::i;:::-;21875:25;;21919:1;21909:35;;21924:18;;:::i;:::-;21909:35;21966:1;21963;21959:9;21954:14;;21789:185;;;;:::o;21980:147::-;22081:11;22118:3;22103:18;;21980:147;;;;:::o;22133:114::-;;:::o;22253:398::-;22412:3;22433:83;22514:1;22509:3;22433:83;:::i;:::-;22426:90;;22525:93;22614:3;22525:93;:::i;:::-;22643:1;22638:3;22634:11;22627:18;;22253:398;;;:::o;22657:379::-;22841:3;22863:147;23006:3;22863:147;:::i;:::-;22856:154;;23027:3;23020:10;;22657:379;;;:::o;23042:164::-;23182:16;23178:1;23170:6;23166:14;23159:40;23042:164;:::o;23212:366::-;23354:3;23375:67;23439:2;23434:3;23375:67;:::i;:::-;23368:74;;23451:93;23540:3;23451:93;:::i;:::-;23569:2;23564:3;23560:12;23553:19;;23212:366;;;:::o;23584:419::-;23750:4;23788:2;23777:9;23773:18;23765:26;;23837:9;23831:4;23827:20;23823:1;23812:9;23808:17;23801:47;23865:131;23991:4;23865:131;:::i;:::-;23857:139;;23584:419;;;:::o;24009:332::-;24130:4;24168:2;24157:9;24153:18;24145:26;;24181:71;24249:1;24238:9;24234:17;24225:6;24181:71;:::i;:::-;24262:72;24330:2;24319:9;24315:18;24306:6;24262:72;:::i;:::-;24009:332;;;;;:::o;24347:533::-;24516:4;24554:2;24543:9;24539:18;24531:26;;24567:71;24635:1;24624:9;24620:17;24611:6;24567:71;:::i;:::-;24648:72;24716:2;24705:9;24701:18;24692:6;24648:72;:::i;:::-;24767:9;24761:4;24757:20;24752:2;24741:9;24737:18;24730:48;24795:78;24868:4;24859:6;24795:78;:::i;:::-;24787:86;;24347:533;;;;;;:::o;24886:165::-;25026:17;25022:1;25014:6;25010:14;25003:41;24886:165;:::o;25057:366::-;25199:3;25220:67;25284:2;25279:3;25220:67;:::i;:::-;25213:74;;25296:93;25385:3;25296:93;:::i;:::-;25414:2;25409:3;25405:12;25398:19;;25057:366;;;:::o;25429:419::-;25595:4;25633:2;25622:9;25618:18;25610:26;;25682:9;25676:4;25672:20;25668:1;25657:9;25653:17;25646:47;25710:131;25836:4;25710:131;:::i;:::-;25702:139;;25429:419;;;:::o;25854:194::-;25894:4;25914:20;25932:1;25914:20;:::i;:::-;25909:25;;25948:20;25966:1;25948:20;:::i;:::-;25943:25;;25992:1;25989;25985:9;25977:17;;26016:1;26010:4;26007:11;26004:37;;;26021:18;;:::i;:::-;26004:37;25854:194;;;;:::o;26054:181::-;26194:33;26190:1;26182:6;26178:14;26171:57;26054:181;:::o;26241:366::-;26383:3;26404:67;26468:2;26463:3;26404:67;:::i;:::-;26397:74;;26480:93;26569:3;26480:93;:::i;:::-;26598:2;26593:3;26589:12;26582:19;;26241:366;;;:::o;26613:419::-;26779:4;26817:2;26806:9;26802:18;26794:26;;26866:9;26860:4;26856:20;26852:1;26841:9;26837:17;26830:47;26894:131;27020:4;26894:131;:::i;:::-;26886:139;;26613:419;;;:::o

Swarm Source

ipfs://74e4c1d71c076cbb9af381a0b80688b2144231489ad652640cc116815f27d87e

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.