ETH Price: $3,409.39 (+2.94%)

Token

KASA OBAKE (OBAKE)
 

Overview

Max Total Supply

1,000,000,000 OBAKE

Holders

131

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
tpv-tech.eth
Balance
415,920.839751487997149248 OBAKE

Value
$0.00
0x70010c3e2d8b3795cee1a90dbdfcce4477716df0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CoinToken

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-22
*/

/**

Kasa Obake  -   $OBAKE  - ERC20  |  

Telegram : https://t.me/kasaobake

Twitter : https://twitter.com/kasaobakee/

Medium :  https://medium.com/@kasa-obake


Kasa Obake is the next generation decentralized micro fundraising development platform. The Obake application, with its umbrella structure, provides a convenient platform for small groups to develop funds and invest in different projects.

Token Supply
1,000,000,000 tokens

Liquidity (buy and sell) - 1%
Development - 1%
Marketing - 1%
Charity - 1%

Final tax buy/sell - 4/4%

*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.9;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract CoinToken is ERC20, Ownable, Pausable {

    // CONFIG START
    
    uint256 private initialSupply;
   
    uint256 private denominator = 100;

    uint256 private swapThreshold = 0.0000005 ether; // The contract will only swap to ETH, once the fee tokens reach the specified threshold
    
    uint256 private devTaxBuy;
    uint256 private marketingTaxBuy;
    uint256 private liquidityTaxBuy;
    uint256 private charityTaxBuy;
    
    uint256 private devTaxSell;
    uint256 private marketingTaxSell;
    uint256 private liquidityTaxSell;
    uint256 private charityTaxSell;
    
    address private devTaxWallet;
    address private marketingTaxWallet;
    address private liquidityTaxWallet;
    address private charityTaxWallet;
    
    // CONFIG END
    
    mapping (address => bool) private blacklist;
    mapping (address => bool) private excludeList;
    
    mapping (string => uint256) private buyTaxes;
    mapping (string => uint256) private sellTaxes;
    mapping (string => address) private taxWallets;
    
    bool public taxStatus = true;
    
    IUniswapV2Router02 private uniswapV2Router02;
    IUniswapV2Factory private uniswapV2Factory;
    IUniswapV2Pair private uniswapV2Pair;
    
    constructor(string memory _tokenName,string memory _tokenSymbol,uint256 _supply,address[6] memory _addr,uint256[8] memory _value) ERC20(_tokenName, _tokenSymbol) payable
    {
        initialSupply =_supply * (10**18);
        _setOwner(_addr[5]);
        uniswapV2Router02 = IUniswapV2Router02(_addr[1]);
        uniswapV2Factory = IUniswapV2Factory(uniswapV2Router02.factory());
        uniswapV2Pair = IUniswapV2Pair(uniswapV2Factory.createPair(address(this), uniswapV2Router02.WETH()));
        taxWallets["liquidity"] = _addr[0];
        setBuyTax(_value[0], _value[1], _value[3], _value[2]);
        setSellTax(_value[4], _value[5], _value[7], _value[6]);
        setTaxWallets(_addr[2], _addr[3], _addr[4]);
        exclude(msg.sender);
        exclude(address(this));
        payable(_addr[0]).transfer(msg.value);
        _mint(msg.sender, initialSupply);
    }
    
    uint256 private marketingTokens;
    uint256 private devTokens;
    uint256 private liquidityTokens;
    uint256 private charityTokens;
    
    /**
     * @dev Calculates the tax, transfer it to the contract. If the user is selling, and the swap threshold is met, it executes the tax.
     */
    function handleTax(address from, address to, uint256 amount) private returns (uint256) {
        address[] memory sellPath = new address[](2);
        sellPath[0] = address(this);
        sellPath[1] = uniswapV2Router02.WETH();
        
        if(!isExcluded(from) && !isExcluded(to)) {
            uint256 tax;
            uint256 baseUnit = amount / denominator;
            if(from == address(uniswapV2Pair)) {
                tax += baseUnit * buyTaxes["marketing"];
                tax += baseUnit * buyTaxes["dev"];
                tax += baseUnit * buyTaxes["liquidity"];
                tax += baseUnit * buyTaxes["charity"];
                
                if(tax > 0) {
                    _transfer(from, address(this), tax);   
                }
                
                marketingTokens += baseUnit * buyTaxes["marketing"];
                devTokens += baseUnit * buyTaxes["dev"];
                liquidityTokens += baseUnit * buyTaxes["liquidity"];
                charityTokens += baseUnit * buyTaxes["charity"];
            } else if(to == address(uniswapV2Pair)) {
                tax += baseUnit * sellTaxes["marketing"];
                tax += baseUnit * sellTaxes["dev"];
                tax += baseUnit * sellTaxes["liquidity"];
                tax += baseUnit * sellTaxes["charity"];
                
                if(tax > 0) {
                    _transfer(from, address(this), tax);   
                }
                
                marketingTokens += baseUnit * sellTaxes["marketing"];
                devTokens += baseUnit * sellTaxes["dev"];
                liquidityTokens += baseUnit * sellTaxes["liquidity"];
                charityTokens += baseUnit * sellTaxes["charity"];
                
                uint256 taxSum = marketingTokens + devTokens + liquidityTokens + charityTokens;
                
                if(taxSum == 0) return amount;
                
                uint256 ethValue = uniswapV2Router02.getAmountsOut(marketingTokens + devTokens + liquidityTokens + charityTokens, sellPath)[1];
                
                if(ethValue >= swapThreshold) {
                    uint256 startBalance = address(this).balance;

                    uint256 toSell = marketingTokens + devTokens + liquidityTokens / 2 + charityTokens;
                    
                    _approve(address(this), address(uniswapV2Router02), toSell);
            
                    uniswapV2Router02.swapExactTokensForETH(
                        toSell,
                        0,
                        sellPath,
                        address(this),
                        block.timestamp
                    );
                    
                    uint256 ethGained = address(this).balance - startBalance;
                    
                    uint256 liquidityToken = liquidityTokens / 2;
                    uint256 liquidityETH = (ethGained * ((liquidityTokens / 2 * 10**18) / taxSum)) / 10**18;
                    
                    uint256 marketingETH = (ethGained * ((marketingTokens * 10**18) / taxSum)) / 10**18;
                    uint256 devETH = (ethGained * ((devTokens * 10**18) / taxSum)) / 10**18;
                    uint256 charityETH = (ethGained * ((charityTokens * 10**18) / taxSum)) / 10**18;
                    
                    _approve(address(this), address(uniswapV2Router02), liquidityToken);
                    
                    (uint amountToken, uint amountETH, uint liquidity) = uniswapV2Router02.addLiquidityETH{value: liquidityETH}(
                        address(this),
                        liquidityToken,
                        0,
                        0,
                        taxWallets["liquidity"],
                        block.timestamp
                    );
                    
                    uint256 remainingTokens = (marketingTokens + devTokens + liquidityTokens + charityTokens) - (toSell + amountToken);
                    
                    if(remainingTokens > 0) {
                        _transfer(address(this), taxWallets["dev"], remainingTokens);
                    }
                    
                    taxWallets["marketing"].call{value: marketingETH}("");
                    taxWallets["dev"].call{value: devETH}("");
                    taxWallets["charity"].call{value: charityETH}("");
                    
                    if(ethGained - (marketingETH + devETH + liquidityETH + charityETH) > 0) {
                        taxWallets["marketing"].call{value: ethGained - (marketingETH + devETH + liquidityETH + charityETH)}("");
                    }
                    
                    marketingTokens = 0;
                    devTokens = 0;
                    liquidityTokens = 0;
                    charityTokens = 0;
                }
                
            }
            
            amount -= tax;
        }
        
        return amount;
    }
    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override virtual {
        require(!paused(), "CoinToken: token transfer while paused");
        require(!isBlacklisted(msg.sender), "CoinToken: sender blacklisted");
        require(!isBlacklisted(recipient), "CoinToken: recipient blacklisted");
        require(!isBlacklisted(tx.origin), "CoinToken: sender blacklisted");
        
        if(taxStatus) {
            amount = handleTax(sender, recipient, amount);   
        }
        
        super._transfer(sender, recipient, amount);
    }
    
    /**
     * @dev Triggers the tax handling functionality
     */
    function triggerTax() public onlyOwner {
        handleTax(address(0), address(uniswapV2Pair), 0);
    }
    
    /**
     * @dev Pauses transfers on the token.
     */
    function pause() public onlyOwner {
        require(!paused(), "CoinToken: Contract is already paused");
        _pause();
    }

    /**
     * @dev Unpauses transfers on the token.
     */
    function unpause() public onlyOwner {
        require(paused(), "CoinToken: Contract is not paused");
        _unpause();
    }
    
    /**
     * @dev Burns tokens from caller address.
     */
    function burn(uint256 amount) public onlyOwner {
        _burn(msg.sender, amount);
    }
    
    /**
     * @dev Blacklists the specified account (Disables transfers to and from the account).
     */
    function enableBlacklist(address account) public onlyOwner {
        require(!blacklist[account], "CoinToken: Account is already blacklisted");
        blacklist[account] = true;
    }
    
    /**
     * @dev Remove the specified account from the blacklist.
     */
    function disableBlacklist(address account) public onlyOwner {
        require(blacklist[account], "CoinToken: Account is not blacklisted");
        blacklist[account] = false;
    }
    
    /**
     * @dev Excludes the specified account from tax.
     */
    function exclude(address account) public onlyOwner {
        require(!isExcluded(account), "CoinToken: Account is already excluded");
        excludeList[account] = true;
    }
    
    /**
     * @dev Re-enables tax on the specified account.
     */
    function removeExclude(address account) public onlyOwner {
        require(isExcluded(account), "CoinToken: Account is not excluded");
        excludeList[account] = false;
    }
    
    /**
     * @dev Sets tax for buys.
     */
    function setBuyTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwner {
        buyTaxes["dev"] = dev;
        buyTaxes["marketing"] = marketing;
        buyTaxes["liquidity"] = liquidity;
        buyTaxes["charity"] = charity;
    }
    
    /**
     * @dev Sets tax for sells.
     */
    function setSellTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwner {

        sellTaxes["dev"] = dev;
        sellTaxes["marketing"] = marketing;
        sellTaxes["liquidity"] = liquidity;
        sellTaxes["charity"] = charity;
    }
    
    /**
     * @dev Sets wallets for taxes.
     */
    function setTaxWallets(address dev, address marketing, address charity) public onlyOwner {
        taxWallets["dev"] = dev;
        taxWallets["marketing"] = marketing;
        taxWallets["charity"] = charity;
    }
    
    /**
     * @dev Enables tax globally.
     */
    function enableTax() public onlyOwner {
        require(!taxStatus, "CoinToken: Tax is already enabled");
        taxStatus = true;
    }
    
    /**
     * @dev Disables tax globally.
     */
    function disableTax() public onlyOwner {
        require(taxStatus, "CoinToken: Tax is already disabled");
        taxStatus = false;
    }
    
    /**
     * @dev Returns true if the account is blacklisted, and false otherwise.
     */
    function isBlacklisted(address account) public view returns (bool) {
        return blacklist[account];
    }
    
    /**
     * @dev Returns true if the account is excluded, and false otherwise.
     */
    function isExcluded(address account) public view returns (bool) {
        return excludeList[account];
    }
    
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address[6]","name":"_addr","type":"address[6]"},{"internalType":"uint256[8]","name":"_value","type":"uint256[8]"}],"stateMutability":"payable","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","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":"account","type":"address"}],"name":"balanceOf","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":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"enableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"exclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"charity","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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":[],"name":"triggerTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460075564746a5288006008556001601a60006101000a81548160ff0219169083151502179055506040516200666d3803806200666d8339818101604052810190620000529190620012b9565b848481600390805190602001906200006c92919062000e3f565b5080600490805190602001906200008592919062000e3f565b5050506000600560146101000a81548160ff021916908315150217905550670de0b6b3a764000083620000b99190620013b0565b600681905550620000eb82600560068110620000da57620000d962001411565b5b60200201516200064360201b60201c565b8160016006811062000102576200010162001411565b5b6020020151601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b057600080fd5b505afa158015620001c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001eb919062001440565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d357600080fd5b505afa158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e919062001440565b6040518363ffffffff1660e01b81526004016200032d92919062001483565b602060405180830381600087803b1580156200034857600080fd5b505af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062001440565b601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600060068110620003da57620003d962001411565b5b60200201516019604051620003ef906200150b565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004bb8160006008811062000456576200045562001411565b5b60200201518260016008811062000472576200047162001411565b5b6020020151836003600881106200048e576200048d62001411565b5b602002015184600260088110620004aa57620004a962001411565b5b60200201516200070960201b60201c565b6200053b81600460088110620004d657620004d562001411565b5b602002015182600560088110620004f257620004f162001411565b5b6020020151836007600881106200050e576200050d62001411565b5b6020020151846006600881106200052a576200052962001411565b5b60200201516200082a60201b60201c565b6200059f8260026006811062000556576200055562001411565b5b60200201518360036006811062000572576200057162001411565b5b6020020151846004600681106200058e576200058d62001411565b5b60200201516200094b60201b60201c565b620005b03362000af660201b60201c565b620005c13062000af660201b60201c565b81600060068110620005d857620005d762001411565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801562000623573d6000803e3d6000fd5b50620006383360065462000c3460201b60201c565b5050505050620018d4565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200071962000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200073f62000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078f9062001583565b60405180910390fd5b836017604051620007a990620015f5565b908152602001604051809103902081905550826017604051620007cc906200165c565b908152602001604051809103902081905550816017604051620007ef906200150b565b9081526020016040518091039020819055508060176040516200081290620016c3565b90815260200160405180910390208190555050505050565b6200083a62000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200086062000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b09062001583565b60405180910390fd5b836018604051620008ca90620015f5565b908152602001604051809103902081905550826018604051620008ed906200165c565b90815260200160405180910390208190555081601860405162000910906200150b565b9081526020016040518091039020819055508060186040516200093390620016c3565b90815260200160405180910390208190555050505050565b6200095b62000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200098162000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d19062001583565b60405180910390fd5b826019604051620009eb90620015f5565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960405162000a48906200165c565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960405162000aa590620016c3565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b62000b0662000dad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000b2c62000db560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000b85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7c9062001583565b60405180910390fd5b62000b968162000ddf60201b60201c565b1562000bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd09062001750565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9e90620017c2565b60405180910390fd5b62000cbb6000838362000e3560201b60201c565b806002600082825462000ccf9190620017e4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d269190620017e4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000d8d919062001852565b60405180910390a362000da96000838362000e3a60201b60201c565b5050565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b505050565b505050565b82805462000e4d906200189e565b90600052602060002090601f01602090048101928262000e71576000855562000ebd565b82601f1062000e8c57805160ff191683800117855562000ebd565b8280016001018555821562000ebd579182015b8281111562000ebc57825182559160200191906001019062000e9f565b5b50905062000ecc919062000ed0565b5090565b5b8082111562000eeb57600081600090555060010162000ed1565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000f588262000f0d565b810181811067ffffffffffffffff8211171562000f7a5762000f7962000f1e565b5b80604052505050565b600062000f8f62000eef565b905062000f9d828262000f4d565b919050565b600067ffffffffffffffff82111562000fc05762000fbf62000f1e565b5b62000fcb8262000f0d565b9050602081019050919050565b60005b8381101562000ff857808201518184015260208101905062000fdb565b8381111562001008576000848401525b50505050565b6000620010256200101f8462000fa2565b62000f83565b90508281526020810184848401111562001044576200104362000f08565b5b6200105184828562000fd8565b509392505050565b600082601f83011262001071576200107062000f03565b5b8151620010838482602086016200100e565b91505092915050565b6000819050919050565b620010a1816200108c565b8114620010ad57600080fd5b50565b600081519050620010c18162001096565b92915050565b600067ffffffffffffffff821115620010e557620010e462000f1e565b5b602082029050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200112282620010f5565b9050919050565b620011348162001115565b81146200114057600080fd5b50565b600081519050620011548162001129565b92915050565b6000620011716200116b84620010c7565b62000f83565b905080602084028301858111156200118e576200118d620010f0565b5b835b81811015620011bb5780620011a6888262001143565b84526020840193505060208101905062001190565b5050509392505050565b600082601f830112620011dd57620011dc62000f03565b5b6006620011ec8482856200115a565b91505092915050565b600067ffffffffffffffff82111562001213576200121262000f1e565b5b602082029050919050565b6000620012356200122f84620011f5565b62000f83565b90508060208402830185811115620012525762001251620010f0565b5b835b818110156200127f57806200126a8882620010b0565b84526020840193505060208101905062001254565b5050509392505050565b600082601f830112620012a157620012a062000f03565b5b6008620012b08482856200121e565b91505092915050565b60008060008060006102208688031215620012d957620012d862000ef9565b5b600086015167ffffffffffffffff811115620012fa57620012f962000efe565b5b620013088882890162001059565b955050602086015167ffffffffffffffff8111156200132c576200132b62000efe565b5b6200133a8882890162001059565b94505060406200134d88828901620010b0565b93505060606200136088828901620011c5565b925050610120620013748882890162001289565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013bd826200108c565b9150620013ca836200108c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001406576200140562001381565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121562001459576200145862000ef9565b5b6000620014698482850162001143565b91505092915050565b6200147d8162001115565b82525050565b60006040820190506200149a600083018562001472565b620014a9602083018462001472565b9392505050565b600081905092915050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000620014f3600983620014b0565b91506200150082620014bb565b600982019050919050565b60006200151882620014e4565b9150819050919050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200156b60208362001522565b9150620015788262001533565b602082019050919050565b600060208201905081810360008301526200159e816200155c565b9050919050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000620015dd600383620014b0565b9150620015ea82620015a5565b600382019050919050565b60006200160282620015ce565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b600062001644600983620014b0565b915062001651826200160c565b600982019050919050565b6000620016698262001635565b9150819050919050565b7f6368617269747900000000000000000000000000000000000000000000000000600082015250565b6000620016ab600783620014b0565b9150620016b88262001673565b600782019050919050565b6000620016d0826200169c565b9150819050919050565b7f436f696e546f6b656e3a204163636f756e7420697320616c726561647920657860008201527f636c756465640000000000000000000000000000000000000000000000000000602082015250565b60006200173860268362001522565b91506200174582620016da565b604082019050919050565b600060208201905081810360008301526200176b8162001729565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620017aa601f8362001522565b9150620017b78262001772565b602082019050919050565b60006020820190508181036000830152620017dd816200179b565b9050919050565b6000620017f1826200108c565b9150620017fe836200108c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001836576200183562001381565b5b828201905092915050565b6200184c816200108c565b82525050565b600060208201905062001869600083018462001841565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620018b757607f821691505b60208210811415620018ce57620018cd6200186f565b5b50919050565b614d8980620018e46000396000f3fe6080604052600436106101dc5760003560e01c8063717a865111610102578063a9059cbb11610095578063cfefd79e11610064578063cfefd79e14610669578063dd62ed3e14610692578063f2fde38b146106cf578063fe575a87146106f8576101e3565b8063a9059cbb146105af578063abe4f11d146105ec578063cba0e99614610615578063ced695a414610652576101e3565b806395d89b41116100d157806395d89b41146104f55780639fda058114610520578063a457c2d714610549578063a82cfe8b14610586576101e3565b8063717a8651146104615780638456cb591461048a57806384666b08146104a15780638da5cb5b146104ca576101e3565b8063395093511161017a57806353eb3bcf1161014957806353eb3bcf146103cb5780635c975abb146103e257806370a082311461040d578063715018a61461044a576101e3565b806339509351146103255780633f4ba83a1461036257806342966c68146103795780634febf53d146103a2576101e3565b806323a38a38116101b657806323a38a381461027b57806323b872dd146102a65780632c32abc2146102e3578063313ce567146102fa576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610735565b60405161020a91906134ee565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906135b8565b6107c7565b6040516102479190613613565b60405180910390f35b34801561025c57600080fd5b506102656107e5565b604051610272919061363d565b60405180910390f35b34801561028757600080fd5b506102906107ef565b60405161029d9190613613565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190613658565b610802565b6040516102da9190613613565b60405180910390f35b3480156102ef57600080fd5b506102f86108fa565b005b34801561030657600080fd5b5061030f6109a8565b60405161031c91906136c7565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906135b8565b6109b1565b6040516103599190613613565b60405180910390f35b34801561036e57600080fd5b50610377610a5d565b005b34801561038557600080fd5b506103a0600480360381019061039b91906136e2565b610b2a565b005b3480156103ae57600080fd5b506103c960048036038101906103c4919061370f565b610bb3565b005b3480156103d757600080fd5b506103e0610cd3565b005b3480156103ee57600080fd5b506103f7610dbc565b6040516104049190613613565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f919061370f565b610dd3565b604051610441919061363d565b60405180910390f35b34801561045657600080fd5b5061045f610e1b565b005b34801561046d57600080fd5b506104886004803603810190610483919061370f565b610ea3565b005b34801561049657600080fd5b5061049f611007565b005b3480156104ad57600080fd5b506104c860048036038101906104c3919061373c565b6110d5565b005b3480156104d657600080fd5b506104df6111db565b6040516104ec91906137b2565b60405180910390f35b34801561050157600080fd5b5061050a611205565b60405161051791906134ee565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906137cd565b611297565b005b34801561055557600080fd5b50610570600480360381019061056b91906135b8565b611429565b60405161057d9190613613565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a8919061373c565b611514565b005b3480156105bb57600080fd5b506105d660048036038101906105d191906135b8565b61161a565b6040516105e39190613613565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e919061370f565b611638565b005b34801561062157600080fd5b5061063c6004803603810190610637919061370f565b611757565b6040516106499190613613565b60405180910390f35b34801561065e57600080fd5b506106676117ad565b005b34801561067557600080fd5b50610690600480360381019061068b919061370f565b611895565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613820565b6119f8565b6040516106c6919061363d565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f1919061370f565b611a7f565b005b34801561070457600080fd5b5061071f600480360381019061071a919061370f565b611b77565b60405161072c9190613613565b60405180910390f35b6060600380546107449061388f565b80601f01602080910402602001604051908101604052809291908181526020018280546107709061388f565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107db6107d4611bcd565b8484611bd5565b6001905092915050565b6000600254905090565b601a60009054906101000a900460ff1681565b600061080f848484611da0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085a611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190613933565b60405180910390fd5b6108ee856108e6611bcd565b858403611bd5565b60019150509392505050565b610902611bcd565b73ffffffffffffffffffffffffffffffffffffffff166109206111db565b73ffffffffffffffffffffffffffffffffffffffff1614610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d9061399f565b60405180910390fd5b6109a56000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611ef6565b50565b60006012905090565b6000610a536109be611bcd565b8484600160006109cc611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e91906139ee565b611bd5565b6001905092915050565b610a65611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a836111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad09061399f565b60405180910390fd5b610ae1610dbc565b610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613ab6565b60405180910390fd5b610b28612de8565b565b610b32611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610b506111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d9061399f565b60405180910390fd5b610bb03382612e8a565b50565b610bbb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610bd96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c269061399f565b60405180910390fd5b610c3881611757565b15610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f90613b48565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cdb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610cf96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d469061399f565b60405180910390fd5b601a60009054906101000a900460ff1615610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690613bda565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e23611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610e416111db565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e9061399f565b60405180910390fd5b610ea16000613061565b565b610eab611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610ec96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f169061399f565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613c6c565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61100f611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661102d6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061399f565b60405180910390fd5b61108b610dbc565b156110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613cfe565b60405180910390fd5b6110d3613127565b565b6110dd611bcd565b73ffffffffffffffffffffffffffffffffffffffff166110fb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111489061399f565b60405180910390fd5b83601860405161116090613d75565b90815260200160405180910390208190555082601860405161118190613dd6565b9081526020016040518091039020819055508160186040516111a290613e37565b9081526020016040518091039020819055508060186040516111c390613e98565b90815260200160405180910390208190555050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112149061388f565b80601f01602080910402602001604051908101604052809291908181526020018280546112409061388f565b801561128d5780601f106112625761010080835404028352916020019161128d565b820191906000526020600020905b81548152906001019060200180831161127057829003601f168201915b5050505050905090565b61129f611bcd565b73ffffffffffffffffffffffffffffffffffffffff166112bd6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a9061399f565b60405180910390fd5b82601960405161132290613d75565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960405161137d90613dd6565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060196040516113d890613e98565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060016000611438611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613f1f565b60405180910390fd5b611509611500611bcd565b85858403611bd5565b600191505092915050565b61151c611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661153a6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115879061399f565b60405180910390fd5b83601760405161159f90613d75565b9081526020016040518091039020819055508260176040516115c090613dd6565b9081526020016040518091039020819055508160176040516115e190613e37565b90815260200160405180910390208190555080601760405161160290613e98565b90815260200160405180910390208190555050505050565b600061162e611627611bcd565b8484611da0565b6001905092915050565b611640611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661165e6111db565b73ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061399f565b60405180910390fd5b6116bd81611757565b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390613fb1565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117b5611bcd565b73ffffffffffffffffffffffffffffffffffffffff166117d36111db565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118209061399f565b60405180910390fd5b601a60009054906101000a900460ff16611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614043565b60405180910390fd5b6000601a60006101000a81548160ff021916908315150217905550565b61189d611bcd565b73ffffffffffffffffffffffffffffffffffffffff166118bb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061399f565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661199d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611994906140d5565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a87611bcd565b73ffffffffffffffffffffffffffffffffffffffff16611aa56111db565b73ffffffffffffffffffffffffffffffffffffffff1614611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af29061399f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6290614167565b60405180910390fd5b611b7481613061565b50565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c906141f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac9061428b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d93919061363d565b60405180910390a3505050565b611da8610dbc565b15611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf9061431d565b60405180910390fd5b611df133611b77565b15611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890614389565b60405180910390fd5b611e3a82611b77565b15611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e71906143f5565b60405180910390fd5b611e8332611b77565b15611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90614389565b60405180910390fd5b601a60009054906101000a900460ff1615611ee657611ee3838383611ef6565b90505b611ef18383836131ca565b505050565b600080600267ffffffffffffffff811115611f1457611f13614415565b5b604051908082528060200260200182016040528015611f425781602001602082028036833780820191505090505b5090503081600081518110611f5a57611f59614444565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffc57600080fd5b505afa158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190614488565b8160018151811061204857612047614444565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208b85611757565b15801561209e575061209c84611757565b155b15612ddc57600080600754856120b491906144e4565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156122fa57601760405161211a90613dd6565b908152602001604051809103902054816121349190614515565b8261213f91906139ee565b9150601760405161214f90613d75565b908152602001604051809103902054816121699190614515565b8261217491906139ee565b9150601760405161218490613e37565b9081526020016040518091039020548161219e9190614515565b826121a991906139ee565b915060176040516121b990613e98565b908152602001604051809103902054816121d39190614515565b826121de91906139ee565b915060008211156121f5576121f4873084611da0565b5b601760405161220390613dd6565b9081526020016040518091039020548161221d9190614515565b601d600082825461222e91906139ee565b92505081905550601760405161224390613d75565b9081526020016040518091039020548161225d9190614515565b601e600082825461226e91906139ee565b92505081905550601760405161228390613e37565b9081526020016040518091039020548161229d9190614515565b601f60008282546122ae91906139ee565b9250508190555060176040516122c390613e98565b908152602001604051809103902054816122dd9190614515565b602060008282546122ee91906139ee565b92505081905550612dcb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612dca57601860405161235e90613dd6565b908152602001604051809103902054816123789190614515565b8261238391906139ee565b9150601860405161239390613d75565b908152602001604051809103902054816123ad9190614515565b826123b891906139ee565b915060186040516123c890613e37565b908152602001604051809103902054816123e29190614515565b826123ed91906139ee565b915060186040516123fd90613e98565b908152602001604051809103902054816124179190614515565b8261242291906139ee565b9150600082111561243957612438873084611da0565b5b601860405161244790613dd6565b908152602001604051809103902054816124619190614515565b601d600082825461247291906139ee565b92505081905550601860405161248790613d75565b908152602001604051809103902054816124a19190614515565b601e60008282546124b291906139ee565b9250508190555060186040516124c790613e37565b908152602001604051809103902054816124e19190614515565b601f60008282546124f291906139ee565b92505081905550601860405161250790613e98565b908152602001604051809103902054816125219190614515565b6020600082825461253291906139ee565b925050819055506000602054601f54601e54601d5461255191906139ee565b61255b91906139ee565b61256591906139ee565b9050600081141561257c5785945050505050612de1565b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f602054601f54601e54601d546125d291906139ee565b6125dc91906139ee565b6125e691906139ee565b876040518363ffffffff1660e01b815260040161260492919061462d565b60006040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612659919061478b565b60018151811061266c5761266b614444565b5b602002602001015190506008548110612dc757600047905060006020546002601f5461269891906144e4565b601e54601d546126a891906139ee565b6126b291906139ee565b6126bc91906139ee565b90506126eb30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611bd5565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161274f959493929190614819565b600060405180830381600087803b15801561276957600080fd5b505af115801561277d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a6919061478b565b50600082476127b59190614873565b905060006002601f546127c891906144e4565b90506000670de0b6b3a764000087670de0b6b3a76400006002601f546127ee91906144e4565b6127f89190614515565b61280291906144e4565b8461280d9190614515565b61281791906144e4565b90506000670de0b6b3a764000088670de0b6b3a7640000601d5461283b9190614515565b61284591906144e4565b856128509190614515565b61285a91906144e4565b90506000670de0b6b3a764000089670de0b6b3a7640000601e5461287e9190614515565b61288891906144e4565b866128939190614515565b61289d91906144e4565b90506000670de0b6b3a76400008a670de0b6b3a76400006020546128c19190614515565b6128cb91906144e4565b876128d69190614515565b6128e091906144e4565b905061290f30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687611bd5565b6000806000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308b600080601960405161296690613e37565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129b7969594939291906148a7565b6060604051808303818588803b1580156129d057600080fd5b505af11580156129e4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a099190614908565b9250925092506000838b612a1d91906139ee565b602054601f54601e54601d54612a3391906139ee565b612a3d91906139ee565b612a4791906139ee565b612a519190614873565b90506000811115612aa457612aa3306019604051612a6e90613d75565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611da0565b5b6019604051612ab290613dd6565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687604051612b049061498c565b60006040518083038185875af1925050503d8060008114612b41576040519150601f19603f3d011682016040523d82523d6000602084013e612b46565b606091505b5050506019604051612b5790613d75565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686604051612ba99061498c565b60006040518083038185875af1925050503d8060008114612be6576040519150601f19603f3d011682016040523d82523d6000602084013e612beb565b606091505b5050506019604051612bfc90613e98565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685604051612c4e9061498c565b60006040518083038185875af1925050503d8060008114612c8b576040519150601f19603f3d011682016040523d82523d6000602084013e612c90565b606091505b50505060008589888a612ca391906139ee565b612cad91906139ee565b612cb791906139ee565b8b612cc29190614873565b1115612d9a576019604051612cd690613dd6565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168589888a612d2991906139ee565b612d3391906139ee565b612d3d91906139ee565b8b612d489190614873565b604051612d549061498c565b60006040518083038185875af1925050503d8060008114612d91576040519150601f19603f3d011682016040523d82523d6000602084013e612d96565b606091505b5050505b6000601d819055506000601e819055506000601f8190555060006020819055505050505050505050505050505b50505b5b8185612dd79190614873565b945050505b829150505b9392505050565b612df0610dbc565b612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906149ed565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e73611bcd565b604051612e8091906137b2565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef190614a7f565b60405180910390fd5b612f068260008361344b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8390614b11565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612fe39190614873565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613048919061363d565b60405180910390a361305c83600084613450565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61312f610dbc565b1561316f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316690614b7d565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131b3611bcd565b6040516131c091906137b2565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561323a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323190614c0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a190614ca1565b60405180910390fd5b6132b583838361344b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561333b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333290614d33565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133ce91906139ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613432919061363d565b60405180910390a3613445848484613450565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561348f578082015181840152602081019050613474565b8381111561349e576000848401525b50505050565b6000601f19601f8301169050919050565b60006134c082613455565b6134ca8185613460565b93506134da818560208601613471565b6134e3816134a4565b840191505092915050565b6000602082019050818103600083015261350881846134b5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061354f82613524565b9050919050565b61355f81613544565b811461356a57600080fd5b50565b60008135905061357c81613556565b92915050565b6000819050919050565b61359581613582565b81146135a057600080fd5b50565b6000813590506135b28161358c565b92915050565b600080604083850312156135cf576135ce61351a565b5b60006135dd8582860161356d565b92505060206135ee858286016135a3565b9150509250929050565b60008115159050919050565b61360d816135f8565b82525050565b60006020820190506136286000830184613604565b92915050565b61363781613582565b82525050565b6000602082019050613652600083018461362e565b92915050565b6000806000606084860312156136715761367061351a565b5b600061367f8682870161356d565b93505060206136908682870161356d565b92505060406136a1868287016135a3565b9150509250925092565b600060ff82169050919050565b6136c1816136ab565b82525050565b60006020820190506136dc60008301846136b8565b92915050565b6000602082840312156136f8576136f761351a565b5b6000613706848285016135a3565b91505092915050565b6000602082840312156137255761372461351a565b5b60006137338482850161356d565b91505092915050565b600080600080608085870312156137565761375561351a565b5b6000613764878288016135a3565b9450506020613775878288016135a3565b9350506040613786878288016135a3565b9250506060613797878288016135a3565b91505092959194509250565b6137ac81613544565b82525050565b60006020820190506137c760008301846137a3565b92915050565b6000806000606084860312156137e6576137e561351a565b5b60006137f48682870161356d565b93505060206138058682870161356d565b92505060406138168682870161356d565b9150509250925092565b600080604083850312156138375761383661351a565b5b60006138458582860161356d565b92505060206138568582860161356d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138a757607f821691505b602082108114156138bb576138ba613860565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061391d602883613460565b9150613928826138c1565b604082019050919050565b6000602082019050818103600083015261394c81613910565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613989602083613460565b915061399482613953565b602082019050919050565b600060208201905081810360008301526139b88161397c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139f982613582565b9150613a0483613582565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a3957613a386139bf565b5b828201905092915050565b7f436f696e546f6b656e3a20436f6e7472616374206973206e6f7420706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613aa0602183613460565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f436f696e546f6b656e3a204163636f756e7420697320616c726561647920657860008201527f636c756465640000000000000000000000000000000000000000000000000000602082015250565b6000613b32602683613460565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f436f696e546f6b656e3a2054617820697320616c726561647920656e61626c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602183613460565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b7f436f696e546f6b656e3a204163636f756e7420697320616c726561647920626c60008201527f61636b6c69737465640000000000000000000000000000000000000000000000602082015250565b6000613c56602983613460565b9150613c6182613bfa565b604082019050919050565b60006020820190508181036000830152613c8581613c49565b9050919050565b7f436f696e546f6b656e3a20436f6e747261637420697320616c7265616479207060008201527f6175736564000000000000000000000000000000000000000000000000000000602082015250565b6000613ce8602583613460565b9150613cf382613c8c565b604082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613d5f600383613d1e565b9150613d6a82613d29565b600382019050919050565b6000613d8082613d52565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b6000613dc0600983613d1e565b9150613dcb82613d8a565b600982019050919050565b6000613de182613db3565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000613e21600983613d1e565b9150613e2c82613deb565b600982019050919050565b6000613e4282613e14565b9150819050919050565b7f6368617269747900000000000000000000000000000000000000000000000000600082015250565b6000613e82600783613d1e565b9150613e8d82613e4c565b600782019050919050565b6000613ea382613e75565b9150819050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f09602583613460565b9150613f1482613ead565b604082019050919050565b60006020820190508181036000830152613f3881613efc565b9050919050565b7f436f696e546f6b656e3a204163636f756e74206973206e6f74206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9b602283613460565b9150613fa682613f3f565b604082019050919050565b60006020820190508181036000830152613fca81613f8e565b9050919050565b7f436f696e546f6b656e3a2054617820697320616c72656164792064697361626c60008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061402d602283613460565b915061403882613fd1565b604082019050919050565b6000602082019050818103600083015261405c81614020565b9050919050565b7f436f696e546f6b656e3a204163636f756e74206973206e6f7420626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b60006140bf602583613460565b91506140ca82614063565b604082019050919050565b600060208201905081810360008301526140ee816140b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614151602683613460565b915061415c826140f5565b604082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141e3602483613460565b91506141ee82614187565b604082019050919050565b60006020820190508181036000830152614212816141d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614275602283613460565b915061428082614219565b604082019050919050565b600060208201905081810360008301526142a481614268565b9050919050565b7f436f696e546f6b656e3a20746f6b656e207472616e73666572207768696c652060008201527f7061757365640000000000000000000000000000000000000000000000000000602082015250565b6000614307602683613460565b9150614312826142ab565b604082019050919050565b60006020820190508181036000830152614336816142fa565b9050919050565b7f436f696e546f6b656e3a2073656e64657220626c61636b6c6973746564000000600082015250565b6000614373601d83613460565b915061437e8261433d565b602082019050919050565b600060208201905081810360008301526143a281614366565b9050919050565b7f436f696e546f6b656e3a20726563697069656e7420626c61636b6c6973746564600082015250565b60006143df602083613460565b91506143ea826143a9565b602082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061448281613556565b92915050565b60006020828403121561449e5761449d61351a565b5b60006144ac84828501614473565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144ef82613582565b91506144fa83613582565b92508261450a576145096144b5565b5b828204905092915050565b600061452082613582565b915061452b83613582565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614564576145636139bf565b5b828202905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145a481613544565b82525050565b60006145b6838361459b565b60208301905092915050565b6000602082019050919050565b60006145da8261456f565b6145e4818561457a565b93506145ef8361458b565b8060005b8381101561462057815161460788826145aa565b9750614612836145c2565b9250506001810190506145f3565b5085935050505092915050565b6000604082019050614642600083018561362e565b818103602083015261465481846145cf565b90509392505050565b600080fd5b61466b826134a4565b810181811067ffffffffffffffff8211171561468a57614689614415565b5b80604052505050565b600061469d613510565b90506146a98282614662565b919050565b600067ffffffffffffffff8211156146c9576146c8614415565b5b602082029050602081019050919050565b600080fd5b6000815190506146ee8161358c565b92915050565b6000614707614702846146ae565b614693565b9050808382526020820190506020840283018581111561472a576147296146da565b5b835b81811015614753578061473f88826146df565b84526020840193505060208101905061472c565b5050509392505050565b600082601f8301126147725761477161465d565b5b81516147828482602086016146f4565b91505092915050565b6000602082840312156147a1576147a061351a565b5b600082015167ffffffffffffffff8111156147bf576147be61351f565b5b6147cb8482850161475d565b91505092915050565b6000819050919050565b6000819050919050565b60006148036147fe6147f9846147d4565b6147de565b613582565b9050919050565b614813816147e8565b82525050565b600060a08201905061482e600083018861362e565b61483b602083018761480a565b818103604083015261484d81866145cf565b905061485c60608301856137a3565b614869608083018461362e565b9695505050505050565b600061487e82613582565b915061488983613582565b92508282101561489c5761489b6139bf565b5b828203905092915050565b600060c0820190506148bc60008301896137a3565b6148c9602083018861362e565b6148d6604083018761480a565b6148e3606083018661480a565b6148f060808301856137a3565b6148fd60a083018461362e565b979650505050505050565b6000806000606084860312156149215761492061351a565b5b600061492f868287016146df565b9350506020614940868287016146df565b9250506040614951868287016146df565b9150509250925092565b600081905092915050565b50565b600061497660008361495b565b915061498182614966565b600082019050919050565b600061499782614969565b9150819050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006149d7601483613460565b91506149e2826149a1565b602082019050919050565b60006020820190508181036000830152614a06816149ca565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a69602183613460565b9150614a7482614a0d565b604082019050919050565b60006020820190508181036000830152614a9881614a5c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614afb602283613460565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614b67601083613460565b9150614b7282614b31565b602082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614bf9602583613460565b9150614c0482614b9d565b604082019050919050565b60006020820190508181036000830152614c2881614bec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c8b602383613460565b9150614c9682614c2f565b604082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614d1d602683613460565b9150614d2882614cc1565b604082019050919050565b60006020820190508181036000830152614d4c81614d10565b905091905056fea26469706673582212206649404bd41647e6992d753607e1265d05fefdfa6118191ffdb2884930e0b51164736f6c6343000809003300000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000953309d175840927c41d198c9206bbc6e5fee2b80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000009fb7f5b89f3fee4473c4e23ac66ba3535bd43399000000000000000000000000c9022c126a89dd4be4701aa29e4768c1bb335134000000000000000000000000a82152cc6b241d98d24a9dbd0e87e578571cdce00000000000000000000000009fb7f5b89f3fee4473c4e23ac66ba3535bd4339900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a4b415341204f42414b450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054f42414b45000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063717a865111610102578063a9059cbb11610095578063cfefd79e11610064578063cfefd79e14610669578063dd62ed3e14610692578063f2fde38b146106cf578063fe575a87146106f8576101e3565b8063a9059cbb146105af578063abe4f11d146105ec578063cba0e99614610615578063ced695a414610652576101e3565b806395d89b41116100d157806395d89b41146104f55780639fda058114610520578063a457c2d714610549578063a82cfe8b14610586576101e3565b8063717a8651146104615780638456cb591461048a57806384666b08146104a15780638da5cb5b146104ca576101e3565b8063395093511161017a57806353eb3bcf1161014957806353eb3bcf146103cb5780635c975abb146103e257806370a082311461040d578063715018a61461044a576101e3565b806339509351146103255780633f4ba83a1461036257806342966c68146103795780634febf53d146103a2576101e3565b806323a38a38116101b657806323a38a381461027b57806323b872dd146102a65780632c32abc2146102e3578063313ce567146102fa576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610735565b60405161020a91906134ee565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906135b8565b6107c7565b6040516102479190613613565b60405180910390f35b34801561025c57600080fd5b506102656107e5565b604051610272919061363d565b60405180910390f35b34801561028757600080fd5b506102906107ef565b60405161029d9190613613565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190613658565b610802565b6040516102da9190613613565b60405180910390f35b3480156102ef57600080fd5b506102f86108fa565b005b34801561030657600080fd5b5061030f6109a8565b60405161031c91906136c7565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906135b8565b6109b1565b6040516103599190613613565b60405180910390f35b34801561036e57600080fd5b50610377610a5d565b005b34801561038557600080fd5b506103a0600480360381019061039b91906136e2565b610b2a565b005b3480156103ae57600080fd5b506103c960048036038101906103c4919061370f565b610bb3565b005b3480156103d757600080fd5b506103e0610cd3565b005b3480156103ee57600080fd5b506103f7610dbc565b6040516104049190613613565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f919061370f565b610dd3565b604051610441919061363d565b60405180910390f35b34801561045657600080fd5b5061045f610e1b565b005b34801561046d57600080fd5b506104886004803603810190610483919061370f565b610ea3565b005b34801561049657600080fd5b5061049f611007565b005b3480156104ad57600080fd5b506104c860048036038101906104c3919061373c565b6110d5565b005b3480156104d657600080fd5b506104df6111db565b6040516104ec91906137b2565b60405180910390f35b34801561050157600080fd5b5061050a611205565b60405161051791906134ee565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906137cd565b611297565b005b34801561055557600080fd5b50610570600480360381019061056b91906135b8565b611429565b60405161057d9190613613565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a8919061373c565b611514565b005b3480156105bb57600080fd5b506105d660048036038101906105d191906135b8565b61161a565b6040516105e39190613613565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e919061370f565b611638565b005b34801561062157600080fd5b5061063c6004803603810190610637919061370f565b611757565b6040516106499190613613565b60405180910390f35b34801561065e57600080fd5b506106676117ad565b005b34801561067557600080fd5b50610690600480360381019061068b919061370f565b611895565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613820565b6119f8565b6040516106c6919061363d565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f1919061370f565b611a7f565b005b34801561070457600080fd5b5061071f600480360381019061071a919061370f565b611b77565b60405161072c9190613613565b60405180910390f35b6060600380546107449061388f565b80601f01602080910402602001604051908101604052809291908181526020018280546107709061388f565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107db6107d4611bcd565b8484611bd5565b6001905092915050565b6000600254905090565b601a60009054906101000a900460ff1681565b600061080f848484611da0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085a611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190613933565b60405180910390fd5b6108ee856108e6611bcd565b858403611bd5565b60019150509392505050565b610902611bcd565b73ffffffffffffffffffffffffffffffffffffffff166109206111db565b73ffffffffffffffffffffffffffffffffffffffff1614610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d9061399f565b60405180910390fd5b6109a56000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611ef6565b50565b60006012905090565b6000610a536109be611bcd565b8484600160006109cc611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e91906139ee565b611bd5565b6001905092915050565b610a65611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a836111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad09061399f565b60405180910390fd5b610ae1610dbc565b610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613ab6565b60405180910390fd5b610b28612de8565b565b610b32611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610b506111db565b73ffffffffffffffffffffffffffffffffffffffff1614610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d9061399f565b60405180910390fd5b610bb03382612e8a565b50565b610bbb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610bd96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c269061399f565b60405180910390fd5b610c3881611757565b15610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f90613b48565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cdb611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610cf96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d469061399f565b60405180910390fd5b601a60009054906101000a900460ff1615610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690613bda565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e23611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610e416111db565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e9061399f565b60405180910390fd5b610ea16000613061565b565b610eab611bcd565b73ffffffffffffffffffffffffffffffffffffffff16610ec96111db565b73ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f169061399f565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613c6c565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61100f611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661102d6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061399f565b60405180910390fd5b61108b610dbc565b156110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613cfe565b60405180910390fd5b6110d3613127565b565b6110dd611bcd565b73ffffffffffffffffffffffffffffffffffffffff166110fb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111489061399f565b60405180910390fd5b83601860405161116090613d75565b90815260200160405180910390208190555082601860405161118190613dd6565b9081526020016040518091039020819055508160186040516111a290613e37565b9081526020016040518091039020819055508060186040516111c390613e98565b90815260200160405180910390208190555050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112149061388f565b80601f01602080910402602001604051908101604052809291908181526020018280546112409061388f565b801561128d5780601f106112625761010080835404028352916020019161128d565b820191906000526020600020905b81548152906001019060200180831161127057829003601f168201915b5050505050905090565b61129f611bcd565b73ffffffffffffffffffffffffffffffffffffffff166112bd6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a9061399f565b60405180910390fd5b82601960405161132290613d75565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960405161137d90613dd6565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060196040516113d890613e98565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060016000611438611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613f1f565b60405180910390fd5b611509611500611bcd565b85858403611bd5565b600191505092915050565b61151c611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661153a6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115879061399f565b60405180910390fd5b83601760405161159f90613d75565b9081526020016040518091039020819055508260176040516115c090613dd6565b9081526020016040518091039020819055508160176040516115e190613e37565b90815260200160405180910390208190555080601760405161160290613e98565b90815260200160405180910390208190555050505050565b600061162e611627611bcd565b8484611da0565b6001905092915050565b611640611bcd565b73ffffffffffffffffffffffffffffffffffffffff1661165e6111db565b73ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061399f565b60405180910390fd5b6116bd81611757565b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390613fb1565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117b5611bcd565b73ffffffffffffffffffffffffffffffffffffffff166117d36111db565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118209061399f565b60405180910390fd5b601a60009054906101000a900460ff16611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614043565b60405180910390fd5b6000601a60006101000a81548160ff021916908315150217905550565b61189d611bcd565b73ffffffffffffffffffffffffffffffffffffffff166118bb6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061399f565b60405180910390fd5b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661199d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611994906140d5565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a87611bcd565b73ffffffffffffffffffffffffffffffffffffffff16611aa56111db565b73ffffffffffffffffffffffffffffffffffffffff1614611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af29061399f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6290614167565b60405180910390fd5b611b7481613061565b50565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c906141f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac9061428b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d93919061363d565b60405180910390a3505050565b611da8610dbc565b15611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf9061431d565b60405180910390fd5b611df133611b77565b15611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890614389565b60405180910390fd5b611e3a82611b77565b15611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e71906143f5565b60405180910390fd5b611e8332611b77565b15611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90614389565b60405180910390fd5b601a60009054906101000a900460ff1615611ee657611ee3838383611ef6565b90505b611ef18383836131ca565b505050565b600080600267ffffffffffffffff811115611f1457611f13614415565b5b604051908082528060200260200182016040528015611f425781602001602082028036833780820191505090505b5090503081600081518110611f5a57611f59614444565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffc57600080fd5b505afa158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190614488565b8160018151811061204857612047614444565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208b85611757565b15801561209e575061209c84611757565b155b15612ddc57600080600754856120b491906144e4565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156122fa57601760405161211a90613dd6565b908152602001604051809103902054816121349190614515565b8261213f91906139ee565b9150601760405161214f90613d75565b908152602001604051809103902054816121699190614515565b8261217491906139ee565b9150601760405161218490613e37565b9081526020016040518091039020548161219e9190614515565b826121a991906139ee565b915060176040516121b990613e98565b908152602001604051809103902054816121d39190614515565b826121de91906139ee565b915060008211156121f5576121f4873084611da0565b5b601760405161220390613dd6565b9081526020016040518091039020548161221d9190614515565b601d600082825461222e91906139ee565b92505081905550601760405161224390613d75565b9081526020016040518091039020548161225d9190614515565b601e600082825461226e91906139ee565b92505081905550601760405161228390613e37565b9081526020016040518091039020548161229d9190614515565b601f60008282546122ae91906139ee565b9250508190555060176040516122c390613e98565b908152602001604051809103902054816122dd9190614515565b602060008282546122ee91906139ee565b92505081905550612dcb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612dca57601860405161235e90613dd6565b908152602001604051809103902054816123789190614515565b8261238391906139ee565b9150601860405161239390613d75565b908152602001604051809103902054816123ad9190614515565b826123b891906139ee565b915060186040516123c890613e37565b908152602001604051809103902054816123e29190614515565b826123ed91906139ee565b915060186040516123fd90613e98565b908152602001604051809103902054816124179190614515565b8261242291906139ee565b9150600082111561243957612438873084611da0565b5b601860405161244790613dd6565b908152602001604051809103902054816124619190614515565b601d600082825461247291906139ee565b92505081905550601860405161248790613d75565b908152602001604051809103902054816124a19190614515565b601e60008282546124b291906139ee565b9250508190555060186040516124c790613e37565b908152602001604051809103902054816124e19190614515565b601f60008282546124f291906139ee565b92505081905550601860405161250790613e98565b908152602001604051809103902054816125219190614515565b6020600082825461253291906139ee565b925050819055506000602054601f54601e54601d5461255191906139ee565b61255b91906139ee565b61256591906139ee565b9050600081141561257c5785945050505050612de1565b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f602054601f54601e54601d546125d291906139ee565b6125dc91906139ee565b6125e691906139ee565b876040518363ffffffff1660e01b815260040161260492919061462d565b60006040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612659919061478b565b60018151811061266c5761266b614444565b5b602002602001015190506008548110612dc757600047905060006020546002601f5461269891906144e4565b601e54601d546126a891906139ee565b6126b291906139ee565b6126bc91906139ee565b90506126eb30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611bd5565b601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161274f959493929190614819565b600060405180830381600087803b15801561276957600080fd5b505af115801561277d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a6919061478b565b50600082476127b59190614873565b905060006002601f546127c891906144e4565b90506000670de0b6b3a764000087670de0b6b3a76400006002601f546127ee91906144e4565b6127f89190614515565b61280291906144e4565b8461280d9190614515565b61281791906144e4565b90506000670de0b6b3a764000088670de0b6b3a7640000601d5461283b9190614515565b61284591906144e4565b856128509190614515565b61285a91906144e4565b90506000670de0b6b3a764000089670de0b6b3a7640000601e5461287e9190614515565b61288891906144e4565b866128939190614515565b61289d91906144e4565b90506000670de0b6b3a76400008a670de0b6b3a76400006020546128c19190614515565b6128cb91906144e4565b876128d69190614515565b6128e091906144e4565b905061290f30601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687611bd5565b6000806000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308b600080601960405161296690613e37565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129b7969594939291906148a7565b6060604051808303818588803b1580156129d057600080fd5b505af11580156129e4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a099190614908565b9250925092506000838b612a1d91906139ee565b602054601f54601e54601d54612a3391906139ee565b612a3d91906139ee565b612a4791906139ee565b612a519190614873565b90506000811115612aa457612aa3306019604051612a6e90613d75565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611da0565b5b6019604051612ab290613dd6565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687604051612b049061498c565b60006040518083038185875af1925050503d8060008114612b41576040519150601f19603f3d011682016040523d82523d6000602084013e612b46565b606091505b5050506019604051612b5790613d75565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686604051612ba99061498c565b60006040518083038185875af1925050503d8060008114612be6576040519150601f19603f3d011682016040523d82523d6000602084013e612beb565b606091505b5050506019604051612bfc90613e98565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685604051612c4e9061498c565b60006040518083038185875af1925050503d8060008114612c8b576040519150601f19603f3d011682016040523d82523d6000602084013e612c90565b606091505b50505060008589888a612ca391906139ee565b612cad91906139ee565b612cb791906139ee565b8b612cc29190614873565b1115612d9a576019604051612cd690613dd6565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168589888a612d2991906139ee565b612d3391906139ee565b612d3d91906139ee565b8b612d489190614873565b604051612d549061498c565b60006040518083038185875af1925050503d8060008114612d91576040519150601f19603f3d011682016040523d82523d6000602084013e612d96565b606091505b5050505b6000601d819055506000601e819055506000601f8190555060006020819055505050505050505050505050505b50505b5b8185612dd79190614873565b945050505b829150505b9392505050565b612df0610dbc565b612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906149ed565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e73611bcd565b604051612e8091906137b2565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef190614a7f565b60405180910390fd5b612f068260008361344b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8390614b11565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612fe39190614873565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613048919061363d565b60405180910390a361305c83600084613450565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61312f610dbc565b1561316f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316690614b7d565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131b3611bcd565b6040516131c091906137b2565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561323a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323190614c0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a190614ca1565b60405180910390fd5b6132b583838361344b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561333b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333290614d33565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133ce91906139ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613432919061363d565b60405180910390a3613445848484613450565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561348f578082015181840152602081019050613474565b8381111561349e576000848401525b50505050565b6000601f19601f8301169050919050565b60006134c082613455565b6134ca8185613460565b93506134da818560208601613471565b6134e3816134a4565b840191505092915050565b6000602082019050818103600083015261350881846134b5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061354f82613524565b9050919050565b61355f81613544565b811461356a57600080fd5b50565b60008135905061357c81613556565b92915050565b6000819050919050565b61359581613582565b81146135a057600080fd5b50565b6000813590506135b28161358c565b92915050565b600080604083850312156135cf576135ce61351a565b5b60006135dd8582860161356d565b92505060206135ee858286016135a3565b9150509250929050565b60008115159050919050565b61360d816135f8565b82525050565b60006020820190506136286000830184613604565b92915050565b61363781613582565b82525050565b6000602082019050613652600083018461362e565b92915050565b6000806000606084860312156136715761367061351a565b5b600061367f8682870161356d565b93505060206136908682870161356d565b92505060406136a1868287016135a3565b9150509250925092565b600060ff82169050919050565b6136c1816136ab565b82525050565b60006020820190506136dc60008301846136b8565b92915050565b6000602082840312156136f8576136f761351a565b5b6000613706848285016135a3565b91505092915050565b6000602082840312156137255761372461351a565b5b60006137338482850161356d565b91505092915050565b600080600080608085870312156137565761375561351a565b5b6000613764878288016135a3565b9450506020613775878288016135a3565b9350506040613786878288016135a3565b9250506060613797878288016135a3565b91505092959194509250565b6137ac81613544565b82525050565b60006020820190506137c760008301846137a3565b92915050565b6000806000606084860312156137e6576137e561351a565b5b60006137f48682870161356d565b93505060206138058682870161356d565b92505060406138168682870161356d565b9150509250925092565b600080604083850312156138375761383661351a565b5b60006138458582860161356d565b92505060206138568582860161356d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138a757607f821691505b602082108114156138bb576138ba613860565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061391d602883613460565b9150613928826138c1565b604082019050919050565b6000602082019050818103600083015261394c81613910565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613989602083613460565b915061399482613953565b602082019050919050565b600060208201905081810360008301526139b88161397c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139f982613582565b9150613a0483613582565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a3957613a386139bf565b5b828201905092915050565b7f436f696e546f6b656e3a20436f6e7472616374206973206e6f7420706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613aa0602183613460565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f436f696e546f6b656e3a204163636f756e7420697320616c726561647920657860008201527f636c756465640000000000000000000000000000000000000000000000000000602082015250565b6000613b32602683613460565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f436f696e546f6b656e3a2054617820697320616c726561647920656e61626c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602183613460565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b7f436f696e546f6b656e3a204163636f756e7420697320616c726561647920626c60008201527f61636b6c69737465640000000000000000000000000000000000000000000000602082015250565b6000613c56602983613460565b9150613c6182613bfa565b604082019050919050565b60006020820190508181036000830152613c8581613c49565b9050919050565b7f436f696e546f6b656e3a20436f6e747261637420697320616c7265616479207060008201527f6175736564000000000000000000000000000000000000000000000000000000602082015250565b6000613ce8602583613460565b9150613cf382613c8c565b604082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613d5f600383613d1e565b9150613d6a82613d29565b600382019050919050565b6000613d8082613d52565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b6000613dc0600983613d1e565b9150613dcb82613d8a565b600982019050919050565b6000613de182613db3565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000613e21600983613d1e565b9150613e2c82613deb565b600982019050919050565b6000613e4282613e14565b9150819050919050565b7f6368617269747900000000000000000000000000000000000000000000000000600082015250565b6000613e82600783613d1e565b9150613e8d82613e4c565b600782019050919050565b6000613ea382613e75565b9150819050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f09602583613460565b9150613f1482613ead565b604082019050919050565b60006020820190508181036000830152613f3881613efc565b9050919050565b7f436f696e546f6b656e3a204163636f756e74206973206e6f74206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f9b602283613460565b9150613fa682613f3f565b604082019050919050565b60006020820190508181036000830152613fca81613f8e565b9050919050565b7f436f696e546f6b656e3a2054617820697320616c72656164792064697361626c60008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061402d602283613460565b915061403882613fd1565b604082019050919050565b6000602082019050818103600083015261405c81614020565b9050919050565b7f436f696e546f6b656e3a204163636f756e74206973206e6f7420626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b60006140bf602583613460565b91506140ca82614063565b604082019050919050565b600060208201905081810360008301526140ee816140b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614151602683613460565b915061415c826140f5565b604082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141e3602483613460565b91506141ee82614187565b604082019050919050565b60006020820190508181036000830152614212816141d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614275602283613460565b915061428082614219565b604082019050919050565b600060208201905081810360008301526142a481614268565b9050919050565b7f436f696e546f6b656e3a20746f6b656e207472616e73666572207768696c652060008201527f7061757365640000000000000000000000000000000000000000000000000000602082015250565b6000614307602683613460565b9150614312826142ab565b604082019050919050565b60006020820190508181036000830152614336816142fa565b9050919050565b7f436f696e546f6b656e3a2073656e64657220626c61636b6c6973746564000000600082015250565b6000614373601d83613460565b915061437e8261433d565b602082019050919050565b600060208201905081810360008301526143a281614366565b9050919050565b7f436f696e546f6b656e3a20726563697069656e7420626c61636b6c6973746564600082015250565b60006143df602083613460565b91506143ea826143a9565b602082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061448281613556565b92915050565b60006020828403121561449e5761449d61351a565b5b60006144ac84828501614473565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144ef82613582565b91506144fa83613582565b92508261450a576145096144b5565b5b828204905092915050565b600061452082613582565b915061452b83613582565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614564576145636139bf565b5b828202905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145a481613544565b82525050565b60006145b6838361459b565b60208301905092915050565b6000602082019050919050565b60006145da8261456f565b6145e4818561457a565b93506145ef8361458b565b8060005b8381101561462057815161460788826145aa565b9750614612836145c2565b9250506001810190506145f3565b5085935050505092915050565b6000604082019050614642600083018561362e565b818103602083015261465481846145cf565b90509392505050565b600080fd5b61466b826134a4565b810181811067ffffffffffffffff8211171561468a57614689614415565b5b80604052505050565b600061469d613510565b90506146a98282614662565b919050565b600067ffffffffffffffff8211156146c9576146c8614415565b5b602082029050602081019050919050565b600080fd5b6000815190506146ee8161358c565b92915050565b6000614707614702846146ae565b614693565b9050808382526020820190506020840283018581111561472a576147296146da565b5b835b81811015614753578061473f88826146df565b84526020840193505060208101905061472c565b5050509392505050565b600082601f8301126147725761477161465d565b5b81516147828482602086016146f4565b91505092915050565b6000602082840312156147a1576147a061351a565b5b600082015167ffffffffffffffff8111156147bf576147be61351f565b5b6147cb8482850161475d565b91505092915050565b6000819050919050565b6000819050919050565b60006148036147fe6147f9846147d4565b6147de565b613582565b9050919050565b614813816147e8565b82525050565b600060a08201905061482e600083018861362e565b61483b602083018761480a565b818103604083015261484d81866145cf565b905061485c60608301856137a3565b614869608083018461362e565b9695505050505050565b600061487e82613582565b915061488983613582565b92508282101561489c5761489b6139bf565b5b828203905092915050565b600060c0820190506148bc60008301896137a3565b6148c9602083018861362e565b6148d6604083018761480a565b6148e3606083018661480a565b6148f060808301856137a3565b6148fd60a083018461362e565b979650505050505050565b6000806000606084860312156149215761492061351a565b5b600061492f868287016146df565b9350506020614940868287016146df565b9250506040614951868287016146df565b9150509250925092565b600081905092915050565b50565b600061497660008361495b565b915061498182614966565b600082019050919050565b600061499782614969565b9150819050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006149d7601483613460565b91506149e2826149a1565b602082019050919050565b60006020820190508181036000830152614a06816149ca565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a69602183613460565b9150614a7482614a0d565b604082019050919050565b60006020820190508181036000830152614a9881614a5c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614afb602283613460565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614b67601083613460565b9150614b7282614b31565b602082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614bf9602583613460565b9150614c0482614b9d565b604082019050919050565b60006020820190508181036000830152614c2881614bec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c8b602383613460565b9150614c9682614c2f565b604082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614d1d602683613460565b9150614d2882614cc1565b604082019050919050565b60006020820190508181036000830152614d4c81614d10565b905091905056fea26469706673582212206649404bd41647e6992d753607e1265d05fefdfa6118191ffdb2884930e0b51164736f6c63430008090033

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

00000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000953309d175840927c41d198c9206bbc6e5fee2b80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000009fb7f5b89f3fee4473c4e23ac66ba3535bd43399000000000000000000000000c9022c126a89dd4be4701aa29e4768c1bb335134000000000000000000000000a82152cc6b241d98d24a9dbd0e87e578571cdce00000000000000000000000009fb7f5b89f3fee4473c4e23ac66ba3535bd4339900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a4b415341204f42414b450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054f42414b45000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): KASA OBAKE
Arg [1] : _tokenSymbol (string): OBAKE
Arg [2] : _supply (uint256): 1000000000
Arg [3] : _addr (address[6]): 0x953309d175840927c41D198C9206BbC6e5FEe2b8,0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,0x9fb7f5b89f3Fee4473c4e23Ac66ba3535Bd43399,0xC9022C126a89DD4BE4701aA29E4768C1Bb335134,0xA82152cC6B241D98D24a9DbD0E87e578571cdCe0,0x9fb7f5b89f3Fee4473c4e23Ac66ba3535Bd43399
Arg [4] : _value (uint256[8]): 1,1,1,1,1,1,1,1

-----Encoded View---------------
21 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 000000000000000000000000953309d175840927c41d198c9206bbc6e5fee2b8
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 0000000000000000000000009fb7f5b89f3fee4473c4e23ac66ba3535bd43399
Arg [6] : 000000000000000000000000c9022c126a89dd4be4701aa29e4768c1bb335134
Arg [7] : 000000000000000000000000a82152cc6b241d98d24a9dbd0e87e578571cdce0
Arg [8] : 0000000000000000000000009fb7f5b89f3fee4473c4e23ac66ba3535bd43399
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [17] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [18] : 4b415341204f42414b4500000000000000000000000000000000000000000000
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [20] : 4f42414b45000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

28898:11862:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6648:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8815:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7768:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29974:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9466:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37113:106;;;;;;;;;;;;;:::i;:::-;;7610:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10367:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37496:130;;;;;;;;;;;;;:::i;:::-;;37703:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38463:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39934:140;;;;;;;;;;;;;:::i;:::-;;19749:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7939:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18136:94;;;;;;;;;;;;;:::i;:::-;;37916:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37293:131;;;;;;;;;;;;;:::i;:::-;;39304:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17485:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6867:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39650:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11085:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38969:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8279:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38726:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40606:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40140:142;;;;;;;;;;;;;:::i;:::-;;38195:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8517:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18385:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40390:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6648:100;6702:13;6735:5;6728:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6648:100;:::o;8815:169::-;8898:4;8915:39;8924:12;:10;:12::i;:::-;8938:7;8947:6;8915:8;:39::i;:::-;8972:4;8965:11;;8815:169;;;;:::o;7768:108::-;7829:7;7856:12;;7849:19;;7768:108;:::o;29974:28::-;;;;;;;;;;;;;:::o;9466:492::-;9606:4;9623:36;9633:6;9641:9;9652:6;9623:9;:36::i;:::-;9672:24;9699:11;:19;9711:6;9699:19;;;;;;;;;;;;;;;:33;9719:12;:10;:12::i;:::-;9699:33;;;;;;;;;;;;;;;;9672:60;;9771:6;9751:16;:26;;9743:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9858:57;9867:6;9875:12;:10;:12::i;:::-;9908:6;9889:16;:25;9858:8;:57::i;:::-;9946:4;9939:11;;;9466:492;;;;;:::o;37113:106::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37163:48:::1;37181:1;37193:13;;;;;;;;;;;37209:1;37163:9;:48::i;:::-;;37113:106::o:0;7610:93::-;7668:5;7693:2;7686:9;;7610:93;:::o;10367:215::-;10455:4;10472:80;10481:12;:10;:12::i;:::-;10495:7;10541:10;10504:11;:25;10516:12;:10;:12::i;:::-;10504:25;;;;;;;;;;;;;;;:34;10530:7;10504:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10472:8;:80::i;:::-;10570:4;10563:11;;10367:215;;;;:::o;37496:130::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37551:8:::1;:6;:8::i;:::-;37543:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;37608:10;:8;:10::i;:::-;37496:130::o:0;37703:91::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37761:25:::1;37767:10;37779:6;37761:5;:25::i;:::-;37703:91:::0;:::o;38463:179::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38534:19:::1;38545:7;38534:10;:19::i;:::-;38533:20;38525:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;38630:4;38607:11;:20;38619:7;38607:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;38463:179:::0;:::o;39934:140::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39992:9:::1;;;;;;;;;;;39991:10;39983:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;40062:4;40050:9;;:16;;;;;;;;;;;;;;;;;;39934:140::o:0;19749:86::-;19796:4;19820:7;;;;;;;;;;;19813:14;;19749:86;:::o;7939:127::-;8013:7;8040:9;:18;8050:7;8040:18;;;;;;;;;;;;;;;;8033:25;;7939:127;;;:::o;18136:94::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18201:21:::1;18219:1;18201:9;:21::i;:::-;18136:94::o:0;37916:187::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37995:9:::1;:18;38005:7;37995:18;;;;;;;;;;;;;;;;;;;;;;;;;37994:19;37986:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;38091:4;38070:9;:18;38080:7;38070:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;37916:187:::0;:::o;37293:131::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37347:8:::1;:6;:8::i;:::-;37346:9;37338:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;37408:8;:6;:8::i;:::-;37293:131::o:0;39304:279::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39441:3:::1;39422:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;;39480:9;39455;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;39525:9;39500;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;39568:7;39545:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;;39304:279:::0;;;;:::o;17485:87::-;17531:7;17558:6;;;;;;;;;;;17551:13;;17485:87;:::o;6867:104::-;6923:13;6956:7;6949:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6867:104;:::o;39650:219::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39770:3:::1;39750:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;39810:9;39784:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;39854:7;39830:10;:21;;;;;:::i;:::-;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;39650:219:::0;;;:::o;11085:413::-;11178:4;11195:24;11222:11;:25;11234:12;:10;:12::i;:::-;11222:25;;;;;;;;;;;;;;;:34;11248:7;11222:34;;;;;;;;;;;;;;;;11195:61;;11295:15;11275:16;:35;;11267:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11388:67;11397:12;:10;:12::i;:::-;11411:7;11439:15;11420:16;:34;11388:8;:67::i;:::-;11486:4;11479:11;;;11085:413;;;;:::o;38969:272::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39102:3:::1;39084:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;39140:9;39116:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;39184:9;39160:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;39226:7;39204:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;:29;;;;38969:272:::0;;;;:::o;8279:175::-;8365:4;8382:42;8392:12;:10;:12::i;:::-;8406:9;8417:6;8382:9;:42::i;:::-;8442:4;8435:11;;8279:175;;;;:::o;38726:181::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38802:19:::1;38813:7;38802:10;:19::i;:::-;38794:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;38894:5;38871:11;:20;38883:7;38871:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38726:181:::0;:::o;40606:110::-;40664:4;40688:11;:20;40700:7;40688:20;;;;;;;;;;;;;;;;;;;;;;;;;40681:27;;40606:110;;;:::o;40140:142::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40198:9:::1;;;;;;;;;;;40190:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;40269:5;40257:9;;:17;;;;;;;;;;;;;;;;;;40140:142::o:0;38195:184::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38274:9:::1;:18;38284:7;38274:18;;;;;;;;;;;;;;;;;;;;;;;;;38266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38366:5;38345:9;:18;38355:7;38345:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;38195:184:::0;:::o;8517:151::-;8606:7;8633:11;:18;8645:5;8633:18;;;;;;;;;;;;;;;:27;8652:7;8633:27;;;;;;;;;;;;;;;;8626:34;;8517:151;;;;:::o;18385:192::-;17716:12;:10;:12::i;:::-;17705:23;;:7;:5;:7::i;:::-;:23;;;17697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18494:1:::1;18474:22;;:8;:22;;;;18466:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18550:19;18560:8;18550:9;:19::i;:::-;18385:192:::0;:::o;40390:111::-;40451:4;40475:9;:18;40485:7;40475:18;;;;;;;;;;;;;;;;;;;;;;;;;40468:25;;40390:111;;;:::o;4467:98::-;4520:7;4547:10;4540:17;;4467:98;:::o;14769:380::-;14922:1;14905:19;;:5;:19;;;;14897:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15003:1;14984:21;;:7;:21;;;;14976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15087:6;15057:11;:18;15069:5;15057:18;;;;;;;;;;;;;;;:27;15076:7;15057:27;;;;;;;;;;;;;;;:36;;;;15125:7;15109:32;;15118:5;15109:32;;;15134:6;15109:32;;;;;;:::i;:::-;;;;;;;;14769:380;;;:::o;36411:619::-;36561:8;:6;:8::i;:::-;36560:9;36552:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;36632:25;36646:10;36632:13;:25::i;:::-;36631:26;36623:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36711:24;36725:9;36711:13;:24::i;:::-;36710:25;36702:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;36792:24;36806:9;36792:13;:24::i;:::-;36791:25;36783:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36874:9;;;;;;;;;;;36871:89;;;36909:36;36919:6;36927:9;36938:6;36909:9;:36::i;:::-;36900:45;;36871:89;36980:42;36996:6;37004:9;37015:6;36980:15;:42::i;:::-;36411:619;;;:::o;31367:5032::-;31445:7;31465:25;31507:1;31493:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31465:44;;31542:4;31520:8;31529:1;31520:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;31572:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31558:8;31567:1;31558:11;;;;;;;;:::i;:::-;;;;;;;:38;;;;;;;;;;;31621:16;31632:4;31621:10;:16::i;:::-;31620:17;:36;;;;;31642:14;31653:2;31642:10;:14::i;:::-;31641:15;31620:36;31617:4741;;;31673:11;31699:16;31727:11;;31718:6;:20;;;;:::i;:::-;31699:39;;31772:13;;;;;;;;;;;31756:30;;:4;:30;;;31753:4552;;;31825:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;31814:8;:32;;;;:::i;:::-;31807:39;;;;;:::i;:::-;;;31883:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;31872:8;:26;;;;:::i;:::-;31865:33;;;;;:::i;:::-;;;31935:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;31924:8;:32;;;;:::i;:::-;31917:39;;;;;:::i;:::-;;;31993:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;;31982:8;:30;;;;:::i;:::-;31975:37;;;;;:::i;:::-;;;32058:1;32052:3;:7;32049:93;;;32084:35;32094:4;32108;32115:3;32084:9;:35::i;:::-;32049:93;32208:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;32197:8;:32;;;;:::i;:::-;32178:15;;:51;;;;;;;:::i;:::-;;;;;;;;32272:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;32261:8;:26;;;;:::i;:::-;32248:9;;:39;;;;;;;:::i;:::-;;;;;;;;32336:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;32325:8;:32;;;;:::i;:::-;32306:15;;:51;;;;;;;:::i;:::-;;;;;;;;32404:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;;32393:8;:30;;;;:::i;:::-;32376:13;;:47;;;;;;;:::i;:::-;;;;;;;;31753:4552;;;32462:13;;;;;;;;;;;32448:28;;:2;:28;;;32445:3860;;;32515:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;32504:8;:33;;;;:::i;:::-;32497:40;;;;;:::i;:::-;;;32574:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;32563:8;:27;;;;:::i;:::-;32556:34;;;;;:::i;:::-;;;32627:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;32616:8;:33;;;;:::i;:::-;32609:40;;;;;:::i;:::-;;;32686:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;;32675:8;:31;;;;:::i;:::-;32668:38;;;;;:::i;:::-;;;32752:1;32746:3;:7;32743:93;;;32778:35;32788:4;32802;32809:3;32778:9;:35::i;:::-;32743:93;32902:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;32891:8;:33;;;;:::i;:::-;32872:15;;:52;;;;;;;:::i;:::-;;;;;;;;32967:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;32956:8;:27;;;;:::i;:::-;32943:9;;:40;;;;;;;:::i;:::-;;;;;;;;33032:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;33021:8;:33;;;;:::i;:::-;33002:15;;:52;;;;;;;:::i;:::-;;;;;;;;33101:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;;33090:8;:31;;;;:::i;:::-;33073:13;;:48;;;;;;;:::i;:::-;;;;;;;;33158:14;33223:13;;33205:15;;33193:9;;33175:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;33158:78;;33286:1;33276:6;:11;33273:29;;;33296:6;33289:13;;;;;;;;33273:29;33339:16;33358:17;;;;;;;;;;;:31;;;33438:13;;33420:15;;33408:9;;33390:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;33453:8;33358:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33463:1;33358:107;;;;;;;;:::i;:::-;;;;;;;;33339:126;;33517:13;;33505:8;:25;33502:2770;;33555:20;33578:21;33555:44;;33624:14;33693:13;;33689:1;33671:15;;:19;;;;:::i;:::-;33659:9;;33641:15;;:27;;;;:::i;:::-;:49;;;;:::i;:::-;:65;;;;:::i;:::-;33624:82;;33751:59;33768:4;33783:17;;;;;;;;;;;33803:6;33751:8;:59::i;:::-;33847:17;;;;;;;;;;;:39;;;33913:6;33946:1;33974:8;34017:4;34049:15;33847:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34132:17;34176:12;34152:21;:36;;;;:::i;:::-;34132:56;;34233:22;34276:1;34258:15;;:19;;;;:::i;:::-;34233:44;;34300:20;34381:6;34370;34360;34356:1;34338:15;;:19;;;;:::i;:::-;:28;;;;:::i;:::-;34337:39;;;;:::i;:::-;34324:9;:53;;;;:::i;:::-;34323:64;;;;:::i;:::-;34300:87;;34432:20;34509:6;34498;34488;34470:15;;:24;;;;:::i;:::-;34469:35;;;;:::i;:::-;34456:9;:49;;;;:::i;:::-;34455:60;;;;:::i;:::-;34432:83;;34538:14;34603:6;34592;34582;34570:9;;:18;;;;:::i;:::-;34569:29;;;;:::i;:::-;34556:9;:43;;;;:::i;:::-;34555:54;;;;:::i;:::-;34538:71;;34632:18;34705:6;34694;34684;34668:13;;:22;;;;:::i;:::-;34667:33;;;;:::i;:::-;34654:9;:47;;;;:::i;:::-;34653:58;;;;:::i;:::-;34632:79;;34756:67;34773:4;34788:17;;;;;;;;;;;34808:14;34756:8;:67::i;:::-;34869:16;34887:14;34903;34921:17;;;;;;;;;;;:33;;;34962:12;35010:4;35042:14;35083:1;35111;35139:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35189:15;34921:306;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34868:359;;;;;;35272:23;35374:11;35365:6;:20;;;;:::i;:::-;35347:13;;35329:15;;35317:9;;35299:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;35298:88;;;;:::i;:::-;35272:114;;35452:1;35434:15;:19;35431:135;;;35482:60;35500:4;35507:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35526:15;35482:9;:60::i;:::-;35431:135;35610:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:28;;35646:12;35610:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35686:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:22;;35716:6;35686:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35750:10;:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:26;;35784:10;35750:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35913:1;35899:10;35884:12;35875:6;35860:12;:21;;;;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;35847:9;:63;;;;:::i;:::-;:67;35844:227;;;35943:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:28;;36031:10;36016:12;36007:6;35992:12;:21;;;;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;35979:9;:63;;;;:::i;:::-;35943:104;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35844:227;36133:1;36115:15;:19;;;;36169:1;36157:9;:13;;;;36211:1;36193:15;:19;;;;36251:1;36235:13;:17;;;;33532:2740;;;;;;;;;;;;33502:2770;32478:3827;;32445:3860;31753:4552;36343:3;36333:13;;;;;:::i;:::-;;;31658:4700;;31617:4741;36385:6;36378:13;;;31367:5032;;;;;;:::o;20808:120::-;20352:8;:6;:8::i;:::-;20344:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20877:5:::1;20867:7;;:15;;;;;;;;;;;;;;;;;;20898:22;20907:12;:10;:12::i;:::-;20898:22;;;;;;:::i;:::-;;;;;;;;20808:120::o:0;13740:591::-;13843:1;13824:21;;:7;:21;;;;13816:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13896:49;13917:7;13934:1;13938:6;13896:20;:49::i;:::-;13958:22;13983:9;:18;13993:7;13983:18;;;;;;;;;;;;;;;;13958:43;;14038:6;14020:14;:24;;14012:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14157:6;14140:14;:23;14119:9;:18;14129:7;14119:18;;;;;;;;;;;;;;;:44;;;;14201:6;14185:12;;:22;;;;;;;:::i;:::-;;;;;;;;14251:1;14225:37;;14234:7;14225:37;;;14255:6;14225:37;;;;;;:::i;:::-;;;;;;;;14275:48;14295:7;14312:1;14316:6;14275:19;:48::i;:::-;13805:526;13740:591;;:::o;18585:174::-;18642:16;18661:6;;;;;;;;;;;18642:25;;18687:8;18678:6;;:17;;;;;;;;;;;;;;;;;;18742:8;18711:40;;18732:8;18711:40;;;;;;;;;;;;18631:128;18585:174;:::o;20549:118::-;20075:8;:6;:8::i;:::-;20074:9;20066:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20619:4:::1;20609:7;;:14;;;;;;;;;;;;;;;;;;20639:20;20646:12;:10;:12::i;:::-;20639:20;;;;;;:::i;:::-;;;;;;;;20549:118::o:0;11988:733::-;12146:1;12128:20;;:6;:20;;;;12120:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12230:1;12209:23;;:9;:23;;;;12201:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12285:47;12306:6;12314:9;12325:6;12285:20;:47::i;:::-;12345:21;12369:9;:17;12379:6;12369:17;;;;;;;;;;;;;;;;12345:41;;12422:6;12405:13;:23;;12397:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12543:6;12527:13;:22;12507:9;:17;12517:6;12507:17;;;;;;;;;;;;;;;:42;;;;12595:6;12571:9;:20;12581:9;12571:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12636:9;12619:35;;12628:6;12619:35;;;12647:6;12619:35;;;;;;:::i;:::-;;;;;;;;12667:46;12687:6;12695:9;12706:6;12667:19;:46::i;:::-;12109:612;11988:733;;;:::o;15749:125::-;;;;:::o;16478:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:765::-;5657:6;5665;5673;5681;5730:3;5718:9;5709:7;5705:23;5701:33;5698:120;;;5737:79;;:::i;:::-;5698:120;5857:1;5882:53;5927:7;5918:6;5907:9;5903:22;5882:53;:::i;:::-;5872:63;;5828:117;5984:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5955:118;6112:2;6138:53;6183:7;6174:6;6163:9;6159:22;6138:53;:::i;:::-;6128:63;;6083:118;6240:2;6266:53;6311:7;6302:6;6291:9;6287:22;6266:53;:::i;:::-;6256:63;;6211:118;5571:765;;;;;;;:::o;6342:118::-;6429:24;6447:5;6429:24;:::i;:::-;6424:3;6417:37;6342:118;;:::o;6466:222::-;6559:4;6597:2;6586:9;6582:18;6574:26;;6610:71;6678:1;6667:9;6663:17;6654:6;6610:71;:::i;:::-;6466:222;;;;:::o;6694:619::-;6771:6;6779;6787;6836:2;6824:9;6815:7;6811:23;6807:32;6804:119;;;6842:79;;:::i;:::-;6804:119;6962:1;6987:53;7032:7;7023:6;7012:9;7008:22;6987:53;:::i;:::-;6977:63;;6933:117;7089:2;7115:53;7160:7;7151:6;7140:9;7136:22;7115:53;:::i;:::-;7105:63;;7060:118;7217:2;7243:53;7288:7;7279:6;7268:9;7264:22;7243:53;:::i;:::-;7233:63;;7188:118;6694:619;;;;;:::o;7319:474::-;7387:6;7395;7444:2;7432:9;7423:7;7419:23;7415:32;7412:119;;;7450:79;;:::i;:::-;7412:119;7570:1;7595:53;7640:7;7631:6;7620:9;7616:22;7595:53;:::i;:::-;7585:63;;7541:117;7697:2;7723:53;7768:7;7759:6;7748:9;7744:22;7723:53;:::i;:::-;7713:63;;7668:118;7319:474;;;;;:::o;7799:180::-;7847:77;7844:1;7837:88;7944:4;7941:1;7934:15;7968:4;7965:1;7958:15;7985:320;8029:6;8066:1;8060:4;8056:12;8046:22;;8113:1;8107:4;8103:12;8134:18;8124:81;;8190:4;8182:6;8178:17;8168:27;;8124:81;8252:2;8244:6;8241:14;8221:18;8218:38;8215:84;;;8271:18;;:::i;:::-;8215:84;8036:269;7985:320;;;:::o;8311:227::-;8451:34;8447:1;8439:6;8435:14;8428:58;8520:10;8515:2;8507:6;8503:15;8496:35;8311:227;:::o;8544:366::-;8686:3;8707:67;8771:2;8766:3;8707:67;:::i;:::-;8700:74;;8783:93;8872:3;8783:93;:::i;:::-;8901:2;8896:3;8892:12;8885:19;;8544:366;;;:::o;8916:419::-;9082:4;9120:2;9109:9;9105:18;9097:26;;9169:9;9163:4;9159:20;9155:1;9144:9;9140:17;9133:47;9197:131;9323:4;9197:131;:::i;:::-;9189:139;;8916:419;;;:::o;9341:182::-;9481:34;9477:1;9469:6;9465:14;9458:58;9341:182;:::o;9529:366::-;9671:3;9692:67;9756:2;9751:3;9692:67;:::i;:::-;9685:74;;9768:93;9857:3;9768:93;:::i;:::-;9886:2;9881:3;9877:12;9870:19;;9529:366;;;:::o;9901:419::-;10067:4;10105:2;10094:9;10090:18;10082:26;;10154:9;10148:4;10144:20;10140:1;10129:9;10125:17;10118:47;10182:131;10308:4;10182:131;:::i;:::-;10174:139;;9901:419;;;:::o;10326:180::-;10374:77;10371:1;10364:88;10471:4;10468:1;10461:15;10495:4;10492:1;10485:15;10512:305;10552:3;10571:20;10589:1;10571:20;:::i;:::-;10566:25;;10605:20;10623:1;10605:20;:::i;:::-;10600:25;;10759:1;10691:66;10687:74;10684:1;10681:81;10678:107;;;10765:18;;:::i;:::-;10678:107;10809:1;10806;10802:9;10795:16;;10512:305;;;;:::o;10823:220::-;10963:34;10959:1;10951:6;10947:14;10940:58;11032:3;11027:2;11019:6;11015:15;11008:28;10823:220;:::o;11049:366::-;11191:3;11212:67;11276:2;11271:3;11212:67;:::i;:::-;11205:74;;11288:93;11377:3;11288:93;:::i;:::-;11406:2;11401:3;11397:12;11390:19;;11049:366;;;:::o;11421:419::-;11587:4;11625:2;11614:9;11610:18;11602:26;;11674:9;11668:4;11664:20;11660:1;11649:9;11645:17;11638:47;11702:131;11828:4;11702:131;:::i;:::-;11694:139;;11421:419;;;:::o;11846:225::-;11986:34;11982:1;11974:6;11970:14;11963:58;12055:8;12050:2;12042:6;12038:15;12031:33;11846:225;:::o;12077:366::-;12219:3;12240:67;12304:2;12299:3;12240:67;:::i;:::-;12233:74;;12316:93;12405:3;12316:93;:::i;:::-;12434:2;12429:3;12425:12;12418:19;;12077:366;;;:::o;12449:419::-;12615:4;12653:2;12642:9;12638:18;12630:26;;12702:9;12696:4;12692:20;12688:1;12677:9;12673:17;12666:47;12730:131;12856:4;12730:131;:::i;:::-;12722:139;;12449:419;;;:::o;12874:220::-;13014:34;13010:1;13002:6;12998:14;12991:58;13083:3;13078:2;13070:6;13066:15;13059:28;12874:220;:::o;13100:366::-;13242:3;13263:67;13327:2;13322:3;13263:67;:::i;:::-;13256:74;;13339:93;13428:3;13339:93;:::i;:::-;13457:2;13452:3;13448:12;13441:19;;13100:366;;;:::o;13472:419::-;13638:4;13676:2;13665:9;13661:18;13653:26;;13725:9;13719:4;13715:20;13711:1;13700:9;13696:17;13689:47;13753:131;13879:4;13753:131;:::i;:::-;13745:139;;13472:419;;;:::o;13897:228::-;14037:34;14033:1;14025:6;14021:14;14014:58;14106:11;14101:2;14093:6;14089:15;14082:36;13897:228;:::o;14131:366::-;14273:3;14294:67;14358:2;14353:3;14294:67;:::i;:::-;14287:74;;14370:93;14459:3;14370:93;:::i;:::-;14488:2;14483:3;14479:12;14472:19;;14131:366;;;:::o;14503:419::-;14669:4;14707:2;14696:9;14692:18;14684:26;;14756:9;14750:4;14746:20;14742:1;14731:9;14727:17;14720:47;14784:131;14910:4;14784:131;:::i;:::-;14776:139;;14503:419;;;:::o;14928:224::-;15068:34;15064:1;15056:6;15052:14;15045:58;15137:7;15132:2;15124:6;15120:15;15113:32;14928:224;:::o;15158:366::-;15300:3;15321:67;15385:2;15380:3;15321:67;:::i;:::-;15314:74;;15397:93;15486:3;15397:93;:::i;:::-;15515:2;15510:3;15506:12;15499:19;;15158:366;;;:::o;15530:419::-;15696:4;15734:2;15723:9;15719:18;15711:26;;15783:9;15777:4;15773:20;15769:1;15758:9;15754:17;15747:47;15811:131;15937:4;15811:131;:::i;:::-;15803:139;;15530:419;;;:::o;15955:148::-;16057:11;16094:3;16079:18;;15955:148;;;;:::o;16109:153::-;16249:5;16245:1;16237:6;16233:14;16226:29;16109:153;:::o;16268:400::-;16428:3;16449:84;16531:1;16526:3;16449:84;:::i;:::-;16442:91;;16542:93;16631:3;16542:93;:::i;:::-;16660:1;16655:3;16651:11;16644:18;;16268:400;;;:::o;16674:381::-;16859:3;16881:148;17025:3;16881:148;:::i;:::-;16874:155;;17046:3;17039:10;;16674:381;;;:::o;17061:159::-;17201:11;17197:1;17189:6;17185:14;17178:35;17061:159;:::o;17226:400::-;17386:3;17407:84;17489:1;17484:3;17407:84;:::i;:::-;17400:91;;17500:93;17589:3;17500:93;:::i;:::-;17618:1;17613:3;17609:11;17602:18;;17226:400;;;:::o;17632:381::-;17817:3;17839:148;17983:3;17839:148;:::i;:::-;17832:155;;18004:3;17997:10;;17632:381;;;:::o;18019:159::-;18159:11;18155:1;18147:6;18143:14;18136:35;18019:159;:::o;18184:400::-;18344:3;18365:84;18447:1;18442:3;18365:84;:::i;:::-;18358:91;;18458:93;18547:3;18458:93;:::i;:::-;18576:1;18571:3;18567:11;18560:18;;18184:400;;;:::o;18590:381::-;18775:3;18797:148;18941:3;18797:148;:::i;:::-;18790:155;;18962:3;18955:10;;18590:381;;;:::o;18977:157::-;19117:9;19113:1;19105:6;19101:14;19094:33;18977:157;:::o;19140:400::-;19300:3;19321:84;19403:1;19398:3;19321:84;:::i;:::-;19314:91;;19414:93;19503:3;19414:93;:::i;:::-;19532:1;19527:3;19523:11;19516:18;;19140:400;;;:::o;19546:381::-;19731:3;19753:148;19897:3;19753:148;:::i;:::-;19746:155;;19918:3;19911:10;;19546:381;;;:::o;19933:224::-;20073:34;20069:1;20061:6;20057:14;20050:58;20142:7;20137:2;20129:6;20125:15;20118:32;19933:224;:::o;20163:366::-;20305:3;20326:67;20390:2;20385:3;20326:67;:::i;:::-;20319:74;;20402:93;20491:3;20402:93;:::i;:::-;20520:2;20515:3;20511:12;20504:19;;20163:366;;;:::o;20535:419::-;20701:4;20739:2;20728:9;20724:18;20716:26;;20788:9;20782:4;20778:20;20774:1;20763:9;20759:17;20752:47;20816:131;20942:4;20816:131;:::i;:::-;20808:139;;20535:419;;;:::o;20960:221::-;21100:34;21096:1;21088:6;21084:14;21077:58;21169:4;21164:2;21156:6;21152:15;21145:29;20960:221;:::o;21187:366::-;21329:3;21350:67;21414:2;21409:3;21350:67;:::i;:::-;21343:74;;21426:93;21515:3;21426:93;:::i;:::-;21544:2;21539:3;21535:12;21528:19;;21187:366;;;:::o;21559:419::-;21725:4;21763:2;21752:9;21748:18;21740:26;;21812:9;21806:4;21802:20;21798:1;21787:9;21783:17;21776:47;21840:131;21966:4;21840:131;:::i;:::-;21832:139;;21559:419;;;:::o;21984:221::-;22124:34;22120:1;22112:6;22108:14;22101:58;22193:4;22188:2;22180:6;22176:15;22169:29;21984:221;:::o;22211:366::-;22353:3;22374:67;22438:2;22433:3;22374:67;:::i;:::-;22367:74;;22450:93;22539:3;22450:93;:::i;:::-;22568:2;22563:3;22559:12;22552:19;;22211:366;;;:::o;22583:419::-;22749:4;22787:2;22776:9;22772:18;22764:26;;22836:9;22830:4;22826:20;22822:1;22811:9;22807:17;22800:47;22864:131;22990:4;22864:131;:::i;:::-;22856:139;;22583:419;;;:::o;23008:224::-;23148:34;23144:1;23136:6;23132:14;23125:58;23217:7;23212:2;23204:6;23200:15;23193:32;23008:224;:::o;23238:366::-;23380:3;23401:67;23465:2;23460:3;23401:67;:::i;:::-;23394:74;;23477:93;23566:3;23477:93;:::i;:::-;23595:2;23590:3;23586:12;23579:19;;23238:366;;;:::o;23610:419::-;23776:4;23814:2;23803:9;23799:18;23791:26;;23863:9;23857:4;23853:20;23849:1;23838:9;23834:17;23827:47;23891:131;24017:4;23891:131;:::i;:::-;23883:139;;23610:419;;;:::o;24035:225::-;24175:34;24171:1;24163:6;24159:14;24152:58;24244:8;24239:2;24231:6;24227:15;24220:33;24035:225;:::o;24266:366::-;24408:3;24429:67;24493:2;24488:3;24429:67;:::i;:::-;24422:74;;24505:93;24594:3;24505:93;:::i;:::-;24623:2;24618:3;24614:12;24607:19;;24266:366;;;:::o;24638:419::-;24804:4;24842:2;24831:9;24827:18;24819:26;;24891:9;24885:4;24881:20;24877:1;24866:9;24862:17;24855:47;24919:131;25045:4;24919:131;:::i;:::-;24911:139;;24638:419;;;:::o;25063:223::-;25203:34;25199:1;25191:6;25187:14;25180:58;25272:6;25267:2;25259:6;25255:15;25248:31;25063:223;:::o;25292:366::-;25434:3;25455:67;25519:2;25514:3;25455:67;:::i;:::-;25448:74;;25531:93;25620:3;25531:93;:::i;:::-;25649:2;25644:3;25640:12;25633:19;;25292:366;;;:::o;25664:419::-;25830:4;25868:2;25857:9;25853:18;25845:26;;25917:9;25911:4;25907:20;25903:1;25892:9;25888:17;25881:47;25945:131;26071:4;25945:131;:::i;:::-;25937:139;;25664:419;;;:::o;26089:221::-;26229:34;26225:1;26217:6;26213:14;26206:58;26298:4;26293:2;26285:6;26281:15;26274:29;26089:221;:::o;26316:366::-;26458:3;26479:67;26543:2;26538:3;26479:67;:::i;:::-;26472:74;;26555:93;26644:3;26555:93;:::i;:::-;26673:2;26668:3;26664:12;26657:19;;26316:366;;;:::o;26688:419::-;26854:4;26892:2;26881:9;26877:18;26869:26;;26941:9;26935:4;26931:20;26927:1;26916:9;26912:17;26905:47;26969:131;27095:4;26969:131;:::i;:::-;26961:139;;26688:419;;;:::o;27113:225::-;27253:34;27249:1;27241:6;27237:14;27230:58;27322:8;27317:2;27309:6;27305:15;27298:33;27113:225;:::o;27344:366::-;27486:3;27507:67;27571:2;27566:3;27507:67;:::i;:::-;27500:74;;27583:93;27672:3;27583:93;:::i;:::-;27701:2;27696:3;27692:12;27685:19;;27344:366;;;:::o;27716:419::-;27882:4;27920:2;27909:9;27905:18;27897:26;;27969:9;27963:4;27959:20;27955:1;27944:9;27940:17;27933:47;27997:131;28123:4;27997:131;:::i;:::-;27989:139;;27716:419;;;:::o;28141:179::-;28281:31;28277:1;28269:6;28265:14;28258:55;28141:179;:::o;28326:366::-;28468:3;28489:67;28553:2;28548:3;28489:67;:::i;:::-;28482:74;;28565:93;28654:3;28565:93;:::i;:::-;28683:2;28678:3;28674:12;28667:19;;28326:366;;;:::o;28698:419::-;28864:4;28902:2;28891:9;28887:18;28879:26;;28951:9;28945:4;28941:20;28937:1;28926:9;28922:17;28915:47;28979:131;29105:4;28979:131;:::i;:::-;28971:139;;28698:419;;;:::o;29123:182::-;29263:34;29259:1;29251:6;29247:14;29240:58;29123:182;:::o;29311:366::-;29453:3;29474:67;29538:2;29533:3;29474:67;:::i;:::-;29467:74;;29550:93;29639:3;29550:93;:::i;:::-;29668:2;29663:3;29659:12;29652:19;;29311:366;;;:::o;29683:419::-;29849:4;29887:2;29876:9;29872:18;29864:26;;29936:9;29930:4;29926:20;29922:1;29911:9;29907:17;29900:47;29964:131;30090:4;29964:131;:::i;:::-;29956:139;;29683:419;;;:::o;30108:180::-;30156:77;30153:1;30146:88;30253:4;30250:1;30243:15;30277:4;30274:1;30267:15;30294:180;30342:77;30339:1;30332:88;30439:4;30436:1;30429:15;30463:4;30460:1;30453:15;30480:143;30537:5;30568:6;30562:13;30553:22;;30584:33;30611:5;30584:33;:::i;:::-;30480:143;;;;:::o;30629:351::-;30699:6;30748:2;30736:9;30727:7;30723:23;30719:32;30716:119;;;30754:79;;:::i;:::-;30716:119;30874:1;30899:64;30955:7;30946:6;30935:9;30931:22;30899:64;:::i;:::-;30889:74;;30845:128;30629:351;;;;:::o;30986:180::-;31034:77;31031:1;31024:88;31131:4;31128:1;31121:15;31155:4;31152:1;31145:15;31172:185;31212:1;31229:20;31247:1;31229:20;:::i;:::-;31224:25;;31263:20;31281:1;31263:20;:::i;:::-;31258:25;;31302:1;31292:35;;31307:18;;:::i;:::-;31292:35;31349:1;31346;31342:9;31337:14;;31172:185;;;;:::o;31363:348::-;31403:7;31426:20;31444:1;31426:20;:::i;:::-;31421:25;;31460:20;31478:1;31460:20;:::i;:::-;31455:25;;31648:1;31580:66;31576:74;31573:1;31570:81;31565:1;31558:9;31551:17;31547:105;31544:131;;;31655:18;;:::i;:::-;31544:131;31703:1;31700;31696:9;31685:20;;31363:348;;;;:::o;31717:114::-;31784:6;31818:5;31812:12;31802:22;;31717:114;;;:::o;31837:184::-;31936:11;31970:6;31965:3;31958:19;32010:4;32005:3;32001:14;31986:29;;31837:184;;;;:::o;32027:132::-;32094:4;32117:3;32109:11;;32147:4;32142:3;32138:14;32130:22;;32027:132;;;:::o;32165:108::-;32242:24;32260:5;32242:24;:::i;:::-;32237:3;32230:37;32165:108;;:::o;32279:179::-;32348:10;32369:46;32411:3;32403:6;32369:46;:::i;:::-;32447:4;32442:3;32438:14;32424:28;;32279:179;;;;:::o;32464:113::-;32534:4;32566;32561:3;32557:14;32549:22;;32464:113;;;:::o;32613:732::-;32732:3;32761:54;32809:5;32761:54;:::i;:::-;32831:86;32910:6;32905:3;32831:86;:::i;:::-;32824:93;;32941:56;32991:5;32941:56;:::i;:::-;33020:7;33051:1;33036:284;33061:6;33058:1;33055:13;33036:284;;;33137:6;33131:13;33164:63;33223:3;33208:13;33164:63;:::i;:::-;33157:70;;33250:60;33303:6;33250:60;:::i;:::-;33240:70;;33096:224;33083:1;33080;33076:9;33071:14;;33036:284;;;33040:14;33336:3;33329:10;;32737:608;;;32613:732;;;;:::o;33351:483::-;33522:4;33560:2;33549:9;33545:18;33537:26;;33573:71;33641:1;33630:9;33626:17;33617:6;33573:71;:::i;:::-;33691:9;33685:4;33681:20;33676:2;33665:9;33661:18;33654:48;33719:108;33822:4;33813:6;33719:108;:::i;:::-;33711:116;;33351:483;;;;;:::o;33840:117::-;33949:1;33946;33939:12;33963:281;34046:27;34068:4;34046:27;:::i;:::-;34038:6;34034:40;34176:6;34164:10;34161:22;34140:18;34128:10;34125:34;34122:62;34119:88;;;34187:18;;:::i;:::-;34119:88;34227:10;34223:2;34216:22;34006:238;33963:281;;:::o;34250:129::-;34284:6;34311:20;;:::i;:::-;34301:30;;34340:33;34368:4;34360:6;34340:33;:::i;:::-;34250:129;;;:::o;34385:311::-;34462:4;34552:18;34544:6;34541:30;34538:56;;;34574:18;;:::i;:::-;34538:56;34624:4;34616:6;34612:17;34604:25;;34684:4;34678;34674:15;34666:23;;34385:311;;;:::o;34702:117::-;34811:1;34808;34801:12;34825:143;34882:5;34913:6;34907:13;34898:22;;34929:33;34956:5;34929:33;:::i;:::-;34825:143;;;;:::o;34991:732::-;35098:5;35123:81;35139:64;35196:6;35139:64;:::i;:::-;35123:81;:::i;:::-;35114:90;;35224:5;35253:6;35246:5;35239:21;35287:4;35280:5;35276:16;35269:23;;35340:4;35332:6;35328:17;35320:6;35316:30;35369:3;35361:6;35358:15;35355:122;;;35388:79;;:::i;:::-;35355:122;35503:6;35486:231;35520:6;35515:3;35512:15;35486:231;;;35595:3;35624:48;35668:3;35656:10;35624:48;:::i;:::-;35619:3;35612:61;35702:4;35697:3;35693:14;35686:21;;35562:155;35546:4;35541:3;35537:14;35530:21;;35486:231;;;35490:21;35104:619;;34991:732;;;;;:::o;35746:385::-;35828:5;35877:3;35870:4;35862:6;35858:17;35854:27;35844:122;;35885:79;;:::i;:::-;35844:122;35995:6;35989:13;36020:105;36121:3;36113:6;36106:4;36098:6;36094:17;36020:105;:::i;:::-;36011:114;;35834:297;35746:385;;;;:::o;36137:554::-;36232:6;36281:2;36269:9;36260:7;36256:23;36252:32;36249:119;;;36287:79;;:::i;:::-;36249:119;36428:1;36417:9;36413:17;36407:24;36458:18;36450:6;36447:30;36444:117;;;36480:79;;:::i;:::-;36444:117;36585:89;36666:7;36657:6;36646:9;36642:22;36585:89;:::i;:::-;36575:99;;36378:306;36137:554;;;;:::o;36697:85::-;36742:7;36771:5;36760:16;;36697:85;;;:::o;36788:60::-;36816:3;36837:5;36830:12;;36788:60;;;:::o;36854:158::-;36912:9;36945:61;36963:42;36972:32;36998:5;36972:32;:::i;:::-;36963:42;:::i;:::-;36945:61;:::i;:::-;36932:74;;36854:158;;;:::o;37018:147::-;37113:45;37152:5;37113:45;:::i;:::-;37108:3;37101:58;37018:147;;:::o;37171:831::-;37434:4;37472:3;37461:9;37457:19;37449:27;;37486:71;37554:1;37543:9;37539:17;37530:6;37486:71;:::i;:::-;37567:80;37643:2;37632:9;37628:18;37619:6;37567:80;:::i;:::-;37694:9;37688:4;37684:20;37679:2;37668:9;37664:18;37657:48;37722:108;37825:4;37816:6;37722:108;:::i;:::-;37714:116;;37840:72;37908:2;37897:9;37893:18;37884:6;37840:72;:::i;:::-;37922:73;37990:3;37979:9;37975:19;37966:6;37922:73;:::i;:::-;37171:831;;;;;;;;:::o;38008:191::-;38048:4;38068:20;38086:1;38068:20;:::i;:::-;38063:25;;38102:20;38120:1;38102:20;:::i;:::-;38097:25;;38141:1;38138;38135:8;38132:34;;;38146:18;;:::i;:::-;38132:34;38191:1;38188;38184:9;38176:17;;38008:191;;;;:::o;38205:807::-;38454:4;38492:3;38481:9;38477:19;38469:27;;38506:71;38574:1;38563:9;38559:17;38550:6;38506:71;:::i;:::-;38587:72;38655:2;38644:9;38640:18;38631:6;38587:72;:::i;:::-;38669:80;38745:2;38734:9;38730:18;38721:6;38669:80;:::i;:::-;38759;38835:2;38824:9;38820:18;38811:6;38759:80;:::i;:::-;38849:73;38917:3;38906:9;38902:19;38893:6;38849:73;:::i;:::-;38932;39000:3;38989:9;38985:19;38976:6;38932:73;:::i;:::-;38205:807;;;;;;;;;:::o;39018:663::-;39106:6;39114;39122;39171:2;39159:9;39150:7;39146:23;39142:32;39139:119;;;39177:79;;:::i;:::-;39139:119;39297:1;39322:64;39378:7;39369:6;39358:9;39354:22;39322:64;:::i;:::-;39312:74;;39268:128;39435:2;39461:64;39517:7;39508:6;39497:9;39493:22;39461:64;:::i;:::-;39451:74;;39406:129;39574:2;39600:64;39656:7;39647:6;39636:9;39632:22;39600:64;:::i;:::-;39590:74;;39545:129;39018:663;;;;;:::o;39687:147::-;39788:11;39825:3;39810:18;;39687:147;;;;:::o;39840:114::-;;:::o;39960:398::-;40119:3;40140:83;40221:1;40216:3;40140:83;:::i;:::-;40133:90;;40232:93;40321:3;40232:93;:::i;:::-;40350:1;40345:3;40341:11;40334:18;;39960:398;;;:::o;40364:379::-;40548:3;40570:147;40713:3;40570:147;:::i;:::-;40563:154;;40734:3;40727:10;;40364:379;;;:::o;40749:170::-;40889:22;40885:1;40877:6;40873:14;40866:46;40749:170;:::o;40925:366::-;41067:3;41088:67;41152:2;41147:3;41088:67;:::i;:::-;41081:74;;41164:93;41253:3;41164:93;:::i;:::-;41282:2;41277:3;41273:12;41266:19;;40925:366;;;:::o;41297:419::-;41463:4;41501:2;41490:9;41486:18;41478:26;;41550:9;41544:4;41540:20;41536:1;41525:9;41521:17;41514:47;41578:131;41704:4;41578:131;:::i;:::-;41570:139;;41297:419;;;:::o;41722:220::-;41862:34;41858:1;41850:6;41846:14;41839:58;41931:3;41926:2;41918:6;41914:15;41907:28;41722:220;:::o;41948:366::-;42090:3;42111:67;42175:2;42170:3;42111:67;:::i;:::-;42104:74;;42187:93;42276:3;42187:93;:::i;:::-;42305:2;42300:3;42296:12;42289:19;;41948:366;;;:::o;42320:419::-;42486:4;42524:2;42513:9;42509:18;42501:26;;42573:9;42567:4;42563:20;42559:1;42548:9;42544:17;42537:47;42601:131;42727:4;42601:131;:::i;:::-;42593:139;;42320:419;;;:::o;42745:221::-;42885:34;42881:1;42873:6;42869:14;42862:58;42954:4;42949:2;42941:6;42937:15;42930:29;42745:221;:::o;42972:366::-;43114:3;43135:67;43199:2;43194:3;43135:67;:::i;:::-;43128:74;;43211:93;43300:3;43211:93;:::i;:::-;43329:2;43324:3;43320:12;43313:19;;42972:366;;;:::o;43344:419::-;43510:4;43548:2;43537:9;43533:18;43525:26;;43597:9;43591:4;43587:20;43583:1;43572:9;43568:17;43561:47;43625:131;43751:4;43625:131;:::i;:::-;43617:139;;43344:419;;;:::o;43769:166::-;43909:18;43905:1;43897:6;43893:14;43886:42;43769:166;:::o;43941:366::-;44083:3;44104:67;44168:2;44163:3;44104:67;:::i;:::-;44097:74;;44180:93;44269:3;44180:93;:::i;:::-;44298:2;44293:3;44289:12;44282:19;;43941:366;;;:::o;44313:419::-;44479:4;44517:2;44506:9;44502:18;44494:26;;44566:9;44560:4;44556:20;44552:1;44541:9;44537:17;44530:47;44594:131;44720:4;44594:131;:::i;:::-;44586:139;;44313:419;;;:::o;44738:224::-;44878:34;44874:1;44866:6;44862:14;44855:58;44947:7;44942:2;44934:6;44930:15;44923:32;44738:224;:::o;44968:366::-;45110:3;45131:67;45195:2;45190:3;45131:67;:::i;:::-;45124:74;;45207:93;45296:3;45207:93;:::i;:::-;45325:2;45320:3;45316:12;45309:19;;44968:366;;;:::o;45340:419::-;45506:4;45544:2;45533:9;45529:18;45521:26;;45593:9;45587:4;45583:20;45579:1;45568:9;45564:17;45557:47;45621:131;45747:4;45621:131;:::i;:::-;45613:139;;45340:419;;;:::o;45765:222::-;45905:34;45901:1;45893:6;45889:14;45882:58;45974:5;45969:2;45961:6;45957:15;45950:30;45765:222;:::o;45993:366::-;46135:3;46156:67;46220:2;46215:3;46156:67;:::i;:::-;46149:74;;46232:93;46321:3;46232:93;:::i;:::-;46350:2;46345:3;46341:12;46334:19;;45993:366;;;:::o;46365:419::-;46531:4;46569:2;46558:9;46554:18;46546:26;;46618:9;46612:4;46608:20;46604:1;46593:9;46589:17;46582:47;46646:131;46772:4;46646:131;:::i;:::-;46638:139;;46365:419;;;:::o;46790:225::-;46930:34;46926:1;46918:6;46914:14;46907:58;46999:8;46994:2;46986:6;46982:15;46975:33;46790:225;:::o;47021:366::-;47163:3;47184:67;47248:2;47243:3;47184:67;:::i;:::-;47177:74;;47260:93;47349:3;47260:93;:::i;:::-;47378:2;47373:3;47369:12;47362:19;;47021:366;;;:::o;47393:419::-;47559:4;47597:2;47586:9;47582:18;47574:26;;47646:9;47640:4;47636:20;47632:1;47621:9;47617:17;47610:47;47674:131;47800:4;47674:131;:::i;:::-;47666:139;;47393:419;;;:::o

Swarm Source

ipfs://6649404bd41647e6992d753607e1265d05fefdfa6118191ffdb2884930e0b511
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.