ETH Price: $2,457.68 (-1.21%)

Token

gm 2.0 (gm2.0)
 

Overview

Max Total Supply

1,000,000,000 gm2.0

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.176904294 gm2.0

Value
$0.00
0x34865dcf50b44d34373685543362640180eb6f51
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:
GM20

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-29
*/

/**


                    ░██████╗░███╗░░░███╗██████╗░░░░░█████╗░
                    ██╔════╝░████╗░████║╚════██╗░░░██╔══██╗
                    ██║░░██╗░██╔████╔██║░░███╔═╝░░░██║░░██║
                    ██║░░╚██╗██║╚██╔╝██║██╔══╝░░░░░██║░░██║
                    ╚██████╔╝██║░╚═╝░██║███████╗██╗╚█████╔╝
                    ░╚═════╝░╚═╝░░░░░╚═╝╚══════╝╚═╝░╚════╝░

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⢿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣨⡿⣧⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⡿⡿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡏⡇⣿⡆⠀⠀⠀⠀⠀⠀⢸⡏⣿⣿⡆⠀⠀⠀⠀⢀⣴⠞⢋⣥⠞⣴⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢱⡇⢿⡇⠀⠀⠀⠀⠀⠀⣾⡇⣿⢹⣧⠀⠀⠀⢠⡾⠁⣰⠟⣡⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠸⣇⠘⣷⣄⠀⠀⠀⠀⠀⣿⠀⣿⠈⢿⡀⠀⠀⢸⡇⠀⡇⢠⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣷⣄⡀⠀⠀⠀⠀⠀⣿⡄⠹⣦⡈⠙⠻⢶⣤⡀⢠⡇⠀⣿⠀⢸⣧⠀⠀⢸⣧⠀⡇⠀⣿⡄⠀⠀⠀⠀⠀⢀⣠⣶⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣟⢶⣤⡀⠀⠀⠈⢻⣦⣈⠉⠳⣦⡀⠙⢿⣾⡇⠀⣿⠀⠀⣿⡄⠀⢠⡟⠀⡇⠀⢹⡇⠀⠀⠀⣠⣴⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣍⠳⣌⠛⢷⣄⡀⠀⠈⠻⣦⠀⠘⣷⠀⢸⣿⠀⢀⣿⣆⡀⢹⣷⣾⠟⠁⣰⡇⠀⣼⡇⢀⣠⠾⢋⡴⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣦⡈⠳⣄⠀⠙⠷⣤⣀⣿⣆⣠⣿⢷⣿⣛⣿⡿⠯⠿⣟⣛⡻⠷⣤⣾⣏⣀⣼⣿⠿⠋⢀⣠⠏⣰⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠀
⣠⣾⣿⣛⠛⢷⣄⠀⠀⠀⠀⠀⠀⠀⠈⢷⡀⠘⢳⣄⠀⠀⣹⡿⣿⠽⠛⠋⠉⠁⠐⠓⠚⠛⠒⠻⠭⠗⠲⢭⣛⢿⣿⠁⢀⣴⠟⠁⣼⠏⠀⠀⠀⢀⣠⣤⣶⣶⣦⣤⣤⣴⢾⣿⠀
⠉⠁⠉⠙⣷⡤⣿⣷⣄⣀⣀⣀⣀⣠⣤⣌⣿⣄⠀⠙⣷⡟⠁⠠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣍⠀⣙⢻⣿⠉⢀⣾⠁⠀⠀⣰⡾⠛⣉⡤⠶⠶⠶⠶⣂⣠⡾⠏⠀
⠀⠀⠀⠀⠘⢿⡙⢦⣍⡛⠛⠋⢉⣀⠀⠈⠙⠛⣷⣾⢻⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠈⠃⠙⣷⣿⣧⣀⣠⣾⠋⣠⠞⢁⣴⠿⠛⠛⠛⠛⠉⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠻⣦⣌⣉⣉⠉⠉⣉⠉⠛⢶⣤⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡅⠀⢀⣀⣴⠏⠀⣼⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠛⠛⠛⠻⣦⣀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠛⠛⠋⢁⣠⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣠⣴⠾⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⣶⣾⣟⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣀⣀⣀⣤⡴⠾⠛⠋⠉⠀⠀⠀⣿⢰⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠈⣷⠀⠀⠉⠙⠛⠛⠶⠶⢦⣤⣤⣀⣀⣀⠀⠀
⢰⣶⣶⣿⣿⣯⡽⠗⠒⠒⠒⠒⠒⠒⠒⠲⣿⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⢠⡿⠓⠒⠒⠒⠒⠒⠒⢒⣲⣿⣿⡿⠿⠛⠓⠀
⠀⠀⠀⠀⠉⠉⠙⠛⠳⠶⠶⢤⣤⣀⣀⣀⣿⡏⡇⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡇⢸⣇⣠⣤⡤⠶⠶⠛⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠿⠛⠋⠉⣻⣷⣸⡹⡄⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣾⣽⠿⢀⣾⠛⢻⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡟⠁⣤⡶⠒⠛⠛⢻⣇⢻⣿⡜⢧⡶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠻⠻⠏⠏⠀⣼⣷⡀⠀⠻⣦⣤⣤⣤⣤⣤⣀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣀⣰⡿⠀⣴⠋⣠⣤⣤⣴⣿⠻⣷⡰⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠀⢀⣾⡇⠈⠛⢶⣤⣤⣤⡤⠤⢤⣍⡙⢿⣆⠀⠀⠀⠀⠀
⠀⢠⣶⠿⣛⣉⠉⢉⣉⣤⠾⢁⡾⠏⠀⢀⣾⠃⠀⠈⣿⣜⢦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⢴⣫⢆⣴⡟⠉⢿⣦⣀⡀⠀⢀⣀⣤⣴⣶⣬⡙⣦⢹⣧⠀⠀⠀⠀
⠀⣿⣁⣻⣥⣤⣭⣉⣁⣤⣴⠟⠁⠀⢀⣾⠃⠀⣠⡾⠋⠉⢳⣮⣛⢶⣆⢠⣀⡀⠀⠀⠀⠀⠀⠀⠀⣀⣼⢟⣻⣴⠟⠛⠷⣄⠀⠹⣿⡛⠛⠋⠁⠀⠀⠀⠉⢳⣌⢣⣿⣦⣤⣤⣤
⠀⣿⠏⠉⠁⠀⠈⠉⠉⠉⠀⠀⠀⢀⣾⠃⢀⡼⠋⢀⣠⣶⠟⠉⢹⣿⢾⣤⣾⣿⣷⡀⠀⢰⣖⣾⣯⣭⣾⠛⢻⡿⣶⣄⡀⠈⢳⣄⠘⢷⡄⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣦⡿⠟⠋
⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⠃⣰⠋⣀⣴⠟⢹⣏⠀⢠⡿⠁⢀⣴⢿⣿⠉⢻⣿⠋⠉⣿⠋⠈⣧⠀⢸⡇⠀⠉⠻⣶⣄⡈⠷⣈⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣣⣾⣵⠞⠋⠀⠀⠘⣿⡀⢸⡃⢀⣿⠁⠀⣿⡀⠈⣿⠀⢠⣿⡇⠀⢹⣆⠘⢿⣤⡀⠀⠀⠉⠻⢶⣌⡳⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡿⠛⠁⠀⠀⠀⠀⠀⠘⣷⠘⡗⢸⣿⠀⠀⢹⡇⠀⣿⠀⢸⡟⢻⣦⠀⠙⠳⣄⡉⢿⣆⠀⠀⠀⠀⠉⠛⢿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⢰⠇⢸⡇⠀⠀⠀⣷⠀⣿⢠⣾⠀⠀⠉⠻⠷⣦⡌⢳⡌⢻⡄⠀⠀⠀⠀⠀⠀⠈⠻⠿⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⣠⠏⢀⡿⠃⠀⠀⠀⢹⡇⣿⢸⡇⠀⠀⠀⠀⠀⠈⣿⠀⡇⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡟⢁⡾⣡⣴⠟⠁⠀⠀⠀⠀⢸⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⣿⢂⡇⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⠀⢿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⢿⣿⡏⠀⠀⠀⠀⠀⠀⠀⢻⣾⣇⢸⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣦⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠇⠀⠀⠀⠀⠀⠀⠀⠈⠻⣯⣍⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣛⠛⡛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀


*********
Good Morning, $gm, reached $1 billion in marketcap. Some early investors became multi-millionaires.

Good Morning is a very common phrase used by crypto degens and people around the world.

http://goodmorning2coin.co

https://t.me/gm20coin

https://twitter.com/gm20coin


*********

**/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address internal _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract GM20  is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "gm 2.0";
    string private constant _symbol = "gm2.0";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromMax;
    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _tTotal = 1_000_000_000 * 10**9;

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 20;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 20;
 
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _marketingAddress = payable(0x14b68Bed48CC3a1d829b433556Aa4E351Aa7D5C1);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxWalletSize = _tTotal.mul(2).div(100); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(2).div(1000);
 

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[address(_uniswapV2Router)] = true;

        _isExcludedFromMax[owner()] = true;
        _isExcludedFromMax[address(this)] = true;
        _isExcludedFromMax[_marketingAddress] = true;
        _isExcludedFromMax[address(_uniswapV2Router)] = true;


        emit Transfer(address(0), _msgSender(), _tTotal);

    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            if(to != uniswapV2Pair && !_isExcludedFromMax[to]) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
 
            if (canSwap && !inSwap && from != uniswapV2Pair && to == uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        } 
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualSwap() external {
        require(_msgSender()==_marketingAddress);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
 
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 

    function removeLimits() external onlyOwner{
        _maxWalletSize = _tTotal;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"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":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"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400005f196200001b919062000976565b5f19620000299190620009da565b6007555f6009556014600a555f600b556014600c55600b54600d55600c54600e55600d54600f55600e546010557314b68bed48cc3a1d829b433556aa4e351aa7d5c160115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550620001126064620001036002670de0b6b3a7640000620007db60201b90919060201c565b6200085b60201b90919060201c565b601455620001496103e86200013a6002670de0b6b3a7640000620007db60201b90919060201c565b6200085b60201b90919060201c565b60155534801562000158575f80fd5b505f6200016a620008ac60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460025f6200021c620008ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000321919062000a79565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000387573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ad919062000a79565b6040518363ffffffff1660e01b8152600401620003cc92919062000aba565b6020604051808303815f875af1158015620003e9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200040f919062000a79565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000463620008b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f620005e7620008b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000766620008ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620007cc919062000af6565b60405180910390a35062000cdc565b5f808303620007ed575f905062000855565b5f8284620007fc919062000b11565b90508284826200080d919062000b5b565b1462000850576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008479062000c16565b60405180910390fd5b809150505b92915050565b5f620008a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008da60201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f808311829062000923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091a919062000cba565b60405180910390fd5b505f838562000933919062000b5b565b9050809150509392505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009828262000940565b91506200098f8362000940565b925082620009a257620009a162000949565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620009e68262000940565b9150620009f38362000940565b925082820390508181111562000a0e5762000a0d620009ad565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a438262000a18565b9050919050565b62000a558162000a37565b811462000a60575f80fd5b50565b5f8151905062000a738162000a4a565b92915050565b5f6020828403121562000a915762000a9062000a14565b5b5f62000aa08482850162000a63565b91505092915050565b62000ab48162000a37565b82525050565b5f60408201905062000acf5f83018562000aa9565b62000ade602083018462000aa9565b9392505050565b62000af08162000940565b82525050565b5f60208201905062000b0b5f83018462000ae5565b92915050565b5f62000b1d8262000940565b915062000b2a8362000940565b925082820262000b3a8162000940565b9150828204841483151762000b545762000b53620009ad565b5b5092915050565b5f62000b678262000940565b915062000b748362000940565b92508262000b875762000b8662000949565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000bfe60218362000b92565b915062000c0b8262000ba2565b604082019050919050565b5f6020820190508181035f83015262000c2f8162000bf0565b9050919050565b5f81519050919050565b5f5b8381101562000c5f57808201518184015260208101905062000c42565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000c868262000c36565b62000c92818562000b92565b935062000ca481856020860162000c40565b62000caf8162000c6a565b840191505092915050565b5f6020820190508181035f83015262000cd4818462000c7a565b905092915050565b61303b8062000cea5f395ff3fe60806040526004361061012d575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b41146103a657806398a5c315146103d0578063a2a957bb146103f8578063a9059cbb14610420578063dd62ed3e1461045c578063f2fde38b1461049857610134565b8063715018a6146102fe578063751039fc146103145780638da5cb5b1461032a5780638f70ccf7146103545780638f9a55c01461037c57610134565b80632fd689e3116100f15780632fd689e31461022e578063313ce5671461025857806349bd5a5e1461028257806351bc3c85146102ac57806370a08231146102c257610134565b806306fdde0314610138578063095ea7b3146101625780631694505e1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c0565b60405161015991906122b8565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612369565b6104fd565b60405161019591906123c1565b60405180910390f35b3480156101a9575f80fd5b506101b261051a565b6040516101bf9190612435565b60405180910390f35b3480156101d3575f80fd5b506101dc61053f565b6040516101e9919061245d565b60405180910390f35b3480156101fd575f80fd5b5061021860048036038101906102139190612476565b61054e565b60405161022591906123c1565b60405180910390f35b348015610239575f80fd5b50610242610622565b60405161024f919061245d565b60405180910390f35b348015610263575f80fd5b5061026c610628565b60405161027991906124e1565b60405180910390f35b34801561028d575f80fd5b50610296610630565b6040516102a39190612509565b60405180910390f35b3480156102b7575f80fd5b506102c0610655565b005b3480156102cd575f80fd5b506102e860048036038101906102e39190612522565b6106ec565b6040516102f5919061245d565b60405180910390f35b348015610309575f80fd5b5061031261073a565b005b34801561031f575f80fd5b50610328610888565b005b348015610335575f80fd5b5061033e61092d565b60405161034b9190612509565b60405180910390f35b34801561035f575f80fd5b5061037a60048036038101906103759190612577565b610954565b005b348015610387575f80fd5b50610390610a05565b60405161039d919061245d565b60405180910390f35b3480156103b1575f80fd5b506103ba610a0b565b6040516103c791906122b8565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f191906125a2565b610a48565b005b348015610403575f80fd5b5061041e600480360381019061041991906125cd565b610ae6565b005b34801561042b575f80fd5b5061044660048036038101906104419190612369565b610b9c565b60405161045391906123c1565b60405180910390f35b348015610467575f80fd5b50610482600480360381019061047d9190612631565b610bb9565b60405161048f919061245d565b60405180910390f35b3480156104a3575f80fd5b506104be60048036038101906104b99190612522565b610c3b565b005b60606040518060400160405280600681526020017f676d20322e300000000000000000000000000000000000000000000000000000815250905090565b5f610510610509610df8565b8484610dff565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f61055a848484610fc2565b61061784610566610df8565b61061285604051806060016040528060288152602001612fde6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105c9610df8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117a09092919063ffffffff16565b610dff565b600190509392505050565b60155481565b5f6009905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610695610df8565b73ffffffffffffffffffffffffffffffffffffffff16146106b4575f80fd5b5f6106be306106ec565b90505f8111156106d2576106d181611802565b5b5f4790505f8111156106e8576106e781611a6d565b5b5050565b5f61073360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ad5565b9050919050565b610742610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c5906126b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610890610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610913906126b9565b60405180910390fd5b670de0b6b3a7640000601481905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61095c610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906126b9565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60145481565b60606040518060400160405280600581526020017f676d322e30000000000000000000000000000000000000000000000000000000815250905090565b610a50610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad3906126b9565b60405180910390fd5b8060158190555050565b610aee610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906126b9565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b5f610baf610ba8610df8565b8484610fc2565b6001905092915050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610c43610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc6906126b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490612747565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e64906127d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290612863565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb5919061245d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611027906128f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110959061297f565b60405180910390fd5b5f81116110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790612a0d565b60405180910390fd5b6110e861092d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611156575061112661092d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114ad57601360149054906101000a900460ff166111e55761117761092d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612a9b565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611289575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156112e6576014548161129b846106ec565b6112a59190612ae6565b106112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90612b89565b60405180910390fd5b5b5f6112f0306106ec565b90505f60155482101590508080156113155750601360159054906101000a900460ff16155b801561136e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113c6575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156113de5750601360169054906101000a900460ff165b8015611431575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611484575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156114aa5761149282611802565b5f4790505f8111156114a8576114a747611a6d565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061154d575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806115fe575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115fd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561160b575f905061178e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116b4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116cc57600954600d81905550600a54600e819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611775575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561178d57600b54600d81905550600c54600e819055505b5b61179a84848484611b41565b50505050565b5f8383111582906117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de91906122b8565b60405180910390fd5b505f83856117f59190612ba7565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561183957611838612bda565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b50905030815f8151811061187e5761187d612c07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119469190612c48565b8160018151811061195a57611959612c07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119c03060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610dff565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611a22959493929190612d63565b5f604051808303815f87803b158015611a39575f80fd5b505af1158015611a4b573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ad1573d5f803e3d5ffd5b5050565b5f600754821115611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290612e2b565b60405180910390fd5b5f611b24611b6e565b9050611b398184611b9790919063ffffffff16565b915050919050565b80611b4f57611b4e611be0565b5b611b5a848484611c19565b80611b6857611b67611dd9565b5b50505050565b5f805f611b79611ded565b91509150611b908183611b9790919063ffffffff16565b9250505090565b5f611bd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e49565b905092915050565b5f600d54148015611bf257505f600e54145b611c1757600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80611c2887611eaa565b955095509550955095509550611c848660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f0a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d158560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d5f81611fb0565b611d698483612067565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dc6919061245d565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60075490505f670de0b6b3a76400009050611e1e670de0b6b3a7640000600754611b9790919063ffffffff16565b821015611e3c57600754670de0b6b3a7640000935093505050611e45565b81819350935050505b9091565b5f8083118290611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8691906122b8565b60405180910390fd5b505f8385611e9d9190612e76565b9050809150509392505050565b5f805f805f805f805f611ec28a600d54600e546120a1565b9250925092505f611ed1611b6e565b90505f805f611ee28e878787612133565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f611f4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117a0565b905092915050565b5f808284611f619190612ae6565b905083811015611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90612ef0565b60405180910390fd5b8091505092915050565b5f611fb9611b6e565b90505f611fcf82846121b790919063ffffffff16565b90506120218160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61207c82600754611f0a90919063ffffffff16565b60078190555061209781600854611f5390919063ffffffff16565b6008819055505050565b5f805f806120cb60646120bd888a6121b790919063ffffffff16565b611b9790919063ffffffff16565b90505f6120f460646120e6888b6121b790919063ffffffff16565b611b9790919063ffffffff16565b90505f61211c8261210e858c611f0a90919063ffffffff16565b611f0a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061214a85896121b790919063ffffffff16565b90505f61216086896121b790919063ffffffff16565b90505f61217687896121b790919063ffffffff16565b90505f61219e826121908587611f0a90919063ffffffff16565b611f0a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036121c7575f9050612228565b5f82846121d49190612f0e565b90508284826121e39190612e76565b14612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a90612fbf565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561226557808201518184015260208101905061224a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61228a8261222e565b6122948185612238565b93506122a4818560208601612248565b6122ad81612270565b840191505092915050565b5f6020820190508181035f8301526122d08184612280565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612305826122dc565b9050919050565b612315816122fb565b811461231f575f80fd5b50565b5f813590506123308161230c565b92915050565b5f819050919050565b61234881612336565b8114612352575f80fd5b50565b5f813590506123638161233f565b92915050565b5f806040838503121561237f5761237e6122d8565b5b5f61238c85828601612322565b925050602061239d85828601612355565b9150509250929050565b5f8115159050919050565b6123bb816123a7565b82525050565b5f6020820190506123d45f8301846123b2565b92915050565b5f819050919050565b5f6123fd6123f86123f3846122dc565b6123da565b6122dc565b9050919050565b5f61240e826123e3565b9050919050565b5f61241f82612404565b9050919050565b61242f81612415565b82525050565b5f6020820190506124485f830184612426565b92915050565b61245781612336565b82525050565b5f6020820190506124705f83018461244e565b92915050565b5f805f6060848603121561248d5761248c6122d8565b5b5f61249a86828701612322565b93505060206124ab86828701612322565b92505060406124bc86828701612355565b9150509250925092565b5f60ff82169050919050565b6124db816124c6565b82525050565b5f6020820190506124f45f8301846124d2565b92915050565b612503816122fb565b82525050565b5f60208201905061251c5f8301846124fa565b92915050565b5f60208284031215612537576125366122d8565b5b5f61254484828501612322565b91505092915050565b612556816123a7565b8114612560575f80fd5b50565b5f813590506125718161254d565b92915050565b5f6020828403121561258c5761258b6122d8565b5b5f61259984828501612563565b91505092915050565b5f602082840312156125b7576125b66122d8565b5b5f6125c484828501612355565b91505092915050565b5f805f80608085870312156125e5576125e46122d8565b5b5f6125f287828801612355565b945050602061260387828801612355565b935050604061261487828801612355565b925050606061262587828801612355565b91505092959194509250565b5f8060408385031215612647576126466122d8565b5b5f61265485828601612322565b925050602061266585828601612322565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126a3602083612238565b91506126ae8261266f565b602082019050919050565b5f6020820190508181035f8301526126d081612697565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612731602683612238565b915061273c826126d7565b604082019050919050565b5f6020820190508181035f83015261275e81612725565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127bf602483612238565b91506127ca82612765565b604082019050919050565b5f6020820190508181035f8301526127ec816127b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61284d602283612238565b9150612858826127f3565b604082019050919050565b5f6020820190508181035f83015261287a81612841565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6128db602583612238565b91506128e682612881565b604082019050919050565b5f6020820190508181035f830152612908816128cf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612969602383612238565b91506129748261290f565b604082019050919050565b5f6020820190508181035f8301526129968161295d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6129f7602983612238565b9150612a028261299d565b604082019050919050565b5f6020820190508181035f830152612a24816129eb565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612a85603f83612238565b9150612a9082612a2b565b604082019050919050565b5f6020820190508181035f830152612ab281612a79565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612af082612336565b9150612afb83612336565b9250828201905080821115612b1357612b12612ab9565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612b73602383612238565b9150612b7e82612b19565b604082019050919050565b5f6020820190508181035f830152612ba081612b67565b9050919050565b5f612bb182612336565b9150612bbc83612336565b9250828203905081811115612bd457612bd3612ab9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612c428161230c565b92915050565b5f60208284031215612c5d57612c5c6122d8565b5b5f612c6a84828501612c34565b91505092915050565b5f819050919050565b5f612c96612c91612c8c84612c73565b6123da565b612336565b9050919050565b612ca681612c7c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612cde816122fb565b82525050565b5f612cef8383612cd5565b60208301905092915050565b5f602082019050919050565b5f612d1182612cac565b612d1b8185612cb6565b9350612d2683612cc6565b805f5b83811015612d56578151612d3d8882612ce4565b9750612d4883612cfb565b925050600181019050612d29565b5085935050505092915050565b5f60a082019050612d765f83018861244e565b612d836020830187612c9d565b8181036040830152612d958186612d07565b9050612da460608301856124fa565b612db1608083018461244e565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612e15602a83612238565b9150612e2082612dbb565b604082019050919050565b5f6020820190508181035f830152612e4281612e09565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e8082612336565b9150612e8b83612336565b925082612e9b57612e9a612e49565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612eda601b83612238565b9150612ee582612ea6565b602082019050919050565b5f6020820190508181035f830152612f0781612ece565b9050919050565b5f612f1882612336565b9150612f2383612336565b9250828202612f3181612336565b91508282048414831517612f4857612f47612ab9565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fa9602183612238565b9150612fb482612f4f565b604082019050919050565b5f6020820190508181035f830152612fd681612f9d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220912a5ef74bb7596ed8dbf07bbe4bc040b1fe168965b80763fac4a988b0232e6364736f6c63430008140033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b41146103a657806398a5c315146103d0578063a2a957bb146103f8578063a9059cbb14610420578063dd62ed3e1461045c578063f2fde38b1461049857610134565b8063715018a6146102fe578063751039fc146103145780638da5cb5b1461032a5780638f70ccf7146103545780638f9a55c01461037c57610134565b80632fd689e3116100f15780632fd689e31461022e578063313ce5671461025857806349bd5a5e1461028257806351bc3c85146102ac57806370a08231146102c257610134565b806306fdde0314610138578063095ea7b3146101625780631694505e1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c0565b60405161015991906122b8565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612369565b6104fd565b60405161019591906123c1565b60405180910390f35b3480156101a9575f80fd5b506101b261051a565b6040516101bf9190612435565b60405180910390f35b3480156101d3575f80fd5b506101dc61053f565b6040516101e9919061245d565b60405180910390f35b3480156101fd575f80fd5b5061021860048036038101906102139190612476565b61054e565b60405161022591906123c1565b60405180910390f35b348015610239575f80fd5b50610242610622565b60405161024f919061245d565b60405180910390f35b348015610263575f80fd5b5061026c610628565b60405161027991906124e1565b60405180910390f35b34801561028d575f80fd5b50610296610630565b6040516102a39190612509565b60405180910390f35b3480156102b7575f80fd5b506102c0610655565b005b3480156102cd575f80fd5b506102e860048036038101906102e39190612522565b6106ec565b6040516102f5919061245d565b60405180910390f35b348015610309575f80fd5b5061031261073a565b005b34801561031f575f80fd5b50610328610888565b005b348015610335575f80fd5b5061033e61092d565b60405161034b9190612509565b60405180910390f35b34801561035f575f80fd5b5061037a60048036038101906103759190612577565b610954565b005b348015610387575f80fd5b50610390610a05565b60405161039d919061245d565b60405180910390f35b3480156103b1575f80fd5b506103ba610a0b565b6040516103c791906122b8565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f191906125a2565b610a48565b005b348015610403575f80fd5b5061041e600480360381019061041991906125cd565b610ae6565b005b34801561042b575f80fd5b5061044660048036038101906104419190612369565b610b9c565b60405161045391906123c1565b60405180910390f35b348015610467575f80fd5b50610482600480360381019061047d9190612631565b610bb9565b60405161048f919061245d565b60405180910390f35b3480156104a3575f80fd5b506104be60048036038101906104b99190612522565b610c3b565b005b60606040518060400160405280600681526020017f676d20322e300000000000000000000000000000000000000000000000000000815250905090565b5f610510610509610df8565b8484610dff565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f61055a848484610fc2565b61061784610566610df8565b61061285604051806060016040528060288152602001612fde6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105c9610df8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117a09092919063ffffffff16565b610dff565b600190509392505050565b60155481565b5f6009905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610695610df8565b73ffffffffffffffffffffffffffffffffffffffff16146106b4575f80fd5b5f6106be306106ec565b90505f8111156106d2576106d181611802565b5b5f4790505f8111156106e8576106e781611a6d565b5b5050565b5f61073360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ad5565b9050919050565b610742610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c5906126b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610890610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610913906126b9565b60405180910390fd5b670de0b6b3a7640000601481905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61095c610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906126b9565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60145481565b60606040518060400160405280600581526020017f676d322e30000000000000000000000000000000000000000000000000000000815250905090565b610a50610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad3906126b9565b60405180910390fd5b8060158190555050565b610aee610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906126b9565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b5f610baf610ba8610df8565b8484610fc2565b6001905092915050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610c43610df8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc6906126b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490612747565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e64906127d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290612863565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb5919061245d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611027906128f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110959061297f565b60405180910390fd5b5f81116110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790612a0d565b60405180910390fd5b6110e861092d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611156575061112661092d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114ad57601360149054906101000a900460ff166111e55761117761092d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612a9b565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611289575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156112e6576014548161129b846106ec565b6112a59190612ae6565b106112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90612b89565b60405180910390fd5b5b5f6112f0306106ec565b90505f60155482101590508080156113155750601360159054906101000a900460ff16155b801561136e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113c6575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156113de5750601360169054906101000a900460ff165b8015611431575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611484575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156114aa5761149282611802565b5f4790505f8111156114a8576114a747611a6d565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061154d575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806115fe575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115fd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561160b575f905061178e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116b4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116cc57600954600d81905550600a54600e819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611775575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561178d57600b54600d81905550600c54600e819055505b5b61179a84848484611b41565b50505050565b5f8383111582906117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de91906122b8565b60405180910390fd5b505f83856117f59190612ba7565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561183957611838612bda565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b50905030815f8151811061187e5761187d612c07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119469190612c48565b8160018151811061195a57611959612c07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119c03060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610dff565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611a22959493929190612d63565b5f604051808303815f87803b158015611a39575f80fd5b505af1158015611a4b573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ad1573d5f803e3d5ffd5b5050565b5f600754821115611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290612e2b565b60405180910390fd5b5f611b24611b6e565b9050611b398184611b9790919063ffffffff16565b915050919050565b80611b4f57611b4e611be0565b5b611b5a848484611c19565b80611b6857611b67611dd9565b5b50505050565b5f805f611b79611ded565b91509150611b908183611b9790919063ffffffff16565b9250505090565b5f611bd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e49565b905092915050565b5f600d54148015611bf257505f600e54145b611c1757600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80611c2887611eaa565b955095509550955095509550611c848660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f0a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d158560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d5f81611fb0565b611d698483612067565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dc6919061245d565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60075490505f670de0b6b3a76400009050611e1e670de0b6b3a7640000600754611b9790919063ffffffff16565b821015611e3c57600754670de0b6b3a7640000935093505050611e45565b81819350935050505b9091565b5f8083118290611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8691906122b8565b60405180910390fd5b505f8385611e9d9190612e76565b9050809150509392505050565b5f805f805f805f805f611ec28a600d54600e546120a1565b9250925092505f611ed1611b6e565b90505f805f611ee28e878787612133565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f611f4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117a0565b905092915050565b5f808284611f619190612ae6565b905083811015611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d90612ef0565b60405180910390fd5b8091505092915050565b5f611fb9611b6e565b90505f611fcf82846121b790919063ffffffff16565b90506120218160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61207c82600754611f0a90919063ffffffff16565b60078190555061209781600854611f5390919063ffffffff16565b6008819055505050565b5f805f806120cb60646120bd888a6121b790919063ffffffff16565b611b9790919063ffffffff16565b90505f6120f460646120e6888b6121b790919063ffffffff16565b611b9790919063ffffffff16565b90505f61211c8261210e858c611f0a90919063ffffffff16565b611f0a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061214a85896121b790919063ffffffff16565b90505f61216086896121b790919063ffffffff16565b90505f61217687896121b790919063ffffffff16565b90505f61219e826121908587611f0a90919063ffffffff16565b611f0a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036121c7575f9050612228565b5f82846121d49190612f0e565b90508284826121e39190612e76565b14612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a90612fbf565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561226557808201518184015260208101905061224a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61228a8261222e565b6122948185612238565b93506122a4818560208601612248565b6122ad81612270565b840191505092915050565b5f6020820190508181035f8301526122d08184612280565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612305826122dc565b9050919050565b612315816122fb565b811461231f575f80fd5b50565b5f813590506123308161230c565b92915050565b5f819050919050565b61234881612336565b8114612352575f80fd5b50565b5f813590506123638161233f565b92915050565b5f806040838503121561237f5761237e6122d8565b5b5f61238c85828601612322565b925050602061239d85828601612355565b9150509250929050565b5f8115159050919050565b6123bb816123a7565b82525050565b5f6020820190506123d45f8301846123b2565b92915050565b5f819050919050565b5f6123fd6123f86123f3846122dc565b6123da565b6122dc565b9050919050565b5f61240e826123e3565b9050919050565b5f61241f82612404565b9050919050565b61242f81612415565b82525050565b5f6020820190506124485f830184612426565b92915050565b61245781612336565b82525050565b5f6020820190506124705f83018461244e565b92915050565b5f805f6060848603121561248d5761248c6122d8565b5b5f61249a86828701612322565b93505060206124ab86828701612322565b92505060406124bc86828701612355565b9150509250925092565b5f60ff82169050919050565b6124db816124c6565b82525050565b5f6020820190506124f45f8301846124d2565b92915050565b612503816122fb565b82525050565b5f60208201905061251c5f8301846124fa565b92915050565b5f60208284031215612537576125366122d8565b5b5f61254484828501612322565b91505092915050565b612556816123a7565b8114612560575f80fd5b50565b5f813590506125718161254d565b92915050565b5f6020828403121561258c5761258b6122d8565b5b5f61259984828501612563565b91505092915050565b5f602082840312156125b7576125b66122d8565b5b5f6125c484828501612355565b91505092915050565b5f805f80608085870312156125e5576125e46122d8565b5b5f6125f287828801612355565b945050602061260387828801612355565b935050604061261487828801612355565b925050606061262587828801612355565b91505092959194509250565b5f8060408385031215612647576126466122d8565b5b5f61265485828601612322565b925050602061266585828601612322565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126a3602083612238565b91506126ae8261266f565b602082019050919050565b5f6020820190508181035f8301526126d081612697565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612731602683612238565b915061273c826126d7565b604082019050919050565b5f6020820190508181035f83015261275e81612725565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127bf602483612238565b91506127ca82612765565b604082019050919050565b5f6020820190508181035f8301526127ec816127b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61284d602283612238565b9150612858826127f3565b604082019050919050565b5f6020820190508181035f83015261287a81612841565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6128db602583612238565b91506128e682612881565b604082019050919050565b5f6020820190508181035f830152612908816128cf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612969602383612238565b91506129748261290f565b604082019050919050565b5f6020820190508181035f8301526129968161295d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6129f7602983612238565b9150612a028261299d565b604082019050919050565b5f6020820190508181035f830152612a24816129eb565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612a85603f83612238565b9150612a9082612a2b565b604082019050919050565b5f6020820190508181035f830152612ab281612a79565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612af082612336565b9150612afb83612336565b9250828201905080821115612b1357612b12612ab9565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612b73602383612238565b9150612b7e82612b19565b604082019050919050565b5f6020820190508181035f830152612ba081612b67565b9050919050565b5f612bb182612336565b9150612bbc83612336565b9250828203905081811115612bd457612bd3612ab9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612c428161230c565b92915050565b5f60208284031215612c5d57612c5c6122d8565b5b5f612c6a84828501612c34565b91505092915050565b5f819050919050565b5f612c96612c91612c8c84612c73565b6123da565b612336565b9050919050565b612ca681612c7c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612cde816122fb565b82525050565b5f612cef8383612cd5565b60208301905092915050565b5f602082019050919050565b5f612d1182612cac565b612d1b8185612cb6565b9350612d2683612cc6565b805f5b83811015612d56578151612d3d8882612ce4565b9750612d4883612cfb565b925050600181019050612d29565b5085935050505092915050565b5f60a082019050612d765f83018861244e565b612d836020830187612c9d565b8181036040830152612d958186612d07565b9050612da460608301856124fa565b612db1608083018461244e565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612e15602a83612238565b9150612e2082612dbb565b604082019050919050565b5f6020820190508181035f830152612e4281612e09565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e8082612336565b9150612e8b83612336565b925082612e9b57612e9a612e49565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612eda601b83612238565b9150612ee582612ea6565b602082019050919050565b5f6020820190508181035f830152612f0781612ece565b9050919050565b5f612f1882612336565b9150612f2383612336565b9250828202612f3181612336565b91508282048414831517612f4857612f47612ab9565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fa9602183612238565b9150612fb482612f4f565b604082019050919050565b5f6020820190508181035f830152612fd681612f9d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220912a5ef74bb7596ed8dbf07bbe4bc040b1fe168965b80763fac4a988b0232e6364736f6c63430008140033

Deployed Bytecode Sourcemap

11953:12284:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14455:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15387:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13158:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14735:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15589:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13413:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14643:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13206:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19916:355;;;;;;;;;;;;;:::i;:::-;;14839:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9427:148;;;;;;;;;;;;;:::i;:::-;;24145:85;;;;;;;;;;;;;:::i;:::-;;9211:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19806:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13350:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14547:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23995:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23691:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14986:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15194:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9584:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14455:83;14492:13;14525:5;;;;;;;;;;;;;;;;;14518:12;;14455:83;:::o;15387:193::-;15489:4;15511:39;15520:12;:10;:12::i;:::-;15534:7;15543:6;15511:8;:39::i;:::-;15568:4;15561:11;;15387:193;;;;:::o;13158:41::-;;;;;;;;;;;;;:::o;14735:95::-;14788:7;12559:21;14808:14;;14735:95;:::o;15589:446::-;15721:4;15738:36;15748:6;15756:9;15767:6;15738:9;:36::i;:::-;15785:220;15808:6;15829:12;:10;:12::i;:::-;15856:138;15912:6;15856:138;;;;;;;;;;;;;;;;;:11;:19;15868:6;15856:19;;;;;;;;;;;;;;;:33;15876:12;:10;:12::i;:::-;15856:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;15785:8;:220::i;:::-;16023:4;16016:11;;15589:446;;;;;:::o;13413:61::-;;;;:::o;14643:83::-;14684:5;12172:1;14702:16;;14643:83;:::o;13206:28::-;;;;;;;;;;;;;:::o;19916:355::-;19980:17;;;;;;;;;;;19966:31;;:12;:10;:12::i;:::-;:31;;;19958:40;;;;;;20009:20;20030:24;20048:4;20030:9;:24::i;:::-;20009:45;;20081:1;20068:12;:14;20065:73;;;20096:30;20113:12;20096:16;:30::i;:::-;20065:73;20148:18;20167:21;20148:40;;20213:1;20202:10;:12;20199:65;;;20228:24;20241:10;20228:12;:24::i;:::-;20199:65;19947:324;;19916:355::o;14839:138::-;14905:7;14932:37;14952:7;:16;14960:7;14952:16;;;;;;;;;;;;;;;;14932:19;:37::i;:::-;14925:44;;14839:138;;;:::o;9427:148::-;9349:12;:10;:12::i;:::-;9339:22;;:6;;;;;;;;;;:22;;;9331:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9534:1:::1;9497:40;;9518:6;::::0;::::1;;;;;;;;9497:40;;;;;;;;;;;;9565:1;9548:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9427:148::o:0;24145:85::-;9349:12;:10;:12::i;:::-;9339:22;;:6;;;;;;;;;;:22;;;9331:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12559:21:::1;24198:14;:24;;;;24145:85::o:0;9211:79::-;9249:7;9276:6;;;;;;;;;;;9269:13;;9211:79;:::o;19806:101::-;9349:12;:10;:12::i;:::-;9339:22;;:6;;;;;;;;;;:22;;;9331:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19887:12:::1;19873:11;;:26;;;;;;;;;;;;;;;;;;19806:101:::0;:::o;13350:55::-;;;;:::o;14547:87::-;14586:13;14619:7;;;;;;;;;;;;;;;;;14612:14;;14547:87;:::o;23995:139::-;9349:12;:10;:12::i;:::-;9339:22;;:6;;;;;;;;;;:22;;;9331:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24108:18:::1;24086:19;:40;;;;23995:139:::0;:::o;23691:295::-;9349:12;:10;:12::i;:::-;9339:22;;:6;;;;;;;;;;:22;;;9331:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23844:13:::1;23827:14;:30;;;;23886:14;23868:15;:32;;;;23926:11;23911:12;:26;;;;23964:12;23948:13;:28;;;;23691:295:::0;;;;:::o;14986:199::-;15091:4;15113:42;15123:12;:10;:12::i;:::-;15137:9;15148:6;15113:9;:42::i;:::-;15173:4;15166:11;;14986:199;;;;:::o;15194:184::-;15311:7;15343:11;:18;15355:5;15343:18;;;;;;;;;;;;;;;:27;15362:7;15343:27;;;;;;;;;;;;;;;;15336:34;;15194:184;;;;:::o;9584:244::-;9349:12;:10;:12::i;:::-;9339:22;;:6;;;;;;;;;;:22;;;9331:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9693:1:::1;9673:22;;:8;:22;;::::0;9665:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9783:8;9754:38;;9775:6;::::0;::::1;;;;;;;;9754:38;;;;;;;;;;;;9812:8;9803:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9584:244:::0;:::o;7959:98::-;8012:7;8039:10;8032:17;;7959:98;:::o;16732:369::-;16876:1;16859:19;;:5;:19;;;16851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16957:1;16938:21;;:7;:21;;;16930:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17039:6;17009:11;:18;17021:5;17009:18;;;;;;;;;;;;;;;:27;17028:7;17009:27;;;;;;;;;;;;;;;:36;;;;17077:7;17061:32;;17070:5;17061:32;;;17086:6;17061:32;;;;;;:::i;:::-;;;;;;;;16732:369;;;:::o;17110:2087::-;17248:1;17232:18;;:4;:18;;;17224:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17325:1;17311:16;;:2;:16;;;17303:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17395:1;17386:6;:10;17378:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17468:7;:5;:7::i;:::-;17460:15;;:4;:15;;;;:32;;;;;17485:7;:5;:7::i;:::-;17479:13;;:2;:13;;;;17460:32;17456:1008;;;17550:11;;;;;;;;;;;17545:144;;17598:7;:5;:7::i;:::-;17590:15;;:4;:15;;;17582:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17545:144;17714:13;;;;;;;;;;;17708:19;;:2;:19;;;;:46;;;;;17732:18;:22;17751:2;17732:22;;;;;;;;;;;;;;;;;;;;;;;;;17731:23;17708:46;17705:173;;;17808:14;;17799:6;17783:13;17793:2;17783:9;:13::i;:::-;:22;;;;:::i;:::-;:39;17775:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17705:173;17895:28;17926:24;17944:4;17926:9;:24::i;:::-;17895:55;;17965:12;18004:19;;17980:20;:43;;17965:58;;18048:7;:18;;;;;18060:6;;;;;;;;;;;18059:7;18048:18;:43;;;;;18078:13;;;;;;;;;;;18070:21;;:4;:21;;;;18048:43;:66;;;;;18101:13;;;;;;;;;;;18095:19;;:2;:19;;;18048:66;:81;;;;;18118:11;;;;;;;;;;;18048:81;:110;;;;;18134:18;:24;18153:4;18134:24;;;;;;;;;;;;;;;;;;;;;;;;;18133:25;18048:110;:137;;;;;18163:18;:22;18182:2;18163:22;;;;;;;;;;;;;;;;;;;;;;;;;18162:23;18048:137;18044:409;;;18206:38;18223:20;18206:16;:38::i;:::-;18263:26;18292:21;18263:50;;18357:1;18336:18;:22;18332:106;;;18383:35;18396:21;18383:12;:35::i;:::-;18332:106;18187:266;18044:409;17494:970;;17456:1008;18478:12;18493:4;18478:19;;18543:18;:24;18562:4;18543:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;18571:18;:22;18590:2;18571:22;;;;;;;;;;;;;;;;;;;;;;;;;18543:50;18542:102;;;;18607:13;;;;;;;;;;;18599:21;;:4;:21;;;;:44;;;;;18630:13;;;;;;;;;;;18624:19;;:2;:19;;;;18599:44;18542:102;18538:597;;;18671:5;18661:15;;18538:597;;;18755:13;;;;;;;;;;;18747:21;;:4;:21;;;:55;;;;;18786:15;;;;;;;;;;;18772:30;;:2;:30;;;;18747:55;18744:162;;;18835:14;;18823:9;:26;;;;18878:12;;18868:7;:22;;;;18744:162;18966:13;;;;;;;;;;;18960:19;;:2;:19;;;:55;;;;;18999:15;;;;;;;;;;;18983:32;;:4;:32;;;;18960:55;18956:165;;;19048:15;;19036:9;:27;;;;19092:13;;19082:7;:23;;;;18956:165;18538:597;19148:41;19163:4;19169:2;19173:6;19181:7;19148:14;:41::i;:::-;17213:1984;17110:2087;;;:::o;10195:224::-;10315:7;10348:1;10343;:6;;10351:12;10335:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10375:9;10391:1;10387;:5;;;;:::i;:::-;10375:17;;10410:1;10403:8;;;10195:224;;;;;:::o;19206:483::-;13527:4;13518:6;;:13;;;;;;;;;;;;;;;;;;19284:21:::1;19322:1;19308:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19284:40;;19353:4;19335;19340:1;19335:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;19379:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19369:4;19374:1;19369:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;19412:62;19429:4;19444:15;;;;;;;;;;;19462:11;19412:8;:62::i;:::-;19485:15;;;;;;;;;;;:66;;;19566:11;19592:1;19608:4;19635;19655:15;19485:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19273:416;13563:5:::0;13554:6;;:14;;;;;;;;;;;;;;;;;;19206:483;:::o;19698:99::-;19755:17;;;;;;;;;;;:26;;:34;19782:6;19755:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19698:99;:::o;16044:323::-;16139:7;16197;;16186;:18;;16164:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;16285:19;16307:10;:8;:10::i;:::-;16285:32;;16335:24;16347:11;16335:7;:11;;:24;;;;:::i;:::-;16328:31;;;16044:323;;;:::o;20283:282::-;20439:7;20434:28;;20448:14;:12;:14::i;:::-;20434:28;20473:44;20491:6;20499:9;20510:6;20473:17;:44::i;:::-;20533:7;20528:29;;20542:15;:13;:15::i;:::-;20528:29;20283:282;;;;:::o;23252:164::-;23294:7;23315:15;23332;23351:19;:17;:19::i;:::-;23314:56;;;;23388:20;23400:7;23388;:11;;:20;;;;:::i;:::-;23381:27;;;;23252:164;:::o;10683:132::-;10741:7;10768:39;10772:1;10775;10768:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10761:46;;10683:132;;;;:::o;16376:221::-;16436:1;16423:9;;:14;:30;;;;;16452:1;16441:7;;:12;16423:30;16455:7;16419:43;16495:9;;16475:17;:29;;;;16533:7;;16515:15;:25;;;;16566:1;16554:9;:13;;;;16588:1;16578:7;:11;;;;16376:221;:::o;20574:610::-;20721:15;20751:23;20789:12;20816:23;20854:12;20881:13;20908:19;20919:7;20908:10;:19::i;:::-;20706:221;;;;;;;;;;;;20956:28;20976:7;20956;:15;20964:6;20956:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20938:7;:15;20946:6;20938:15;;;;;;;;;;;;;;;:46;;;;21016:39;21039:15;21016:7;:18;21024:9;21016:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;20995:7;:18;21003:9;20995:18;;;;;;;;;;;;;;;:60;;;;21066:16;21076:5;21066:9;:16::i;:::-;21093:23;21105:4;21111;21093:11;:23::i;:::-;21149:9;21132:44;;21141:6;21132:44;;;21160:15;21132:44;;;;;;:::i;:::-;;;;;;;;20695:489;;;;;;20574:610;;;:::o;16606:117::-;16662:17;;16650:9;:29;;;;16700:15;;16690:7;:25;;;;16606:117::o;23425:257::-;23476:7;23485;23505:15;23523:7;;23505:25;;23541:15;12559:21;23541:25;;23591:20;12559:21;23591:7;;:11;;:20;;;;:::i;:::-;23581:7;:30;23577:61;;;23621:7;;12559:21;23613:25;;;;;;;;23577:61;23657:7;23666;23649:25;;;;;;23425:257;;;:::o;10824:223::-;10944:7;10976:1;10972;:5;10979:12;10964:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11003:9;11019:1;11015;:5;;;;:::i;:::-;11003:17;;11038:1;11031:8;;;10824:223;;;;;:::o;21607:615::-;21707:7;21729;21751;21773;21795;21817;21853:23;21878:12;21892:13;21922:40;21934:7;21943:9;;21954:7;;21922:11;:40::i;:::-;21852:110;;;;;;21973:19;21995:10;:8;:10::i;:::-;21973:32;;22017:15;22034:23;22059:12;22088:46;22100:7;22109:4;22115:5;22122:11;22088;:46::i;:::-;22016:118;;;;;;22153:7;22162:15;22179:4;22185:15;22202:4;22208:5;22145:69;;;;;;;;;;;;;;;;;;;21607:615;;;;;;;:::o;10050:136::-;10108:7;10135:43;10139:1;10142;10135:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10128:50;;10050:136;;;;:::o;9862:179::-;9920:7;9940:9;9956:1;9952;:5;;;;:::i;:::-;9940:17;;9981:1;9976;:6;;9968:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10032:1;10025:8;;;9862:179;;;;:::o;21193:211::-;21246:19;21268:10;:8;:10::i;:::-;21246:32;;21289:13;21305:22;21315:11;21305:5;:9;;:22;;;;:::i;:::-;21289:38;;21363:33;21390:5;21363:7;:22;21379:4;21363:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;21338:7;:22;21354:4;21338:22;;;;;;;;;;;;;;;:58;;;;21235:169;;21193:211;:::o;21413:147::-;21491:17;21503:4;21491:7;;:11;;:17;;;;:::i;:::-;21481:7;:27;;;;21532:20;21547:4;21532:10;;:14;;:20;;;;:::i;:::-;21519:10;:33;;;;21413:147;;:::o;22231:469::-;22400:7;22422;22444;22479:12;22494:30;22520:3;22494:21;22506:8;22494:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;22479:45;;22535:13;22551:28;22575:3;22551:19;22563:6;22551:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;22535:44;;22590:23;22616:28;22638:5;22616:17;22628:4;22616:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;22590:54;;22663:15;22680:4;22686:5;22655:37;;;;;;;;;22231:469;;;;;;;:::o;22709:534::-;22903:7;22925;22947;22982:15;23000:24;23012:11;23000:7;:11;;:24;;;;:::i;:::-;22982:42;;23035:12;23050:21;23059:11;23050:4;:8;;:21;;;;:::i;:::-;23035:36;;23082:13;23098:22;23108:11;23098:5;:9;;:22;;;;:::i;:::-;23082:38;;23131:23;23157:28;23179:5;23157:17;23169:4;23157:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;23131:54;;23204:7;23213:15;23230:4;23196:39;;;;;;;;;;22709:534;;;;;;;;:::o;10428:246::-;10486:7;10515:1;10510;:6;10506:47;;10540:1;10533:8;;;;10506:47;10563:9;10579:1;10575;:5;;;;:::i;:::-;10563:17;;10608:1;10603;10599;:5;;;;:::i;:::-;:10;10591:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10665:1;10658:8;;;10428:246;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:116::-;6583:21;6598:5;6583:21;:::i;:::-;6576:5;6573:32;6563:60;;6619:1;6616;6609:12;6563:60;6513:116;:::o;6635:133::-;6678:5;6716:6;6703:20;6694:29;;6732:30;6756:5;6732:30;:::i;:::-;6635:133;;;;:::o;6774:323::-;6830:6;6879:2;6867:9;6858:7;6854:23;6850:32;6847:119;;;6885:79;;:::i;:::-;6847:119;7005:1;7030:50;7072:7;7063:6;7052:9;7048:22;7030:50;:::i;:::-;7020:60;;6976:114;6774:323;;;;:::o;7103:329::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:225::-;9814:34;9810:1;9802:6;9798:14;9791:58;9883:8;9878:2;9870:6;9866:15;9859:33;9674:225;:::o;9905:366::-;10047:3;10068:67;10132:2;10127:3;10068:67;:::i;:::-;10061:74;;10144:93;10233:3;10144:93;:::i;:::-;10262:2;10257:3;10253:12;10246:19;;9905:366;;;:::o;10277:419::-;10443:4;10481:2;10470:9;10466:18;10458:26;;10530:9;10524:4;10520:20;10516:1;10505:9;10501:17;10494:47;10558:131;10684:4;10558:131;:::i;:::-;10550:139;;10277:419;;;:::o;10702:223::-;10842:34;10838:1;10830:6;10826:14;10819:58;10911:6;10906:2;10898:6;10894:15;10887:31;10702:223;:::o;10931:366::-;11073:3;11094:67;11158:2;11153:3;11094:67;:::i;:::-;11087:74;;11170:93;11259:3;11170:93;:::i;:::-;11288:2;11283:3;11279:12;11272:19;;10931:366;;;:::o;11303:419::-;11469:4;11507:2;11496:9;11492:18;11484:26;;11556:9;11550:4;11546:20;11542:1;11531:9;11527:17;11520:47;11584:131;11710:4;11584:131;:::i;:::-;11576:139;;11303:419;;;:::o;11728:221::-;11868:34;11864:1;11856:6;11852:14;11845:58;11937:4;11932:2;11924:6;11920:15;11913:29;11728:221;:::o;11955:366::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;11955:366;;;:::o;12327:419::-;12493:4;12531:2;12520:9;12516:18;12508:26;;12580:9;12574:4;12570:20;12566:1;12555:9;12551:17;12544:47;12608:131;12734:4;12608:131;:::i;:::-;12600:139;;12327:419;;;:::o;12752:224::-;12892:34;12888:1;12880:6;12876:14;12869:58;12961:7;12956:2;12948:6;12944:15;12937:32;12752:224;:::o;12982:366::-;13124:3;13145:67;13209:2;13204:3;13145:67;:::i;:::-;13138:74;;13221:93;13310:3;13221:93;:::i;:::-;13339:2;13334:3;13330:12;13323:19;;12982:366;;;:::o;13354:419::-;13520:4;13558:2;13547:9;13543:18;13535:26;;13607:9;13601:4;13597:20;13593:1;13582:9;13578:17;13571:47;13635:131;13761:4;13635:131;:::i;:::-;13627:139;;13354:419;;;:::o;13779:222::-;13919:34;13915:1;13907:6;13903:14;13896:58;13988:5;13983:2;13975:6;13971:15;13964:30;13779:222;:::o;14007:366::-;14149:3;14170:67;14234:2;14229:3;14170:67;:::i;:::-;14163:74;;14246:93;14335:3;14246:93;:::i;:::-;14364:2;14359:3;14355:12;14348:19;;14007:366;;;:::o;14379:419::-;14545:4;14583:2;14572:9;14568:18;14560:26;;14632:9;14626:4;14622:20;14618:1;14607:9;14603:17;14596:47;14660:131;14786:4;14660:131;:::i;:::-;14652:139;;14379:419;;;:::o;14804:228::-;14944:34;14940:1;14932:6;14928:14;14921:58;15013:11;15008:2;15000:6;14996:15;14989:36;14804:228;:::o;15038:366::-;15180:3;15201:67;15265:2;15260:3;15201:67;:::i;:::-;15194:74;;15277:93;15366:3;15277:93;:::i;:::-;15395:2;15390:3;15386:12;15379:19;;15038:366;;;:::o;15410:419::-;15576:4;15614:2;15603:9;15599:18;15591:26;;15663:9;15657:4;15653:20;15649:1;15638:9;15634:17;15627:47;15691:131;15817:4;15691:131;:::i;:::-;15683:139;;15410:419;;;:::o;15835:250::-;15975:34;15971:1;15963:6;15959:14;15952:58;16044:33;16039:2;16031:6;16027:15;16020:58;15835:250;:::o;16091:366::-;16233:3;16254:67;16318:2;16313:3;16254:67;:::i;:::-;16247:74;;16330:93;16419:3;16330:93;:::i;:::-;16448:2;16443:3;16439:12;16432:19;;16091:366;;;:::o;16463:419::-;16629:4;16667:2;16656:9;16652:18;16644:26;;16716:9;16710:4;16706:20;16702:1;16691:9;16687:17;16680:47;16744:131;16870:4;16744:131;:::i;:::-;16736:139;;16463:419;;;:::o;16888:180::-;16936:77;16933:1;16926:88;17033:4;17030:1;17023:15;17057:4;17054:1;17047:15;17074:191;17114:3;17133:20;17151:1;17133:20;:::i;:::-;17128:25;;17167:20;17185:1;17167:20;:::i;:::-;17162:25;;17210:1;17207;17203:9;17196:16;;17231:3;17228:1;17225:10;17222:36;;;17238:18;;:::i;:::-;17222:36;17074:191;;;;:::o;17271:222::-;17411:34;17407:1;17399:6;17395:14;17388:58;17480:5;17475:2;17467:6;17463:15;17456:30;17271:222;:::o;17499:366::-;17641:3;17662:67;17726:2;17721:3;17662:67;:::i;:::-;17655:74;;17738:93;17827:3;17738:93;:::i;:::-;17856:2;17851:3;17847:12;17840:19;;17499:366;;;:::o;17871:419::-;18037:4;18075:2;18064:9;18060:18;18052:26;;18124:9;18118:4;18114:20;18110:1;18099:9;18095:17;18088:47;18152:131;18278:4;18152:131;:::i;:::-;18144:139;;17871:419;;;:::o;18296:194::-;18336:4;18356:20;18374:1;18356:20;:::i;:::-;18351:25;;18390:20;18408:1;18390:20;:::i;:::-;18385:25;;18434:1;18431;18427:9;18419:17;;18458:1;18452:4;18449:11;18446:37;;;18463:18;;:::i;:::-;18446:37;18296:194;;;;:::o;18496:180::-;18544:77;18541:1;18534:88;18641:4;18638:1;18631:15;18665:4;18662:1;18655:15;18682:180;18730:77;18727:1;18720:88;18827:4;18824:1;18817:15;18851:4;18848:1;18841:15;18868:143;18925:5;18956:6;18950:13;18941:22;;18972:33;18999:5;18972:33;:::i;:::-;18868:143;;;;:::o;19017:351::-;19087:6;19136:2;19124:9;19115:7;19111:23;19107:32;19104:119;;;19142:79;;:::i;:::-;19104:119;19262:1;19287:64;19343:7;19334:6;19323:9;19319:22;19287:64;:::i;:::-;19277:74;;19233:128;19017:351;;;;:::o;19374:85::-;19419:7;19448:5;19437:16;;19374:85;;;:::o;19465:158::-;19523:9;19556:61;19574:42;19583:32;19609:5;19583:32;:::i;:::-;19574:42;:::i;:::-;19556:61;:::i;:::-;19543:74;;19465:158;;;:::o;19629:147::-;19724:45;19763:5;19724:45;:::i;:::-;19719:3;19712:58;19629:147;;:::o;19782:114::-;19849:6;19883:5;19877:12;19867:22;;19782:114;;;:::o;19902:184::-;20001:11;20035:6;20030:3;20023:19;20075:4;20070:3;20066:14;20051:29;;19902:184;;;;:::o;20092:132::-;20159:4;20182:3;20174:11;;20212:4;20207:3;20203:14;20195:22;;20092:132;;;:::o;20230:108::-;20307:24;20325:5;20307:24;:::i;:::-;20302:3;20295:37;20230:108;;:::o;20344:179::-;20413:10;20434:46;20476:3;20468:6;20434:46;:::i;:::-;20512:4;20507:3;20503:14;20489:28;;20344:179;;;;:::o;20529:113::-;20599:4;20631;20626:3;20622:14;20614:22;;20529:113;;;:::o;20678:732::-;20797:3;20826:54;20874:5;20826:54;:::i;:::-;20896:86;20975:6;20970:3;20896:86;:::i;:::-;20889:93;;21006:56;21056:5;21006:56;:::i;:::-;21085:7;21116:1;21101:284;21126:6;21123:1;21120:13;21101:284;;;21202:6;21196:13;21229:63;21288:3;21273:13;21229:63;:::i;:::-;21222:70;;21315:60;21368:6;21315:60;:::i;:::-;21305:70;;21161:224;21148:1;21145;21141:9;21136:14;;21101:284;;;21105:14;21401:3;21394:10;;20802:608;;;20678:732;;;;:::o;21416:831::-;21679:4;21717:3;21706:9;21702:19;21694:27;;21731:71;21799:1;21788:9;21784:17;21775:6;21731:71;:::i;:::-;21812:80;21888:2;21877:9;21873:18;21864:6;21812:80;:::i;:::-;21939:9;21933:4;21929:20;21924:2;21913:9;21909:18;21902:48;21967:108;22070:4;22061:6;21967:108;:::i;:::-;21959:116;;22085:72;22153:2;22142:9;22138:18;22129:6;22085:72;:::i;:::-;22167:73;22235:3;22224:9;22220:19;22211:6;22167:73;:::i;:::-;21416:831;;;;;;;;:::o;22253:229::-;22393:34;22389:1;22381:6;22377:14;22370:58;22462:12;22457:2;22449:6;22445:15;22438:37;22253:229;:::o;22488:366::-;22630:3;22651:67;22715:2;22710:3;22651:67;:::i;:::-;22644:74;;22727:93;22816:3;22727:93;:::i;:::-;22845:2;22840:3;22836:12;22829:19;;22488:366;;;:::o;22860:419::-;23026:4;23064:2;23053:9;23049:18;23041:26;;23113:9;23107:4;23103:20;23099:1;23088:9;23084:17;23077:47;23141:131;23267:4;23141:131;:::i;:::-;23133:139;;22860:419;;;:::o;23285:180::-;23333:77;23330:1;23323:88;23430:4;23427:1;23420:15;23454:4;23451:1;23444:15;23471:185;23511:1;23528:20;23546:1;23528:20;:::i;:::-;23523:25;;23562:20;23580:1;23562:20;:::i;:::-;23557:25;;23601:1;23591:35;;23606:18;;:::i;:::-;23591:35;23648:1;23645;23641:9;23636:14;;23471:185;;;;:::o;23662:177::-;23802:29;23798:1;23790:6;23786:14;23779:53;23662:177;:::o;23845:366::-;23987:3;24008:67;24072:2;24067:3;24008:67;:::i;:::-;24001:74;;24084:93;24173:3;24084:93;:::i;:::-;24202:2;24197:3;24193:12;24186:19;;23845:366;;;:::o;24217:419::-;24383:4;24421:2;24410:9;24406:18;24398:26;;24470:9;24464:4;24460:20;24456:1;24445:9;24441:17;24434:47;24498:131;24624:4;24498:131;:::i;:::-;24490:139;;24217:419;;;:::o;24642:410::-;24682:7;24705:20;24723:1;24705:20;:::i;:::-;24700:25;;24739:20;24757:1;24739:20;:::i;:::-;24734:25;;24794:1;24791;24787:9;24816:30;24834:11;24816:30;:::i;:::-;24805:41;;24995:1;24986:7;24982:15;24979:1;24976:22;24956:1;24949:9;24929:83;24906:139;;25025:18;;:::i;:::-;24906:139;24690:362;24642:410;;;;:::o;25058:220::-;25198:34;25194:1;25186:6;25182:14;25175:58;25267:3;25262:2;25254:6;25250:15;25243:28;25058:220;:::o;25284:366::-;25426:3;25447:67;25511:2;25506:3;25447:67;:::i;:::-;25440:74;;25523:93;25612:3;25523:93;:::i;:::-;25641:2;25636:3;25632:12;25625:19;;25284:366;;;:::o;25656:419::-;25822:4;25860:2;25849:9;25845:18;25837:26;;25909:9;25903:4;25899:20;25895:1;25884:9;25880:17;25873:47;25937:131;26063:4;25937:131;:::i;:::-;25929:139;;25656:419;;;:::o

Swarm Source

ipfs://912a5ef74bb7596ed8dbf07bbe4bc040b1fe168965b80763fac4a988b0232e63
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.