MATIC Price: $0.99 (-2.56%)
Gas: 153 GWei
 

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Value
Approve551629932024-03-28 4:02:4326 hrs ago1711598563IN
0x5c947eB8...3D0a201d7
0 MATIC0.0045397197.52346022
Purchase Utility551628062024-03-28 3:56:0526 hrs ago1711598165IN
0x5c947eB8...3D0a201d7
0 MATIC0.00887207104.28656287
Purchase Utility551576562024-03-28 0:50:5329 hrs ago1711587053IN
0x5c947eB8...3D0a201d7
0 MATIC0.01322213110.87555642
Purchase Utility551219832024-03-27 2:23:102 days ago1711506190IN
0x5c947eB8...3D0a201d7
0 MATIC0.0084777799.663495
Purchase Utility549596322024-03-22 18:01:126 days ago1711130472IN
0x5c947eB8...3D0a201d7
0 MATIC0.0043400151.02057557
Purchase Utility549174412024-03-21 14:29:197 days ago1711031359IN
0x5c947eB8...3D0a201d7
0 MATIC0.0074916188.0827509
Purchase Utility549110192024-03-21 10:31:527 days ago1711017112IN
0x5c947eB8...3D0a201d7
0 MATIC0.0073023785.84569841
Purchase Utility546763172024-03-15 5:52:0014 days ago1710481920IN
0x5c947eB8...3D0a201d7
0 MATIC0.00933319109.70675211
Purchase Utility546627932024-03-14 21:34:2614 days ago1710452066IN
0x5c947eB8...3D0a201d7
0 MATIC0.0066691178.39197531
Purchase Utility545664892024-03-12 10:45:4316 days ago1710240343IN
0x5c947eB8...3D0a201d7
0 MATIC0.00864216101.61041033
Approve545244172024-03-11 8:54:4917 days ago1710147289IN
0x5c947eB8...3D0a201d7
0 MATIC0.0045416197.56428238
Purchase Utility544932292024-03-10 14:08:1418 days ago1710079694IN
0x5c947eB8...3D0a201d7
0 MATIC0.0208348245
Purchase Utility544281402024-03-08 22:00:5920 days ago1709935259IN
0x5c947eB8...3D0a201d7
0 MATIC0.007584789.16469615
Approve543911042024-03-07 23:46:3121 days ago1709855191IN
0x5c947eB8...3D0a201d7
0 MATIC0.0042129590.50391619
Purchase Utility543592102024-03-07 4:23:3822 days ago1709785418IN
0x5c947eB8...3D0a201d7
0 MATIC0.01358715159.72865238
Transfer542786642024-03-05 2:45:1424 days ago1709606714IN
0x5c947eB8...3D0a201d7
0 MATIC0.00333033113
Approve542414342024-03-04 3:38:0925 days ago1709523489IN
0x5c947eB8...3D0a201d7
0 MATIC0.0048508104.20634686
Purchase Utility542412522024-03-04 3:31:1125 days ago1709523071IN
0x5c947eB8...3D0a201d7
0 MATIC0.0069834682.09658877
Purchase Utility542032052024-03-03 4:10:3726 days ago1709439037IN
0x5c947eB8...3D0a201d7
0 MATIC0.0047731256.10562436
Approve541598402024-03-02 2:10:0427 days ago1709345404IN
0x5c947eB8...3D0a201d7
0 MATIC0.00576888123.92870794
Approve541584802024-03-02 1:20:5027 days ago1709342450IN
0x5c947eB8...3D0a201d7
0 MATIC0.0082307176.81431379
Purchase Utility541246012024-03-01 4:37:4428 days ago1709267864IN
0x5c947eB8...3D0a201d7
0 MATIC0.0076278378.98432846
Purchase Utility540950752024-02-29 10:48:2428 days ago1709203704IN
0x5c947eB8...3D0a201d7
0 MATIC0.0065396476.87911693
Purchase Utility540909122024-02-29 8:18:5628 days ago1709194736IN
0x5c947eB8...3D0a201d7
0 MATIC0.00912068107.20889601
Purchase Utility540901052024-02-29 7:49:4828 days ago1709192988IN
0x5c947eB8...3D0a201d7
0 MATIC0.0083616498.28673367
View all transactions

Parent Txn Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SpitToken

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 9999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 4: SpitToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

import "./ERC20.sol";
import "./FXBaseChildTunnel.sol";
import "./Ownable.sol";

/**
   __ _                                               
  / /| | __ _ _ __ ___   __ _/\   /\___ _ __ ___  ___ 
 / / | |/ _` | '_ ` _ \ / _` \ \ / / _ \ '__/ __|/ _ \
/ /__| | (_| | | | | | | (_| |\ V /  __/ |  \__ \  __/
\____/_|\__,_|_| |_| |_|\__,_| \_/ \___|_|  |___/\___|

**/

/// @title $SPIT Token
/// @author delta devs (https://twitter.com/deltadevelopers)

enum TokenType {
    StaticLlama,
    AnimatedLlama,
    SilverBoost,
    GoldBoost,
    PixletCanvas,
    LlamaDraws
}

contract SpitToken is ERC20, FxBaseChildTunnel, Ownable {
    /*///////////////////////////////////////////////////////////////
                            STORAGE
    /////////////////////////////////////////////////////////////*/

    struct Rewards {
        uint256 staticLlama;
        uint256 animatedLlama;
        uint256 silverEnergy;
        uint256 goldEnergy;
        uint256 pixletCanvas;
        uint256 llamaDraws;
    }

    /// @notice The current reward rates per token type.
    Rewards public rewards;

    /// @notice Keeps track of the staking balances (how much is being staked) of each token type for all holders.
    mapping(address => mapping(uint256 => uint256)) public balances;

    /// @notice Keeps track of the timestamp of when a holder last withdrew their rewards.
    mapping(address => uint256) public lastUpdated;

    /*///////////////////////////////////////////////////////////////
                            CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _fxChild)
        FxBaseChildTunnel(_fxChild)
        ERC20("Spit Token", "SPIT", 18)
    {
        rewards.staticLlama = (uint256(10) * 1e18) / 1 days;
        rewards.animatedLlama = (uint256(30) * 1e18) / 1 days;
        rewards.silverEnergy = (uint256(4) * 1e18) / 1 days;
        rewards.goldEnergy = (uint256(12) * 1e18) / 1 days;
        rewards.llamaDraws = (uint256(1) * 1e18) / 1 days;
        rewards.pixletCanvas = (uint256(1) * 1e18) / 1 days;

        _mint(address(this), 100_000_000 * 1e18);
        uint256 allocation = (30_000_000 + 5_000_000 + 5_000_000 + 2_500_000) *
            1e18;
        balanceOf[address(this)] -= allocation;

        unchecked {
            balanceOf[
                0xcc5cDaB325689Bcd654aB8611c528e60CC8CBe6A
            ] += (30_000_000 * 1e18);
            balanceOf[
                0x58B96f5C8ef1CdD7e12a9b71Bbbe575E7B26b142
            ] += (5_000_000 * 1e18);
            balanceOf[
                0x58caDf06fcC222f573F81B08B6Cc156e420D35d7
            ] += (5_000_000 * 1e18);
            balanceOf[
                0x5D31E4A33470e1a15e54aAdD1d913b613fd0E9ED
            ] += (2_500_000 * 1e18);
        }

        emit Transfer(
            address(this),
            0xcc5cDaB325689Bcd654aB8611c528e60CC8CBe6A,
            30_000_000 * 1e18
        );
        emit Transfer(
            address(this),
            0x58B96f5C8ef1CdD7e12a9b71Bbbe575E7B26b142,
            5_000_000 * 1e18
        );
        emit Transfer(
            address(this),
            0x58caDf06fcC222f573F81B08B6Cc156e420D35d7,
            5_000_000 * 1e18
        );
        emit Transfer(
            address(this),
            0x5D31E4A33470e1a15e54aAdD1d913b613fd0E9ED,
            2_500_000 * 1e18
        );
    }

    /*///////////////////////////////////////////////////////////////
                            STAKING LOGIC
    //////////////////////////////////////////////////////////////*/

    /// @notice Called when withdrawing rewards. $SPIT is transferred to the address, and the lastUpdated field is updated.
    /// @param account The address to mint to.
    modifier updateReward(address account) {
        uint256 amount = earned(account);
        balanceOf[address(this)] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[account] += amount;
        }

        lastUpdated[account] = block.timestamp;
        emit Transfer(address(this), account, amount);
        _;
    }

    /// @notice Internal call to stake an amount of a specific token type.
    /// @param account The address which will be staking.
    /// @param tokenType The token type to stake.
    /// @param amount The amount to stake.
    function processStake(
        address account,
        TokenType tokenType,
        uint256 amount
    ) internal updateReward(account) {
        balances[account][uint256(tokenType)] += amount;
    }

    /// @notice Internal call to unstake an amount of a specific token type.
    /// @param account The address which will be unstaking.
    /// @param tokenType The token type to unstake.
    /// @param amount The amount to unstake.
    function processUnstake(
        address account,
        TokenType tokenType,
        uint256 amount
    ) internal updateReward(account) {
        balances[account][uint256(tokenType)] -= amount;
    }

    /**
     * @notice Process message received from FxChild
     * @param stateId unique state id
     * @param sender root message sender
     * @param message bytes message that was sent from Root Tunnel
     */
    function _processMessageFromRoot(
        uint256 stateId,
        address sender,
        bytes memory message
    ) internal override validateSender(sender) {
        (address from, uint256 token, uint256 count, bool action) = abi.decode(
            message,
            (address, uint256, uint256, bool)
        );
        action
            ? processStake(from, TokenType(token), count)
            : processUnstake(from, TokenType(token), count);
    }

    /*///////////////////////////////////////////////////////////////
                            USER UTILITIES
    //////////////////////////////////////////////////////////////*/

    /// @notice Forwards a user's purchase in SPIT to this contract using EIP-2612
    /// @dev This function exists so that the permit and transfer can be done in a single transaction.
    function purchaseUtility(
        address owner,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public updateReward(owner) {
        permit(owner, msg.sender, value, deadline, v, r, s);
        transferFrom(owner, address(this), value);
    }

    /// @notice Calculates the total amount of rewards accumulated for a staker, for staking all owned token types.
    /// @dev Calculates based on when the staker last withdrew rewards, and compares it with the current block's timestamp.
    /// @param account The account to calculate the accumulated rewards for.
    function earned(address account) public view returns (uint256) {
        return
            spitPerSecond(account) * (block.timestamp - lastUpdated[account]);
    }

    /// @notice Calculates the current balance of the user including the unclaimed rewards.
    /// @dev Unclaimed rewards are withdrawn automatically when a utility purchase is made or an unstake/stake occurs.
    function totalBalance(address account) public view returns (uint256) {
        return balanceOf[account] + earned(account);
    }

    /// @notice Calculates the amount of SPIT earned per second by the given user
    /// @param account The account to calculate the accumulated rewards for.
    function spitPerSecond(address account) public view returns (uint256) {
        return ((balances[account][0] * rewards.staticLlama) +
            (balances[account][1] * rewards.animatedLlama) +
            (min(balances[account][2], balances[account][0]) *
                rewards.silverEnergy) +
            (min(balances[account][3], balances[account][1]) *
                rewards.goldEnergy) +
            (balances[account][4] * rewards.pixletCanvas) +
            (balances[account][5] * rewards.llamaDraws));
    }

    /*///////////////////////////////////////////////////////////////
                            ADMIN UTILITIES
    //////////////////////////////////////////////////////////////*/

    /// @notice Allows the contract owner to burn SPIT owned by the contract.
    function burn(uint256 amount) public onlyOwner {
        _burn(address(this), amount);
    }

    /// @notice Allows the contract owner to airdrop SPIT owned by the contract.
    function airdrop(address[] calldata accounts, uint256[] calldata amounts) public onlyOwner {
        require(accounts.length == amounts.length);
        for(uint i = 0; i < accounts.length; i++) {
            uint amount = amounts[i];
            balanceOf[address(this)] -= amount;

            // Cannot overflow because the sum of all user
            // balances can't exceed the max uint256 value.
            unchecked {
                balanceOf[accounts[i]] += amount;
            }

            emit Transfer(address(this), accounts[i], amount);
        }
    }

    /// @notice Allows the contract owner to mint SPIT to the contract.
    function mint(uint256 amount) public onlyOwner {
        _mint(address(this), amount);
    }

    /// @notice Withdraw  $SPIT being held on this contract to the requested address.
    /// @param recipient The address to withdraw the funds to.
    /// @param amount The amount of SPIT to withdraw
    function withdrawSpit(address recipient, uint256 amount) public onlyOwner {
        balanceOf[address(this)] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[recipient] += amount;
        }

        emit Transfer(address(this), recipient, amount);
    }

    /// @notice Allows the contract deployer to sets the reward rates for each token type.
    /// @param staticLlama The reward rate for staking a static llama.
    /// @param animatedLlama The reward rate for staking an animated llama.
    /// @param silverEnergy The reward rate for staking a silver llama boost.
    /// @param goldEnergy The reward rate for staking a gold llama boost.
    /// @param pixletCanvas The reward rate for staking a pixlet canvas.
    function setRewardRates(
        uint256 staticLlama,
        uint256 animatedLlama,
        uint256 silverEnergy,
        uint256 goldEnergy,
        uint256 pixletCanvas,
        uint256 llamaDraws
    ) public onlyOwner {
        rewards.staticLlama = staticLlama;
        rewards.animatedLlama = animatedLlama;
        rewards.silverEnergy = silverEnergy;
        rewards.goldEnergy = goldEnergy;
        rewards.pixletCanvas = pixletCanvas;
        rewards.llamaDraws = llamaDraws;
    }

    function updateFxRootRunnel(address _fxRootTunnel) external onlyOwner {
        fxRootTunnel = _fxRootTunnel;
    }

    /*///////////////////////////////////////////////////////////////
                                HELPERS
    //////////////////////////////////////////////////////////////*/

    function min(uint256 x, uint256 y) internal pure returns (uint256) {
        return x < y ? x : y;
    }
}

File 1 of 4: ERC20.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*///////////////////////////////////////////////////////////////
                                  EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*///////////////////////////////////////////////////////////////
                             METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*///////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*///////////////////////////////////////////////////////////////
                             EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    bytes32 public constant PERMIT_TYPEHASH =
        keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*///////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*///////////////////////////////////////////////////////////////
                              ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*///////////////////////////////////////////////////////////////
                              EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            bytes32 digest = keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR(),
                    keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
                )
            );

            address recoveredAddress = ecrecover(digest, v, r, s);

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

File 2 of 4: FXBaseChildTunnel.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// IFxMessageProcessor represents interface to process message
interface IFxMessageProcessor {
    function processMessageFromRoot(
        uint256 stateId,
        address rootMessageSender,
        bytes calldata data
    ) external;
}

/**
 * @notice Mock child tunnel contract to receive and send message from L2
 */
abstract contract FxBaseChildTunnel is IFxMessageProcessor {
    // MessageTunnel on L1 will get data from this event
    event MessageSent(bytes message);

    // fx child
    address public fxChild;

    // fx root tunnel
    address public fxRootTunnel;

    constructor(address _fxChild) {
        fxChild = _fxChild;
    }

    // Sender must be fxRootTunnel in case of ERC20 tunnel
    modifier validateSender(address sender) {
        require(sender == fxRootTunnel, "FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT");
        _;
    }

    // set fxRootTunnel if not set already
    function setFxRootTunnel(address _fxRootTunnel) external {
        require(fxRootTunnel == address(0x0), "FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET");
        fxRootTunnel = _fxRootTunnel;
    }

    function processMessageFromRoot(
        uint256 stateId,
        address rootMessageSender,
        bytes calldata data
    ) external override {
        require(msg.sender == fxChild, "FxBaseChildTunnel: INVALID_SENDER");
        _processMessageFromRoot(stateId, rootMessageSender, data);
    }

    /**
     * @notice Emit message that can be received on Root Tunnel
     * @dev Call the internal function when need to emit message
     * @param message bytes message that will be sent to Root Tunnel
     * some message examples -
     *   abi.encode(tokenId);
     *   abi.encode(tokenId, tokenMetadata);
     *   abi.encode(messageType, messageData);
     */
    function _sendMessageToRoot(bytes memory message) internal {
        emit MessageSent(message);
    }

    /**
     * @notice Process message received from Root Tunnel
     * @dev function needs to be implemented to handle message as per requirement
     * This is called by onStateReceive function.
     * Since it is called via a system call, any event will not be emitted during its execution.
     * @param stateId unique state id
     * @param sender root message sender
     * @param message bytes message that was sent from Root Tunnel
     */
    function _processMessageFromRoot(
        uint256 stateId,
        address sender,
        bytes memory message
    ) internal virtual;
}

File 3 of 4: Ownable.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.10;

error NotOwner();

// https://github.com/m1guelpf/erc721-drop/blob/main/src/LilOwnable.sol
abstract contract Ownable {
    address internal _owner;

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

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

    constructor() {
        _owner = msg.sender;
    }

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

    function transferOwnership(address _newOwner) external {
        if (msg.sender != _owner) revert NotOwner();

        _owner = _newOwner;
    }

    function renounceOwnership() public {
        if (msg.sender != _owner) revert NotOwner();

        _owner = address(0);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        pure
        virtual
        returns (bool)
    {
        return interfaceId == 0x7f5828d0; // ERC165 Interface ID for ERC173
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_fxChild","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"MessageSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fxChild","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fxRootTunnel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUpdated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"purchaseUtility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"uint256","name":"staticLlama","type":"uint256"},{"internalType":"uint256","name":"animatedLlama","type":"uint256"},{"internalType":"uint256","name":"silverEnergy","type":"uint256"},{"internalType":"uint256","name":"goldEnergy","type":"uint256"},{"internalType":"uint256","name":"pixletCanvas","type":"uint256"},{"internalType":"uint256","name":"llamaDraws","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_fxRootTunnel","type":"address"}],"name":"setFxRootTunnel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"staticLlama","type":"uint256"},{"internalType":"uint256","name":"animatedLlama","type":"uint256"},{"internalType":"uint256","name":"silverEnergy","type":"uint256"},{"internalType":"uint256","name":"goldEnergy","type":"uint256"},{"internalType":"uint256","name":"pixletCanvas","type":"uint256"},{"internalType":"uint256","name":"llamaDraws","type":"uint256"}],"name":"setRewardRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"spitPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fxRootTunnel","type":"address"}],"name":"updateFxRootRunnel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawSpit","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040523480156200001157600080fd5b506040516200264d3803806200264d8339810160408190526200003491620005aa565b604080518082018252600a81526929b834ba102a37b5b2b760b11b60208083019182528351808501909452600484526314d4125560e21b908401528151849391601291620000859160009162000504565b5081516200009b90600190602085019062000504565b5060ff81166080524660a052620000b16200040c565b60c0525050600680546001600160a01b039093166001600160a01b031993841617905550600880549091163317905562015180620000f9600a670de0b6b3a7640000620005f2565b62000105919062000614565b6009556201518062000121601e670de0b6b3a7640000620005f2565b6200012d919062000614565b600a5562015180620001496004670de0b6b3a7640000620005f2565b62000155919062000614565b600b556201518062000171600c670de0b6b3a7640000620005f2565b6200017d919062000614565b600c5562015180620001996001670de0b6b3a7640000620005f2565b620001a5919062000614565b600e5562015180620001c16001670de0b6b3a7640000620005f2565b620001cd919062000614565b600d55620001e7306a52b7d2dcc80cd2e4000000620004a8565b30600090815260036020526040812080546a2327b99dd505733a800000928392916200021590849062000637565b9091555050600360209081527f0551b56a5f263bfefedbcb4bc1f7c3fbf3ef24df3a934bd0a2331ff25e54b83a80546a18d0bf423c03d8de0000009081019091557f68faadd0a6fb6124a1181eb8d65095d91aa37944ca5d44edef8262bb460fe99580546a0422ca8b0a00a4250000009081019091557f42131c8053be2cc290e562a573cc75ca7362ba6caf767be05e3ccdc90cde18b480549091019055735d31e4a33470e1a15e54aadd1d913b613fd0e9ed6000527f74a96a185cc1aa45fb002e8b6ca774581877fb4d0740ce1fbbbf8e07b7f2b7f180546a021165458500521280000001905560405190815273cc5cdab325689bcd654ab8611c528e60cc8cbe6a9130916000805160206200262d833981519152910160405180910390a36040516a0422ca8b0a00a42500000081527358b96f5c8ef1cdd7e12a9b71bbbe575e7b26b1429030906000805160206200262d8339815191529060200160405180910390a36040516a0422ca8b0a00a42500000081527358cadf06fcc222f573f81b08b6cc156e420d35d79030906000805160206200262d8339815191529060200160405180910390a36040516a02116545850052128000008152735d31e4a33470e1a15e54aadd1d913b613fd0e9ed9030906000805160206200262d8339815191529060200160405180910390a350506200074b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200044091906200068d565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254620004bc919062000730565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481526000805160206200262d833981519152910160405180910390a35050565b828054620005129062000651565b90600052602060002090601f01602090048101928262000536576000855562000581565b82601f106200055157805160ff191683800117855562000581565b8280016001018555821562000581579182015b828111156200058157825182559160200191906001019062000564565b506200058f92915062000593565b5090565b5b808211156200058f576000815560010162000594565b600060208284031215620005bd57600080fd5b81516001600160a01b0381168114620005d557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200060f576200060f620005dc565b500290565b6000826200063257634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156200064c576200064c620005dc565b500390565b600181811c908216806200066657607f821691505b6020821081036200068757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620006aa57607f831692505b60208084108203620006ca57634e487b7160e01b86526022600452602486fd5b818015620006e15760018114620006f35762000722565b60ff1986168952848901965062000722565b60008a81526020902060005b868110156200071a5781548b820152908501908301620006ff565b505084890196505b509498975050505050505050565b60008219821115620007465762000746620005dc565b500190565b60805160a05160c051611eb26200077b60003960006108800152600061084b0152600061035a0152611eb26000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c806370e22b8a1161012a5780639a7c4b71116100bd578063cbf1304d1161008c578063d505accf11610071578063d505accf1461057c578063dd62ed3e1461058f578063f2fde38b146105ba57600080fd5b8063cbf1304d1461053e578063cc9b52391461056957600080fd5b80639a7c4b71146104ba5780639ec5a894146104cd578063a0712d6814610518578063a9059cbb1461052b57600080fd5b806388837094116100f9578063888370941461047b5780638afe5fa71461048e5780638da5cb5b146104a157806395d89b41146104b257600080fd5b806370e22b8a1461042d578063715018a6146104405780637ecebe00146104485780637f1e9cb01461046857600080fd5b806330adf81f116101bd578063450d11f01161018c578063672434821161017157806367243482146103e75780636eacd398146103fa57806370a082311461040d57600080fd5b8063450d11f0146103a95780635362f69f146103d457600080fd5b806330adf81f1461032e578063313ce567146103555780633644e5151461038e57806342966c681461039657600080fd5b80630a6f93e6116101f95780630a6f93e6146102dd57806318160ddd146102fd57806323b872dd146103065780632836e4b41461031957600080fd5b80628cc2621461022a57806301ffc9a71461025057806306fdde03146102b5578063095ea7b3146102ca575b600080fd5b61023d6102383660046117e2565b6105cd565b6040519081526020015b60405180910390f35b6102a561025e3660046117ff565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7f5828d0000000000000000000000000000000000000000000000000000000001490565b6040519015158152602001610247565b6102bd610609565b6040516102479190611841565b6102a56102d83660046118b4565b610697565b61023d6102eb3660046117e2565b60106020526000908152604090205481565b61023d60025481565b6102a56103143660046118e0565b610703565b61032c610327366004611921565b610813565b005b61023d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610247565b61023d610847565b61032c6103a4366004611964565b6108a2565b6006546103bc906001600160a01b031681565b6040516001600160a01b039091168152602001610247565b61032c6103e23660046117e2565b6108c6565b61032c6103f53660046119c9565b610917565b61023d6104083660046117e2565b610a76565b61023d61041b3660046117e2565b60036020526000908152604090205481565b61032c61043b3660046118b4565b610aa4565b61032c610b3d565b61023d6104563660046117e2565b60056020526000908152604090205481565b6007546103bc906001600160a01b031681565b61032c6104893660046117e2565b610bab565b61032c61049c366004611a4b565b610c49565b6008546001600160a01b03166103bc565b6102bd610d01565b61032c6104c8366004611aa5565b610d0e565b600954600a54600b54600c54600d54600e546104eb95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610247565b61032c610526366004611964565b610def565b6102a56105393660046118b4565b610e10565b61023d61054c3660046118b4565b600f60209081526000928352604080842090915290825290205481565b61023d6105773660046117e2565b610e88565b61032c61058a366004611b2e565b611009565b61023d61059d366004611b9c565b600460209081526000928352604080842090915290825290205481565b61032c6105c83660046117e2565b6112f4565b6001600160a01b0381166000908152601060205260408120546105f09042611c04565b6105f983610e88565b6106039190611c1b565b92915050565b6000805461061690611c58565b80601f016020809104026020016040519081016040528092919081815260200182805461064290611c58565b801561068f5780601f106106645761010080835404028352916020019161068f565b820191906000526020600020905b81548152906001019060200180831161067257829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f29086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077d576107588382611c04565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107a5908490611c04565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108009087815260200190565b60405180910390a3506001949350505050565b6008546001600160a01b0316331461082a57600080fd5b600995909555600a93909355600b91909155600c55600d55600e55565b60007f0000000000000000000000000000000000000000000000000000000000000000461461087d57610878611372565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6008546001600160a01b031633146108b957600080fd5b6108c3308261140c565b50565b6008546001600160a01b031633146108dd57600080fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461092e57600080fd5b82811461093a57600080fd5b60005b83811015610a6f57600083838381811061095957610959611cab565b9050602002013590508060036000306001600160a01b03166001600160a01b0316815260200190815260200160002060008282546109979190611c04565b90915550819050600360008888868181106109b4576109b4611cab565b90506020020160208101906109c991906117e2565b6001600160a01b031681526020810191909152604001600020805490910190558585838181106109fb576109fb611cab565b9050602002016020810190610a1091906117e2565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5491815260200190565b60405180910390a35080610a6781611cda565b91505061093d565b5050505050565b6000610a81826105cd565b6001600160a01b0383166000908152600360205260409020546106039190611d12565b6008546001600160a01b03163314610abb57600080fd5b3060009081526003602052604081208054839290610ada908490611c04565b90915550506001600160a01b038216600081815260036020526040908190208054840190555130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b60405180910390a35050565b6008546001600160a01b03163314610b81576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b0316156108dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f4160448201527f4c52454144595f5345540000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b856000610c55826105cd565b30600090815260036020526040812080549293508392909190610c79908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb88338989898989611009565b610cf6883089610703565b505050505050505050565b6001805461061690611c58565b6006546001600160a01b03163314610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f52000000000000000000000000000000000000000000000000000000000000006064820152608401610c40565b610de9848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148092505050565b50505050565b6008546001600160a01b03163314610e0657600080fd5b6108c3308261158d565b33600090815260036020526040812080548391908390610e31908490611c04565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f29086815260200190565b600e546001600160a01b0382166000908152600f60209081526040808320600584529091528120549091610ebb91611c1b565b600d546001600160a01b0384166000908152600f6020908152604080832060048452909152902054610eed9190611c1b565b600c546001600160a01b0385166000908152600f60209081526040808320600384529091528082205460018352912054610f2791906115f1565b610f319190611c1b565b600b546001600160a01b0386166000908152600f602090815260408083206002845290915280822054828052912054610f6a91906115f1565b610f749190611c1b565b600a546001600160a01b0387166000908152600f6020908152604080832060018452909152902054610fa69190611c1b565b6009546001600160a01b0388166000908152600f60209081526040808320838052909152902054610fd79190611c1b565b610fe19190611d12565b610feb9190611d12565b610ff59190611d12565b610fff9190611d12565b6106039190611d12565b42841015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c40565b600061107d610847565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156111cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906112235750886001600160a01b0316816001600160a01b0316145b611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c40565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6008546001600160a01b03163314611338576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516113a49190611d2a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526003602052604081208054839290611434908490611c04565b90915550506002805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b31565b60075482906001600160a01b0380831691161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f525f46524f4d5f524f4f540000000000000000000000000000000000000000006064820152608401610c40565b600080600080858060200190518101906115399190611dfc565b935093509350935080611567576115628484600581111561155c5761155c611e4d565b84611609565b611583565b6115838484600581111561157d5761157d611e4d565b846116f1565b5050505050505050565b806002600082825461159f9190611d12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b31565b60008183106116005781611602565b825b9392505050565b826000611615826105cd565b30600090815260036020526040812080549293508392909190611639908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156116c8576116c8611e4d565b815260200190815260200160002060008282546116e59190611c04565b90915550505050505050565b8260006116fd826105cd565b30600090815260036020526040812080549293508392909190611721908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156117b0576117b0611e4d565b815260200190815260200160002060008282546116e59190611d12565b6001600160a01b03811681146108c357600080fd5b6000602082840312156117f457600080fd5b8135611602816117cd565b60006020828403121561181157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461160257600080fd5b600060208083528351808285015260005b8181101561186e57858101830151858201604001528201611852565b81811115611880576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600080604083850312156118c757600080fd5b82356118d2816117cd565b946020939093013593505050565b6000806000606084860312156118f557600080fd5b8335611900816117cd565b92506020840135611910816117cd565b929592945050506040919091013590565b60008060008060008060c0878903121561193a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561197657600080fd5b5035919050565b60008083601f84011261198f57600080fd5b50813567ffffffffffffffff8111156119a757600080fd5b6020830191508360208260051b85010111156119c257600080fd5b9250929050565b600080600080604085870312156119df57600080fd5b843567ffffffffffffffff808211156119f757600080fd5b611a038883890161197d565b90965094506020870135915080821115611a1c57600080fd5b50611a298782880161197d565b95989497509550505050565b803560ff81168114611a4657600080fd5b919050565b60008060008060008060c08789031215611a6457600080fd5b8635611a6f816117cd565b95506020870135945060408701359350611a8b60608801611a35565b92506080870135915060a087013590509295509295509295565b60008060008060608587031215611abb57600080fd5b843593506020850135611acd816117cd565b9250604085013567ffffffffffffffff80821115611aea57600080fd5b818701915087601f830112611afe57600080fd5b813581811115611b0d57600080fd5b886020828501011115611b1f57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611b4957600080fd5b8735611b54816117cd565b96506020880135611b64816117cd565b95506040880135945060608801359350611b8060808901611a35565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611baf57600080fd5b8235611bba816117cd565b91506020830135611bca816117cd565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c1657611c16611bd5565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c5357611c53611bd5565b500290565b600181811c90821680611c6c57607f821691505b602082108103611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0b57611d0b611bd5565b5060010190565b60008219821115611d2557611d25611bd5565b500190565b600080835481600182811c915080831680611d4657607f831692505b60208084108203611d7e577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611d925760018114611dc157611dee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611dee565b60008a81526020902060005b86811015611de65781548b820152908501908301611dcd565b505084890196505b509498975050505050505050565b60008060008060808587031215611e1257600080fd5b8451611e1d816117cd565b80945050602085015192506040850151915060608501518015158114611e4257600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa64736f6c634300080d0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000008397259c983751daf40400790063935a11afa28a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102255760003560e01c806370e22b8a1161012a5780639a7c4b71116100bd578063cbf1304d1161008c578063d505accf11610071578063d505accf1461057c578063dd62ed3e1461058f578063f2fde38b146105ba57600080fd5b8063cbf1304d1461053e578063cc9b52391461056957600080fd5b80639a7c4b71146104ba5780639ec5a894146104cd578063a0712d6814610518578063a9059cbb1461052b57600080fd5b806388837094116100f9578063888370941461047b5780638afe5fa71461048e5780638da5cb5b146104a157806395d89b41146104b257600080fd5b806370e22b8a1461042d578063715018a6146104405780637ecebe00146104485780637f1e9cb01461046857600080fd5b806330adf81f116101bd578063450d11f01161018c578063672434821161017157806367243482146103e75780636eacd398146103fa57806370a082311461040d57600080fd5b8063450d11f0146103a95780635362f69f146103d457600080fd5b806330adf81f1461032e578063313ce567146103555780633644e5151461038e57806342966c681461039657600080fd5b80630a6f93e6116101f95780630a6f93e6146102dd57806318160ddd146102fd57806323b872dd146103065780632836e4b41461031957600080fd5b80628cc2621461022a57806301ffc9a71461025057806306fdde03146102b5578063095ea7b3146102ca575b600080fd5b61023d6102383660046117e2565b6105cd565b6040519081526020015b60405180910390f35b6102a561025e3660046117ff565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7f5828d0000000000000000000000000000000000000000000000000000000001490565b6040519015158152602001610247565b6102bd610609565b6040516102479190611841565b6102a56102d83660046118b4565b610697565b61023d6102eb3660046117e2565b60106020526000908152604090205481565b61023d60025481565b6102a56103143660046118e0565b610703565b61032c610327366004611921565b610813565b005b61023d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61037c7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff9091168152602001610247565b61023d610847565b61032c6103a4366004611964565b6108a2565b6006546103bc906001600160a01b031681565b6040516001600160a01b039091168152602001610247565b61032c6103e23660046117e2565b6108c6565b61032c6103f53660046119c9565b610917565b61023d6104083660046117e2565b610a76565b61023d61041b3660046117e2565b60036020526000908152604090205481565b61032c61043b3660046118b4565b610aa4565b61032c610b3d565b61023d6104563660046117e2565b60056020526000908152604090205481565b6007546103bc906001600160a01b031681565b61032c6104893660046117e2565b610bab565b61032c61049c366004611a4b565b610c49565b6008546001600160a01b03166103bc565b6102bd610d01565b61032c6104c8366004611aa5565b610d0e565b600954600a54600b54600c54600d54600e546104eb95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610247565b61032c610526366004611964565b610def565b6102a56105393660046118b4565b610e10565b61023d61054c3660046118b4565b600f60209081526000928352604080842090915290825290205481565b61023d6105773660046117e2565b610e88565b61032c61058a366004611b2e565b611009565b61023d61059d366004611b9c565b600460209081526000928352604080842090915290825290205481565b61032c6105c83660046117e2565b6112f4565b6001600160a01b0381166000908152601060205260408120546105f09042611c04565b6105f983610e88565b6106039190611c1b565b92915050565b6000805461061690611c58565b80601f016020809104026020016040519081016040528092919081815260200182805461064290611c58565b801561068f5780601f106106645761010080835404028352916020019161068f565b820191906000526020600020905b81548152906001019060200180831161067257829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f29086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077d576107588382611c04565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107a5908490611c04565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108009087815260200190565b60405180910390a3506001949350505050565b6008546001600160a01b0316331461082a57600080fd5b600995909555600a93909355600b91909155600c55600d55600e55565b60007f0000000000000000000000000000000000000000000000000000000000000089461461087d57610878611372565b905090565b507fce0ccd319046c79e1db11e8e30bb37f98eb3f6882895139ea6ce54c5bad5f6fe90565b6008546001600160a01b031633146108b957600080fd5b6108c3308261140c565b50565b6008546001600160a01b031633146108dd57600080fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461092e57600080fd5b82811461093a57600080fd5b60005b83811015610a6f57600083838381811061095957610959611cab565b9050602002013590508060036000306001600160a01b03166001600160a01b0316815260200190815260200160002060008282546109979190611c04565b90915550819050600360008888868181106109b4576109b4611cab565b90506020020160208101906109c991906117e2565b6001600160a01b031681526020810191909152604001600020805490910190558585838181106109fb576109fb611cab565b9050602002016020810190610a1091906117e2565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5491815260200190565b60405180910390a35080610a6781611cda565b91505061093d565b5050505050565b6000610a81826105cd565b6001600160a01b0383166000908152600360205260409020546106039190611d12565b6008546001600160a01b03163314610abb57600080fd5b3060009081526003602052604081208054839290610ada908490611c04565b90915550506001600160a01b038216600081815260036020526040908190208054840190555130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b60405180910390a35050565b6008546001600160a01b03163314610b81576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b0316156108dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f4160448201527f4c52454144595f5345540000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b856000610c55826105cd565b30600090815260036020526040812080549293508392909190610c79908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb88338989898989611009565b610cf6883089610703565b505050505050505050565b6001805461061690611c58565b6006546001600160a01b03163314610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f52000000000000000000000000000000000000000000000000000000000000006064820152608401610c40565b610de9848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148092505050565b50505050565b6008546001600160a01b03163314610e0657600080fd5b6108c3308261158d565b33600090815260036020526040812080548391908390610e31908490611c04565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f29086815260200190565b600e546001600160a01b0382166000908152600f60209081526040808320600584529091528120549091610ebb91611c1b565b600d546001600160a01b0384166000908152600f6020908152604080832060048452909152902054610eed9190611c1b565b600c546001600160a01b0385166000908152600f60209081526040808320600384529091528082205460018352912054610f2791906115f1565b610f319190611c1b565b600b546001600160a01b0386166000908152600f602090815260408083206002845290915280822054828052912054610f6a91906115f1565b610f749190611c1b565b600a546001600160a01b0387166000908152600f6020908152604080832060018452909152902054610fa69190611c1b565b6009546001600160a01b0388166000908152600f60209081526040808320838052909152902054610fd79190611c1b565b610fe19190611d12565b610feb9190611d12565b610ff59190611d12565b610fff9190611d12565b6106039190611d12565b42841015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c40565b600061107d610847565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156111cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906112235750886001600160a01b0316816001600160a01b0316145b611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c40565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6008546001600160a01b03163314611338576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516113a49190611d2a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526003602052604081208054839290611434908490611c04565b90915550506002805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b31565b60075482906001600160a01b0380831691161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f525f46524f4d5f524f4f540000000000000000000000000000000000000000006064820152608401610c40565b600080600080858060200190518101906115399190611dfc565b935093509350935080611567576115628484600581111561155c5761155c611e4d565b84611609565b611583565b6115838484600581111561157d5761157d611e4d565b846116f1565b5050505050505050565b806002600082825461159f9190611d12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b31565b60008183106116005781611602565b825b9392505050565b826000611615826105cd565b30600090815260036020526040812080549293508392909190611639908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156116c8576116c8611e4d565b815260200190815260200160002060008282546116e59190611c04565b90915550505050505050565b8260006116fd826105cd565b30600090815260036020526040812080549293508392909190611721908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156117b0576117b0611e4d565b815260200190815260200160002060008282546116e59190611d12565b6001600160a01b03811681146108c357600080fd5b6000602082840312156117f457600080fd5b8135611602816117cd565b60006020828403121561181157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461160257600080fd5b600060208083528351808285015260005b8181101561186e57858101830151858201604001528201611852565b81811115611880576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600080604083850312156118c757600080fd5b82356118d2816117cd565b946020939093013593505050565b6000806000606084860312156118f557600080fd5b8335611900816117cd565b92506020840135611910816117cd565b929592945050506040919091013590565b60008060008060008060c0878903121561193a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561197657600080fd5b5035919050565b60008083601f84011261198f57600080fd5b50813567ffffffffffffffff8111156119a757600080fd5b6020830191508360208260051b85010111156119c257600080fd5b9250929050565b600080600080604085870312156119df57600080fd5b843567ffffffffffffffff808211156119f757600080fd5b611a038883890161197d565b90965094506020870135915080821115611a1c57600080fd5b50611a298782880161197d565b95989497509550505050565b803560ff81168114611a4657600080fd5b919050565b60008060008060008060c08789031215611a6457600080fd5b8635611a6f816117cd565b95506020870135945060408701359350611a8b60608801611a35565b92506080870135915060a087013590509295509295509295565b60008060008060608587031215611abb57600080fd5b843593506020850135611acd816117cd565b9250604085013567ffffffffffffffff80821115611aea57600080fd5b818701915087601f830112611afe57600080fd5b813581811115611b0d57600080fd5b886020828501011115611b1f57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611b4957600080fd5b8735611b54816117cd565b96506020880135611b64816117cd565b95506040880135945060608801359350611b8060808901611a35565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611baf57600080fd5b8235611bba816117cd565b91506020830135611bca816117cd565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c1657611c16611bd5565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c5357611c53611bd5565b500290565b600181811c90821680611c6c57607f821691505b602082108103611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0b57611d0b611bd5565b5060010190565b60008219821115611d2557611d25611bd5565b500190565b600080835481600182811c915080831680611d4657607f831692505b60208084108203611d7e577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611d925760018114611dc157611dee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611dee565b60008a81526020902060005b86811015611de65781548b820152908501908301611dcd565b505084890196505b509498975050505050505050565b60008060008060808587031215611e1257600080fd5b8451611e1d816117cd565b80945050602085015192506040850151915060608501518015158114611e4257600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa64736f6c634300080d0033

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

0000000000000000000000008397259c983751daf40400790063935a11afa28a

-----Decoded View---------------
Arg [0] : _fxChild (address): 0x8397259c983751DAf40400790063935a11afa28a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008397259c983751daf40400790063935a11afa28a


Deployed Bytecode Sourcemap

630:10492:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6786:164;;;;;;:::i;:::-;;:::i;:::-;;;571:25:4;;;559:2;544:18;6786:164:3;;;;;;;;840:201:2;;;;;;:::i;:::-;975:25;;;;;840:201;;;;1109:14:4;;1102:22;1084:41;;1072:2;1057:18;840:201:2;944:187:4;1032:18:0;;;:::i;:::-;;;;;;;:::i;2618:211::-;;;;;;:::i;:::-;;:::i;1433:46:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1306:26:0;;;;;;3214:592;;;;;;:::i;:::-;;:::i;10217:492:3:-;;;;;;:::i;:::-;;:::i;:::-;;1647:145:0;;1697:95;1647:145;;1084:31;;;;;;;;3460:4:4;3448:17;;;3430:36;;3418:2;3403:18;1084:31:0;3288:184:4;4996:177:0;;;:::i;8252:92:3:-;;;;;;:::i;:::-;;:::i;555:22:1:-;;;;;-1:-1:-1;;;;;555:22:1;;;;;;-1:-1:-1;;;;;3826:55:4;;;3808:74;;3796:2;3781:18;555:22:1;3662:226:4;10715:115:3;;;;;;:::i;:::-;;:::i;8431:570::-;;;;;;:::i;:::-;;:::i;7167:129::-;;;;;;:::i;:::-;;:::i;1339:44:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;9379:369:3;;;;;;:::i;:::-;;:::i;708:126:2:-;;;:::i;1907:41:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;606:27:1;;;;;-1:-1:-1;;;;;606:27:1;;;965:195;;;;;;:::i;:::-;;:::i;6159:304:3:-;;;;;;:::i;:::-;;:::i;473:79:2:-;539:6;;-1:-1:-1;;;;;539:6:2;473:79;;1057:20:0;;;:::i;1166:296:1:-;;;;;;:::i;:::-;;:::i;1128:22:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;6887:25:4;;;6943:2;6928:18;;6921:34;;;;6971:18;;;6964:34;;;;7029:2;7014:18;;7007:34;7072:3;7057:19;;7050:35;7116:3;7101:19;;7094:35;6874:3;6859:19;1128:22:3;6600:535:4;9079:92:3;;;;;;:::i;:::-;;:::i;2835:373:0:-;;;;;;:::i;:::-;;:::i;1272:63:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7461:523;;;;;;:::i;:::-;;:::i;3997:993:0:-;;;;;;:::i;:::-;;:::i;1390:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;558:144:2;;;;;;:::i;:::-;;:::i;6786:164:3:-;-1:-1:-1;;;;;6922:20:3;;6840:7;6922:20;;;:11;:20;;;;;;6904:38;;:15;:38;:::i;:::-;6878:22;6892:7;6878:13;:22::i;:::-;:65;;;;:::i;:::-;6859:84;6786:164;-1:-1:-1;;6786:164:3:o;1032:18:0:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2618:211::-;2718:10;2692:4;2708:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2708:30:0;;;;;;;;;;:39;;;2763:37;2692:4;;2708:30;;2763:37;;;;2741:6;571:25:4;;559:2;544:18;;425:177;2763:37:0;;;;;;;;-1:-1:-1;2818:4:0;2618:211;;;;:::o;3214:592::-;-1:-1:-1;;;;;3366:15:0;;3332:4;3366:15;;;:9;:15;;;;;;;;3382:10;3366:27;;;;;;;;3455:17;3444:28;;3440:80;;3504:16;3514:6;3504:7;:16;:::i;:::-;-1:-1:-1;;;;;3474:15:0;;;;;;:9;:15;;;;;;;;3490:10;3474:27;;;;;;;:46;3440:80;-1:-1:-1;;;;;3531:15:0;;;;;;:9;:15;;;;;:25;;3550:6;;3531:15;:25;;3550:6;;3531:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3702:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3751:26;3702:13;;3751:26;;;;;;;3719:6;571:25:4;;559:2;544:18;;425:177;3751:26:0;;;;;;;;-1:-1:-1;3795:4:0;;3214:592;-1:-1:-1;;;;3214:592:0:o;10217:492:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;10450:7:3::1;:33:::0;;;;10493:21;:37;;;;10540:20;:35;;;;10585:18;:31;10626:20;:35;10671:18;:31;10217:492::o;4996:177:0:-;5053:7;5096:16;5079:13;:33;:87;;5142:24;:22;:24::i;:::-;5072:94;;4996:177;:::o;5079:87::-;-1:-1:-1;5115:24:0;;4996:177::o;8252:92:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;8309:28:3::1;8323:4;8330:6;8309:5;:28::i;:::-;8252:92:::0;:::o;10715:115::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;10795:12:3::1;:28:::0;;;::::1;-1:-1:-1::0;;;;;10795:28:3;;;::::1;::::0;;;::::1;::::0;;10715:115::o;8431:570::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;8540:33:3;;::::1;8532:42;;;::::0;::::1;;8588:6;8584:411;8600:19:::0;;::::1;8584:411;;;8640:11;8654:7;;8662:1;8654:10;;;;;;;:::i;:::-;;;;;;;8640:24;;8706:6;8678:9;:24;8696:4;-1:-1:-1::0;;;;;8678:24:3::1;-1:-1:-1::0;;;;;8678:24:3::1;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8900:6:3;;-1:-1:-1;8874:9:3::1;:22;8884:8:::0;;8893:1;8884:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8874:22:3::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8874:22:3;:32;;;;::::1;::::0;;8964:8;;8973:1;8964:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8940:44:3::1;8957:4;-1:-1:-1::0;;;;;8940:44:3::1;;8977:6;8940:44;;;;571:25:4::0;;559:2;544:18;;425:177;8940:44:3::1;;;;;;;;-1:-1:-1::0;8621:3:3;::::1;::::0;::::1;:::i;:::-;;;;8584:411;;;;8431:570:::0;;;;:::o;7167:129::-;7227:7;7274:15;7281:7;7274:6;:15::i;:::-;-1:-1:-1;;;;;7253:18:3;;;;;;:9;:18;;;;;;:36;;;;:::i;9379:369::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;9481:4:3::1;9463:24;::::0;;;:9:::1;:24;::::0;;;;:34;;9491:6;;9463:24;:34:::1;::::0;9491:6;;9463:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;9643:20:3;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;:30;;;::::1;::::0;;9699:42;9716:4:::1;::::0;9699:42:::1;::::0;::::1;::::0;9667:6;571:25:4;;559:2;544:18;;425:177;9699:42:3::1;;;;;;;;9379:369:::0;;:::o;708:126:2:-;772:6;;-1:-1:-1;;;;;772:6:2;758:10;:20;754:43;;787:10;;;;;;;;;;;;;;754:43;808:6;:19;;;;;;708:126::o;965:195:1:-;1040:12;;-1:-1:-1;;;;;1040:12:1;:28;1032:83;;;;;;;9990:2:4;1032:83:1;;;9972:21:4;10029:2;10009:18;;;10002:30;10068:34;10048:18;;;10041:62;10139:12;10119:18;;;10112:40;10169:19;;1032:83:1;;;;;;;;6159:304:3;6337:5;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;6354:51:::1;6361:5;6368:10;6380:5;6387:8;6397:1;6400;6403;6354:6;:51::i;:::-;6415:41;6428:5;6443:4;6450:5;6415:12;:41::i;:::-;;3837:392:::0;6159:304;;;;;;;:::o;1057:20:0:-;;;;;;;:::i;1166:296:1:-;1343:7;;-1:-1:-1;;;;;1343:7:1;1329:10;:21;1321:67;;;;;;;10401:2:4;1321:67:1;;;10383:21:4;10440:2;10420:18;;;10413:30;10479:34;10459:18;;;10452:62;10550:3;10530:18;;;10523:31;10571:19;;1321:67:1;10199:397:4;1321:67:1;1398:57;1422:7;1431:17;1450:4;;1398:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1398:23:1;;-1:-1:-1;;;1398:57:1:i;:::-;1166:296;;;;:::o;9079:92:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;9136:28:3::1;9150:4;9157:6;9136:5;:28::i;2835:373:0:-:0;2931:10;2905:4;2921:21;;;:9;:21;;;;;:31;;2946:6;;2921:21;2905:4;;2921:31;;2946:6;;2921:31;:::i;:::-;;;;-1:-1:-1;;;;;;;3098:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;3147:32;3156:10;;3147:32;;;;3115:6;571:25:4;;559:2;544:18;;425:177;7461:523:3;7957:18;;-1:-1:-1;;;;;7934:17:3;;7522:7;7934:17;;;:8;:17;;;;;;;;7957:18;7934:20;;;;;;;;7522:7;;7934:41;;;:::i;:::-;7897:20;;-1:-1:-1;;;;;7874:17:3;;;;;;:8;:17;;;;;;;;7897:20;7874;;;;;;;;:43;;7897:20;7874:43;:::i;:::-;7839:18;;-1:-1:-1;;;;;7777:17:3;;;;;;:8;:17;;;;;;;;7839:18;7777:20;;;;;;;;;7817:1;7799:20;;;;;7773:47;;7777:20;7773:3;:47::i;:::-;:84;;;;:::i;:::-;7736:20;;-1:-1:-1;;;;;7674:17:3;;;;;;:8;:17;;;;;;;;7736:20;7674;;;;;;;;;7696;;;;;;7670:47;;7674:20;7670:3;:47::i;:::-;:86;;;;:::i;:::-;7632:21;;-1:-1:-1;;;;;7609:17:3;;;;;;:8;:17;;;;;;;;7632:21;7609:20;;;;;;;;:44;;7632:21;7609:44;:::i;:::-;7573:7;:19;-1:-1:-1;;;;;7550:17:3;;7573:19;7550:17;;;:8;:17;;;;;;;;:20;;;;;;;;;:42;;7573:19;7550:42;:::i;:::-;7549:105;;;;:::i;:::-;:208;;;;:::i;:::-;:309;;;;:::i;:::-;:369;;;;:::i;:::-;:427;;;;:::i;3997:993:0:-;4216:15;4204:8;:27;;4196:63;;;;;;;10803:2:4;4196:63:0;;;10785:21:4;10842:2;10822:18;;;10815:30;10881:25;10861:18;;;10854:53;10924:18;;4196:63:0;10601:347:4;4196:63:0;4424:14;4538:18;:16;:18::i;:::-;-1:-1:-1;;;;;4639:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4588:77;;1697:95;4588:77;;;11240:25:4;11342:18;;;11335:43;;;;11414:15;;;11394:18;;;11387:43;11446:18;;;11439:34;;;11489:19;;;11482:35;;;;11533:19;;;;11526:35;;;4588:77:0;;;;;;;;;;11212:19:4;;;4588:77:0;;;4578:88;;;;;;;;11842:66:4;4468:216:0;;;11830:79:4;11925:11;;;11918:27;;;;11961:12;;;11954:28;;;;11998:12;;4468:216:0;;;;;;;;;;;;;4441:257;;4468:216;4441:257;;;;4713:24;4740:26;;;;;;;;;12248:25:4;;;12321:4;12309:17;;12289:18;;;12282:45;;;;12343:18;;;12336:34;;;12386:18;;;12379:34;;;4441:257:0;;-1:-1:-1;4713:24:0;4740:26;;12220:19:4;;4740:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4740:26:0;;;;;;-1:-1:-1;;;;;;;4789:30:0;;;;;;:59;;;4843:5;-1:-1:-1;;;;;4823:25:0;:16;-1:-1:-1;;;;;4823:25:0;;4789:59;4781:86;;;;;;;12626:2:4;4781:86:0;;;12608:21:4;12665:2;12645:18;;;12638:30;12704:16;12684:18;;;12677:44;12738:18;;4781:86:0;12424:338:4;4781:86:0;-1:-1:-1;;;;;4882:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;4952:31;571:25:4;;;4882:36:0;;-1:-1:-1;4952:31:0;;;;;;544:18:4;4952:31:0;;;;;;;3997:993;;;;;;;:::o;558:144:2:-;641:6;;-1:-1:-1;;;;;641:6:2;627:10;:20;623:43;;656:10;;;;;;;;;;;;;;623:43;677:6;:18;;;;-1:-1:-1;;;;;677:18:2;;;;;;;;;;558:144::o;5179:446:0:-;5244:7;5341:95;5474:4;5458:22;;;;;;:::i;:::-;;;;;;;;;;5309:295;;;14379:25:4;;;;14420:18;;14413:34;;;;5502:14:0;14463:18:4;;;14456:34;5538:13:0;14506:18:4;;;14499:34;5581:4:0;14549:19:4;;;14542:84;14351:19;;5309:295:0;;;;;;;;;;;;5282:336;;;;;;5263:355;;5179:446;:::o;6150:328::-;-1:-1:-1;;;;;6222:15:0;;;;;;:9;:15;;;;;:25;;6241:6;;6222:15;:25;;6241:6;;6222:25;:::i;:::-;;;;-1:-1:-1;;6390:11:0;:21;;;;;;;6437:34;;571:25:4;;;-1:-1:-1;;;;;;;6437:34:0;;;;;559:2:4;544:18;6437:34:0;425:177:4;5326:458:3;838:12:1;;5477:6:3;;-1:-1:-1;;;;;828:22:1;;;838:12;;828:22;820:78;;;;;;;14839:2:4;820:78:1;;;14821:21:4;14878:2;14858:18;;;14851:30;14917:34;14897:18;;;14890:62;14988:13;14968:18;;;14961:41;15019:19;;820:78:1;14637:407:4;820:78:1;5496:12:3::1;5510:13:::0;5525::::1;5540:11:::0;5579:7:::1;5555:88;;;;;;;;;;;;:::i;:::-;5495:148;;;;;;;;5653:6;:124;;5732:45;5747:4;5763:5;5753:16;;;;;;;;:::i;:::-;5771:5;5732:14;:45::i;:::-;5653:124;;;5674:43;5687:4;5703:5;5693:16;;;;;;;;:::i;:::-;5711:5;5674:12;:43::i;:::-;5485:299;;;;5326:458:::0;;;;:::o;5819:325:0:-;5904:6;5889:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6056:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6105:32;571:25:4;;;6105:32:0;;544:18:4;6105:32:0;425:177:4;11016:104:3;11074:7;11104:1;11100;:5;:13;;11112:1;11100:13;;;11108:1;11100:13;11093:20;11016:104;-1:-1:-1;;;11016:104:3:o;4902:203::-;5032:7;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;-1:-1:-1;;;;;5051:17:3;::::1;;::::0;;;:8:::1;:17;::::0;;;;5092:6;;5077:9;5069:18:::1;::::0;::::1;;;;;;:::i;:::-;5051:37;;;;;;;;;;;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;4902:203:3:o;4461:201::-;4589:7;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;-1:-1:-1;;;;;4608:17:3;::::1;;::::0;;;:8:::1;:17;::::0;;;;4649:6;;4634:9;4626:18:::1;::::0;::::1;;;;;;:::i;:::-;4608:37;;;;;;;;;;;;:47;;;;;;;:::i;14:154:4:-:0;-1:-1:-1;;;;;93:5:4;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;607:332::-;665:6;718:2;706:9;697:7;693:23;689:32;686:52;;;734:1;731;724:12;686:52;773:9;760:23;823:66;816:5;812:78;805:5;802:89;792:117;;905:1;902;895:12;1136:656;1248:4;1277:2;1306;1295:9;1288:21;1338:6;1332:13;1381:6;1376:2;1365:9;1361:18;1354:34;1406:1;1416:140;1430:6;1427:1;1424:13;1416:140;;;1525:14;;;1521:23;;1515:30;1491:17;;;1510:2;1487:26;1480:66;1445:10;;1416:140;;;1574:6;1571:1;1568:13;1565:91;;;1644:1;1639:2;1630:6;1619:9;1615:22;1611:31;1604:42;1565:91;-1:-1:-1;1708:2:4;1696:15;1713:66;1692:88;1677:104;;;;1783:2;1673:113;;1136:656;-1:-1:-1;;;1136:656:4:o;1797:315::-;1865:6;1873;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1981:9;1968:23;2000:31;2025:5;2000:31;:::i;:::-;2050:5;2102:2;2087:18;;;;2074:32;;-1:-1:-1;;;1797:315:4:o;2117:456::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2318:9;2305:23;2337:31;2362:5;2337:31;:::i;:::-;2387:5;-1:-1:-1;2444:2:4;2429:18;;2416:32;2457:33;2416:32;2457:33;:::i;:::-;2117:456;;2509:7;;-1:-1:-1;;;2563:2:4;2548:18;;;;2535:32;;2117:456::o;2578:523::-;2682:6;2690;2698;2706;2714;2722;2775:3;2763:9;2754:7;2750:23;2746:33;2743:53;;;2792:1;2789;2782:12;2743:53;-1:-1:-1;;2815:23:4;;;2885:2;2870:18;;2857:32;;-1:-1:-1;2936:2:4;2921:18;;2908:32;;2987:2;2972:18;;2959:32;;-1:-1:-1;3038:3:4;3023:19;;3010:33;;-1:-1:-1;3090:3:4;3075:19;3062:33;;-1:-1:-1;2578:523:4;-1:-1:-1;2578:523:4:o;3477:180::-;3536:6;3589:2;3577:9;3568:7;3564:23;3560:32;3557:52;;;3605:1;3602;3595:12;3557:52;-1:-1:-1;3628:23:4;;3477:180;-1:-1:-1;3477:180:4:o;3893:367::-;3956:8;3966:6;4020:3;4013:4;4005:6;4001:17;3997:27;3987:55;;4038:1;4035;4028:12;3987:55;-1:-1:-1;4061:20:4;;4104:18;4093:30;;4090:50;;;4136:1;4133;4126:12;4090:50;4173:4;4165:6;4161:17;4149:29;;4233:3;4226:4;4216:6;4213:1;4209:14;4201:6;4197:27;4193:38;4190:47;4187:67;;;4250:1;4247;4240:12;4187:67;3893:367;;;;;:::o;4265:773::-;4387:6;4395;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;4520:9;4507:23;4549:18;4590:2;4582:6;4579:14;4576:34;;;4606:1;4603;4596:12;4576:34;4645:70;4707:7;4698:6;4687:9;4683:22;4645:70;:::i;:::-;4734:8;;-1:-1:-1;4619:96:4;-1:-1:-1;4822:2:4;4807:18;;4794:32;;-1:-1:-1;4838:16:4;;;4835:36;;;4867:1;4864;4857:12;4835:36;;4906:72;4970:7;4959:8;4948:9;4944:24;4906:72;:::i;:::-;4265:773;;;;-1:-1:-1;4997:8:4;-1:-1:-1;;;;4265:773:4:o;5043:156::-;5109:20;;5169:4;5158:16;;5148:27;;5138:55;;5189:1;5186;5179:12;5138:55;5043:156;;;:::o;5204:592::-;5306:6;5314;5322;5330;5338;5346;5399:3;5387:9;5378:7;5374:23;5370:33;5367:53;;;5416:1;5413;5406:12;5367:53;5455:9;5442:23;5474:31;5499:5;5474:31;:::i;:::-;5524:5;-1:-1:-1;5576:2:4;5561:18;;5548:32;;-1:-1:-1;5627:2:4;5612:18;;5599:32;;-1:-1:-1;5650:36:4;5682:2;5667:18;;5650:36;:::i;:::-;5640:46;;5733:3;5722:9;5718:19;5705:33;5695:43;;5785:3;5774:9;5770:19;5757:33;5747:43;;5204:592;;;;;;;;:::o;5801:794::-;5889:6;5897;5905;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6018:9;6005:23;5995:33;;6078:2;6067:9;6063:18;6050:32;6091:31;6116:5;6091:31;:::i;:::-;6141:5;-1:-1:-1;6197:2:4;6182:18;;6169:32;6220:18;6250:14;;;6247:34;;;6277:1;6274;6267:12;6247:34;6315:6;6304:9;6300:22;6290:32;;6360:7;6353:4;6349:2;6345:13;6341:27;6331:55;;6382:1;6379;6372:12;6331:55;6422:2;6409:16;6448:2;6440:6;6437:14;6434:34;;;6464:1;6461;6454:12;6434:34;6509:7;6504:2;6495:6;6491:2;6487:15;6483:24;6480:37;6477:57;;;6530:1;6527;6520:12;6477:57;5801:794;;;;-1:-1:-1;;6561:2:4;6553:11;;-1:-1:-1;;;5801:794:4:o;7140:734::-;7251:6;7259;7267;7275;7283;7291;7299;7352:3;7340:9;7331:7;7327:23;7323:33;7320:53;;;7369:1;7366;7359:12;7320:53;7408:9;7395:23;7427:31;7452:5;7427:31;:::i;:::-;7477:5;-1:-1:-1;7534:2:4;7519:18;;7506:32;7547:33;7506:32;7547:33;:::i;:::-;7599:7;-1:-1:-1;7653:2:4;7638:18;;7625:32;;-1:-1:-1;7704:2:4;7689:18;;7676:32;;-1:-1:-1;7727:37:4;7759:3;7744:19;;7727:37;:::i;:::-;7717:47;;7811:3;7800:9;7796:19;7783:33;7773:43;;7863:3;7852:9;7848:19;7835:33;7825:43;;7140:734;;;;;;;;;;:::o;7879:388::-;7947:6;7955;8008:2;7996:9;7987:7;7983:23;7979:32;7976:52;;;8024:1;8021;8014:12;7976:52;8063:9;8050:23;8082:31;8107:5;8082:31;:::i;:::-;8132:5;-1:-1:-1;8189:2:4;8174:18;;8161:32;8202:33;8161:32;8202:33;:::i;:::-;8254:7;8244:17;;;7879:388;;;;;:::o;8272:184::-;8324:77;8321:1;8314:88;8421:4;8418:1;8411:15;8445:4;8442:1;8435:15;8461:125;8501:4;8529:1;8526;8523:8;8520:34;;;8534:18;;:::i;:::-;-1:-1:-1;8571:9:4;;8461:125::o;8591:228::-;8631:7;8757:1;8689:66;8685:74;8682:1;8679:81;8674:1;8667:9;8660:17;8656:105;8653:131;;;8764:18;;:::i;:::-;-1:-1:-1;8804:9:4;;8591:228::o;8824:437::-;8903:1;8899:12;;;;8946;;;8967:61;;9021:4;9013:6;9009:17;8999:27;;8967:61;9074:2;9066:6;9063:14;9043:18;9040:38;9037:218;;9111:77;9108:1;9101:88;9212:4;9209:1;9202:15;9240:4;9237:1;9230:15;9037:218;;8824:437;;;:::o;9266:184::-;9318:77;9315:1;9308:88;9415:4;9412:1;9405:15;9439:4;9436:1;9429:15;9455:195;9494:3;9525:66;9518:5;9515:77;9512:103;;9595:18;;:::i;:::-;-1:-1:-1;9642:1:4;9631:13;;9455:195::o;9655:128::-;9695:3;9726:1;9722:6;9719:1;9716:13;9713:39;;;9732:18;;:::i;:::-;-1:-1:-1;9768:9:4;;9655:128::o;12896:1219::-;13026:3;13055:1;13088:6;13082:13;13118:3;13140:1;13168:9;13164:2;13160:18;13150:28;;13228:2;13217:9;13213:18;13250;13240:61;;13294:4;13286:6;13282:17;13272:27;;13240:61;13320:2;13368;13360:6;13357:14;13337:18;13334:38;13331:222;;13407:77;13402:3;13395:90;13508:4;13505:1;13498:15;13538:4;13533:3;13526:17;13331:222;13569:18;13596:162;;;;13772:1;13767:323;;;;13562:528;;13596:162;13644:66;13633:9;13629:82;13624:3;13617:95;13741:6;13736:3;13732:16;13725:23;;13596:162;;13767:323;12843:1;12836:14;;;12880:4;12867:18;;13865:1;13879:165;13893:6;13890:1;13887:13;13879:165;;;13971:14;;13958:11;;;13951:35;14014:16;;;;13908:10;;13879:165;;;13883:3;;14073:6;14068:3;14064:16;14057:23;;13562:528;-1:-1:-1;14106:3:4;;12896:1219;-1:-1:-1;;;;;;;;12896:1219:4:o;15049:544::-;15151:6;15159;15167;15175;15228:3;15216:9;15207:7;15203:23;15199:33;15196:53;;;15245:1;15242;15235:12;15196:53;15277:9;15271:16;15296:31;15321:5;15296:31;:::i;:::-;15346:5;15336:15;;;15391:2;15380:9;15376:18;15370:25;15360:35;;15435:2;15424:9;15420:18;15414:25;15404:35;;15484:2;15473:9;15469:18;15463:25;15533:7;15526:15;15519:23;15510:7;15507:36;15497:64;;15557:1;15554;15547:12;15497:64;15049:544;;;;-1:-1:-1;15049:544:4;;-1:-1:-1;;15049:544:4:o;15598:184::-;15650:77;15647:1;15640:88;15747:4;15744:1;15737:15;15771:4;15768:1;15761:15

Swarm Source

ipfs://6cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa

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

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.