Token Pangolin

Overview ERC20

Price
$0.05 @ 0.002447 AVAX (+0.51%)
Fully Diluted Market Cap
Total Supply:
538,000,000 PNG

Holders:
32,350 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

A community-driven decentralized exchange for Avalanche and Ethereum assets with fast settlement, low transaction fees, and a democratic distribution–powered by Avalanche. Pangolin brings you the best trading opportunities to find and maximize your yield.

Market

Volume (24H):$251,571.12
Market Capitalization:$6,917,826.29
Circulating Supply:147,625,121.00 PNG
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Png

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-02
*/

// Sources flattened with hardhat v2.0.8 https://hardhat.org

// File contracts/SafeMath.sol

pragma solidity ^0.5.16;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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


// File contracts/PNG.sol

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

contract Png {
    /// @notice EIP-20 token name for this token
    string public constant name = "Pangolin";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "PNG";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public constant totalSupply = 538_000_000e18; // 538 million PNG

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new PNG token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Png::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Png::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Png::permit: invalid signature");
        require(signatory == owner, "Png::permit: unauthorized");
        require(now <= deadline, "Png::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "Png::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "Png::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Png::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Png::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Png::delegateBySig: invalid nonce");
        require(now <= expiry, "Png::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "Png::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "Png::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Png::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Png::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Png::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "Png::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "Png::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "Png::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200371c3803806200371c833981810160405262000037919081019062000143565b6b01bd05ee709aab645a000000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b01bd05ee709aab645a0000006040516200011d919062000180565b60405180910390a350620001f5565b6000815190506200013d81620001db565b92915050565b6000602082840312156200015657600080fd5b600062000166848285016200012c565b91505092915050565b6200017a81620001d1565b82525050565b60006020820190506200019760008301846200016f565b92915050565b6000620001aa82620001b1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620001e6816200019d565b8114620001f257600080fd5b50565b61351780620002056000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b4b5ea571161007c578063b4b5ea571461038c578063c3cda520146103bc578063d505accf146103d8578063dd62ed3e146103f4578063e7a324dc14610424578063f1127ed81461044257610137565b806370a08231146102ae578063782d6fe1146102de5780637ecebe001461030e57806395d89b411461033e578063a9059cbb1461035c57610137565b806330adf81f116100ff57806330adf81f146101f6578063313ce56714610214578063587cde1e146102325780635c19a95c146102625780636fcfff451461027e57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806320606b70146101a857806323b872dd146101c6575b600080fd5b610144610473565b6040516101519190612f7f565b60405180910390f35b610174600480360361016f91908101906126a4565b6104ac565b6040516101819190612e19565b60405180910390f35b61019261063e565b60405161019f91906130e3565b60405180910390f35b6101b061064e565b6040516101bd9190612e34565b60405180910390f35b6101e060048036036101db91908101906125b7565b610665565b6040516101ed9190612e19565b60405180910390f35b6101fe6108f7565b60405161020b9190612e34565b60405180910390f35b61021c61090e565b6040516102299190613142565b60405180910390f35b61024c60048036036102479190810190612552565b610913565b6040516102599190612dfe565b60405180910390f35b61027c60048036036102779190810190612552565b610946565b005b61029860048036036102939190810190612552565b610953565b6040516102a591906130fe565b60405180910390f35b6102c860048036036102c39190810190612552565b610976565b6040516102d591906130e3565b60405180910390f35b6102f860048036036102f391908101906126a4565b6109e5565b6040516103059190613178565b60405180910390f35b61032860048036036103239190810190612552565b610df8565b60405161033591906130e3565b60405180910390f35b610346610e10565b6040516103539190612f7f565b60405180910390f35b610376600480360361037191908101906126a4565b610e49565b6040516103839190612e19565b60405180910390f35b6103a660048036036103a19190810190612552565b610e86565b6040516103b39190613178565b60405180910390f35b6103d660048036036103d191908101906126e0565b610f74565b005b6103f260048036036103ed9190810190612606565b611217565b005b61040e6004803603610409919081019061257b565b611668565b60405161041b91906130e3565b60405180910390f35b61042c611714565b6040516104399190612e34565b60405180910390f35b61045c60048036036104579190810190612769565b61172b565b60405161046a929190613119565b60405180910390f35b6040518060400160405280600881526020017f50616e676f6c696e00000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314156104ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610524565b6105218360405180606001604052806024815260200161348a60249139611784565b90505b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161062b919061315d565b60405180910390a3600191505092915050565b6b01bd05ee709aab645a00000081565b60405161065a90612dd4565b604051809103902081565b60008033905060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905060006107278560405180606001604052806024815260200161348a60249139611784565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156107a157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b156108de5760006107cb83836040518060600160405280603c8152602001613349603c91396117e2565b9050806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108d4919061315d565b60405180910390a3505b6108e9878783611853565b600193505050509392505050565b60405161090390612dbf565b604051809103902081565b601281565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109503382611c34565b50565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2090613043565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610a96576000915050610df2565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610b9857600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050610df2565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610c19576000915050610df2565b600080905060006001830390505b8163ffffffff168163ffffffff161115610d74576000600283830363ffffffff1681610c4f57fe5b0482039050610c5c6124bb565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415610d4c57806020015195505050505050610df2565b86816000015163ffffffff161015610d6657819350610d6d565b6001820392505b5050610c27565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60056020528060005260406000206000915090505481565b6040518060400160405280600381526020017f504e47000000000000000000000000000000000000000000000000000000000081525081565b600080610e6e836040518060600160405280602581526020016133e760259139611784565b9050610e7b338583611853565b600191505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610ef0576000610f6c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b6000604051610f8290612dd4565b60405180910390206040518060400160405280600881526020017f50616e676f6c696e00000000000000000000000000000000000000000000000081525080519060200120610fcf611df4565b30604051602001610fe39493929190612ef5565b604051602081830303815290604052805190602001209050600060405161100990612de9565b60405180910390208888886040516020016110279493929190612eb0565b60405160208183030381529060405280519060200120905060008282604051602001611054929190612d88565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516110919493929190612f3a565b6020604051602081039080840390855afa1580156110b3573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112690612fe3565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505589146111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b5906130c3565b60405180910390fd5b87421115611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f8906130a3565b60405180910390fd5b61120b818b611c34565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611269577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061128e565b61128b8660405180606001604052806023815260200161346760239139611784565b90505b600060405161129c90612dd4565b60405180910390206040518060400160405280600881526020017f50616e676f6c696e000000000000000000000000000000000000000000000000815250805190602001206112e9611df4565b306040516020016112fd9493929190612ef5565b604051602081830303815290604052805190602001209050600060405161132390612dbf565b60405180910390208a8a8a600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b60405160200161139296959493929190612e4f565b604051602081830303815290604052805190602001209050600082826040516020016113bf929190612d88565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113fc9493929190612f3a565b6020604051602081039080840390855afa15801561141e573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612fc3565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613063565b60405180910390fd5b8842111561154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290613083565b60405180910390fd5b846000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611652919061315d565b60405180910390a3505050505050505050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b60405161172090612de9565b604051809103902081565b6003602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b60006c01000000000000000000000000831082906117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf9190612fa1565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d9190612fa1565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90613003565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613023565b60405180910390fd5b6119ad600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806035815260200161340c603591396117e2565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611a94600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280602f8152602001613385602f9139611e01565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b5e919061315d565b60405180910390a3611c2f600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e77565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611dee828483611e77565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e629190612fa1565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ec157506000816bffffffffffffffffffffffff16115b1561216d57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612019576000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f64576000611fe0565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061200782856040518060600160405280602781526020016134ae602791396117e2565b905061201586848484612172565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461216c576000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116120b7576000612133565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061215a828560405180606001604052806026815260200161344160269139611e01565b905061216885848484612172565b5050505b5b505050565b6000612196436040518060600160405280603381526020016133b460339139612465565b905060008463ffffffff1611801561222b57508063ffffffff16600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156122c65781600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061240e565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612456929190613193565b60405180910390a25050505050565b6000640100000000831082906124b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a89190612fa1565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000813590506124f8816132d5565b92915050565b60008135905061250d816132ec565b92915050565b60008135905061252281613303565b92915050565b6000813590506125378161331a565b92915050565b60008135905061254c81613331565b92915050565b60006020828403121561256457600080fd5b6000612572848285016124e9565b91505092915050565b6000806040838503121561258e57600080fd5b600061259c858286016124e9565b92505060206125ad858286016124e9565b9150509250929050565b6000806000606084860312156125cc57600080fd5b60006125da868287016124e9565b93505060206125eb868287016124e9565b92505060406125fc86828701612513565b9150509250925092565b600080600080600080600060e0888a03121561262157600080fd5b600061262f8a828b016124e9565b97505060206126408a828b016124e9565b96505060406126518a828b01612513565b95505060606126628a828b01612513565b94505060806126738a828b0161253d565b93505060a06126848a828b016124fe565b92505060c06126958a828b016124fe565b91505092959891949750929550565b600080604083850312156126b757600080fd5b60006126c5858286016124e9565b92505060206126d685828601612513565b9150509250929050565b60008060008060008060c087890312156126f957600080fd5b600061270789828a016124e9565b965050602061271889828a01612513565b955050604061272989828a01612513565b945050606061273a89828a0161253d565b935050608061274b89828a016124fe565b92505060a061275c89828a016124fe565b9150509295509295509295565b6000806040838503121561277c57600080fd5b600061278a858286016124e9565b925050602061279b85828601612528565b9150509250929050565b6127ae816131ee565b82525050565b6127bd81613200565b82525050565b6127cc8161320c565b82525050565b6127e36127de8261320c565b6132ba565b82525050565b60006127f4826131c7565b6127fe81856131d2565b935061280e818560208601613287565b612817816132c4565b840191505092915050565b600061282d826131bc565b61283781856131d2565b9350612847818560208601613287565b612850816132c4565b840191505092915050565b6000612868601e836131d2565b91507f506e673a3a7065726d69743a20696e76616c6964207369676e617475726500006000830152602082019050919050565b60006128a86025836131d2565b91507f506e673a3a64656c656761746542795369673a20696e76616c6964207369676e60008301527f61747572650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061290e603b836131d2565b91507f506e673a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160008301527f6e736665722066726f6d20746865207a65726f206164647265737300000000006020830152604082019050919050565b60006129746002836131e3565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006129b46039836131d2565b91507f506e673a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160008301527f6e7366657220746f20746865207a65726f2061646472657373000000000000006020830152604082019050919050565b6000612a1a6052836131e3565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b6000612aa66043836131e3565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000612b326026836131d2565b91507f506e673a3a6765745072696f72566f7465733a206e6f7420796574206465746560008301527f726d696e656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b986019836131d2565b91507f506e673a3a7065726d69743a20756e617574686f72697a6564000000000000006000830152602082019050919050565b6000612bd8601e836131d2565b91507f506e673a3a7065726d69743a207369676e6174757265206578706972656400006000830152602082019050919050565b6000612c186025836131d2565b91507f506e673a3a64656c656761746542795369673a207369676e617475726520657860008301527f70697265640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c7e603a836131e3565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6000612ce46021836131d2565b91507f506e673a3a64656c656761746542795369673a20696e76616c6964206e6f6e6360008301527f65000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b612d4681613236565b82525050565b612d5581613240565b82525050565b612d6481613250565b82525050565b612d7381613275565b82525050565b612d828161325d565b82525050565b6000612d9382612967565b9150612d9f82856127d2565b602082019150612daf82846127d2565b6020820191508190509392505050565b6000612dca82612a0d565b9150819050919050565b6000612ddf82612a99565b9150819050919050565b6000612df482612c71565b9150819050919050565b6000602082019050612e1360008301846127a5565b92915050565b6000602082019050612e2e60008301846127b4565b92915050565b6000602082019050612e4960008301846127c3565b92915050565b600060c082019050612e6460008301896127c3565b612e7160208301886127a5565b612e7e60408301876127a5565b612e8b6060830186612d3d565b612e986080830185612d3d565b612ea560a0830184612d3d565b979650505050505050565b6000608082019050612ec560008301876127c3565b612ed260208301866127a5565b612edf6040830185612d3d565b612eec6060830184612d3d565b95945050505050565b6000608082019050612f0a60008301876127c3565b612f1760208301866127c3565b612f246040830185612d3d565b612f3160608301846127a5565b95945050505050565b6000608082019050612f4f60008301876127c3565b612f5c6020830186612d5b565b612f6960408301856127c3565b612f7660608301846127c3565b95945050505050565b60006020820190508181036000830152612f998184612822565b905092915050565b60006020820190508181036000830152612fbb81846127e9565b905092915050565b60006020820190508181036000830152612fdc8161285b565b9050919050565b60006020820190508181036000830152612ffc8161289b565b9050919050565b6000602082019050818103600083015261301c81612901565b9050919050565b6000602082019050818103600083015261303c816129a7565b9050919050565b6000602082019050818103600083015261305c81612b25565b9050919050565b6000602082019050818103600083015261307c81612b8b565b9050919050565b6000602082019050818103600083015261309c81612bcb565b9050919050565b600060208201905081810360008301526130bc81612c0b565b9050919050565b600060208201905081810360008301526130dc81612cd7565b9050919050565b60006020820190506130f86000830184612d3d565b92915050565b60006020820190506131136000830184612d4c565b92915050565b600060408201905061312e6000830185612d4c565b61313b6020830184612d79565b9392505050565b60006020820190506131576000830184612d5b565b92915050565b60006020820190506131726000830184612d6a565b92915050565b600060208201905061318d6000830184612d79565b92915050565b60006040820190506131a86000830185612d6a565b6131b56020830184612d6a565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006131f982613216565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b60006132808261325d565b9050919050565b60005b838110156132a557808201518184015260208101905061328a565b838111156132b4576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b6132de816131ee565b81146132e957600080fd5b50565b6132f58161320c565b811461330057600080fd5b50565b61330c81613236565b811461331757600080fd5b50565b61332381613240565b811461332e57600080fd5b50565b61333a81613250565b811461334557600080fd5b5056fe506e673a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365506e673a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773506e673a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473506e673a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473506e673a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365506e673a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773506e673a3a7065726d69743a20616d6f756e7420657863656564732039362062697473506e673a3a617070726f76653a20616d6f756e7420657863656564732039362062697473506e673a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773a365627a7a723158208efd38d5f0da9eeff21dabcbcd0a3a4cb25408a0626bf2f9e0b5c1bf49afbc096c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000808ce8dec9e10bed8d0892aceef9f1b8ec2f52bd

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

000000000000000000000000808ce8dec9e10bed8d0892aceef9f1b8ec2f52bd

-----Decoded View---------------
Arg [0] : account (address): 0x808ce8dec9e10bed8d0892aceef9f1b8ec2f52bd

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000808ce8dec9e10bed8d0892aceef9f1b8ec2f52bd


Deployed ByteCode Sourcemap

6792:14584:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6792:14584:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6862:40;;;:::i;:::-;;;;;;;;;;;;;;;;10632:418;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7162:49;;;:::i;:::-;;;;;;;;;;;;;;;;8095:122;;;:::i;:::-;;;;;;;;;;;;;;;;13712:670;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8518:137;;;:::i;:::-;;;;;;;;;;;;;;;;7063:35;;;:::i;:::-;;;;;;;;;;;;;;;;7545:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14530:102;;;;;;;;;;;;;;;;:::i;:::-;;7973:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12793:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16706:1217;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8736:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6963:37;;;:::i;:::-;;;;;;;;;;;;;;;;13165:237;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16053:222;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15066:786;;;;;;;;;;;;;;;;:::i;:::-;;11540:1050;;;;;;;;;;;;;;;;:::i;:::-;;10018:136;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8311:117;;;:::i;:::-;;;;;;;;;;;;;;;;7834:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6862:40;;;;;;;;;;;;;;;;;;;:::o;10632:418::-;10700:4;10717:13;10763:2;10745:9;:21;10741:172;;;10799:2;10783:19;;10741:172;;;10844:57;10851:9;10844:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;10835:66;;10741:172;10959:6;10925:10;:22;10936:10;10925:22;;;;;;;;;;;;;;;:31;10948:7;10925:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;11004:7;10983:37;;10992:10;10983:37;;;11013:6;10983:37;;;;;;;;;;;;;;;11038:4;11031:11;;;10632:418;;;;:::o;7162:49::-;7197:14;7162:49;:::o;8095:122::-;8137:80;;;;;;;;;;;;;;8095:122;:::o;13712:670::-;13794:4;13811:15;13829:10;13811:28;;13850:23;13876:10;:15;13887:3;13876:15;;;;;;;;;;;;;;;:24;13892:7;13876:24;;;;;;;;;;;;;;;;;;;;;;;;;13850:50;;13911:13;13927:57;13934:9;13927:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;13911:73;;14012:3;14001:14;;:7;:14;;;;:48;;;;;14046:2;14019:30;;:16;:30;;;;14001:48;13997:310;;;14066:19;14088:95;14094:16;14112:6;14088:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;14066:117;;14225:12;14198:10;:15;14209:3;14198:15;;;;;;;;;;;;;;;:24;14214:7;14198:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14273:7;14259:36;;14268:3;14259:36;;;14282:12;14259:36;;;;;;;;;;;;;;;13997:310;;14319:33;14335:3;14340;14345:6;14319:15;:33::i;:::-;14370:4;14363:11;;;;;13712:670;;;;;:::o;8518:137::-;8560:95;;;;;;;;;;;;;;8518:137;:::o;7063:35::-;7096:2;7063:35;:::o;7545:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14530:102::-;14592:32;14602:10;14614:9;14592;:32::i;:::-;14530:102;:::o;7973:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12793:108::-;12852:4;12876:8;:17;12885:7;12876:17;;;;;;;;;;;;;;;;;;;;;;;;;12869:24;;;;12793:108;;;:::o;16706:1217::-;16785:6;16826:12;16812:11;:26;16804:77;;;;;;;;;;;;;;;;;;;;;;16894:19;16916:14;:23;16931:7;16916:23;;;;;;;;;;;;;;;;;;;;;;;;;16894:45;;16970:1;16954:12;:17;;;16950:58;;;16995:1;16988:8;;;;;16950:58;17120:11;17068;:20;17080:7;17068:20;;;;;;;;;;;;;;;:38;17104:1;17089:12;:16;17068:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;17064:147;;17155:11;:20;17167:7;17155:20;;;;;;;;;;;;;;;:38;17191:1;17176:12;:16;17155:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;17148:51;;;;;17064:147;17308:11;17272;:20;17284:7;17272:20;;;;;;;;;;;;;;;:23;17293:1;17272:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;17268:88;;;17343:1;17336:8;;;;;17268:88;17368:12;17383:1;17368:16;;17395:12;17425:1;17410:12;:16;17395:31;;17437:428;17452:5;17444:13;;:5;:13;;;17437:428;;;17474:13;17516:1;17507:5;17499;:13;17498:19;;;;;;;;17490:5;:27;17474:43;;17559:20;;:::i;:::-;17582:11;:20;17594:7;17582:20;;;;;;;;;;;;;;;:28;17603:6;17582:28;;;;;;;;;;;;;;;17559:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17645:11;17629:2;:12;;;:27;;;17625:229;;;17684:2;:8;;;17677:15;;;;;;;;;17625:229;17733:11;17718:2;:12;;;:26;;;17714:140;;;17773:6;17765:14;;17714:140;;;17837:1;17828:6;:10;17820:18;;17714:140;17437:428;;;;;17882:11;:20;17894:7;17882:20;;;;;;;;;;;;;;;:27;17903:5;17882:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;17875:40;;;;;16706:1217;;;;;:::o;8736:39::-;;;;;;;;;;;;;;;;;:::o;6963:37::-;;;;;;;;;;;;;;;;;;;:::o;13165:237::-;13230:4;13247:13;13263:58;13270:9;13263:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;13247:74;;13332:40;13348:10;13360:3;13365:6;13332:15;:40::i;:::-;13390:4;13383:11;;;13165:237;;;;:::o;16053:222::-;16118:6;16137:19;16159:14;:23;16174:7;16159:23;;;;;;;;;;;;;;;;;;;;;;;;;16137:45;;16215:1;16200:12;:16;;;:67;;16266:1;16200:67;;;16219:11;:20;16231:7;16219:20;;;;;;;;;;;;;;;:38;16255:1;16240:12;:16;16219:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;16200:67;16193:74;;;16053:222;;;:::o;15066:786::-;15182:23;8137:80;;;;;;;;;;;;;;15262:4;;;;;;;;;;;;;;;;;15246:22;;;;;;15270:12;:10;:12::i;:::-;15292:4;15218:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15218:80:0;;;15208:91;;;;;;15182:117;;15310:18;8357:71;;;;;;;;;;;;;;15373:9;15384:5;15391:6;15341:57;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15341:57:0;;;15331:68;;;;;;15310:89;;15410:14;15466:15;15483:10;15437:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15437:57:0;;;15427:68;;;;;;15410:85;;15506:17;15526:26;15536:6;15544:1;15547;15550;15526:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15526:26:0;;;;;;;;15506:46;;15592:1;15571:23;;:9;:23;;;;15563:73;;;;;;;;;;;;;;;;;;;;;;15664:6;:17;15671:9;15664:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;15655:5;:28;15647:74;;;;;;;;;;;;;;;;;;;;;;15747:6;15740:3;:13;;15732:63;;;;;;;;;;;;;;;;;;;;;;15813:31;15823:9;15834;15813;:31::i;:::-;15806:38;;;;15066:786;;;;;;:::o;11540:1050::-;11670:13;11716:2;11698:9;:21;11694:171;;;11752:2;11736:19;;11694:171;;;11797:56;11804:9;11797:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;11788:65;;11694:171;11877:23;8137:80;;;;;;;;;;;;;;11957:4;;;;;;;;;;;;;;;;;11941:22;;;;;;11965:12;:10;:12::i;:::-;11987:4;11913:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11913:80:0;;;11903:91;;;;;;11877:117;;12005:18;8560:95;;;;;;;;;;;;;;12064:5;12071:7;12080:9;12091:6;:13;12098:5;12091:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;12108:8;12036:81;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12036:81:0;;;12026:92;;;;;;12005:113;;12129:14;12185:15;12202:10;12156:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12156:57:0;;;12146:68;;;;;;12129:85;;12225:17;12245:26;12255:6;12263:1;12266;12269;12245:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12245:26:0;;;;;;;;12225:46;;12311:1;12290:23;;:9;:23;;;;12282:66;;;;;;;;;;;;;;;;;;;;;;12380:5;12367:18;;:9;:18;;;12359:56;;;;;;;;;;;;;;;;;;;;;;12441:8;12434:3;:15;;12426:58;;;;;;;;;;;;;;;;;;;;;;12526:6;12497:10;:17;12508:5;12497:17;;;;;;;;;;;;;;;:26;12515:7;12497:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12566:7;12550:32;;12559:5;12550:32;;;12575:6;12550:32;;;;;;;;;;;;;;;11540:1050;;;;;;;;;;;;:::o;10018:136::-;10094:4;10118:10;:19;10129:7;10118:19;;;;;;;;;;;;;;;:28;10138:7;10118:28;;;;;;;;;;;;;;;;;;;;;;;;;10111:35;;;;10018:136;;;;:::o;8311:117::-;8357:71;;;;;;;;;;;;;;8311:117;:::o;7834:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20682:161::-;20757:6;20788:5;20784:1;:9;20795:12;20776:32;;;;;;;;;;;;;;;;;;;;;;;;;20833:1;20819:16;;20682:161;;;;:::o;21047:165::-;21133:6;21165:1;21160:6;;:1;:6;;;;21168:12;21152:29;;;;;;;;;;;;;;;;;;;;;;;;;21203:1;21199;:5;21192:12;;21047:165;;;;;:::o;18314:610::-;18423:1;18408:17;;:3;:17;;;;18400:89;;;;;;;;;;;;;;;;;;;;;;18523:1;18508:17;;:3;:17;;;;18500:87;;;;;;;;;;;;;;;;;;;;;;18616:85;18622:8;:13;18631:3;18622:13;;;;;;;;;;;;;;;;;;;;;;;;;18637:6;18616:85;;;;;;;;;;;;;;;;;:5;:85::i;:::-;18600:8;:13;18609:3;18600:13;;;;;;;;;;;;;;;;:101;;;;;;;;;;;;;;;;;;18728:79;18734:8;:13;18743:3;18734:13;;;;;;;;;;;;;;;;;;;;;;;;;18749:6;18728:79;;;;;;;;;;;;;;;;;:5;:79::i;:::-;18712:8;:13;18721:3;18712:13;;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;18837:3;18823:26;;18832:3;18823:26;;;18842:6;18823:26;;;;;;;;;;;;;;;18862:54;18877:9;:14;18887:3;18877:14;;;;;;;;;;;;;;;;;;;;;;;;;18893:9;:14;18903:3;18893:14;;;;;;;;;;;;;;;;;;;;;;;;;18909:6;18862:14;:54::i;:::-;18314:610;;;:::o;17931:375::-;18008:23;18034:9;:20;18044:9;18034:20;;;;;;;;;;;;;;;;;;;;;;;;;18008:46;;18065:23;18091:8;:19;18100:9;18091:19;;;;;;;;;;;;;;;;;;;;;;;;;18065:45;;18144:9;18121;:20;18131:9;18121:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18215:9;18171:54;;18198:15;18171:54;;18187:9;18171:54;;;;;;;;;;;;18238:60;18253:15;18270:9;18281:16;18238:14;:60::i;:::-;17931:375;;;;:::o;21220:153::-;21265:4;21282:15;21330:9;21319:20;;21358:7;21351:14;;;21220:153;:::o;20851:188::-;20937:6;20956:8;20971:1;20967;:5;20956:16;;20996:1;20991:6;;:1;:6;;;;20999:12;20983:29;;;;;;;;;;;;;;;;;;;;;;;;;21030:1;21023:8;;;20851:188;;;;;:::o;18932:937::-;19037:6;19027:16;;:6;:16;;;;:30;;;;;19056:1;19047:6;:10;;;19027:30;19023:839;;;19096:1;19078:20;;:6;:20;;;19074:381;;19119:16;19138:14;:22;19153:6;19138:22;;;;;;;;;;;;;;;;;;;;;;;;;19119:41;;19179:16;19210:1;19198:9;:13;;;:60;;19257:1;19198:60;;;19214:11;:19;19226:6;19214:19;;;;;;;;;;;;;;;:34;19246:1;19234:9;:13;19214:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;19198:60;19179:79;;19277:16;19296:67;19302:9;19313:6;19296:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;19277:86;;19382:57;19399:6;19407:9;19418;19429;19382:16;:57::i;:::-;19074:381;;;;19493:1;19475:20;;:6;:20;;;19471:380;;19516:16;19535:14;:22;19550:6;19535:22;;;;;;;;;;;;;;;;;;;;;;;;;19516:41;;19576:16;19607:1;19595:9;:13;;;:60;;19654:1;19595:60;;;19611:11;:19;19623:6;19611:19;;;;;;;;;;;;;;;:34;19643:1;19631:9;:13;19611:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;19595:60;19576:79;;19674:16;19693:66;19699:9;19710:6;19693:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;19674:85;;19778:57;19795:6;19803:9;19814;19825;19778:16;:57::i;:::-;19471:380;;;;19023:839;18932:937;;;:::o;19877:628::-;19995:18;20016:75;20023:12;20016:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;19995:96;;20121:1;20106:12;:16;;;:85;;;;;20180:11;20126:65;;:11;:22;20138:9;20126:22;;;;;;;;;;;;;;;:40;20164:1;20149:12;:16;20126:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20106:85;20102:329;;;20255:8;20206:11;:22;20218:9;20206:22;;;;;;;;;;;;;;;:40;20244:1;20229:12;:16;20206:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;20102:329;;;20331:33;;;;;;;;20342:11;20331:33;;;;;;20355:8;20331:33;;;;;20292:11;:22;20304:9;20292:22;;;;;;;;;;;;;;;:36;20315:12;20292:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20420:1;20405:12;:16;20377:14;:25;20392:9;20377:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20102:329;20467:9;20446:51;;;20478:8;20488;20446:51;;;;;;;;;;;;;;;;19877:628;;;;;:::o;20513:161::-;20588:6;20619:5;20615:1;:9;20626:12;20607:32;;;;;;;;;;;;;;;;;;;;;;;;;20664:1;20650:16;;20513:161;;;;:::o;6792:14584::-;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:130;;222:6;209:20;200:29;;234:33;261:5;234:33;;;194:78;;;;;279:130;;359:6;346:20;337:29;;371:33;398:5;371:33;;;331:78;;;;;416:128;;495:6;482:20;473:29;;507:32;533:5;507:32;;;467:77;;;;;551:126;;629:6;616:20;607:29;;641:31;666:5;641:31;;;601:76;;;;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;892:6;881:9;877:22;856:53;;;846:63;;818:97;750:175;;;;;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1157:6;1146:9;1142:22;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1547:6;1536:9;1532:22;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2112:6;2101:9;2097:22;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3026:6;3015:9;3011:22;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;;3088:63;;3059:98;2884:283;;;;;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3466:6;3455:9;3451:22;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4270:6;4259:9;4255:22;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;;4332:62;;4303:97;4128:282;;;;;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;;4609:3;4602:34;4596:45;;;4648:113;4731:24;4749:5;4731:24;;;4726:3;4719:37;4713:48;;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;;4864:3;4857:58;4851:69;;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5234:3;5230:39;5223:46;;5019:255;;;;;;5281:339;;5389:35;5418:5;5389:35;;;5436:71;5500:6;5495:3;5436:71;;;5429:78;;5512:52;5557:6;5552:3;5545:4;5538:5;5534:16;5512:52;;;5585:29;5607:6;5585:29;;;5580:3;5576:39;5569:46;;5369:251;;;;;;5628:330;;5788:67;5852:2;5847:3;5788:67;;;5781:74;;5888:32;5884:1;5879:3;5875:11;5868:53;5949:2;5944:3;5940:12;5933:19;;5774:184;;;;5967:374;;6127:67;6191:2;6186:3;6127:67;;;6120:74;;6227:34;6223:1;6218:3;6214:11;6207:55;6296:7;6291:2;6286:3;6282:12;6275:29;6332:2;6327:3;6323:12;6316:19;;6113:228;;;;6350:396;;6510:67;6574:2;6569:3;6510:67;;;6503:74;;6610:34;6606:1;6601:3;6597:11;6590:55;6679:29;6674:2;6669:3;6665:12;6658:51;6737:2;6732:3;6728:12;6721:19;;6496:250;;;;6755:398;;6933:84;7015:1;7010:3;6933:84;;;6926:91;;7050:66;7046:1;7041:3;7037:11;7030:87;7145:1;7140:3;7136:11;7129:18;;6919:234;;;;7162:394;;7322:67;7386:2;7381:3;7322:67;;;7315:74;;7422:34;7418:1;7413:3;7409:11;7402:55;7491:27;7486:2;7481:3;7477:12;7470:49;7547:2;7542:3;7538:12;7531:19;;7308:248;;;;7565:492;;7743:85;7825:2;7820:3;7743:85;;;7736:92;;7861:34;7857:1;7852:3;7848:11;7841:55;7930:34;7925:2;7920:3;7916:12;7909:56;7999:20;7994:2;7989:3;7985:12;7978:42;8048:2;8043:3;8039:12;8032:19;;7729:328;;;;8066:477;;8244:85;8326:2;8321:3;8244:85;;;8237:92;;8362:34;8358:1;8353:3;8349:11;8342:55;8431:34;8426:2;8421:3;8417:12;8410:56;8500:5;8495:2;8490:3;8486:12;8479:27;8534:2;8529:3;8525:12;8518:19;;8230:313;;;;8552:375;;8712:67;8776:2;8771:3;8712:67;;;8705:74;;8812:34;8808:1;8803:3;8799:11;8792:55;8881:8;8876:2;8871:3;8867:12;8860:30;8918:2;8913:3;8909:12;8902:19;;8698:229;;;;8936:325;;9096:67;9160:2;9155:3;9096:67;;;9089:74;;9196:27;9192:1;9187:3;9183:11;9176:48;9252:2;9247:3;9243:12;9236:19;;9082:179;;;;9270:330;;9430:67;9494:2;9489:3;9430:67;;;9423:74;;9530:32;9526:1;9521:3;9517:11;9510:53;9591:2;9586:3;9582:12;9575:19;;9416:184;;;;9609:374;;9769:67;9833:2;9828:3;9769:67;;;9762:74;;9869:34;9865:1;9860:3;9856:11;9849:55;9938:7;9933:2;9928:3;9924:12;9917:29;9974:2;9969:3;9965:12;9958:19;;9755:228;;;;9992:431;;10170:85;10252:2;10247:3;10170:85;;;10163:92;;10288:34;10284:1;10279:3;10275:11;10268:55;10357:28;10352:2;10347:3;10343:12;10336:50;10414:2;10409:3;10405:12;10398:19;;10156:267;;;;10432:370;;10592:67;10656:2;10651:3;10592:67;;;10585:74;;10692:34;10688:1;10683:3;10679:11;10672:55;10761:3;10756:2;10751:3;10747:12;10740:25;10793:2;10788:3;10784:12;10777:19;;10578:224;;;;10810:113;10893:24;10911:5;10893:24;;;10888:3;10881:37;10875:48;;;10930:110;11011:23;11028:5;11011:23;;;11006:3;10999:36;10993:47;;;11047:107;11126:22;11142:5;11126:22;;;11121:3;11114:35;11108:46;;;11161:124;11243:36;11273:5;11243:36;;;11238:3;11231:49;11225:60;;;11292:110;11373:23;11390:5;11373:23;;;11368:3;11361:36;11355:47;;;11409:650;;11664:148;11808:3;11664:148;;;11657:155;;11823:75;11894:3;11885:6;11823:75;;;11920:2;11915:3;11911:12;11904:19;;11934:75;12005:3;11996:6;11934:75;;;12031:2;12026:3;12022:12;12015:19;;12051:3;12044:10;;11645:414;;;;;;12066:372;;12265:148;12409:3;12265:148;;;12258:155;;12430:3;12423:10;;12246:192;;;;12445:372;;12644:148;12788:3;12644:148;;;12637:155;;12809:3;12802:10;;12625:192;;;;12824:372;;13023:148;13167:3;13023:148;;;13016:155;;13188:3;13181:10;;13004:192;;;;13203:213;;13321:2;13310:9;13306:18;13298:26;;13335:71;13403:1;13392:9;13388:17;13379:6;13335:71;;;13292:124;;;;;13423:201;;13535:2;13524:9;13520:18;13512:26;;13549:65;13611:1;13600:9;13596:17;13587:6;13549:65;;;13506:118;;;;;13631:213;;13749:2;13738:9;13734:18;13726:26;;13763:71;13831:1;13820:9;13816:17;13807:6;13763:71;;;13720:124;;;;;13851:771;;14109:3;14098:9;14094:19;14086:27;;14124:71;14192:1;14181:9;14177:17;14168:6;14124:71;;;14206:72;14274:2;14263:9;14259:18;14250:6;14206:72;;;14289;14357:2;14346:9;14342:18;14333:6;14289:72;;;14372;14440:2;14429:9;14425:18;14416:6;14372:72;;;14455:73;14523:3;14512:9;14508:19;14499:6;14455:73;;;14539;14607:3;14596:9;14592:19;14583:6;14539:73;;;14080:542;;;;;;;;;;14629:547;;14831:3;14820:9;14816:19;14808:27;;14846:71;14914:1;14903:9;14899:17;14890:6;14846:71;;;14928:72;14996:2;14985:9;14981:18;14972:6;14928:72;;;15011;15079:2;15068:9;15064:18;15055:6;15011:72;;;15094;15162:2;15151:9;15147:18;15138:6;15094:72;;;14802:374;;;;;;;;15183:547;;15385:3;15374:9;15370:19;15362:27;;15400:71;15468:1;15457:9;15453:17;15444:6;15400:71;;;15482:72;15550:2;15539:9;15535:18;15526:6;15482:72;;;15565;15633:2;15622:9;15618:18;15609:6;15565:72;;;15648;15716:2;15705:9;15701:18;15692:6;15648:72;;;15356:374;;;;;;;;15737:539;;15935:3;15924:9;15920:19;15912:27;;15950:71;16018:1;16007:9;16003:17;15994:6;15950:71;;;16032:68;16096:2;16085:9;16081:18;16072:6;16032:68;;;16111:72;16179:2;16168:9;16164:18;16155:6;16111:72;;;16194;16262:2;16251:9;16247:18;16238:6;16194:72;;;15906:370;;;;;;;;16283:293;;16417:2;16406:9;16402:18;16394:26;;16467:9;16461:4;16457:20;16453:1;16442:9;16438:17;16431:47;16492:74;16561:4;16552:6;16492:74;;;16484:82;;16388:188;;;;;16583:301;;16721:2;16710:9;16706:18;16698:26;;16771:9;16765:4;16761:20;16757:1;16746:9;16742:17;16735:47;16796:78;16869:4;16860:6;16796:78;;;16788:86;;16692:192;;;;;16891:407;;17082:2;17071:9;17067:18;17059:26;;17132:9;17126:4;17122:20;17118:1;17107:9;17103:17;17096:47;17157:131;17283:4;17157:131;;;17149:139;;17053:245;;;;17305:407;;17496:2;17485:9;17481:18;17473:26;;17546:9;17540:4;17536:20;17532:1;17521:9;17517:17;17510:47;17571:131;17697:4;17571:131;;;17563:139;;17467:245;;;;17719:407;;17910:2;17899:9;17895:18;17887:26;;17960:9;17954:4;17950:20;17946:1;17935:9;17931:17;17924:47;17985:131;18111:4;17985:131;;;17977:139;;17881:245;;;;18133:407;;18324:2;18313:9;18309:18;18301:26;;18374:9;18368:4;18364:20;18360:1;18349:9;18345:17;18338:47;18399:131;18525:4;18399:131;;;18391:139;;18295:245;;;;18547:407;;18738:2;18727:9;18723:18;18715:26;;18788:9;18782:4;18778:20;18774:1;18763:9;18759:17;18752:47;18813:131;18939:4;18813:131;;;18805:139;;18709:245;;;;18961:407;;19152:2;19141:9;19137:18;19129:26;;19202:9;19196:4;19192:20;19188:1;19177:9;19173:17;19166:47;19227:131;19353:4;19227:131;;;19219:139;;19123:245;;;;19375:407;;19566:2;19555:9;19551:18;19543:26;;19616:9;19610:4;19606:20;19602:1;19591:9;19587:17;19580:47;19641:131;19767:4;19641:131;;;19633:139;;19537:245;;;;19789:407;;19980:2;19969:9;19965:18;19957:26;;20030:9;20024:4;20020:20;20016:1;20005:9;20001:17;19994:47;20055:131;20181:4;20055:131;;;20047:139;;19951:245;;;;20203:407;;20394:2;20383:9;20379:18;20371:26;;20444:9;20438:4;20434:20;20430:1;20419:9;20415:17;20408:47;20469:131;20595:4;20469:131;;;20461:139;;20365:245;;;;20617:213;;20735:2;20724:9;20720:18;20712:26;;20749:71;20817:1;20806:9;20802:17;20793:6;20749:71;;;20706:124;;;;;20837:209;;20953:2;20942:9;20938:18;20930:26;;20967:69;21033:1;21022:9;21018:17;21009:6;20967:69;;;20924:122;;;;;21053:316;;21195:2;21184:9;21180:18;21172:26;;21209:69;21275:1;21264:9;21260:17;21251:6;21209:69;;;21289:70;21355:2;21344:9;21340:18;21331:6;21289:70;;;21166:203;;;;;;21376:205;;21490:2;21479:9;21475:18;21467:26;;21504:67;21568:1;21557:9;21553:17;21544:6;21504:67;;;21461:120;;;;;21588:211;;21705:2;21694:9;21690:18;21682:26;;21719:70;21786:1;21775:9;21771:17;21762:6;21719:70;;;21676:123;;;;;21806:209;;21922:2;21911:9;21907:18;21899:26;;21936:69;22002:1;21991:9;21987:17;21978:6;21936:69;;;21893:122;;;;;22022:320;;22166:2;22155:9;22151:18;22143:26;;22180:70;22247:1;22236:9;22232:17;22223:6;22180:70;;;22261:71;22328:2;22317:9;22313:18;22304:6;22261:71;;;22137:205;;;;;;22349:118;;22439:5;22433:12;22423:22;;22404:63;;;;22474:122;;22568:5;22562:12;22552:22;;22533:63;;;;22604:163;;22719:6;22714:3;22707:19;22756:4;22751:3;22747:14;22732:29;;22700:67;;;;;22776:145;;22912:3;22897:18;;22890:31;;;;;22929:91;;22991:24;23009:5;22991:24;;;22980:35;;22974:46;;;;23027:85;;23100:5;23093:13;23086:21;23075:32;;23069:43;;;;23119:72;;23181:5;23170:16;;23164:27;;;;23198:121;;23271:42;23264:5;23260:54;23249:65;;23243:76;;;;23326:72;;23388:5;23377:16;;23371:27;;;;23405:88;;23477:10;23470:5;23466:22;23455:33;;23449:44;;;;23500:81;;23571:4;23564:5;23560:16;23549:27;;23543:38;;;;23588:104;;23660:26;23653:5;23649:38;23638:49;;23632:60;;;;23699:106;;23777:23;23794:5;23777:23;;;23764:36;;23758:47;;;;23813:268;23878:1;23885:101;23899:6;23896:1;23893:13;23885:101;;;23975:1;23970:3;23966:11;23960:18;23956:1;23951:3;23947:11;23940:39;23921:2;23918:1;23914:10;23909:15;;23885:101;;;24001:6;23998:1;23995:13;23992:2;;;24066:1;24057:6;24052:3;24048:16;24041:27;23992:2;23862:219;;;;;24089:74;;24153:5;24142:16;;24136:27;;;;24170:97;;24258:2;24254:7;24249:2;24242:5;24238:14;24234:28;24224:38;;24218:49;;;;24275:117;24344:24;24362:5;24344:24;;;24337:5;24334:35;24324:2;;24383:1;24380;24373:12;24324:2;24318:74;;24399:117;24468:24;24486:5;24468:24;;;24461:5;24458:35;24448:2;;24507:1;24504;24497:12;24448:2;24442:74;;24523:117;24592:24;24610:5;24592:24;;;24585:5;24582:35;24572:2;;24631:1;24628;24621:12;24572:2;24566:74;;24647:115;24715:23;24732:5;24715:23;;;24708:5;24705:34;24695:2;;24753:1;24750;24743:12;24695:2;24689:73;;24769:113;24836:22;24852:5;24836:22;;;24829:5;24826:33;24816:2;;24873:1;24870;24863:12;24816:2;24810:72;

Swarm Source

bzzr://8efd38d5f0da9eeff21dabcbcd0a3a4cb25408a0626bf2f9e0b5c1bf49afbc09
Loading