POL Price: $0.667857 (+4.19%)
 

Overview

Max Total Supply

210,000 AKT

Holders

228

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.001 AKT

Value
$0.00
0xe98C55F763c277A0f1673391B31B65F90667CA67
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
AKT

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2024-03-02
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
interface ISwapPair {
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint256);
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface ISwapFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface ISwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB);
    function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH);
    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts);
    function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts);
    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);
    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut);
    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn);
    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
}
contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
contract Distributor {
    constructor(address token) {
        IERC20(token).approve(msg.sender, uint256(~uint256(0)));
    }
}
contract AKT is IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    uint256 private _totalSupply;
    uint256 private _totalCirculation;
    uint256 public minTotalSupply;
    string private _name;
    string private _symbol;
    address public manager;
    address public market;
    address private _usdtAddress;
    address public swapPair;
    ISwapRouter private _swapRouter;
    Distributor internal _distributor;
    bool _inSwapAndLiquify;
    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    function withdrawToken(IERC20 token, uint256 amount) public {
        if (manager == _msgSender()) {
            token.transfer(msg.sender, amount);
        }
    }
    function setSwapPair(address pair) public {
        if (manager == _msgSender()) {
            swapPair = pair;
        }
    }
    function setSwapRouter(address data) public {
        if (manager == _msgSender()) {
            _swapRouter = ISwapRouter(data);
        }
    }
    function setManager(address account) public {
        if (manager == _msgSender()) {
            manager = account;
        }
    }
    function setIsFeeExempt(address account, bool newValue) public {
        if (manager == _msgSender()) {
            isFeeExempt[account] = newValue;
        }
    }

    constructor() {
        _name = "AKT";
        _symbol = "AKT";
        manager = 0x0440aEaf993e286a64A369614E8bCA24154a1498;
        market = 0x86Cd1F1Cd8b320D0a7126774a1ac9B5d650BDfbC;
        _usdtAddress = 0xc2132D05D31c914a87C6611C10748AEb04B58e8F;
        address routerAddress = 0xedf6066a2b290C185783862C7F4776A2C8077AD1;
        _swapRouter = ISwapRouter(routerAddress);
        swapPair = pairFor(_swapRouter.factory(), address(this), _usdtAddress);
        isFeeExempt[address(this)] = true;
        isFeeExempt[market] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[0xf6Da4D436832c2fb346f91E5ec51F2614e26eBF5] = true;
        _distributor = new Distributor(_usdtAddress);
        _mint(0xf6Da4D436832c2fb346f91E5ec51F2614e26eBF5, 21_0000 * 10 ** decimals());
        renounceOwnership();
    }
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }
    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 totalCirculation() public view virtual returns (uint256) {
        return _totalCirculation;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, amount);
        return true;
    }
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }
    function _transfer(address from, address recipient, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        address to = recipient;
        if (address(1) == recipient) to = address(0);
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        if (to == swapPair && !_inSwapAndLiquify && balanceOf(address(this)) > getAutoSwapMin()) {
            _swapAndLiquify();
        }
        if (_inSwapAndLiquify || isFeeExempt[from] || isFeeExempt[to]) {
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        } else if (from == swapPair) {
            uint256 every = amount.div(100);
            _balances[address(this)] += every * 3;
            emit Transfer(from, address(this), every * 3);
            _balances[to] += amount - every * 3;
            emit Transfer(from, to, amount - every * 3);
        } else if (to == swapPair) {
            uint256 every = amount.div(100);
            _balances[address(this)] += every * 10;
            emit Transfer(from, address(this), every * 10);
            _balances[to] += amount - every * 10;
            emit Transfer(from, to, amount - every * 10);
        } else {
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        }
        _afterTokenTransfer(from, to, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _totalCirculation += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual returns (bool) {
        require(account != address(0), "ERC20: burn from the zero address");
        if (_totalCirculation > minTotalSupply + amount) {
            _beforeTokenTransfer(account, address(0), amount);
            uint256 accountBalance = _balances[account];
            require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
            unchecked {
                _balances[account] = accountBalance - amount;
                _balances[address(0)] += amount;
            }
            _totalCirculation -= amount;
            emit Transfer(account, address(0), amount);
            _afterTokenTransfer(account, address(0), amount);
            return true;
        }
        return false;
    }
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function getPrice() public view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdtAddress;
        if (swapPair == address(0)) return 0;
        (uint256 reserve1, uint256 reserve2, ) = ISwapPair(swapPair)
            .getReserves();
        if (reserve1 == 0 || reserve2 == 0) {
            return 0;
        } else {
            return _swapRouter.getAmountsOut(1 * 10 ** decimals(), path)[1];
        }
    }
    function swapAndTrans() public {
        if (!_inSwapAndLiquify && balanceOf(address(this)) > getAutoSwapMin()) {
            _swapAndLiquify();
        }
    }
    function getAutoSwapMin() public view returns (uint256) {
        uint256 price = getPrice();
        if (price == 0) {
            return _totalSupply;
        } else {
            return (10 * 1e18 * 1e6) / price;
        }
    }

    function _swapAndLiquify() private lockTheSwap returns (bool) {
        IERC20 USDT = IERC20(_usdtAddress);
        uint256 amount = (balanceOf(address(this)) / 2);
        if (amount > 0) {
            address token0 = ISwapPair(swapPair).token0();
            (uint256 reserve0, uint256 reserve1, ) = ISwapPair(swapPair)
                .getReserves();
            uint256 tokenPool = reserve0;
            if (token0 != address(this)) tokenPool = reserve1;
            if (amount > tokenPool / 100) {
                amount = tokenPool / 100;
            }
            _swapTokensForUSDT(amount);
            uint256 amountU = USDT.balanceOf(address(_distributor));
            USDT.transferFrom(address(_distributor), market, amountU);
            return true;
        }
        return false;
    }
    function _swapTokensForUSDT(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdtAddress;
        _approve(address(this), address(_swapRouter), tokenAmount);
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(_distributor), block.timestamp);
        emit SwapTokensForTokens(tokenAmount, path);
    }
    event SwapTokensForTokens(uint256 amountIn, address[] path);
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, "UniswapV2Library: IDENTICAL_ADDRESSES");
        (token0, token1) = tokenA < tokenB
            ? (tokenA, tokenB)
            : (tokenB, tokenA);
        require(token0 != address(0), "UniswapV2Library: ZERO_ADDRESS");
    }
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", factory, keccak256(abi.encodePacked(token0, token1)), hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f")))));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForTokens","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAutoSwapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"market","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"data","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndTrans","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCirculation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506200001d33620002c8565b6040805180820190915260038152621052d560ea1b602082015260079062000046908262000723565b506040805180820190915260038152621052d560ea1b602082015260089062000070908262000723565b5060098054730440aeaf993e286a64a369614e8bca24154a14986001600160a01b031991821617909155600a80547386cd1f1cd8b320d0a7126774a1ac9b5d650bdfbc908316179055600b805473c2132d05d31c914a87c6611c10748aeb04b58e8f908316179055600d805473edf6066a2b290c185783862c7f4776a2c8077ad19216821790556040805163c45a015560e01b815290516200017491839163c45a0155916004808201926020929091908290030181865afa1580156200013a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001609190620007ef565b600b5430906001600160a01b031662000318565b600c80546001600160a01b0319166001600160a01b0392831617905530600090815260036020526040808220805460ff199081166001908117909255600a54851684528284208054821683179055338452828420805482168317905573f6da4d436832c2fb346f91e5ec51f2614e26ebf59093527f3ad9171aad86ee1e307d5155412d199c751c526083537811ce524666935b7cfb805490931617909155600b549051911690620002259062000671565b6001600160a01b039091168152602001604051809103906000f08015801562000252573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b0392909216919091179055620002b773f6da4d436832c2fb346f91e5ec51f2614e26ebf562000295601290565b620002a290600a62000936565b620002b1906203345062000947565b62000401565b620002c162000505565b5062000977565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080806200032885856200056f565b6040516001600160601b0319606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001620003df9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b6001600160601b031916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6001600160a01b0382166200045d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b806004600082825462000471919062000961565b9250508190555080600560008282546200048c919062000961565b90915550506001600160a01b03821660009081526001602052604081208054839290620004bb90849062000961565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000546001600160a01b03163314620005615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000454565b6200056d6000620002c8565b565b600080826001600160a01b0316846001600160a01b031603620005e35760405162461bcd60e51b815260206004820152602560248201527f556e697377617056324c6962726172793a204944454e544943414c5f41444452604482015264455353455360d81b606482015260840162000454565b826001600160a01b0316846001600160a01b0316106200060557828462000608565b83835b90925090506001600160a01b038216620006655760405162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015260640162000454565b9250929050565b505050565b61014780620026ac83390190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006aa57607f821691505b602082108103620006cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066c57600081815260208120601f850160051c81016020861015620006fa5750805b601f850160051c820191505b818110156200071b5782815560010162000706565b505050505050565b81516001600160401b038111156200073f576200073f6200067f565b620007578162000750845462000695565b84620006d1565b602080601f8311600181146200078f5760008415620007765750858301515b600019600386901b1c1916600185901b1785556200071b565b600085815260208120601f198616915b82811015620007c0578886015182559484019460019091019084016200079f565b5085821015620007df5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200080257600080fd5b81516001600160a01b03811681146200081a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008785781600019048211156200085c576200085c62000821565b808516156200086a57918102915b93841c93908002906200083c565b509250929050565b600082620008915750600162000930565b81620008a05750600062000930565b8160018114620008b95760028114620008c457620008e4565b600191505062000930565b60ff841115620008d857620008d862000821565b50506001821b62000930565b5060208310610133831016604e8410600b841016171562000909575081810a62000930565b62000915838362000837565b80600019048211156200092c576200092c62000821565b0290505b92915050565b60006200081a60ff84168362000880565b808202811582820484141762000930576200093062000821565b8082018082111562000930576200093062000821565b611d2580620009876000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639e281a98116100a2578063d0ebdbe711610071578063d0ebdbe7146103c2578063d1daa4f4146103d5578063dd62ed3e146103dd578063f2fde38b1461041657600080fd5b80639e281a9814610381578063a457c2d714610394578063a9059cbb146103a7578063afe9d95c146103ba57600080fd5b806380f55605116100de57806380f556051461034d5780638da5cb5b1461036057806395d89b411461037157806398d5fdca1461037957600080fd5b8063715018a61461032957806373a432bb1461033157806379db63461461034457600080fd5b80633f4218e011610171578063481c6a751161014b578063481c6a75146102d25780635dcf8d2b146102e5578063658d4b7f146102ed57806370a082311461030057600080fd5b80633f4218e01461028757806341273657146102aa57806342966c68146102bf57600080fd5b806323b872dd116101ad57806323b872dd1461022757806326991cc81461023a578063313ce56714610265578063395093511461027457600080fd5b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610215575b600080fd5b6101dc610429565b6040516101e99190611777565b60405180910390f35b6102056102003660046117da565b6104bb565b60405190151581526020016101e9565b6004545b6040519081526020016101e9565b610205610235366004611806565b6104d5565b600c5461024d906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b604051601281526020016101e9565b6102056102823660046117da565b6104f9565b610205610295366004611847565b60036020526000908152604090205460ff1681565b6102bd6102b8366004611847565b610538565b005b6102bd6102cd366004611864565b61056b565b60095461024d906001600160a01b031681565b600554610219565b6102bd6102fb36600461188b565b610579565b61021961030e366004611847565b6001600160a01b031660009081526001602052604090205490565b6102bd6105b7565b6102bd61033f366004611847565b610622565b61021960065481565b600a5461024d906001600160a01b031681565b6000546001600160a01b031661024d565b6101dc610656565b610219610665565b6102bd61038f3660046117da565b61084f565b6102056103a23660046117da565b6108d9565b6102056103b53660046117da565b61096b565b6102bd610979565b6102bd6103d0366004611847565b6109b5565b6102196109e9565b6102196103eb3660046118c4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102bd610424366004611847565b610a21565b606060078054610438906118f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610464906118f2565b80156104b15780601f10610486576101008083540402835291602001916104b1565b820191906000526020600020905b81548152906001019060200180831161049457829003601f168201915b5050505050905090565b6000336104c9818585610ae9565b60019150505b92915050565b6000336104e3858285610c0d565b6104ee858585610c9f565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091906104c99082908690610533908790611942565b610ae9565b600954336001600160a01b039091160361056857600d80546001600160a01b0319166001600160a01b0383161790555b50565b61057533826111a4565b5050565b600954336001600160a01b0390911603610575576001600160a01b0382166000908152600360205260409020805482151560ff199091161790555050565b6000546001600160a01b031633146106165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106206000611332565b565b600954336001600160a01b039091160361056857600c80546001600160a01b0383166001600160a01b031990911617905550565b606060088054610438906118f2565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061069e5761069e61196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106106cf576106cf61196b565b6001600160a01b039283166020918202929092010152600c54166106f557600091505090565b600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f919061199d565b506001600160701b031691506001600160701b031691508160001480610793575080155b156107a2576000935050505090565b600d546001600160a01b031663d06ca61f6107bf6012600a611ac2565b6107ca906001611ad1565b856040518363ffffffff1660e01b81526004016107e8929190611b2c565b600060405180830381865afa158015610805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082d9190810190611b4d565b60018151811061083f5761083f61196b565b6020026020010151935050505090565b600954336001600160a01b03909116036105755760405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190611c0b565b505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091908381101561095e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b6104ee8286868403610ae9565b6000336104c9818585610c9f565b600e54600160a01b900460ff161580156109a857506109966109e9565b30600090815260016020526040902054115b1561062057610568611382565b600954336001600160a01b039091160361056857600980546001600160a01b0383166001600160a01b031990911617905550565b6000806109f4610665565b905080600003610a0657505060045490565b610a1b816a084595161401484a000000611c28565b91505090565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b6001600160a01b038116610ae05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61056881611332565b6001600160a01b038316610b4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b038216610bac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198114610c995781811015610c8c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610c998484848403610ae9565b50505050565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610d655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b816001600160a01b038116600103610d7b575060005b6001600160a01b03841660009081526001602052604090205482811015610df35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b0380861660009081526001602052604090208483039055600c548382169116148015610e305750600e54600160a01b900460ff16155b8015610e515750610e3f6109e9565b30600090815260016020526040902054115b15610e6057610e5e611382565b505b600e54600160a01b900460ff1680610e9057506001600160a01b03851660009081526003602052604090205460ff165b80610eb357506001600160a01b03821660009081526003602052604090205460ff165b15610f27576001600160a01b03821660009081526001602052604081208054859290610ee0908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd083398151915285604051610f1a91815260200190565b60405180910390a361119d565b600c546001600160a01b039081169086160361103d576000610f4a84606461162c565b9050610f57816003611ad1565b3060009081526001602052604081208054909190610f76908490611942565b909155503090506001600160a01b038716600080516020611cd0833981519152610fa1846003611ad1565b60405190815260200160405180910390a3610fbd816003611ad1565b610fc79085611c4a565b6001600160a01b03841660009081526001602052604081208054909190610fef908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c846003611ad1565b6110269088611c4a565b60405190815260200160405180910390a35061119d565b600c546001600160a01b039081169083160361113257600061106084606461162c565b905061106d81600a611ad1565b306000908152600160205260408120805490919061108c908490611942565b909155503090506001600160a01b038716600080516020611cd08339815191526110b784600a611ad1565b60405190815260200160405180910390a36110d381600a611ad1565b6110dd9085611c4a565b6001600160a01b03841660009081526001602052604081208054909190611105908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c84600a611ad1565b6001600160a01b0382166000908152600160205260408120805485929061115a908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd08339815191528560405161119491815260200190565b60405180910390a35b5050505050565b60006001600160a01b0383166112065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b816006546112149190611942565b6005541115611329576001600160a01b038316600090815260016020526040902054828110156112915760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038416600090815260016020526040812084830390558080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805485019055600580548592906112ea908490611c4a565b90915550506040518381526000906001600160a01b03861690600080516020611cd08339815191529060200160405180910390a35b60019150506104cf565b50600092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e805460ff60a01b1916600160a01b179055600b546000906001600160a01b03168160026113c6306001600160a01b031660009081526001602052604090205490565b6113d09190611c28565b9050801561161557600c5460408051630dfe168160e01b815290516000926001600160a01b031691630dfe16819160048083019260209291908290030181865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114469190611c5d565b9050600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561149e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c2919061199d565b506001600160701b039182169350169050816001600160a01b03841630146114e75750805b6114f2606482611c28565b85111561150757611504606482611c28565b94505b6115108561163f565b600e546040516370a0823160e01b81526001600160a01b0391821660048201526000918816906370a0823190602401602060405180830381865afa15801561155c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115809190611c7a565b600e54600a546040516323b872dd60e01b81526001600160a01b0392831660048201529082166024820152604481018390529192508816906323b872dd906064016020604051808303816000875af11580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190611c0b565b50600197505050505050505061161c565b6000925050505b600e805460ff60a01b1916905590565b60006116388284611c28565b9392505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116745761167461196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106116a5576116a561196b565b6001600160a01b039283166020918202929092010152600d546116cb9130911684610ae9565b600d54600e54604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261170892879260009288929116904290600401611c93565b600060405180830381600087803b15801561172257600080fd5b505af1158015611736573d6000803e3d6000fd5b505050507f7ec0e62e5eb75d92620f9df4e706e28dac160965ba772960cde791c489038447828260405161176b929190611b2c565b60405180910390a15050565b600060208083528351808285015260005b818110156117a457858101830151858201604001528201611788565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461056857600080fd5b600080604083850312156117ed57600080fd5b82356117f8816117c5565b946020939093013593505050565b60008060006060848603121561181b57600080fd5b8335611826816117c5565b92506020840135611836816117c5565b929592945050506040919091013590565b60006020828403121561185957600080fd5b8135611638816117c5565b60006020828403121561187657600080fd5b5035919050565b801515811461056857600080fd5b6000806040838503121561189e57600080fd5b82356118a9816117c5565b915060208301356118b98161187d565b809150509250929050565b600080604083850312156118d757600080fd5b82356118e2816117c5565b915060208301356118b9816117c5565b600181811c9082168061190657607f821691505b60208210810361192657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104cf576104cf61192c565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b80516001600160701b038116811461199857600080fd5b919050565b6000806000606084860312156119b257600080fd5b6119bb84611981565b92506119c960208501611981565b9150604084015163ffffffff811681146119e257600080fd5b809150509250925092565b600181815b80851115611a28578160001904821115611a0e57611a0e61192c565b80851615611a1b57918102915b93841c93908002906119f2565b509250929050565b600082611a3f575060016104cf565b81611a4c575060006104cf565b816001811461131f5760028103611a795760ff841115611a6e57611a6e61192c565b50506001821b6104cf565b5060208310610133831016604e8410600b8410161715611a9c575081810a6104cf565b611aa683836119ed565b8060001904821115611aba57611aba61192c565b029392505050565b600061163860ff841683611a30565b80820281158282048414176104cf576104cf61192c565b600081518084526020808501945080840160005b83811015611b215781516001600160a01b031687529582019590820190600101611afc565b509495945050505050565b828152604060208201526000611b456040830184611ae8565b949350505050565b60006020808385031215611b6057600080fd5b825167ffffffffffffffff80821115611b7857600080fd5b818501915085601f830112611b8c57600080fd5b815181811115611b9e57611b9e611955565b8060051b604051601f19603f83011681018181108582111715611bc357611bc3611955565b604052918252848201925083810185019188831115611be157600080fd5b938501935b82851015611bff57845184529385019392850192611be6565b98975050505050505050565b600060208284031215611c1d57600080fd5b81516116388161187d565b600082611c4557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104cf576104cf61192c565b600060208284031215611c6f57600080fd5b8151611638816117c5565b600060208284031215611c8c57600080fd5b5051919050565b85815284602082015260a060408201526000611cb260a0830186611ae8565b6001600160a01b039490941660608301525060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220701a8ab73abb8898d4d614aecd4a7cea4e3bcb82b6513137886c160a99110af664736f6c63430008110033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212200e6d214d3545d31643816a390f633534dd0855691ce8e3c137ddbabc3012d43064736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639e281a98116100a2578063d0ebdbe711610071578063d0ebdbe7146103c2578063d1daa4f4146103d5578063dd62ed3e146103dd578063f2fde38b1461041657600080fd5b80639e281a9814610381578063a457c2d714610394578063a9059cbb146103a7578063afe9d95c146103ba57600080fd5b806380f55605116100de57806380f556051461034d5780638da5cb5b1461036057806395d89b411461037157806398d5fdca1461037957600080fd5b8063715018a61461032957806373a432bb1461033157806379db63461461034457600080fd5b80633f4218e011610171578063481c6a751161014b578063481c6a75146102d25780635dcf8d2b146102e5578063658d4b7f146102ed57806370a082311461030057600080fd5b80633f4218e01461028757806341273657146102aa57806342966c68146102bf57600080fd5b806323b872dd116101ad57806323b872dd1461022757806326991cc81461023a578063313ce56714610265578063395093511461027457600080fd5b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610215575b600080fd5b6101dc610429565b6040516101e99190611777565b60405180910390f35b6102056102003660046117da565b6104bb565b60405190151581526020016101e9565b6004545b6040519081526020016101e9565b610205610235366004611806565b6104d5565b600c5461024d906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b604051601281526020016101e9565b6102056102823660046117da565b6104f9565b610205610295366004611847565b60036020526000908152604090205460ff1681565b6102bd6102b8366004611847565b610538565b005b6102bd6102cd366004611864565b61056b565b60095461024d906001600160a01b031681565b600554610219565b6102bd6102fb36600461188b565b610579565b61021961030e366004611847565b6001600160a01b031660009081526001602052604090205490565b6102bd6105b7565b6102bd61033f366004611847565b610622565b61021960065481565b600a5461024d906001600160a01b031681565b6000546001600160a01b031661024d565b6101dc610656565b610219610665565b6102bd61038f3660046117da565b61084f565b6102056103a23660046117da565b6108d9565b6102056103b53660046117da565b61096b565b6102bd610979565b6102bd6103d0366004611847565b6109b5565b6102196109e9565b6102196103eb3660046118c4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102bd610424366004611847565b610a21565b606060078054610438906118f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610464906118f2565b80156104b15780601f10610486576101008083540402835291602001916104b1565b820191906000526020600020905b81548152906001019060200180831161049457829003601f168201915b5050505050905090565b6000336104c9818585610ae9565b60019150505b92915050565b6000336104e3858285610c0d565b6104ee858585610c9f565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091906104c99082908690610533908790611942565b610ae9565b600954336001600160a01b039091160361056857600d80546001600160a01b0319166001600160a01b0383161790555b50565b61057533826111a4565b5050565b600954336001600160a01b0390911603610575576001600160a01b0382166000908152600360205260409020805482151560ff199091161790555050565b6000546001600160a01b031633146106165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106206000611332565b565b600954336001600160a01b039091160361056857600c80546001600160a01b0383166001600160a01b031990911617905550565b606060088054610438906118f2565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061069e5761069e61196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106106cf576106cf61196b565b6001600160a01b039283166020918202929092010152600c54166106f557600091505090565b600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f919061199d565b506001600160701b031691506001600160701b031691508160001480610793575080155b156107a2576000935050505090565b600d546001600160a01b031663d06ca61f6107bf6012600a611ac2565b6107ca906001611ad1565b856040518363ffffffff1660e01b81526004016107e8929190611b2c565b600060405180830381865afa158015610805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082d9190810190611b4d565b60018151811061083f5761083f61196b565b6020026020010151935050505090565b600954336001600160a01b03909116036105755760405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190611c0b565b505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091908381101561095e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b6104ee8286868403610ae9565b6000336104c9818585610c9f565b600e54600160a01b900460ff161580156109a857506109966109e9565b30600090815260016020526040902054115b1561062057610568611382565b600954336001600160a01b039091160361056857600980546001600160a01b0383166001600160a01b031990911617905550565b6000806109f4610665565b905080600003610a0657505060045490565b610a1b816a084595161401484a000000611c28565b91505090565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b6001600160a01b038116610ae05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61056881611332565b6001600160a01b038316610b4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b038216610bac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198114610c995781811015610c8c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610c998484848403610ae9565b50505050565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610d655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b816001600160a01b038116600103610d7b575060005b6001600160a01b03841660009081526001602052604090205482811015610df35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b0380861660009081526001602052604090208483039055600c548382169116148015610e305750600e54600160a01b900460ff16155b8015610e515750610e3f6109e9565b30600090815260016020526040902054115b15610e6057610e5e611382565b505b600e54600160a01b900460ff1680610e9057506001600160a01b03851660009081526003602052604090205460ff165b80610eb357506001600160a01b03821660009081526003602052604090205460ff165b15610f27576001600160a01b03821660009081526001602052604081208054859290610ee0908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd083398151915285604051610f1a91815260200190565b60405180910390a361119d565b600c546001600160a01b039081169086160361103d576000610f4a84606461162c565b9050610f57816003611ad1565b3060009081526001602052604081208054909190610f76908490611942565b909155503090506001600160a01b038716600080516020611cd0833981519152610fa1846003611ad1565b60405190815260200160405180910390a3610fbd816003611ad1565b610fc79085611c4a565b6001600160a01b03841660009081526001602052604081208054909190610fef908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c846003611ad1565b6110269088611c4a565b60405190815260200160405180910390a35061119d565b600c546001600160a01b039081169083160361113257600061106084606461162c565b905061106d81600a611ad1565b306000908152600160205260408120805490919061108c908490611942565b909155503090506001600160a01b038716600080516020611cd08339815191526110b784600a611ad1565b60405190815260200160405180910390a36110d381600a611ad1565b6110dd9085611c4a565b6001600160a01b03841660009081526001602052604081208054909190611105908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c84600a611ad1565b6001600160a01b0382166000908152600160205260408120805485929061115a908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd08339815191528560405161119491815260200190565b60405180910390a35b5050505050565b60006001600160a01b0383166112065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b816006546112149190611942565b6005541115611329576001600160a01b038316600090815260016020526040902054828110156112915760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038416600090815260016020526040812084830390558080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805485019055600580548592906112ea908490611c4a565b90915550506040518381526000906001600160a01b03861690600080516020611cd08339815191529060200160405180910390a35b60019150506104cf565b50600092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e805460ff60a01b1916600160a01b179055600b546000906001600160a01b03168160026113c6306001600160a01b031660009081526001602052604090205490565b6113d09190611c28565b9050801561161557600c5460408051630dfe168160e01b815290516000926001600160a01b031691630dfe16819160048083019260209291908290030181865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114469190611c5d565b9050600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561149e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c2919061199d565b506001600160701b039182169350169050816001600160a01b03841630146114e75750805b6114f2606482611c28565b85111561150757611504606482611c28565b94505b6115108561163f565b600e546040516370a0823160e01b81526001600160a01b0391821660048201526000918816906370a0823190602401602060405180830381865afa15801561155c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115809190611c7a565b600e54600a546040516323b872dd60e01b81526001600160a01b0392831660048201529082166024820152604481018390529192508816906323b872dd906064016020604051808303816000875af11580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190611c0b565b50600197505050505050505061161c565b6000925050505b600e805460ff60a01b1916905590565b60006116388284611c28565b9392505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116745761167461196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106116a5576116a561196b565b6001600160a01b039283166020918202929092010152600d546116cb9130911684610ae9565b600d54600e54604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261170892879260009288929116904290600401611c93565b600060405180830381600087803b15801561172257600080fd5b505af1158015611736573d6000803e3d6000fd5b505050507f7ec0e62e5eb75d92620f9df4e706e28dac160965ba772960cde791c489038447828260405161176b929190611b2c565b60405180910390a15050565b600060208083528351808285015260005b818110156117a457858101830151858201604001528201611788565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461056857600080fd5b600080604083850312156117ed57600080fd5b82356117f8816117c5565b946020939093013593505050565b60008060006060848603121561181b57600080fd5b8335611826816117c5565b92506020840135611836816117c5565b929592945050506040919091013590565b60006020828403121561185957600080fd5b8135611638816117c5565b60006020828403121561187657600080fd5b5035919050565b801515811461056857600080fd5b6000806040838503121561189e57600080fd5b82356118a9816117c5565b915060208301356118b98161187d565b809150509250929050565b600080604083850312156118d757600080fd5b82356118e2816117c5565b915060208301356118b9816117c5565b600181811c9082168061190657607f821691505b60208210810361192657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104cf576104cf61192c565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b80516001600160701b038116811461199857600080fd5b919050565b6000806000606084860312156119b257600080fd5b6119bb84611981565b92506119c960208501611981565b9150604084015163ffffffff811681146119e257600080fd5b809150509250925092565b600181815b80851115611a28578160001904821115611a0e57611a0e61192c565b80851615611a1b57918102915b93841c93908002906119f2565b509250929050565b600082611a3f575060016104cf565b81611a4c575060006104cf565b816001811461131f5760028103611a795760ff841115611a6e57611a6e61192c565b50506001821b6104cf565b5060208310610133831016604e8410600b8410161715611a9c575081810a6104cf565b611aa683836119ed565b8060001904821115611aba57611aba61192c565b029392505050565b600061163860ff841683611a30565b80820281158282048414176104cf576104cf61192c565b600081518084526020808501945080840160005b83811015611b215781516001600160a01b031687529582019590820190600101611afc565b509495945050505050565b828152604060208201526000611b456040830184611ae8565b949350505050565b60006020808385031215611b6057600080fd5b825167ffffffffffffffff80821115611b7857600080fd5b818501915085601f830112611b8c57600080fd5b815181811115611b9e57611b9e611955565b8060051b604051601f19603f83011681018181108582111715611bc357611bc3611955565b604052918252848201925083810185019188831115611be157600080fd5b938501935b82851015611bff57845184529385019392850192611be6565b98975050505050505050565b600060208284031215611c1d57600080fd5b81516116388161187d565b600082611c4557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104cf576104cf61192c565b600060208284031215611c6f57600080fd5b8151611638816117c5565b600060208284031215611c8c57600080fd5b5051919050565b85815284602082015260a060408201526000611cb260a0830186611ae8565b6001600160a01b039490941660608301525060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220701a8ab73abb8898d4d614aecd4a7cea4e3bcb82b6513137886c160a99110af664736f6c63430008110033

Deployed Bytecode Sourcemap

12485:11658:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15011:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16042:199;;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;16042:199:0;1023:187:1;15326:108:0;15414:12;;15326:108;;;1361:25:1;;;1349:2;1334:18;15326:108:0;1215:177:1;16247:259:0;;;;;;:::i;:::-;;:::i;13024:23::-;;;;;-1:-1:-1;;;;;13024:23:0;;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;13024:23:0;1858:203:1;15227:93:0;;;15310:2;2208:36:1;;2196:2;2181:18;15227:93:0;2066:184:1;16512:238:0;;;;;;:::i;:::-;;:::i;12715:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13594:149;;;;;;:::i;:::-;;:::i;:::-;;14914:91;;;;;;:::i;:::-;;:::i;12932:22::-;;;;;-1:-1:-1;;;;;12932:22:0;;;15440:109;15524:17;;15440:109;;13890:168;;;;;;:::i;:::-;;:::i;15555:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15656:18:0;15629:7;15656:18;;;:9;:18;;;;;;;15555:127;11839:103;;;:::i;13457:131::-;;;;;;:::i;:::-;;:::i;12840:29::-;;;;;;12961:21;;;;;-1:-1:-1;;;;;12961:21:0;;;11620:87;11666:7;11693:6;-1:-1:-1;;;;;11693:6:0;11620:87;;15117:104;;;:::i;21107:499::-;;;:::i;13283:168::-;;;;;;:::i;:::-;;:::i;16756:434::-;;;;;;:::i;:::-;;:::i;15688:191::-;;;;;;:::i;:::-;;:::i;21612:164::-;;;:::i;13749:135::-;;;;;;:::i;:::-;;:::i;21782:238::-;;;:::i;15885:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;16001:18:0;;;15974:7;16001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15885:151;11948:201;;;;;;:::i;:::-;;:::i;15011:100::-;15065:13;15098:5;15091:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15011:100;:::o;16042:199::-;16125:4;16158:10;16179:32;16158:10;16195:7;16204:6;16179:8;:32::i;:::-;16229:4;16222:11;;;16042:199;;;;;:::o;16247:259::-;16344:4;16379:10;16400:38;16416:4;16379:10;16431:6;16400:15;:38::i;:::-;16449:27;16459:4;16465:2;16469:6;16449:9;:27::i;:::-;-1:-1:-1;16494:4:0;;16247:259;-1:-1:-1;;;;16247:259:0:o;16512:238::-;16633:10;16600:4;16679:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;16679:27:0;;;;;;;;;;16600:4;;16633:10;16654:66;;16633:10;;16670:7;;16679:40;;16709:10;;16679:40;:::i;:::-;16654:8;:66::i;13594:149::-;13653:7;;11489:10;-1:-1:-1;;;;;13653:7:0;;;:23;13649:87;;13693:11;:31;;-1:-1:-1;;;;;;13693:31:0;-1:-1:-1;;;;;13693:31:0;;;;;13649:87;13594:149;:::o;14914:91::-;14970:27;11489:10;14990:6;14970:5;:27::i;:::-;;14914:91;:::o;13890:168::-;13968:7;;11489:10;-1:-1:-1;;;;;13968:7:0;;;:23;13964:87;;-1:-1:-1;;;;;14008:20:0;;;;;;:11;:20;;;;;:31;;;;;-1:-1:-1;;14008:31:0;;;;;;13890:168;;:::o;11839:103::-;11666:7;11693:6;-1:-1:-1;;;;;11693:6:0;11489:10;11753:23;11745:68;;;;-1:-1:-1;;;11745:68:0;;4777:2:1;11745:68:0;;;4759:21:1;;;4796:18;;;4789:30;4855:34;4835:18;;;4828:62;4907:18;;11745:68:0;;;;;;;;;11904:30:::1;11931:1;11904:18;:30::i;:::-;11839:103::o:0;13457:131::-;13514:7;;11489:10;-1:-1:-1;;;;;13514:7:0;;;:23;13510:71;;13554:8;:15;;-1:-1:-1;;;;;13554:15:0;;-1:-1:-1;;;;;;13554:15:0;;;;;;13457:131;:::o;15117:104::-;15173:13;15206:7;15199:14;;;;;:::i;21107:499::-;21192:16;;;21206:1;21192:16;;;;;;;;21148:7;;;;21192:16;21206:1;21192:16;;;;;;;;;;-1:-1:-1;21192:16:0;21168:40;;21237:4;21219;21224:1;21219:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21219:23:0;;;:7;;;;;;;;;:23;21263:12;;21253:7;;21263:12;;;21253:4;;21263:12;;21253:7;;;;;;:::i;:::-;-1:-1:-1;;;;;21253:22:0;;;:7;;;;;;;;;:22;21290:8;;;21286:36;;21321:1;21314:8;;;21107:499;:::o;21286:36::-;21334:16;21352;21384:8;;;;;;;;;-1:-1:-1;;;;;21384:8:0;-1:-1:-1;;;;;21374:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21333:88;-1:-1:-1;;;;;21333:88:0;;;-1:-1:-1;;;;;21333:88:0;;;21436:8;21448:1;21436:13;:30;;;-1:-1:-1;21453:13:0;;21436:30;21432:167;;;21490:1;21483:8;;;;;21107:499;:::o;21432:167::-;21531:11;;-1:-1:-1;;;;;21531:11:0;:25;21561:16;15310:2;21561;:16;:::i;:::-;21557:20;;:1;:20;:::i;:::-;21579:4;21531:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21531:53:0;;;;;;;;;;;;:::i;:::-;21585:1;21531:56;;;;;;;;:::i;:::-;;;;;;;21524:63;;;;;21107:499;:::o;13283:168::-;13358:7;;11489:10;-1:-1:-1;;;;;13358:7:0;;;:23;13354:90;;13398:34;;-1:-1:-1;;;13398:34:0;;13413:10;13398:34;;;9491:51:1;9558:18;;;9551:34;;;-1:-1:-1;;;;;13398:14:0;;;;;9464:18:1;;13398:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13283:168;;:::o;16756:434::-;16882:10;16849:4;16930:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;16930:27:0;;;;;;;;;;16849:4;;16882:10;16976:35;;;;16968:85;;;;-1:-1:-1;;;16968:85:0;;10048:2:1;16968:85:0;;;10030:21:1;10087:2;10067:18;;;10060:30;10126:34;10106:18;;;10099:62;-1:-1:-1;;;10177:18:1;;;10170:35;10222:19;;16968:85:0;9846:401:1;16968:85:0;17089:60;17098:5;17105:7;17133:15;17114:16;:34;17089:8;:60::i;15688:191::-;15767:4;15800:10;15821:28;15800:10;15838:2;15842:6;15821:9;:28::i;21612:164::-;21659:17;;-1:-1:-1;;;21659:17:0;;;;21658:18;:65;;;;;21707:16;:14;:16::i;:::-;21698:4;15629:7;15656:18;;;:9;:18;;;;;;21680:43;21658:65;21654:115;;;21740:17;:15;:17::i;13749:135::-;13808:7;;11489:10;-1:-1:-1;;;;;13808:7:0;;;:23;13804:73;;13848:7;:17;;-1:-1:-1;;;;;13848:17:0;;-1:-1:-1;;;;;;13848:17:0;;;;;;13749:135;:::o;21782:238::-;21829:7;21849:13;21865:10;:8;:10::i;:::-;21849:26;;21890:5;21899:1;21890:10;21886:127;;-1:-1:-1;;21924:12:0;;;21782:238::o;21886:127::-;21976:25;21996:5;21977:15;21976:25;:::i;:::-;21969:32;;;21782:238;:::o;11948:201::-;11666:7;11693:6;-1:-1:-1;;;;;11693:6:0;11489:10;11753:23;11745:68;;;;-1:-1:-1;;;11745:68:0;;4777:2:1;11745:68:0;;;4759:21:1;;;4796:18;;;4789:30;4855:34;4835:18;;;4828:62;4907:18;;11745:68:0;4575:356:1;11745:68:0;-1:-1:-1;;;;;12037:22:0;::::1;12029:73;;;::::0;-1:-1:-1;;;12029:73:0;;10676:2:1;12029:73:0::1;::::0;::::1;10658:21:1::0;10715:2;10695:18;;;10688:30;10754:34;10734:18;;;10727:62;-1:-1:-1;;;10805:18:1;;;10798:36;10851:19;;12029:73:0::1;10474:402:1::0;12029:73:0::1;12113:28;12132:8;12113:18;:28::i;20137:344::-:0;-1:-1:-1;;;;;20239:19:0;;20231:68;;;;-1:-1:-1;;;20231:68:0;;11083:2:1;20231:68:0;;;11065:21:1;11122:2;11102:18;;;11095:30;11161:34;11141:18;;;11134:62;-1:-1:-1;;;11212:18:1;;;11205:34;11256:19;;20231:68:0;10881:400:1;20231:68:0;-1:-1:-1;;;;;20318:21:0;;20310:68;;;;-1:-1:-1;;;20310:68:0;;11488:2:1;20310:68:0;;;11470:21:1;11527:2;11507:18;;;11500:30;11566:34;11546:18;;;11539:62;-1:-1:-1;;;11617:18:1;;;11610:32;11659:19;;20310:68:0;11286:398:1;20310:68:0;-1:-1:-1;;;;;20389:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20441:32;;1361:25:1;;;20441:32:0;;1334:18:1;20441:32:0;;;;;;;20137:344;;;:::o;20487:419::-;-1:-1:-1;;;;;16001:18:0;;;20588:24;16001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;20655:37:0;;20651:248;;20737:6;20717:16;:26;;20709:68;;;;-1:-1:-1;;;20709:68:0;;11891:2:1;20709:68:0;;;11873:21:1;11930:2;11910:18;;;11903:30;11969:31;11949:18;;;11942:59;12018:18;;20709:68:0;11689:353:1;20709:68:0;20821:51;20830:5;20837:7;20865:6;20846:16;:25;20821:8;:51::i;:::-;20577:329;20487:419;;;:::o;17196:1683::-;-1:-1:-1;;;;;17300:18:0;;17292:68;;;;-1:-1:-1;;;17292:68:0;;12249:2:1;17292:68:0;;;12231:21:1;12288:2;12268:18;;;12261:30;12327:34;12307:18;;;12300:62;-1:-1:-1;;;12378:18:1;;;12371:35;12423:19;;17292:68:0;12047:401:1;17292:68:0;-1:-1:-1;;;;;17379:23:0;;17371:71;;;;-1:-1:-1;;;17371:71:0;;12655:2:1;17371:71:0;;;12637:21:1;12694:2;12674:18;;;12667:30;12733:34;12713:18;;;12706:62;-1:-1:-1;;;12784:18:1;;;12777:33;12827:19;;17371:71:0;12453:399:1;17371:71:0;17466:9;-1:-1:-1;;;;;17490:23:0;;17498:1;17490:23;17486:44;;-1:-1:-1;17528:1:0;17486:44;-1:-1:-1;;;;;17612:15:0;;17590:19;17612:15;;;:9;:15;;;;;;17646:21;;;;17638:72;;;;-1:-1:-1;;;17638:72:0;;13059:2:1;17638:72:0;;;13041:21:1;13098:2;13078:18;;;13071:30;13137:34;13117:18;;;13110:62;-1:-1:-1;;;13188:18:1;;;13181:36;13234:19;;17638:72:0;12857:402:1;17638:72:0;-1:-1:-1;;;;;17746:15:0;;;;;;;:9;:15;;;;;17764:20;;;17746:38;;17816:8;;17810:14;;;17816:8;;17810:14;:36;;;;-1:-1:-1;17829:17:0;;-1:-1:-1;;;17829:17:0;;;;17828:18;17810:36;:83;;;;;17877:16;:14;:16::i;:::-;17868:4;15629:7;15656:18;;;:9;:18;;;;;;17850:43;17810:83;17806:133;;;17910:17;:15;:17::i;:::-;;17806:133;17953:17;;-1:-1:-1;;;17953:17:0;;;;;:38;;-1:-1:-1;;;;;;17974:17:0;;;;;;:11;:17;;;;;;;;17953:38;:57;;;-1:-1:-1;;;;;;17995:15:0;;;;;;:11;:15;;;;;;;;17953:57;17949:875;;;-1:-1:-1;;;;;18027:13:0;;;;;;:9;:13;;;;;:23;;18044:6;;18027:13;:23;;18044:6;;18027:23;:::i;:::-;;;;;;;;18085:2;-1:-1:-1;;;;;18070:26:0;18079:4;-1:-1:-1;;;;;18070:26:0;-1:-1:-1;;;;;;;;;;;18089:6:0;18070:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;18070:26:0;;;;;;;;17949:875;;;18126:8;;-1:-1:-1;;;;;18126:8:0;;;18118:16;;;;18114:710;;18151:13;18167:15;:6;18178:3;18167:10;:15::i;:::-;18151:31;-1:-1:-1;18225:9:0;18151:31;18233:1;18225:9;:::i;:::-;18215:4;18197:24;;;;:9;:24;;;;;:37;;:24;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;18277:4:0;;-1:-1:-1;;;;;;18254:40:0;;-1:-1:-1;;;;;;;;;;;18284:9:0;:5;18292:1;18284:9;:::i;:::-;18254:40;;1361:25:1;;;1349:2;1334:18;18254:40:0;;;;;;;18335:9;:5;18343:1;18335:9;:::i;:::-;18326:18;;:6;:18;:::i;:::-;-1:-1:-1;;;;;18309:13:0;;;;;;:9;:13;;;;;:35;;:13;;;:35;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;18364:38:0;;;;;;-1:-1:-1;;;;;;;;;;;18392:9:0;:5;18400:1;18392:9;:::i;:::-;18383:18;;:6;:18;:::i;:::-;18364:38;;1361:25:1;;;1349:2;1334:18;18364:38:0;;;;;;;18136:278;18114:710;;;18430:8;;-1:-1:-1;;;;;18430:8:0;;;18424:14;;;;18420:404;;18455:13;18471:15;:6;18482:3;18471:10;:15::i;:::-;18455:31;-1:-1:-1;18529:10:0;18455:31;18537:2;18529:10;:::i;:::-;18519:4;18501:24;;;;:9;:24;;;;;:38;;:24;;;:38;;;;;:::i;:::-;;;;-1:-1:-1;18582:4:0;;-1:-1:-1;;;;;;18559:41:0;;-1:-1:-1;;;;;;;;;;;18589:10:0;:5;18597:2;18589:10;:::i;:::-;18559:41;;1361:25:1;;;1349:2;1334:18;18559:41:0;;;;;;;18641:10;:5;18649:2;18641:10;:::i;:::-;18632:19;;:6;:19;:::i;:::-;-1:-1:-1;;;;;18615:13:0;;;;;;:9;:13;;;;;:36;;:13;;;:36;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;18671:39:0;;;;;;-1:-1:-1;;;;;;;;;;;18699:10:0;:5;18707:2;18699:10;:::i;18420:404::-;-1:-1:-1;;;;;18743:13:0;;;;;;:9;:13;;;;;:23;;18760:6;;18743:13;:23;;18760:6;;18743:23;:::i;:::-;;;;;;;;18801:2;-1:-1:-1;;;;;18786:26:0;18795:4;-1:-1:-1;;;;;18786:26:0;-1:-1:-1;;;;;;;;;;;18805:6:0;18786:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;18786:26:0;;;;;;;;18420:404;17281:1598;;17196:1683;;;:::o;19322:809::-;19396:4;-1:-1:-1;;;;;19421:21:0;;19413:67;;;;-1:-1:-1;;;19413:67:0;;13599:2:1;19413:67:0;;;13581:21:1;13638:2;13618:18;;;13611:30;13677:34;13657:18;;;13650:62;-1:-1:-1;;;13728:18:1;;;13721:31;13769:19;;19413:67:0;13397:397:1;19413:67:0;19532:6;19515:14;;:23;;;;:::i;:::-;19495:17;;:43;19491:610;;;-1:-1:-1;;;;;19644:18:0;;19619:22;19644:18;;;:9;:18;;;;;;19685:24;;;;19677:71;;;;-1:-1:-1;;;19677:71:0;;14001:2:1;19677:71:0;;;13983:21:1;14040:2;14020:18;;;14013:30;14079:34;14059:18;;;14052:62;-1:-1:-1;;;14130:18:1;;;14123:32;14172:19;;19677:71:0;13799:398:1;19677:71:0;-1:-1:-1;;;;;19792:18:0;;;;;;:9;:18;;;;;19813:23;;;19792:44;;19855:21;;;;:31;;;;;;19916:17;:27;;19830:6;;19792:18;19916:27;;19830:6;;19916:27;:::i;:::-;;;;-1:-1:-1;;19963:37:0;;1361:25:1;;;19989:1:0;;-1:-1:-1;;;;;19963:37:0;;;-1:-1:-1;;;;;;;;;;;19963:37:0;1349:2:1;1334:18;19963:37:0;;;;;;;20015:48;20085:4;20078:11;;;;;19491:610;-1:-1:-1;20118:5:0;19322:809;;;;:::o;12155:191::-;12229:16;12248:6;;-1:-1:-1;;;;;12265:17:0;;;-1:-1:-1;;;;;;12265:17:0;;;;;;12298:40;;12248:6;;;;;;;12298:40;;12229:16;12298:40;12218:128;12155:191;:::o;22028:820::-;13195:17;:24;;-1:-1:-1;;;;13195:24:0;-1:-1:-1;;;13195:24:0;;;22122:12:::1;::::0;22084:4;;-1:-1:-1;;;;;22122:12:0::1;22084:4:::0;22191:1:::1;22164:24;22182:4;-1:-1:-1::0;;;;;15656:18:0;15629:7;15656:18;;;:9;:18;;;;;;;15555:127;22164:24:::1;:28;;;;:::i;:::-;22146:47:::0;-1:-1:-1;22208:10:0;;22204:614:::1;;22262:8;::::0;22252:28:::1;::::0;;-1:-1:-1;;;22252:28:0;;;;22235:14:::1;::::0;-1:-1:-1;;;;;22262:8:0::1;::::0;22252:26:::1;::::0;:28:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;22262:8;22252:28:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22235:45;;22296:16;22314::::0;22346:8:::1;;;;;;;;;-1:-1:-1::0;;;;;22346:8:0::1;-1:-1:-1::0;;;;;22336:49:0::1;;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;22295:92:0;;::::1;::::0;-1:-1:-1;22295:92:0::1;::::0;-1:-1:-1;22295:92:0;-1:-1:-1;;;;;22449:23:0;::::1;22467:4;22449:23;22445:49;;-1:-1:-1::0;22486:8:0;22445:49:::1;22522:15;22534:3;22522:9:::0;:15:::1;:::i;:::-;22513:6;:24;22509:89;;;22567:15;22579:3;22567:9:::0;:15:::1;:::i;:::-;22558:24;;22509:89;22612:26;22631:6;22612:18;:26::i;:::-;22694:12;::::0;22671:37:::1;::::0;-1:-1:-1;;;22671:37:0;;-1:-1:-1;;;;;22694:12:0;;::::1;22671:37;::::0;::::1;2004:51:1::0;22653:15:0::1;::::0;22671:14;::::1;::::0;::::1;::::0;1977:18:1;;22671:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22749:12;::::0;22764:6:::1;::::0;22723:57:::1;::::0;-1:-1:-1;;;22723:57:0;;-1:-1:-1;;;;;22749:12:0;;::::1;22723:57;::::0;::::1;14887:34:1::0;22764:6:0;;::::1;14937:18:1::0;;;14930:43;14989:18;;;14982:34;;;22653:55:0;;-1:-1:-1;22723:17:0;::::1;::::0;::::1;::::0;14822:18:1;;22723:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22802:4;22795:11;;;;;;;;;;;22204:614;22835:5;22828:12;;;;13230:1;13242:17:::0;:25;;-1:-1:-1;;;;13242:25:0;;;22028:820;:::o;5550:98::-;5608:7;5635:5;5639:1;5635;:5;:::i;:::-;5628:12;5550:98;-1:-1:-1;;;5550:98:0:o;22854:444::-;22946:16;;;22960:1;22946:16;;;;;;;;22922:21;;22946:16;;;;;;;;;;-1:-1:-1;22946:16:0;22922:40;;22991:4;22973;22978:1;22973:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22973:23:0;;;:7;;;;;;;;;:23;23017:12;;23007:7;;23017:12;;;23007:4;;23017:12;;23007:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23007:22:0;;;:7;;;;;;;;;:22;23072:11;;23040:58;;23057:4;;23072:11;23086;23040:8;:58::i;:::-;23109:11;;23205:12;;23109:127;;-1:-1:-1;;;23109:127:0;;-1:-1:-1;;;;;23109:11:0;;;;:65;;:127;;23175:11;;23109;;23191:4;;23205:12;;;23220:15;;23109:127;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23252:38;23272:11;23285:4;23252:38;;;;;;;:::i;:::-;;;;;;;;22911:387;22854:444;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:382;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;-1:-1:-1;3122:2:1;3107:18;;3094:32;3135:30;3094:32;3135:30;:::i;:::-;3184:7;3174:17;;;2815:382;;;;;:::o;3535:388::-;3603:6;3611;3664:2;3652:9;3643:7;3639:23;3635:32;3632:52;;;3680:1;3677;3670:12;3632:52;3719:9;3706:23;3738:31;3763:5;3738:31;:::i;:::-;3788:5;-1:-1:-1;3845:2:1;3830:18;;3817:32;3858:33;3817:32;3858:33;:::i;3928:380::-;4007:1;4003:12;;;;4050;;;4071:61;;4125:4;4117:6;4113:17;4103:27;;4071:61;4178:2;4170:6;4167:14;4147:18;4144:38;4141:161;;4224:10;4219:3;4215:20;4212:1;4205:31;4259:4;4256:1;4249:15;4287:4;4284:1;4277:15;4141:161;;3928:380;;;:::o;4313:127::-;4374:10;4369:3;4365:20;4362:1;4355:31;4405:4;4402:1;4395:15;4429:4;4426:1;4419:15;4445:125;4510:9;;;4531:10;;;4528:36;;;4544:18;;:::i;4936:127::-;4997:10;4992:3;4988:20;4985:1;4978:31;5028:4;5025:1;5018:15;5052:4;5049:1;5042:15;5068:127;5129:10;5124:3;5120:20;5117:1;5110:31;5160:4;5157:1;5150:15;5184:4;5181:1;5174:15;5200:188;5279:13;;-1:-1:-1;;;;;5321:42:1;;5311:53;;5301:81;;5378:1;5375;5368:12;5301:81;5200:188;;;:::o;5393:450::-;5480:6;5488;5496;5549:2;5537:9;5528:7;5524:23;5520:32;5517:52;;;5565:1;5562;5555:12;5517:52;5588:40;5618:9;5588:40;:::i;:::-;5578:50;;5647:49;5692:2;5681:9;5677:18;5647:49;:::i;:::-;5637:59;;5739:2;5728:9;5724:18;5718:25;5783:10;5776:5;5772:22;5765:5;5762:33;5752:61;;5809:1;5806;5799:12;5752:61;5832:5;5822:15;;;5393:450;;;;;:::o;5848:422::-;5937:1;5980:5;5937:1;5994:270;6015:7;6005:8;6002:21;5994:270;;;6074:4;6070:1;6066:6;6062:17;6056:4;6053:27;6050:53;;;6083:18;;:::i;:::-;6133:7;6123:8;6119:22;6116:55;;;6153:16;;;;6116:55;6232:22;;;;6192:15;;;;5994:270;;;5998:3;5848:422;;;;;:::o;6275:806::-;6324:5;6354:8;6344:80;;-1:-1:-1;6395:1:1;6409:5;;6344:80;6443:4;6433:76;;-1:-1:-1;6480:1:1;6494:5;;6433:76;6525:4;6543:1;6538:59;;;;6611:1;6606:130;;6518:218;6606:130;6643:3;6633:8;6630:17;6627:43;;;6650:18;;:::i;:::-;-1:-1:-1;;6706:1:1;6692:16;;6721:5;;6518:218;;6820:2;6810:8;6807:16;6801:3;6795:4;6792:13;6788:36;6782:2;6772:8;6769:16;6764:2;6758:4;6755:12;6751:35;6748:77;6745:159;;;-1:-1:-1;6857:19:1;;;6889:5;;6745:159;6936:34;6961:8;6955:4;6936:34;:::i;:::-;7006:6;7002:1;6998:6;6994:19;6985:7;6982:32;6979:58;;;7017:18;;:::i;:::-;7055:20;;6275:806;-1:-1:-1;;;6275:806:1:o;7086:140::-;7144:5;7173:47;7214:4;7204:8;7200:19;7194:4;7173:47;:::i;7231:168::-;7304:9;;;7335;;7352:15;;;7346:22;;7332:37;7322:71;;7373:18;;:::i;7404:461::-;7457:3;7495:5;7489:12;7522:6;7517:3;7510:19;7548:4;7577:2;7572:3;7568:12;7561:19;;7614:2;7607:5;7603:14;7635:1;7645:195;7659:6;7656:1;7653:13;7645:195;;;7724:13;;-1:-1:-1;;;;;7720:39:1;7708:52;;7780:12;;;;7815:15;;;;7756:1;7674:9;7645:195;;;-1:-1:-1;7856:3:1;;7404:461;-1:-1:-1;;;;;7404:461:1:o;7870:332::-;8077:6;8066:9;8059:25;8120:2;8115;8104:9;8100:18;8093:30;8040:4;8140:56;8192:2;8181:9;8177:18;8169:6;8140:56;:::i;:::-;8132:64;7870:332;-1:-1:-1;;;;7870:332:1:o;8207:1105::-;8302:6;8333:2;8376;8364:9;8355:7;8351:23;8347:32;8344:52;;;8392:1;8389;8382:12;8344:52;8425:9;8419:16;8454:18;8495:2;8487:6;8484:14;8481:34;;;8511:1;8508;8501:12;8481:34;8549:6;8538:9;8534:22;8524:32;;8594:7;8587:4;8583:2;8579:13;8575:27;8565:55;;8616:1;8613;8606:12;8565:55;8645:2;8639:9;8667:2;8663;8660:10;8657:36;;;8673:18;;:::i;:::-;8719:2;8716:1;8712:10;8751:2;8745:9;8814:2;8810:7;8805:2;8801;8797:11;8793:25;8785:6;8781:38;8869:6;8857:10;8854:22;8849:2;8837:10;8834:18;8831:46;8828:72;;;8880:18;;:::i;:::-;8916:2;8909:22;8966:18;;;9000:15;;;;-1:-1:-1;9042:11:1;;;9038:20;;;9070:19;;;9067:39;;;9102:1;9099;9092:12;9067:39;9126:11;;;;9146:135;9162:6;9157:3;9154:15;9146:135;;;9228:10;;9216:23;;9179:12;;;;9259;;;;9146:135;;;9300:6;8207:1105;-1:-1:-1;;;;;;;;8207:1105:1:o;9596:245::-;9663:6;9716:2;9704:9;9695:7;9691:23;9687:32;9684:52;;;9732:1;9729;9722:12;9684:52;9764:9;9758:16;9783:28;9805:5;9783:28;:::i;10252:217::-;10292:1;10318;10308:132;;10362:10;10357:3;10353:20;10350:1;10343:31;10397:4;10394:1;10387:15;10425:4;10422:1;10415:15;10308:132;-1:-1:-1;10454:9:1;;10252:217::o;13264:128::-;13331:9;;;13352:11;;;13349:37;;;13366:18;;:::i;14202:251::-;14272:6;14325:2;14313:9;14304:7;14300:23;14296:32;14293:52;;;14341:1;14338;14331:12;14293:52;14373:9;14367:16;14392:31;14417:5;14392:31;:::i;14458:184::-;14528:6;14581:2;14569:9;14560:7;14556:23;14552:32;14549:52;;;14597:1;14594;14587:12;14549:52;-1:-1:-1;14620:16:1;;14458:184;-1:-1:-1;14458:184:1:o;15027:582::-;15326:6;15315:9;15308:25;15369:6;15364:2;15353:9;15349:18;15342:34;15412:3;15407:2;15396:9;15392:18;15385:31;15289:4;15433:57;15485:3;15474:9;15470:19;15462:6;15433:57;:::i;:::-;-1:-1:-1;;;;;15526:32:1;;;;15521:2;15506:18;;15499:60;-1:-1:-1;15590:3:1;15575:19;15568:35;15425:65;15027:582;-1:-1:-1;;;15027:582:1:o

Swarm Source

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