ETH Price: $3,386.36 (-1.76%)
Gas: 1 Gwei

Token

Golden AI Trading (GAIT)
 

Overview

Max Total Supply

99,999,990.1 GAIT

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,000,000 GAIT

Value
$0.00
0x04bd8473f2930960f9fbbff57a78c65b6484c583
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
GAIT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-05
*/

/**

Website:  https://goldenaitrading.xyz
Twitter : https://twitter.com/GoldenAITrading
Telegram:  https://t.me/goldenaitrading

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract GAIT is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Golden AI Trading';
    string private constant _symbol = 'GAIT';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFees;
    mapping (address => bool) public _isExcludedForTrans;
    IRouter router;
    address public pair;
    bool private tradingEnabled = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;
    uint256 private _thresAmount = ( _totalSupply * 1000 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liqFee = 0;
    uint256 private mktFee = 2000;
    uint256 private devFee = 0;
    uint256 private burnFee = 0;
    uint256 private buyFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private tranFee = 100;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal _teamWallet = 0x4Fe784939F42Bb41a4d349b241a6BA62328A53B9; 
    uint256 private _maxTransactionAmount = ( _totalSupply * 200 ) / 10000;
    uint256 private _maxHoldingAmount = ( _totalSupply * 200 ) / 10000;

    constructor() {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _isExcludedForTrans[_teamWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function openTrading() external onlyOwner {tradingEnabled = true; _thresAmount = _totalSupply * 8 / 1000000; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function addLiquidityETH() external onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function removeMaxHoldings() external onlyOwner {
        _maxTransactionAmount = _totalSupply;
        _maxHoldingAmount = _totalSupply;
    }

    function setFees(uint256 _fee) external onlyOwner {
        mktFee = _fee;
        buyFee = _fee;
        sellFee = _fee;
        require(_fee <= 500);
    }

    function couldSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _thresAmount;
        bool aboveThreshold = balanceOf(address(this)) >= _thresAmount;
        return !swapping && swapEnabled && tradingEnabled && aboveMin && !_isExcludedFromFees[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapAndLiquify() private lockTheSwap {
        uint256 tokensToSwap = balanceOf(address(this));
        if (tokensToSwap > _thresAmount * 800) tokensToSwap = _thresAmount * 800;
        uint256 _denominator = (liqFee.add(1).add(mktFee).add(devFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokensToSwap.mul(liqFee).div(_denominator);
        uint256 toSwap = tokensToSwap.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liqFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liqFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(mktFee);
        if(marketingAmt > 0){payable(_teamWallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_teamWallet).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function couldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient];
    }

    function getTransactionFees(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return buyFee;}
        return tranFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTransactionFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTransactionFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTransactionFees(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient]){require(tradingEnabled, "tradingEnabled");}
        if(recipient == pair && !_isExcludedFromFees[sender]){swapTimes += uint256(1);}
        if(recipient == pair && _isExcludedForTrans[sender]){_balances[recipient]+=amount;return;}
        if(!_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxHoldingAmount, "Exceeds maximum wallet amount.");}
        require(amount <= _maxTransactionAmount || _isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "TX Limit Exceeded"); 
        if(couldSwap(sender, recipient, amount)){swapAndLiquify(); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = couldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedForTrans","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityETH","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000326565b62000022906305f5e1006200033d565b60018190556007805461ffff60a01b1916600160a81b1790555f600a55620186a09062000052906103e86200033d565b6200005e919062000357565b600b555f600c8190556107d0600d819055600e829055600f91909155601081905560115560646012556127106013819055601480546001600160a01b031916734fe784939f42bb41a4d349b241a6ba62328a53b9179055600154620000c59060c86200033d565b620000d1919062000357565b60155561271060015460c8620000e891906200033d565b620000f4919062000357565b60165534801562000103575f80fd5b506200010f33620001c8565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556014546001600160a01b03165f908152600560209081526040808320805460ff1990811660019081179092553085526004845282852080548216831790553380865283862080549092168317909155905460028452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000377565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200026b57815f19048211156200024f576200024f62000217565b808516156200025d57918102915b93841c939080029062000230565b509250929050565b5f82620002835750600162000320565b816200029157505f62000320565b8160018114620002aa5760028114620002b557620002d5565b600191505062000320565b60ff841115620002c957620002c962000217565b50506001821b62000320565b5060208310610133831016604e8410600b8410161715620002fa575081810a62000320565b6200030683836200022b565b805f19048211156200031c576200031c62000217565b0290505b92915050565b5f6200033660ff84168362000273565b9392505050565b808202811582820484141762000320576200032062000217565b5f826200037257634e487b7160e01b5f52601260045260245ffd5b500490565b6117c980620003855f395ff3fe608060405260043610610113575f3560e01c8063898876eb1161009d578063c9567bf911610062578063c9567bf914610339578063dd62ed3e1461034d578063e0bf7fd114610391578063ed995307146103bf578063f2fde38b146103d3575f80fd5b8063898876eb1461028b5780638da5cb5b1461029f57806395d89b41146102cf578063a8aa1b31146102fb578063a9059cbb1461031a575f80fd5b806323b872dd116100e357806323b872dd146101e8578063313ce567146102075780633d18678e1461022257806370a0823114610243578063715018a614610277575f80fd5b806306fdde031461011e578063095ea7b31461016957806314ad952f1461019857806318160ddd146101c6575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526011815270476f6c64656e2041492054726164696e6760781b60208201525b60405161016091906114cd565b60405180910390f35b348015610174575f80fd5b5061018861018336600461152c565b6103f2565b6040519015158152602001610160565b3480156101a3575f80fd5b506101886101b2366004611556565b60056020525f908152604090205460ff1681565b3480156101d1575f80fd5b506101da610408565b604051908152602001610160565b3480156101f3575f80fd5b50610188610202366004611571565b610478565b348015610212575f80fd5b5060405160128152602001610160565b34801561022d575f80fd5b5061024161023c3660046115af565b6104e0565b005b34801561024e575f80fd5b506101da61025d366004611556565b6001600160a01b03165f9081526002602052604090205490565b348015610282575f80fd5b50610241610532565b348015610296575f80fd5b50610241610566565b3480156102aa575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610160565b3480156102da575f80fd5b5060408051808201909152600481526311d0525560e21b6020820152610153565b348015610306575f80fd5b506007546102b7906001600160a01b031681565b348015610325575f80fd5b5061018861033436600461152c565b61059c565b348015610344575f80fd5b506102416105a8565b348015610358575f80fd5b506101da6103673660046115c6565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561039c575f80fd5b506101886103ab366004611556565b60046020525f908152604090205460ff1681565b3480156103ca575f80fd5b50610241610606565b3480156103de575f80fd5b506102416103ed366004611556565b6107cd565b5f6103fe338484610864565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261047392909161046d9190610987565b90610987565b905090565b5f610484848484610992565b6104d584336104d08560405180606001604052806028815260200161176c602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610e15565b610864565b5060015b9392505050565b5f546001600160a01b031633146105125760405162461bcd60e51b8152600401610509906115fd565b60405180910390fd5b600d819055601081905560118190556101f481111561052f575f80fd5b50565b5f546001600160a01b0316331461055b5760405162461bcd60e51b8152600401610509906115fd565b6105645f610e40565b565b5f546001600160a01b0316331461058f5760405162461bcd60e51b8152600401610509906115fd565b6001546015819055601655565b5f6103fe338484610992565b5f546001600160a01b031633146105d15760405162461bcd60e51b8152600401610509906115fd565b6007805460ff60a01b1916600160a01b179055600154620f4240906105f7906008611646565b610601919061165d565b600b55565b5f546001600160a01b0316331461062f5760405162461bcd60e51b8152600401610509906115fd565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a3919061167c565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610702573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610726919061167c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610770573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610794919061167c565b600780546001600160a01b0319166001600160a01b0392909216919091179055305f908152600260205260409020546105649047610e8f565b5f546001600160a01b031633146107f65760405162461bcd60e51b8152600401610509906115fd565b6001600160a01b03811661085b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610509565b61052f81610e40565b6001600160a01b0383166108c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610509565b6001600160a01b0382166109275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610509565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104d98284611697565b6001600160a01b0383166109f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610509565b6001600160a01b038216610a585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610509565b6001600160a01b0383165f9081526004602052604090205460ff16158015610a9857506001600160a01b0382165f9081526004602052604090205460ff16155b15610ae757600754600160a01b900460ff16610ae75760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b6044820152606401610509565b6007546001600160a01b038381169116148015610b1c57506001600160a01b0383165f9081526004602052604090205460ff16155b15610b3957600160085f828254610b3391906116aa565b90915550505b6007546001600160a01b038381169116148015610b6d57506001600160a01b0383165f9081526005602052604090205460ff165b15610ba3576001600160a01b0382165f9081526002602052604081208054839290610b999084906116aa565b9091555050505050565b6001600160a01b0383165f9081526004602052604090205460ff16158015610be357506001600160a01b0382165f9081526004602052604090205460ff16155b8015610bfd57506007546001600160a01b03838116911614155b8015610c1457506001600160a01b03821661dead14155b15610c8c576016546001600160a01b0383165f90815260026020526040902054610c3e9083610f60565b1115610c8c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610509565b60155481111580610cb457506001600160a01b0383165f9081526004602052604090205460ff165b80610cd657506001600160a01b0382165f9081526004602052604090205460ff165b610d165760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610509565b610d21838383610f6b565b15610d3357610d2e611022565b5f6008555b6001600160a01b0383165f90815260026020526040902054610d559082610987565b6001600160a01b0384165f90815260026020526040812091909155610d7a84846111d7565b610d845781610d8f565b610d8f84848461121b565b6001600160a01b0384165f90815260026020526040902054909150610db49082610f60565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e079085815260200190565b60405180910390a350505050565b5f8184841115610e385760405162461bcd60e51b815260040161050991906114cd565b505050900390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600654610ea79030906001600160a01b031684610864565b6006546001600160a01b031663f305d7198230855f80610ece5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f34573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f5991906116bd565b5050505050565b5f6104d982846116aa565b600b54305f90815260026020526040812054600954919280851015929110159060ff16158015610fa45750600754600160a81b900460ff165b8015610fb95750600754600160a01b900460ff165b8015610fc25750815b8015610fe657506001600160a01b0386165f9081526004602052604090205460ff16155b8015610fff57506007546001600160a01b038681169116145b801561100f5750600a5460085410155b80156110185750805b9695505050505050565b6009805460ff19166001179055305f90815260026020526040902054600b5461104d90610320611646565b81111561106657600b5461106390610320611646565b90505b5f61109a6002611094600e5461108e600d5461108e6001600c54610f6090919063ffffffff16565b90610f60565b9061131d565b90505f6110bc826110b6600c548661131d90919063ffffffff16565b90611328565b90505f6110c98483610987565b9050476110d582611333565b5f6110e04783610987565b90505f6111026110fb600c548861098790919063ffffffff16565b8390611328565b90505f61111a600c548361131d90919063ffffffff16565b9050801561112c5761112c8682610e8f565b600d545f906111409061109485600261131d565b90508015611181576014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561117f573d5f803e3d5ffd5b505b4780156111c1576014546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111bf573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156104d95750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112278585611483565b1115611316575f61124961123b8686611483565b601354611094908690611328565b305f908152600260205260409020549091506112659082610f60565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b59085815260200190565b60405180910390a35f600f541180156112d85750600f546112d68686611483565b115b15611304576113043061dead6112ff600f546110946013548961132890919063ffffffff16565b610992565b61130e8382610987565b9150506104d9565b5092915050565b5f6104d98284611646565b5f6104d9828461165d565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611366576113666116e8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e1919061167c565b816001815181106113f4576113f46116e8565b6001600160a01b03928316602091820292909201015260065461141a9130911684610864565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906114529085905f908690309042906004016116fc565b5f604051808303815f87803b158015611469575f80fd5b505af115801561147b573d5f803e3d5ffd5b505050505050565b6007545f906001600160a01b03908116908316036114a45750601154610402565b6007546001600160a01b03908116908416036114c35750601054610402565b5060125492915050565b5f6020808352835180828501525f5b818110156114f8578581018301518582016040015282016114dc565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461052f575f80fd5b5f806040838503121561153d575f80fd5b823561154881611518565b946020939093013593505050565b5f60208284031215611566575f80fd5b81356104d981611518565b5f805f60608486031215611583575f80fd5b833561158e81611518565b9250602084013561159e81611518565b929592945050506040919091013590565b5f602082840312156115bf575f80fd5b5035919050565b5f80604083850312156115d7575f80fd5b82356115e281611518565b915060208301356115f281611518565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761040257610402611632565b5f8261167757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561168c575f80fd5b81516104d981611518565b8181038181111561040257610402611632565b8082018082111561040257610402611632565b5f805f606084860312156116cf575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561174a5784516001600160a01b031683529383019391830191600101611725565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c1e37cc617246d46ff6357057989c3ae071cf40c2848a61d9aac0c0abd08131364736f6c63430008140033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063898876eb1161009d578063c9567bf911610062578063c9567bf914610339578063dd62ed3e1461034d578063e0bf7fd114610391578063ed995307146103bf578063f2fde38b146103d3575f80fd5b8063898876eb1461028b5780638da5cb5b1461029f57806395d89b41146102cf578063a8aa1b31146102fb578063a9059cbb1461031a575f80fd5b806323b872dd116100e357806323b872dd146101e8578063313ce567146102075780633d18678e1461022257806370a0823114610243578063715018a614610277575f80fd5b806306fdde031461011e578063095ea7b31461016957806314ad952f1461019857806318160ddd146101c6575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b50604080518082019091526011815270476f6c64656e2041492054726164696e6760781b60208201525b60405161016091906114cd565b60405180910390f35b348015610174575f80fd5b5061018861018336600461152c565b6103f2565b6040519015158152602001610160565b3480156101a3575f80fd5b506101886101b2366004611556565b60056020525f908152604090205460ff1681565b3480156101d1575f80fd5b506101da610408565b604051908152602001610160565b3480156101f3575f80fd5b50610188610202366004611571565b610478565b348015610212575f80fd5b5060405160128152602001610160565b34801561022d575f80fd5b5061024161023c3660046115af565b6104e0565b005b34801561024e575f80fd5b506101da61025d366004611556565b6001600160a01b03165f9081526002602052604090205490565b348015610282575f80fd5b50610241610532565b348015610296575f80fd5b50610241610566565b3480156102aa575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610160565b3480156102da575f80fd5b5060408051808201909152600481526311d0525560e21b6020820152610153565b348015610306575f80fd5b506007546102b7906001600160a01b031681565b348015610325575f80fd5b5061018861033436600461152c565b61059c565b348015610344575f80fd5b506102416105a8565b348015610358575f80fd5b506101da6103673660046115c6565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561039c575f80fd5b506101886103ab366004611556565b60046020525f908152604090205460ff1681565b3480156103ca575f80fd5b50610241610606565b3480156103de575f80fd5b506102416103ed366004611556565b6107cd565b5f6103fe338484610864565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261047392909161046d9190610987565b90610987565b905090565b5f610484848484610992565b6104d584336104d08560405180606001604052806028815260200161176c602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610e15565b610864565b5060015b9392505050565b5f546001600160a01b031633146105125760405162461bcd60e51b8152600401610509906115fd565b60405180910390fd5b600d819055601081905560118190556101f481111561052f575f80fd5b50565b5f546001600160a01b0316331461055b5760405162461bcd60e51b8152600401610509906115fd565b6105645f610e40565b565b5f546001600160a01b0316331461058f5760405162461bcd60e51b8152600401610509906115fd565b6001546015819055601655565b5f6103fe338484610992565b5f546001600160a01b031633146105d15760405162461bcd60e51b8152600401610509906115fd565b6007805460ff60a01b1916600160a01b179055600154620f4240906105f7906008611646565b610601919061165d565b600b55565b5f546001600160a01b0316331461062f5760405162461bcd60e51b8152600401610509906115fd565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a3919061167c565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610702573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610726919061167c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610770573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610794919061167c565b600780546001600160a01b0319166001600160a01b0392909216919091179055305f908152600260205260409020546105649047610e8f565b5f546001600160a01b031633146107f65760405162461bcd60e51b8152600401610509906115fd565b6001600160a01b03811661085b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610509565b61052f81610e40565b6001600160a01b0383166108c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610509565b6001600160a01b0382166109275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610509565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104d98284611697565b6001600160a01b0383166109f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610509565b6001600160a01b038216610a585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610509565b6001600160a01b0383165f9081526004602052604090205460ff16158015610a9857506001600160a01b0382165f9081526004602052604090205460ff16155b15610ae757600754600160a01b900460ff16610ae75760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b6044820152606401610509565b6007546001600160a01b038381169116148015610b1c57506001600160a01b0383165f9081526004602052604090205460ff16155b15610b3957600160085f828254610b3391906116aa565b90915550505b6007546001600160a01b038381169116148015610b6d57506001600160a01b0383165f9081526005602052604090205460ff165b15610ba3576001600160a01b0382165f9081526002602052604081208054839290610b999084906116aa565b9091555050505050565b6001600160a01b0383165f9081526004602052604090205460ff16158015610be357506001600160a01b0382165f9081526004602052604090205460ff16155b8015610bfd57506007546001600160a01b03838116911614155b8015610c1457506001600160a01b03821661dead14155b15610c8c576016546001600160a01b0383165f90815260026020526040902054610c3e9083610f60565b1115610c8c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610509565b60155481111580610cb457506001600160a01b0383165f9081526004602052604090205460ff165b80610cd657506001600160a01b0382165f9081526004602052604090205460ff165b610d165760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610509565b610d21838383610f6b565b15610d3357610d2e611022565b5f6008555b6001600160a01b0383165f90815260026020526040902054610d559082610987565b6001600160a01b0384165f90815260026020526040812091909155610d7a84846111d7565b610d845781610d8f565b610d8f84848461121b565b6001600160a01b0384165f90815260026020526040902054909150610db49082610f60565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e079085815260200190565b60405180910390a350505050565b5f8184841115610e385760405162461bcd60e51b815260040161050991906114cd565b505050900390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600654610ea79030906001600160a01b031684610864565b6006546001600160a01b031663f305d7198230855f80610ece5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f34573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f5991906116bd565b5050505050565b5f6104d982846116aa565b600b54305f90815260026020526040812054600954919280851015929110159060ff16158015610fa45750600754600160a81b900460ff165b8015610fb95750600754600160a01b900460ff165b8015610fc25750815b8015610fe657506001600160a01b0386165f9081526004602052604090205460ff16155b8015610fff57506007546001600160a01b038681169116145b801561100f5750600a5460085410155b80156110185750805b9695505050505050565b6009805460ff19166001179055305f90815260026020526040902054600b5461104d90610320611646565b81111561106657600b5461106390610320611646565b90505b5f61109a6002611094600e5461108e600d5461108e6001600c54610f6090919063ffffffff16565b90610f60565b9061131d565b90505f6110bc826110b6600c548661131d90919063ffffffff16565b90611328565b90505f6110c98483610987565b9050476110d582611333565b5f6110e04783610987565b90505f6111026110fb600c548861098790919063ffffffff16565b8390611328565b90505f61111a600c548361131d90919063ffffffff16565b9050801561112c5761112c8682610e8f565b600d545f906111409061109485600261131d565b90508015611181576014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561117f573d5f803e3d5ffd5b505b4780156111c1576014546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111bf573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156104d95750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112278585611483565b1115611316575f61124961123b8686611483565b601354611094908690611328565b305f908152600260205260409020549091506112659082610f60565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b59085815260200190565b60405180910390a35f600f541180156112d85750600f546112d68686611483565b115b15611304576113043061dead6112ff600f546110946013548961132890919063ffffffff16565b610992565b61130e8382610987565b9150506104d9565b5092915050565b5f6104d98284611646565b5f6104d9828461165d565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611366576113666116e8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e1919061167c565b816001815181106113f4576113f46116e8565b6001600160a01b03928316602091820292909201015260065461141a9130911684610864565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906114529085905f908690309042906004016116fc565b5f604051808303815f87803b158015611469575f80fd5b505af115801561147b573d5f803e3d5ffd5b505050505050565b6007545f906001600160a01b03908116908316036114a45750601154610402565b6007546001600160a01b03908116908416036114c35750601054610402565b5060125492915050565b5f6020808352835180828501525f5b818110156114f8578581018301518582016040015282016114dc565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461052f575f80fd5b5f806040838503121561153d575f80fd5b823561154881611518565b946020939093013593505050565b5f60208284031215611566575f80fd5b81356104d981611518565b5f805f60608486031215611583575f80fd5b833561158e81611518565b9250602084013561159e81611518565b929592945050506040919091013590565b5f602082840312156115bf575f80fd5b5035919050565b5f80604083850312156115d7575f80fd5b82356115e281611518565b915060208301356115f281611518565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761040257610402611632565b5f8261167757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561168c575f80fd5b81516104d981611518565b8181038181111561040257610402611632565b8082018082111561040257610402611632565b5f805f606084860312156116cf575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561174a5784516001600160a01b031683529383019391830191600101611725565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c1e37cc617246d46ff6357057989c3ae071cf40c2848a61d9aac0c0abd08131364736f6c63430008140033

Deployed Bytecode Sourcemap

6438:8802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8316:67;;;;;;;;;;-1:-1:-1;8376:5:0;;;;;;;;;;;;-1:-1:-1;;;8376:5:0;;;;8316:67;;;;;;;:::i;:::-;;;;;;;;9042:133;;;;;;;;;;-1:-1:-1;9042:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9042:133:0;1023:187:1;6907:52:0;;;;;;;;;;-1:-1:-1;6907:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9181:132;;;;;;;;;;;;;:::i;:::-;;;1613:25:1;;;1601:2;1586:18;9181:132:0;1467:177:1;14585:309:0;;;;;;;;;;-1:-1:-1;14585:309:0;;;;;:::i;:::-;;:::i;8466:67::-;;;;;;;;;;-1:-1:-1;8466:67:0;;6651:2;2252:36:1;;2240:2;2225:18;8466:67:0;2110:184:1;9694:162:0;;;;;;;;;;-1:-1:-1;9694:162:0;;;;;:::i;:::-;;:::i;:::-;;8655:103;;;;;;;;;;-1:-1:-1;8655:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8738:18:0;8721:7;8738:18;;;:9;:18;;;;;;;8655:103;3930;;;;;;;;;;;;;:::i;9540:146::-;;;;;;;;;;;;;:::i;3279:87::-;;;;;;;;;;-1:-1:-1;3325:7:0;3352:6;-1:-1:-1;;;;;3352:6:0;3279:87;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;3279:87:0;2484:203:1;8389:71:0;;;;;;;;;;-1:-1:-1;8451:7:0;;;;;;;;;;;;-1:-1:-1;;;8451:7:0;;;;8389:71;;6987:19;;;;;;;;;;-1:-1:-1;6987:19:0;;;;-1:-1:-1;;;;;6987:19:0;;;8764:139;;;;;;;;;;-1:-1:-1;8764:139:0;;;;;:::i;:::-;;:::i;8539:110::-;;;;;;;;;;;;;:::i;8909:127::-;;;;;;;;;;-1:-1:-1;8909:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9007:18:0;;;8990:7;9007:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8909:127;6848:52;;;;;;;;;;-1:-1:-1;6848:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9321:211;;;;;;;;;;;;;:::i;4188:201::-;;;;;;;;;;-1:-1:-1;4188:201:0;;;;;:::i;:::-;;:::i;9042:133::-;9117:4;9124:37;9133:10;9145:7;9154:6;9124:8;:37::i;:::-;-1:-1:-1;9169:4:0;9042:133;;;;;:::o;9181:132::-;8738:9;:18;;;;7638:42;9234:7;8738:18;;;;;9251:12;;9234:7;;9251:60;;8738:18;;9251:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9244:67;;9181:132;:::o;14585:309::-;14683:4;14700:36;14710:6;14718:9;14729:6;14700:9;:36::i;:::-;14747:117;14756:6;14764:10;14776:87;14812:6;14776:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14776:19:0;;;;;;:11;:19;;;;;;;;14796:10;14776:31;;;;;;;;;:87;:35;:87::i;:::-;14747:8;:117::i;:::-;-1:-1:-1;14882:4:0;14585:309;;;;;;:::o;9694:162::-;3325:7;3352:6;-1:-1:-1;;;;;3352:6:0;2733:10;3499:23;3491:68;;;;-1:-1:-1;;;3491:68:0;;;;;;;:::i;:::-;;;;;;;;;9755:6:::1;:13:::0;;;9779:6:::1;:13:::0;;;9803:7:::1;:14:::0;;;9844:3:::1;9836:11:::0;::::1;;9828:20;;;::::0;::::1;;9694:162:::0;:::o;3930:103::-;3325:7;3352:6;-1:-1:-1;;;;;3352:6:0;2733:10;3499:23;3491:68;;;;-1:-1:-1;;;3491:68:0;;;;;;;:::i;:::-;3995:30:::1;4022:1;3995:18;:30::i;:::-;3930:103::o:0;9540:146::-;3325:7;3352:6;-1:-1:-1;;;;;3352:6:0;2733:10;3499:23;3491:68;;;;-1:-1:-1;;;3491:68:0;;;;;;;:::i;:::-;9623:12:::1;::::0;9599:21:::1;:36:::0;;;9646:17:::1;:32:::0;9540:146::o;8764:139::-;8842:4;8849:40;8859:10;8871:9;8882:6;8849:9;:40::i;8539:110::-;3325:7;3352:6;-1:-1:-1;;;;;3352:6:0;2733:10;3499:23;3491:68;;;;-1:-1:-1;;;3491:68:0;;;;;;;:::i;:::-;8582:14:::1;:21:::0;;-1:-1:-1;;;;8582:21:0::1;-1:-1:-1::0;;;8582:21:0::1;::::0;;8599:4:::1;8620:12:::0;8639:7:::1;::::0;8620:16:::1;::::0;8635:1:::1;8620:16;:::i;:::-;:26;;;;:::i;:::-;8605:12;:41:::0;8539:110::o;9321:211::-;3325:7;3352:6;-1:-1:-1;;;;;3352:6:0;2733:10;3499:23;3491:68;;;;-1:-1:-1;;;3491:68:0;;;;;;;:::i;:::-;9394:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9394:6:0::1;-1:-1:-1::0;;;;;9394:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9385:37:0::1;;9431:4;9438:6;;;;;;;;;-1:-1:-1::0;;;;;9438:6:0::1;-1:-1:-1::0;;;;;9438:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9385:67;::::0;-1:-1:-1;;;;;;9385:67:0::1;::::0;;;;;;-1:-1:-1;;;;;4459:15:1;;;9385:67:0::1;::::0;::::1;4441:34:1::0;4511:15;;4491:18;;;4484:43;4376:18;;9385:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9378:4;:74:::0;;-1:-1:-1;;;;;;9378:74:0::1;-1:-1:-1::0;;;;;9378:74:0;;;::::1;::::0;;;::::1;::::0;;9494:4:::1;-1:-1:-1::0;8738:18:0;;;:9;:18;;;;;;9463:61:::1;::::0;9502:21:::1;9463:12;:61::i;4188:201::-:0;3325:7;3352:6;-1:-1:-1;;;;;3352:6:0;2733:10;3499:23;3491:68;;;;-1:-1:-1;;;3491:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4277:22:0;::::1;4269:73;;;::::0;-1:-1:-1;;;4269:73:0;;4740:2:1;4269:73:0::1;::::0;::::1;4722:21:1::0;4779:2;4759:18;;;4752:30;4818:34;4798:18;;;4791:62;-1:-1:-1;;;4869:18:1;;;4862:36;4915:19;;4269:73:0::1;4538:402:1::0;4269:73:0::1;4353:28;4372:8;4353:18;:28::i;14902:335::-:0;-1:-1:-1;;;;;14995:19:0;;14987:68;;;;-1:-1:-1;;;14987:68:0;;5147:2:1;14987:68:0;;;5129:21:1;5186:2;5166:18;;;5159:30;5225:34;5205:18;;;5198:62;-1:-1:-1;;;5276:18:1;;;5269:34;5320:19;;14987:68:0;4945:400:1;14987:68:0;-1:-1:-1;;;;;15074:21:0;;15066:68;;;;-1:-1:-1;;;15066:68:0;;5552:2:1;15066:68:0;;;5534:21:1;5591:2;5571:18;;;5564:30;5630:34;5610:18;;;5603:62;-1:-1:-1;;;5681:18:1;;;5674:32;5723:19;;15066:68:0;5350:398:1;15066:68:0;-1:-1:-1;;;;;15145:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15197:32;;1613:25:1;;;15197:32:0;;1586:18:1;15197:32:0;;;;;;;14902:335;;;:::o;1455:98::-;1513:7;1540:5;1544:1;1540;:5;:::i;13233:1344::-;-1:-1:-1;;;;;13330:20:0;;13322:70;;;;-1:-1:-1;;;13322:70:0;;6088:2:1;13322:70:0;;;6070:21:1;6127:2;6107:18;;;6100:30;6166:34;6146:18;;;6139:62;-1:-1:-1;;;6217:18:1;;;6210:35;6262:19;;13322:70:0;5886:401:1;13322:70:0;-1:-1:-1;;;;;13411:23:0;;13403:71;;;;-1:-1:-1;;;13403:71:0;;6494:2:1;13403:71:0;;;6476:21:1;6533:2;6513:18;;;6506:30;6572:34;6552:18;;;6545:62;-1:-1:-1;;;6623:18:1;;;6616:33;6666:19;;13403:71:0;6292:399:1;13403:71:0;-1:-1:-1;;;;;13489:27:0;;;;;;:19;:27;;;;;;;;13488:28;:63;;;;-1:-1:-1;;;;;;13521:30:0;;;;;;:19;:30;;;;;;;;13520:31;13488:63;13485:111;;;13561:14;;-1:-1:-1;;;13561:14:0;;;;13553:41;;;;-1:-1:-1;;;13553:41:0;;6898:2:1;13553:41:0;;;6880:21:1;6937:2;6917:18;;;6910:30;-1:-1:-1;;;6956:18:1;;;6949:44;7010:18;;13553:41:0;6696:338:1;13553:41:0;13622:4;;-1:-1:-1;;;;;13609:17:0;;;13622:4;;13609:17;:49;;;;-1:-1:-1;;;;;;13631:27:0;;;;;;:19;:27;;;;;;;;13630:28;13609:49;13606:79;;;13681:1;13660:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13606:79:0;13711:4;;-1:-1:-1;;;;;13698:17:0;;;13711:4;;13698:17;:48;;;;-1:-1:-1;;;;;;13719:27:0;;;;;;:19;:27;;;;;;;;13698:48;13695:90;;;-1:-1:-1;;;;;13748:20:0;;;;;;:9;:20;;;;;:28;;13770:6;;13748:20;:28;;13770:6;;13748:28;:::i;:::-;;;;-1:-1:-1;;;;;13233:1344:0:o;13695:90::-;-1:-1:-1;;;;;13799:27:0;;;;;;:19;:27;;;;;;;;13798:28;:63;;;;-1:-1:-1;;;;;;13831:30:0;;;;;;:19;:30;;;;;;;;13830:31;13798:63;:93;;;;-1:-1:-1;13886:4:0;;-1:-1:-1;;;;;13865:26:0;;;13886:4;;13865:26;;13798:93;:123;;;;-1:-1:-1;;;;;;13895:26:0;;7638:42;13895:26;;13798:123;13795:238;;;13979:17;;-1:-1:-1;;;;;13942:20:0;;;;;;:9;:20;;;;;;:32;;13967:6;13942:24;:32::i;:::-;13941:55;;13933:98;;;;-1:-1:-1;;;13933:98:0;;7371:2:1;13933:98:0;;;7353:21:1;7410:2;7390:18;;;7383:30;7449:32;7429:18;;;7422:60;7499:18;;13933:98:0;7169:354:1;13933:98:0;14061:21;;14051:6;:31;;:62;;;-1:-1:-1;;;;;;14086:27:0;;;;;;:19;:27;;;;;;;;14051:62;:96;;;-1:-1:-1;;;;;;14117:30:0;;;;;;:19;:30;;;;;;;;14051:96;14043:126;;;;-1:-1:-1;;;14043:126:0;;7730:2:1;14043:126:0;;;7712:21:1;7769:2;7749:18;;;7742:30;-1:-1:-1;;;7788:18:1;;;7781:47;7845:18;;14043:126:0;7528:341:1;14043:126:0;14184:36;14194:6;14202:9;14213:6;14184:9;:36::i;:::-;14181:83;;;14222:16;:14;:16::i;:::-;14260:1;14240:9;:22;14181:83;-1:-1:-1;;;;;14294:17:0;;;;;;:9;:17;;;;;;:29;;14316:6;14294:21;:29::i;:::-;-1:-1:-1;;;;;14274:17:0;;;;;;:9;:17;;;;;:49;;;;14359:31;14284:6;14380:9;14359:12;:31::i;:::-;:77;;14430:6;14359:77;;;14393:34;14401:6;14409:9;14420:6;14393:7;:34::i;:::-;-1:-1:-1;;;;;14470:20:0;;;;;;:9;:20;;;;;;14334:102;;-1:-1:-1;14470:40:0;;14334:102;14470:24;:40::i;:::-;-1:-1:-1;;;;;14447:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14526:43;;;;;;;;;;14554:14;1613:25:1;;1601:2;1586:18;;1467:177;14526:43:0;;;;;;;;13311:1266;13233:1344;;;:::o;1879:240::-;1999:7;2060:12;2052:6;;;;2044:29;;;;-1:-1:-1;;;2044:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2095:5:0;;;1879:240::o;4549:191::-;4623:16;4642:6;;-1:-1:-1;;;;;4659:17:0;;;-1:-1:-1;;;;;;4659:17:0;;;;;;4692:40;;4642:6;;;;;;;4692:40;;4623:16;4692:40;4612:128;4549:191;:::o;11421:332::-;11534:6;;11502:53;;11519:4;;-1:-1:-1;;;;;11534:6:0;11543:11;11502:8;:53::i;:::-;11566:6;;-1:-1:-1;;;;;11566:6:0;:22;11596:9;11629:4;11649:11;11566:6;;11707:7;3325;3352:6;-1:-1:-1;;;;;3352:6:0;;3279:87;11707:7;11566:179;;;;;;-1:-1:-1;;;;;;11566:179:0;;;-1:-1:-1;;;;;8233:15:1;;;11566:179:0;;;8215:34:1;8265:18;;;8258:34;;;;8308:18;;;8301:34;;;;8351:18;;;8344:34;8415:15;;;8394:19;;;8387:44;11729:15:0;8447:19:1;;;8440:35;8149:19;;11566:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11421:332;;:::o;1349:98::-;1407:7;1434:5;1438:1;1434;:5;:::i;9864:399::-;10000:12;;10063:4;9957;8738:18;;;:9;:18;;;;;;10104:8;;9957:4;;9990:22;;;;;-1:-1:-1;;10045:40:0;;10104:8;;10103:9;:24;;;;-1:-1:-1;10116:11:0;;-1:-1:-1;;;10116:11:0;;;;10103:24;:42;;;;-1:-1:-1;10131:14:0;;-1:-1:-1;;;10131:14:0;;;;10103:42;:54;;;;;10149:8;10103:54;:86;;;;-1:-1:-1;;;;;;10162:27:0;;;;;;:19;:27;;;;;;;;10161:28;10103:86;:107;;;;-1:-1:-1;10206:4:0;;-1:-1:-1;;;;;10193:17:0;;;10206:4;;10193:17;10103:107;:134;;;;;10227:10;;10214:9;;:23;;10103:134;:152;;;;;10241:14;10103:152;10096:159;9864:399;-1:-1:-1;;;;;;9864:399:0:o;10271:1142::-;7274:8;:15;;-1:-1:-1;;7274:15:0;7285:4;7274:15;;;10369:4:::1;-1:-1:-1::0;8738:18:0;;;:9;:18;;;;;;10405:12:::1;::::0;:18:::1;::::0;10420:3:::1;10405:18;:::i;:::-;10390:12;:33;10386:72;;;10440:12;::::0;:18:::1;::::0;10455:3:::1;10440:18;:::i;:::-;10425:33;;10386:72;10469:20;10492:46;10536:1;10493:37;10523:6;;10493:25;10511:6;;10493:13;10504:1;10493:6;;:10;;:13;;;;:::i;:::-;:17:::0;::::1;:25::i;:37::-;10492:43:::0;::::1;:46::i;:::-;10469:69;;10549:32;10584:42;10613:12;10584:24;10601:6;;10584:12;:16;;:24;;;;:::i;:::-;:28:::0;::::1;:42::i;:::-;10549:77:::0;-1:-1:-1;10637:14:0::1;10654:42;:12:::0;10549:77;10654:16:::1;:42::i;:::-;10637:59:::0;-1:-1:-1;10732:21:0::1;10764:24;10637:59:::0;10764:16:::1;:24::i;:::-;10799:20;10822:41;:21;10848:14:::0;10822:25:::1;:41::i;:::-;10799:64;;10874:19;10895:42;10912:24;10929:6;;10912:12;:16;;:24;;;;:::i;:::-;10895:12:::0;;:16:::1;:42::i;:::-;10874:63;;10948:29;10980:23;10996:6;;10980:11;:15;;:23;;;;:::i;:::-;10948:55:::0;-1:-1:-1;11017:34:0;;11014:103:::1;;11053:61;11066:24;11092:21;11053:12;:61::i;:::-;11173:6;::::0;11127:20:::1;::::0;11150:30:::1;::::0;:18:::1;:11:::0;11166:1:::1;11150:15;:18::i;:30::-;11127:53:::0;-1:-1:-1;11194:16:0;;11191:66:::1;;11220:11;::::0;11212:43:::1;::::0;-1:-1:-1;;;;;11220:11:0;;::::1;::::0;11212:43;::::1;;;::::0;11242:12;;11220:11:::1;11212:43:::0;11220:11;11212:43;11242:12;11220:11;11212:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11191:66;11293:21;11328:28:::0;;11325:81:::1;;11366:11;::::0;11358:46:::1;::::0;-1:-1:-1;;;;;11366:11:0;;::::1;::::0;11358:46;::::1;;;::::0;11388:15;;11366:11:::1;11358:46:::0;11366:11;11358:46;11388:15;11366:11;11358:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11325:81;-1:-1:-1::0;;7294:8:0;:16;;-1:-1:-1;;7294:16:0;;;-1:-1:-1;;;;;;;;10271:1142:0:o;12203:175::-;-1:-1:-1;;;;;12308:27:0;;12283:4;12308:27;;;:19;:27;;;;;;;;12307:28;:63;;;;-1:-1:-1;;;;;;;12340:30:0;;;;;:19;:30;;;;;;;;12339:31;;12203:175;-1:-1:-1;12203:175:0:o;12614:611::-;12700:7;12763:1;12723:37;12742:6;12750:9;12723:18;:37::i;:::-;:41;12720:483;;;12776:17;12796:66;12824:37;12843:6;12851:9;12824:18;:37::i;:::-;12807:11;;12796:23;;:6;;:10;:23::i;:66::-;12918:4;12900:24;;;;:9;:24;;;;;;12776:86;;-1:-1:-1;12900:39:0;;12776:86;12900:28;:39::i;:::-;12891:4;12873:24;;;;:9;:24;;;;;;;:66;;;;12955:42;;-1:-1:-1;;;;;12955:42:0;;;;;;;12987:9;1613:25:1;;1601:2;1586:18;;1467:177;12955:42:0;;;;;;;;13029:1;13011:7;;:20;:71;;;;;13075:7;;13035:37;13054:6;13062:9;13035:18;:37::i;:::-;:47;13011:71;13008:155;;;13084:77;13102:4;7638:42;13124:36;13152:7;;13124:23;13135:11;;13124:6;:10;;:23;;;;:::i;:36::-;13084:9;:77::i;:::-;13180:21;:6;13191:9;13180:10;:21::i;:::-;13173:28;;;;;12720:483;-1:-1:-1;13211:6:0;12614:611;-1:-1:-1;;12614:611:0:o;1561:98::-;1619:7;1646:5;1650:1;1646;:5;:::i;1667:98::-;1725:7;1752:5;1756:1;1752;:5;:::i;11761:434::-;11851:16;;;11865:1;11851:16;;;;;;;;11827:21;;11851:16;;;;;;;;;;-1:-1:-1;11851:16:0;11827:40;;11896:4;11878;11883:1;11878:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11878:23:0;;;:7;;;;;;;;;;:23;;;;11922:6;;:13;;;-1:-1:-1;;;11922:13:0;;;;:6;;;;;:11;;:13;;;;;11878:7;;11922:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11912:4;11917:1;11912:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11912:23:0;;;:7;;;;;;;;;:23;11978:6;;11946:53;;11963:4;;11978:6;11987:11;11946:8;:53::i;:::-;12010:6;;:177;;-1:-1:-1;;;12010:177:0;;-1:-1:-1;;;;;12010:6:0;;;;:57;;:177;;12082:11;;12010:6;;12124:4;;12151;;12171:15;;12010:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11816:379;11761:434;:::o;12386:220::-;12508:4;;12472:7;;-1:-1:-1;;;;;12508:4:0;;;12495:17;;;;12492:38;;-1:-1:-1;12521:7:0;;12514:14;;12492:38;12553:4;;-1:-1:-1;;;;;12553:4:0;;;12543:14;;;;12540:34;;-1:-1:-1;12566:6:0;;12559:13;;12540:34;-1:-1:-1;12591:7:0;;12386:220;;;;:::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;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;3446:127::-;3507:10;3502:3;3498:20;3495:1;3488:31;3538:4;3535:1;3528:15;3562:4;3559:1;3552:15;3578:168;3651:9;;;3682;;3699:15;;;3693:22;;3679:37;3669:71;;3720:18;;:::i;3751:217::-;3791:1;3817;3807:132;;3861:10;3856:3;3852:20;3849:1;3842:31;3896:4;3893:1;3886:15;3924:4;3921:1;3914:15;3807:132;-1:-1:-1;3953:9:1;;3751:217::o;3973:251::-;4043:6;4096:2;4084:9;4075:7;4071:23;4067:32;4064:52;;;4112:1;4109;4102:12;4064:52;4144:9;4138:16;4163:31;4188:5;4163:31;:::i;5753:128::-;5820:9;;;5841:11;;;5838:37;;;5855:18;;:::i;7039:125::-;7104:9;;;7125:10;;;7122:36;;;7138:18;;:::i;8486:306::-;8574:6;8582;8590;8643:2;8631:9;8622:7;8618:23;8614:32;8611:52;;;8659:1;8656;8649:12;8611:52;8688:9;8682:16;8672:26;;8738:2;8727:9;8723:18;8717:25;8707:35;;8782:2;8771:9;8767:18;8761:25;8751:35;;8486:306;;;;;:::o;8929:127::-;8990:10;8985:3;8981:20;8978:1;8971:31;9021:4;9018:1;9011:15;9045:4;9042:1;9035:15;9061:980;9323:4;9371:3;9360:9;9356:19;9402:6;9391:9;9384:25;9428:2;9466:6;9461:2;9450:9;9446:18;9439:34;9509:3;9504:2;9493:9;9489:18;9482:31;9533:6;9568;9562:13;9599:6;9591;9584:22;9637:3;9626:9;9622:19;9615:26;;9676:2;9668:6;9664:15;9650:29;;9697:1;9707:195;9721:6;9718:1;9715:13;9707:195;;;9786:13;;-1:-1:-1;;;;;9782:39:1;9770:52;;9877:15;;;;9842:12;;;;9818:1;9736:9;9707:195;;;-1:-1:-1;;;;;;;9958:32:1;;;;9953:2;9938:18;;9931:60;-1:-1:-1;;;10022:3:1;10007:19;10000:35;9919:3;9061:980;-1:-1:-1;;;9061:980:1:o

Swarm Source

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