Token AsgardX

DEX  
 

Overview ERC20

Price
$0.03 @ 0.000010 ETH
Fully Diluted Market Cap
Total Supply:
10,000,000 ODIN

Holders:
1,214 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

AsgardX - An ecosystem focused on real yield earning through Decentralized Exchange, Launchpad, And AI farming real-yield earning.

Market

Volume (24H):$3.23
Market Capitalization:$0.00
Circulating Supply:0.00 ODIN
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
AsgardX

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-02-20
*/

/**
 *Submitted for verification at BscScan.com on 2022-08-22
*/

/**
 *Submitted for verification at BscScan.com on 2022-08-16
*/

/**
 *Submitted for verification at BscScan.com on 2022-08-15
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

interface IBEP20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

contract Context {
    constructor () { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}

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 () {

        _owner = msg.sender ;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract BEP20Detailed {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory tname, string memory tsymbol, uint8 tdecimals) {
        _name = tname;
        _symbol = tsymbol;
        _decimals = tdecimals;

    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeBEP20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IBEP20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IBEP20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IBEP20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeBEP20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IBEP20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeBEP20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeBEP20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeBEP20: BEP20 operation did not succeed");
        }
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract AsgardX is Context, Ownable, IBEP20, BEP20Detailed {
    using SafeBEP20 for IBEP20;
    using Address for address;
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniSwapV2Router;
    address public immutable uniSwapV2Pair;

    mapping (address => uint) internal _balances;
    mapping (address => mapping (address => uint)) internal _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    uint256 internal _totalSupply;

    uint256 public sellFee = 1;
    uint256 public buyFee = 1;
    uint256 private marketingFee;

    uint256 public asgardPercent = 30;
    uint256 public marketingPercent = 40;
    uint256 public deflationaryFundPercent = 30;

    uint256 public constant ONE_HUNDRED_PERCENT = 100;


    address payable public marketingAddress = payable(0x7A25D1d104879dD98976Ea98b7e23ACD1Dd1d814);
    address payable public asgardAddress = payable(0x1093Ba49131b42F7E87dB8Ec15488EA2D2DfF127);
    address payable public deflationaryFundAddress = payable(0x13706F50d4F94A2022fBB91eaAF6BAAD4630e0AE);

    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool public tradingEnabled = false;

    uint256 public numTokensSellToFee = 100 * 10**18;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );

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

    address private _owner;

    constructor () BEP20Detailed("AsgardX", "ODIN", 18) {
        _owner = msg.sender ;
        _totalSupply = 10000000 * (10**18);

        _balances[_owner] = _totalSupply;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        uniSwapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniSwapV2Router = _uniswapV2Router;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingAddress] = true;

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

    function totalSupply() public view override returns (uint) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) public override  returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address towner, address spender) public view override returns (uint) {
        return _allowances[towner][spender];
    }
    function approve(address spender, uint amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
        return true;
    }

    function setBuyFeePercent(uint256 newFee) external onlyOwner {
        require(newFee <= 10, "Buy fee should be less than 10%");
        buyFee = newFee;

    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        tradingEnabled = true;
    }

    function setSellFeePercent(uint256 newFee) external onlyOwner {
        require(newFee <= 10, "Sell fee should be less than 10%");
        sellFee = newFee;
    }

    function setFees(
        uint256 deflationaryFund,
        uint256 marketing,
        uint256 asgard
    ) external onlyOwner {
        require(deflationaryFund + marketing + asgard == ONE_HUNDRED_PERCENT);
        deflationaryFundPercent = deflationaryFund;
        marketingPercent = marketing;
        asgardPercent = asgard;
    }

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

    function setMarketingAddress(address payable wallet) external onlyOwner
    {
        require(wallet != marketingAddress,"marketingAddress wallet is already that address");
        require(!isContract(wallet),"marketingAddress wallet cannot be a contract");
        require(wallet != address(0), "Can't set to dead address!");
        marketingAddress = wallet;
    }

    function setAsgardAddress(address payable wallet) external onlyOwner
    {
        require(wallet != asgardAddress,"asgardAddress wallet is already that address");
        require(!isContract(wallet),"asgardAddress wallet cannot be a contract");
        require(wallet != address(0), "Can't set to dead address!");
        asgardAddress = wallet;
    }

    function setDeflationaryFundAddress(address payable wallet) external onlyOwner
    {
        require(wallet != deflationaryFundAddress,"deflationaryFundAddress wallet is already that address");
        require(!isContract(wallet),"deflationaryFundAddress wallet cannot be a contract");
        require(wallet != address(0), "Can't set to dead address!");
        deflationaryFundAddress = wallet;
    }


    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function changeNumTokensSellToFee(uint256 _numTokensSellToFee) external onlyOwner
    {
        require(_numTokensSellToFee >= 1 * 10**18 && _numTokensSellToFee <= 10000000 * 10**18, "Threshold must be set within 1 to 10,000,000 tokens");
        numTokensSellToFee = _numTokensSellToFee;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _transfer(address sender, address recipient, uint amount) internal{

        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");


        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));


        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToFee;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            sender != uniSwapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToFee;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        } else {
            require(tradingEnabled, "Trading not yet enabled");
        }

        if(sender != uniSwapV2Pair && recipient != uniSwapV2Pair)
        {takeFee = false;}

        if(takeFee)
        {
            if(sender == uniSwapV2Pair){marketingFee = buyFee;}
            else{marketingFee = sellFee;}
            uint256 taxAmount = amount.mul(marketingFee).div(100);
            uint256 TotalSent = amount.sub(taxAmount);
            _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(TotalSent);
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(sender, recipient, TotalSent);
            emit Transfer(sender, address(this), taxAmount);
        }
        else
        {
            _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }

    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {

        // swap tokens for ETH
        swapTokensForEth(contractTokenBalance); // <- this breaks the ETH -> IF swap when swap+liquify is triggered
        uint256 asgardPart = address(this).balance.mul(asgardPercent).div(ONE_HUNDRED_PERCENT);
        uint256 marketingPart = address(this).balance.mul(marketingPercent).div(ONE_HUNDRED_PERCENT);
        uint256 deflationaryPart = address(this).balance.mul(deflationaryFundPercent).div(ONE_HUNDRED_PERCENT);
        payable(marketingAddress).transfer(asgardPart);
        payable(marketingAddress).transfer(marketingPart);
        payable(deflationaryFundAddress).transfer(deflationaryPart);

        emit SwapAndLiquify(contractTokenBalance, address(this).balance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniSwapV2Router.WETH();

        _approve(address(this), address(uniSwapV2Router), tokenAmount);

        // make the swap
        uniSwapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function _approve(address towner, address spender, uint amount) internal {
        require(towner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[towner][spender] = amount;
        emit Approval(towner, spender, amount);
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IBEP20 IBEP20TOKEN = IBEP20(token);
        uint256 balance = IBEP20TOKEN.balanceOf(address(this));
        IBEP20TOKEN.transfer(msg.sender, balance);
    }

}

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"ONE_HUNDRED_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"towner","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":[],"name":"asgardAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"asgardPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensSellToFee","type":"uint256"}],"name":"changeNumTokensSellToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deflationaryFundAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deflationaryFundPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setAsgardAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setDeflationaryFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deflationaryFund","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"asgard","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"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"}]

60c060405260016008819055600955601e600b8190556028600c55600d55600e80546001600160a01b0319908116737a25d1d104879dd98976ea98b7e23acd1dd1d81417909155600f8054909116731093ba49131b42f7e87db8ec15488ea2d2dff12717905560108054600162ffff0160a01b03191675010013706f50d4f94a2022fbb91eaaf6baad4630e0ae17905568056bc75e2d63100000601155348015620000a957600080fd5b506040805180820182526007815266082e6cec2e4c8b60cb1b60208083019190915282518084018452600481526327a224a760e11b91810191909152600080546001600160a01b03191633908117825593519293919260129291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360016200013784826200047b565b5060026200014683826200047b565b506003805460ff90921660ff199092169190911790555050601280546001600160a01b031916339081179091556a084595161401484a000000600781905560009182526004602081815260409384902092909255825163c45a015560e01b81529251731b02da8cb0d097eb8d57a175b88c7d8b4799750693849363c45a0155938281019391928290030181865afa158015620001e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020c919062000547565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000280919062000547565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f4919062000547565b6001600160a01b0390811660a0528116608052600160066000620003206000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526006909352818320805485166001908117909155600e549091168352912080549092161790556200037f3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620003c791815260200190565b60405180910390a35062000579565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200040157607f821691505b6020821081036200042257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047657600081815260208120601f850160051c81016020861015620004515750805b601f850160051c820191505b8181101562000472578281556001016200045d565b5050505b505050565b81516001600160401b03811115620004975762000497620003d6565b620004af81620004a88454620003ec565b8462000428565b602080601f831160018114620004e75760008415620004ce5750858301515b600019600386901b1c1916600185901b17855562000472565b600085815260208120601f198616915b828110156200051857888601518255948401946001909101908401620004f7565b5085821015620005375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200055a57600080fd5b81516001600160a01b03811681146200057257600080fd5b9392505050565b60805160a051612351620005d060003960008181610251015281816115fd015281816117040152818161174101526117870152600081816105ad01528181611d7601528181611e2f0152611e6b01526123516000f3fe6080604052600436106102335760003560e01c8063906e9dd01161012e578063c49b9a80116100ab578063dd62ed3e1161006f578063dd62ed3e14610690578063dd67b4d0146106d6578063ea2f0b37146106ec578063f2fde38b1461070c578063f9d0831a1461072c57600080fd5b8063c49b9a801461060f578063cec10c111461062f578063d27fa4ce1461064f578063d8020a1814610665578063dd0081c71461067b57600080fd5b8063a457c2d7116100f2578063a457c2d71461055b578063a5ece9411461057b578063a63b7f981461059b578063a9059cbb146105cf578063b1376a4f146105ef57600080fd5b8063906e9dd0146104c6578063950eb5d5146104e657806395d89b4114610506578063969f8c0b1461051b578063a2b8a9471461053b57600080fd5b806339509351116101bc57806370a082311161018057806370a0823114610432578063715018a61461046857806384956ca91461047d5780638a8c523c146104935780638da5cb5b146104a857600080fd5b8063395093511461039b578063437823ec146103bb57806346f31106146103db57806347062402146103fb5780634ada218b1461041157600080fd5b806318160ddd1161020357806318160ddd1461030457806323b872dd146103235780632b14ca5614610343578063313ce56714610359578063333b97301461037b57600080fd5b80622942ef1461023f57806306fdde0314610290578063095ea7b3146102b257806310dd4fae146102e257600080fd5b3661023a57005b600080fd5b34801561024b57600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029c57600080fd5b506102a561074c565b6040516102879190611f05565b3480156102be57600080fd5b506102d26102cd366004611f6f565b6107de565b6040519015158152602001610287565b3480156102ee57600080fd5b506103026102fd366004611f9b565b6107f5565b005b34801561031057600080fd5b506007545b604051908152602001610287565b34801561032f57600080fd5b506102d261033e366004611fb8565b610961565b34801561034f57600080fd5b5061031560085481565b34801561036557600080fd5b5060035460405160ff9091168152602001610287565b34801561038757600080fd5b50610302610396366004611ff9565b6109ca565b3480156103a757600080fd5b506102d26103b6366004611f6f565b610a84565b3480156103c757600080fd5b506103026103d6366004611f9b565b610aba565b3480156103e757600080fd5b50600f54610273906001600160a01b031681565b34801561040757600080fd5b5061031560095481565b34801561041d57600080fd5b506010546102d290600160b01b900460ff1681565b34801561043e57600080fd5b5061031561044d366004611f9b565b6001600160a01b031660009081526004602052604090205490565b34801561047457600080fd5b50610302610b08565b34801561048957600080fd5b5061031560115481565b34801561049f57600080fd5b50610302610b7c565b3480156104b457600080fd5b506000546001600160a01b0316610273565b3480156104d257600080fd5b506103026104e1366004611f9b565b610c15565b3480156104f257600080fd5b50610302610501366004611ff9565b610d6a565b34801561051257600080fd5b506102a5610dea565b34801561052757600080fd5b50610302610536366004611f9b565b610df9565b34801561054757600080fd5b50610302610556366004611ff9565b610f48565b34801561056757600080fd5b506102d2610576366004611f6f565b610fc8565b34801561058757600080fd5b50600e54610273906001600160a01b031681565b3480156105a757600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b3480156105db57600080fd5b506102d26105ea366004611f6f565b611017565b3480156105fb57600080fd5b50601054610273906001600160a01b031681565b34801561061b57600080fd5b5061030261062a366004612020565b611024565b34801561063b57600080fd5b5061030261064a36600461203d565b6110a6565b34801561065b57600080fd5b50610315600b5481565b34801561067157600080fd5b50610315600c5481565b34801561068757600080fd5b50610315606481565b34801561069c57600080fd5b506103156106ab366004612069565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106e257600080fd5b50610315600d5481565b3480156106f857600080fd5b50610302610707366004611f9b565b6110ff565b34801561071857600080fd5b50610302610727366004611f9b565b61114a565b34801561073857600080fd5b50610302610747366004611f9b565b611234565b60606001805461075b906120a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610787906120a2565b80156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b5050505050905090565b60006107eb3384846113dc565b5060015b92915050565b6000546001600160a01b031633146108285760405162461bcd60e51b815260040161081f906120dc565b60405180910390fd5b6010546001600160a01b03908116908216036108a55760405162461bcd60e51b815260206004820152603660248201527f6465666c6174696f6e61727946756e64416464726573732077616c6c657420696044820152757320616c72656164792074686174206164647265737360501b606482015260840161081f565b6001600160a01b0381163b156109195760405162461bcd60e51b815260206004820152603360248201527f6465666c6174696f6e61727946756e64416464726573732077616c6c65742063604482015272185b9b9bdd08189948184818dbdb9d1c9858dd606a1b606482015260840161081f565b6001600160a01b03811661093f5760405162461bcd60e51b815260040161081f90612111565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600061096e848484611500565b6109c084336109bb856040518060600160405280602881526020016122a9602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611a08565b6113dc565b5060019392505050565b6000546001600160a01b031633146109f45760405162461bcd60e51b815260040161081f906120dc565b670de0b6b3a76400008110158015610a1757506a084595161401484a0000008111155b610a7f5760405162461bcd60e51b815260206004820152603360248201527f5468726573686f6c64206d757374206265207365742077697468696e203120746044820152726f2031302c3030302c30303020746f6b656e7360681b606482015260840161081f565b601155565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916107eb9185906109bb9086611a42565b6000546001600160a01b03163314610ae45760405162461bcd60e51b815260040161081f906120dc565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610b325760405162461bcd60e51b815260040161081f906120dc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ba65760405162461bcd60e51b815260040161081f906120dc565b601054600160b01b900460ff1615610c005760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604482015260640161081f565b6010805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161081f906120dc565b600e546001600160a01b0390811690821603610cb55760405162461bcd60e51b815260206004820152602f60248201527f6d61726b6574696e67416464726573732077616c6c657420697320616c72656160448201526e64792074686174206164647265737360881b606482015260840161081f565b6001600160a01b0381163b15610d225760405162461bcd60e51b815260206004820152602c60248201527f6d61726b6574696e67416464726573732077616c6c65742063616e6e6f74206260448201526b1948184818dbdb9d1c9858dd60a21b606482015260840161081f565b6001600160a01b038116610d485760405162461bcd60e51b815260040161081f90612111565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d945760405162461bcd60e51b815260040161081f906120dc565b600a811115610de55760405162461bcd60e51b815260206004820152601f60248201527f427579206665652073686f756c64206265206c657373207468616e2031302500604482015260640161081f565b600955565b60606002805461075b906120a2565b6000546001600160a01b03163314610e235760405162461bcd60e51b815260040161081f906120dc565b600f546001600160a01b0390811690821603610e965760405162461bcd60e51b815260206004820152602c60248201527f617367617264416464726573732077616c6c657420697320616c72656164792060448201526b74686174206164647265737360a01b606482015260840161081f565b6001600160a01b0381163b15610f005760405162461bcd60e51b815260206004820152602960248201527f617367617264416464726573732077616c6c65742063616e6e6f7420626520616044820152680818dbdb9d1c9858dd60ba1b606482015260840161081f565b6001600160a01b038116610f265760405162461bcd60e51b815260040161081f90612111565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f725760405162461bcd60e51b815260040161081f906120dc565b600a811115610fc35760405162461bcd60e51b815260206004820181905260248201527f53656c6c206665652073686f756c64206265206c657373207468616e20313025604482015260640161081f565b600855565b60006107eb33846109bb856040518060600160405280602581526020016122f7602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611a08565b60006107eb338484611500565b6000546001600160a01b0316331461104e5760405162461bcd60e51b815260040161081f906120dc565b60108054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061109b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110d05760405162461bcd60e51b815260040161081f906120dc565b6064816110dd848661215e565b6110e7919061215e565b146110f157600080fd5b600d92909255600c55600b55565b6000546001600160a01b031633146111295760405162461bcd60e51b815260040161081f906120dc565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146111745760405162461bcd60e51b815260040161081f906120dc565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461125e5760405162461bcd60e51b815260040161081f906120dc565b306001600160a01b038216036112b65760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73604482015260640161081f565b6001600160a01b0381166112f45760405133904780156108fc02916000818181858888f193505050501580156112f0573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561133d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113619190612176565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156113b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d5919061218f565b5050505b50565b6001600160a01b03831661143e5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161081f565b6001600160a01b03821661149f5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161081f565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115645760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161081f565b6001600160a01b0382166115c65760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161081f565b30600090815260046020526040902054601154811080159081906115f45750601054600160a01b900460ff16155b801561163257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156116475750601054600160a81b900460ff165b1561165a57601154915061165a82611aa8565b6001600160a01b03851660009081526006602052604090205460019060ff168061169c57506001600160a01b03851660009081526006602052604090205460ff165b156116a957506000611702565b601054600160b01b900460ff166117025760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161081f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161415801561177657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561177f575060005b8015611937577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036117c957600954600a556117d0565b600854600a555b60006117f260646117ec600a5488611c1990919063ffffffff16565b90611c9b565b905060006118008683611cdd565b905061183f866040518060600160405280602681526020016122d1602691396001600160a01b038b166000908152600460205260409020549190611a08565b6001600160a01b03808a16600090815260046020526040808220939093559089168152205461186e9082611a42565b6001600160a01b03881660009081526004602052604080822092909255308152205461189a9083611a42565b3060009081526004602090815260409182902092909255518281526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050611a00565b611974846040518060600160405280602681526020016122d1602691396001600160a01b0389166000908152600460205260409020549190611a08565b6001600160a01b0380881660009081526004602052604080822093909355908716815220546119a39085611a42565b6001600160a01b0380871660008181526004602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119f79088815260200190565b60405180910390a35b505050505050565b60008184841115611a2c5760405162461bcd60e51b815260040161081f9190611f05565b506000611a3984866121ac565b95945050505050565b600080611a4f838561215e565b905083811015611aa15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081f565b9392505050565b6010805460ff60a01b1916600160a01b179055611ac481611d1f565b6000611ae060646117ec600b5447611c1990919063ffffffff16565b90506000611afe60646117ec600c5447611c1990919063ffffffff16565b90506000611b1c60646117ec600d5447611c1990919063ffffffff16565b600e546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015611b57573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611b92573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611bcd573d6000803e3d6000fd5b50604080518581524760208201527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506010805460ff60a01b191690555050565b600082600003611c2b575060006107ef565b6000611c3783856121c3565b905082611c4485836121e2565b14611aa15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081f565b6000611aa183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ed7565b6000611aa183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a08565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d5457611d54612204565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df6919061221a565b81600181518110611e0957611e09612204565b60200260200101906001600160a01b031690816001600160a01b031681525050611e54307f0000000000000000000000000000000000000000000000000000000000000000846113dc565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611ea9908590600090869030904290600401612237565b600060405180830381600087803b158015611ec357600080fd5b505af1158015611a00573d6000803e3d6000fd5b60008183611ef85760405162461bcd60e51b815260040161081f9190611f05565b506000611a3984866121e2565b600060208083528351808285015260005b81811015611f3257858101830151858201604001528201611f16565b81811115611f44576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146113d957600080fd5b60008060408385031215611f8257600080fd5b8235611f8d81611f5a565b946020939093013593505050565b600060208284031215611fad57600080fd5b8135611aa181611f5a565b600080600060608486031215611fcd57600080fd5b8335611fd881611f5a565b92506020840135611fe881611f5a565b929592945050506040919091013590565b60006020828403121561200b57600080fd5b5035919050565b80151581146113d957600080fd5b60006020828403121561203257600080fd5b8135611aa181612012565b60008060006060848603121561205257600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561207c57600080fd5b823561208781611f5a565b9150602083013561209781611f5a565b809150509250929050565b600181811c908216806120b657607f821691505b6020821081036120d657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f43616e27742073657420746f2064656164206164647265737321000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561217157612171612148565b500190565b60006020828403121561218857600080fd5b5051919050565b6000602082840312156121a157600080fd5b8151611aa181612012565b6000828210156121be576121be612148565b500390565b60008160001904831182151516156121dd576121dd612148565b500290565b6000826121ff57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561222c57600080fd5b8151611aa181611f5a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122875784516001600160a01b031683529383019391830191600101612262565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205208ec3308c74b6c9c33a71369c09fb4360266187a2e3f09ed96b9ae64f2237764736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102335760003560e01c8063906e9dd01161012e578063c49b9a80116100ab578063dd62ed3e1161006f578063dd62ed3e14610690578063dd67b4d0146106d6578063ea2f0b37146106ec578063f2fde38b1461070c578063f9d0831a1461072c57600080fd5b8063c49b9a801461060f578063cec10c111461062f578063d27fa4ce1461064f578063d8020a1814610665578063dd0081c71461067b57600080fd5b8063a457c2d7116100f2578063a457c2d71461055b578063a5ece9411461057b578063a63b7f981461059b578063a9059cbb146105cf578063b1376a4f146105ef57600080fd5b8063906e9dd0146104c6578063950eb5d5146104e657806395d89b4114610506578063969f8c0b1461051b578063a2b8a9471461053b57600080fd5b806339509351116101bc57806370a082311161018057806370a0823114610432578063715018a61461046857806384956ca91461047d5780638a8c523c146104935780638da5cb5b146104a857600080fd5b8063395093511461039b578063437823ec146103bb57806346f31106146103db57806347062402146103fb5780634ada218b1461041157600080fd5b806318160ddd1161020357806318160ddd1461030457806323b872dd146103235780632b14ca5614610343578063313ce56714610359578063333b97301461037b57600080fd5b80622942ef1461023f57806306fdde0314610290578063095ea7b3146102b257806310dd4fae146102e257600080fd5b3661023a57005b600080fd5b34801561024b57600080fd5b506102737f00000000000000000000000025faa972bc761044e8cb0e88a8110a6984dcd6e181565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029c57600080fd5b506102a561074c565b6040516102879190611f05565b3480156102be57600080fd5b506102d26102cd366004611f6f565b6107de565b6040519015158152602001610287565b3480156102ee57600080fd5b506103026102fd366004611f9b565b6107f5565b005b34801561031057600080fd5b506007545b604051908152602001610287565b34801561032f57600080fd5b506102d261033e366004611fb8565b610961565b34801561034f57600080fd5b5061031560085481565b34801561036557600080fd5b5060035460405160ff9091168152602001610287565b34801561038757600080fd5b50610302610396366004611ff9565b6109ca565b3480156103a757600080fd5b506102d26103b6366004611f6f565b610a84565b3480156103c757600080fd5b506103026103d6366004611f9b565b610aba565b3480156103e757600080fd5b50600f54610273906001600160a01b031681565b34801561040757600080fd5b5061031560095481565b34801561041d57600080fd5b506010546102d290600160b01b900460ff1681565b34801561043e57600080fd5b5061031561044d366004611f9b565b6001600160a01b031660009081526004602052604090205490565b34801561047457600080fd5b50610302610b08565b34801561048957600080fd5b5061031560115481565b34801561049f57600080fd5b50610302610b7c565b3480156104b457600080fd5b506000546001600160a01b0316610273565b3480156104d257600080fd5b506103026104e1366004611f9b565b610c15565b3480156104f257600080fd5b50610302610501366004611ff9565b610d6a565b34801561051257600080fd5b506102a5610dea565b34801561052757600080fd5b50610302610536366004611f9b565b610df9565b34801561054757600080fd5b50610302610556366004611ff9565b610f48565b34801561056757600080fd5b506102d2610576366004611f6f565b610fc8565b34801561058757600080fd5b50600e54610273906001600160a01b031681565b3480156105a757600080fd5b506102737f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b4799750681565b3480156105db57600080fd5b506102d26105ea366004611f6f565b611017565b3480156105fb57600080fd5b50601054610273906001600160a01b031681565b34801561061b57600080fd5b5061030261062a366004612020565b611024565b34801561063b57600080fd5b5061030261064a36600461203d565b6110a6565b34801561065b57600080fd5b50610315600b5481565b34801561067157600080fd5b50610315600c5481565b34801561068757600080fd5b50610315606481565b34801561069c57600080fd5b506103156106ab366004612069565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106e257600080fd5b50610315600d5481565b3480156106f857600080fd5b50610302610707366004611f9b565b6110ff565b34801561071857600080fd5b50610302610727366004611f9b565b61114a565b34801561073857600080fd5b50610302610747366004611f9b565b611234565b60606001805461075b906120a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610787906120a2565b80156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b5050505050905090565b60006107eb3384846113dc565b5060015b92915050565b6000546001600160a01b031633146108285760405162461bcd60e51b815260040161081f906120dc565b60405180910390fd5b6010546001600160a01b03908116908216036108a55760405162461bcd60e51b815260206004820152603660248201527f6465666c6174696f6e61727946756e64416464726573732077616c6c657420696044820152757320616c72656164792074686174206164647265737360501b606482015260840161081f565b6001600160a01b0381163b156109195760405162461bcd60e51b815260206004820152603360248201527f6465666c6174696f6e61727946756e64416464726573732077616c6c65742063604482015272185b9b9bdd08189948184818dbdb9d1c9858dd606a1b606482015260840161081f565b6001600160a01b03811661093f5760405162461bcd60e51b815260040161081f90612111565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600061096e848484611500565b6109c084336109bb856040518060600160405280602881526020016122a9602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611a08565b6113dc565b5060019392505050565b6000546001600160a01b031633146109f45760405162461bcd60e51b815260040161081f906120dc565b670de0b6b3a76400008110158015610a1757506a084595161401484a0000008111155b610a7f5760405162461bcd60e51b815260206004820152603360248201527f5468726573686f6c64206d757374206265207365742077697468696e203120746044820152726f2031302c3030302c30303020746f6b656e7360681b606482015260840161081f565b601155565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916107eb9185906109bb9086611a42565b6000546001600160a01b03163314610ae45760405162461bcd60e51b815260040161081f906120dc565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610b325760405162461bcd60e51b815260040161081f906120dc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ba65760405162461bcd60e51b815260040161081f906120dc565b601054600160b01b900460ff1615610c005760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604482015260640161081f565b6010805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161081f906120dc565b600e546001600160a01b0390811690821603610cb55760405162461bcd60e51b815260206004820152602f60248201527f6d61726b6574696e67416464726573732077616c6c657420697320616c72656160448201526e64792074686174206164647265737360881b606482015260840161081f565b6001600160a01b0381163b15610d225760405162461bcd60e51b815260206004820152602c60248201527f6d61726b6574696e67416464726573732077616c6c65742063616e6e6f74206260448201526b1948184818dbdb9d1c9858dd60a21b606482015260840161081f565b6001600160a01b038116610d485760405162461bcd60e51b815260040161081f90612111565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d945760405162461bcd60e51b815260040161081f906120dc565b600a811115610de55760405162461bcd60e51b815260206004820152601f60248201527f427579206665652073686f756c64206265206c657373207468616e2031302500604482015260640161081f565b600955565b60606002805461075b906120a2565b6000546001600160a01b03163314610e235760405162461bcd60e51b815260040161081f906120dc565b600f546001600160a01b0390811690821603610e965760405162461bcd60e51b815260206004820152602c60248201527f617367617264416464726573732077616c6c657420697320616c72656164792060448201526b74686174206164647265737360a01b606482015260840161081f565b6001600160a01b0381163b15610f005760405162461bcd60e51b815260206004820152602960248201527f617367617264416464726573732077616c6c65742063616e6e6f7420626520616044820152680818dbdb9d1c9858dd60ba1b606482015260840161081f565b6001600160a01b038116610f265760405162461bcd60e51b815260040161081f90612111565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f725760405162461bcd60e51b815260040161081f906120dc565b600a811115610fc35760405162461bcd60e51b815260206004820181905260248201527f53656c6c206665652073686f756c64206265206c657373207468616e20313025604482015260640161081f565b600855565b60006107eb33846109bb856040518060600160405280602581526020016122f7602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611a08565b60006107eb338484611500565b6000546001600160a01b0316331461104e5760405162461bcd60e51b815260040161081f906120dc565b60108054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061109b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110d05760405162461bcd60e51b815260040161081f906120dc565b6064816110dd848661215e565b6110e7919061215e565b146110f157600080fd5b600d92909255600c55600b55565b6000546001600160a01b031633146111295760405162461bcd60e51b815260040161081f906120dc565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146111745760405162461bcd60e51b815260040161081f906120dc565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461125e5760405162461bcd60e51b815260040161081f906120dc565b306001600160a01b038216036112b65760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73604482015260640161081f565b6001600160a01b0381166112f45760405133904780156108fc02916000818181858888f193505050501580156112f0573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561133d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113619190612176565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156113b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d5919061218f565b5050505b50565b6001600160a01b03831661143e5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161081f565b6001600160a01b03821661149f5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161081f565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115645760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161081f565b6001600160a01b0382166115c65760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161081f565b30600090815260046020526040902054601154811080159081906115f45750601054600160a01b900460ff16155b801561163257507f00000000000000000000000025faa972bc761044e8cb0e88a8110a6984dcd6e16001600160a01b0316856001600160a01b031614155b80156116475750601054600160a81b900460ff165b1561165a57601154915061165a82611aa8565b6001600160a01b03851660009081526006602052604090205460019060ff168061169c57506001600160a01b03851660009081526006602052604090205460ff165b156116a957506000611702565b601054600160b01b900460ff166117025760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161081f565b7f00000000000000000000000025faa972bc761044e8cb0e88a8110a6984dcd6e16001600160a01b0316866001600160a01b03161415801561177657507f00000000000000000000000025faa972bc761044e8cb0e88a8110a6984dcd6e16001600160a01b0316856001600160a01b031614155b1561177f575060005b8015611937577f00000000000000000000000025faa972bc761044e8cb0e88a8110a6984dcd6e16001600160a01b0316866001600160a01b0316036117c957600954600a556117d0565b600854600a555b60006117f260646117ec600a5488611c1990919063ffffffff16565b90611c9b565b905060006118008683611cdd565b905061183f866040518060600160405280602681526020016122d1602691396001600160a01b038b166000908152600460205260409020549190611a08565b6001600160a01b03808a16600090815260046020526040808220939093559089168152205461186e9082611a42565b6001600160a01b03881660009081526004602052604080822092909255308152205461189a9083611a42565b3060009081526004602090815260409182902092909255518281526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050611a00565b611974846040518060600160405280602681526020016122d1602691396001600160a01b0389166000908152600460205260409020549190611a08565b6001600160a01b0380881660009081526004602052604080822093909355908716815220546119a39085611a42565b6001600160a01b0380871660008181526004602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119f79088815260200190565b60405180910390a35b505050505050565b60008184841115611a2c5760405162461bcd60e51b815260040161081f9190611f05565b506000611a3984866121ac565b95945050505050565b600080611a4f838561215e565b905083811015611aa15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081f565b9392505050565b6010805460ff60a01b1916600160a01b179055611ac481611d1f565b6000611ae060646117ec600b5447611c1990919063ffffffff16565b90506000611afe60646117ec600c5447611c1990919063ffffffff16565b90506000611b1c60646117ec600d5447611c1990919063ffffffff16565b600e546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015611b57573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611b92573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611bcd573d6000803e3d6000fd5b50604080518581524760208201527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506010805460ff60a01b191690555050565b600082600003611c2b575060006107ef565b6000611c3783856121c3565b905082611c4485836121e2565b14611aa15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081f565b6000611aa183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ed7565b6000611aa183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a08565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d5457611d54612204565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b479975066001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df6919061221a565b81600181518110611e0957611e09612204565b60200260200101906001600160a01b031690816001600160a01b031681525050611e54307f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506846113dc565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506169063791ac94790611ea9908590600090869030904290600401612237565b600060405180830381600087803b158015611ec357600080fd5b505af1158015611a00573d6000803e3d6000fd5b60008183611ef85760405162461bcd60e51b815260040161081f9190611f05565b506000611a3984866121e2565b600060208083528351808285015260005b81811015611f3257858101830151858201604001528201611f16565b81811115611f44576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146113d957600080fd5b60008060408385031215611f8257600080fd5b8235611f8d81611f5a565b946020939093013593505050565b600060208284031215611fad57600080fd5b8135611aa181611f5a565b600080600060608486031215611fcd57600080fd5b8335611fd881611f5a565b92506020840135611fe881611f5a565b929592945050506040919091013590565b60006020828403121561200b57600080fd5b5035919050565b80151581146113d957600080fd5b60006020828403121561203257600080fd5b8135611aa181612012565b60008060006060848603121561205257600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561207c57600080fd5b823561208781611f5a565b9150602083013561209781611f5a565b809150509250929050565b600181811c908216806120b657607f821691505b6020821081036120d657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f43616e27742073657420746f2064656164206164647265737321000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561217157612171612148565b500190565b60006020828403121561218857600080fd5b5051919050565b6000602082840312156121a157600080fd5b8151611aa181612012565b6000828210156121be576121be612148565b500390565b60008160001904831182151516156121dd576121dd612148565b500290565b6000826121ff57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561222c57600080fd5b8151611aa181611f5a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122875784516001600160a01b031683529383019391830191600101612262565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205208ec3308c74b6c9c33a71369c09fb4360266187a2e3f09ed96b9ae64f2237764736f6c634300080f0033

Deployed ByteCode Sourcemap

14249:11526:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14474:38;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;14474:38:0;;;;;;;;4216:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17241:158::-;;;;;;;;;;-1:-1:-1;17241:158:0;;;;;:::i;:::-;;:::i;:::-;;;1445:14:1;;1438:22;1420:41;;1408:2;1393:18;17241:158:0;1280:187:1;19920:408:0;;;;;;;;;;-1:-1:-1;19920:408:0;;;;;:::i;:::-;;:::i;:::-;;16697:97;;;;;;;;;;-1:-1:-1;16774:12:0;;16697:97;;;1878:25:1;;;1866:2;1851:18;16697:97:0;1732:177:1;17405:310:0;;;;;;;;;;-1:-1:-1;17405:310:0;;;;;:::i;:::-;;:::i;14745:26::-;;;;;;;;;;;;;;;;4398:83;;;;;;;;;;-1:-1:-1;4464:9:0;;4398:83;;4464:9;;;;2517:36:1;;2505:2;2490:18;4398:83:0;2375:184:1;20517:298:0;;;;;;;;;;-1:-1:-1;20517:298:0;;;;;:::i;:::-;;:::i;17721:207::-;;;;;;;;;;-1:-1:-1;17721:207:0;;;;;:::i;:::-;;:::i;20823:111::-;;;;;;;;;;-1:-1:-1;20823:111:0;;;;;:::i;:::-;;:::i;15142:90::-;;;;;;;;;;-1:-1:-1;15142:90:0;;;;-1:-1:-1;;;;;15142:90:0;;;14778:25;;;;;;;;;;;;;;;;15424:34;;;;;;;;;;-1:-1:-1;15424:34:0;;;;-1:-1:-1;;;15424:34:0;;;;;;16800:116;;;;;;;;;;-1:-1:-1;16800:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;16890:18:0;16866:4;16890:18;;;:9;:18;;;;;;;16800:116;3370:148;;;;;;;;;;;;;:::i;15467:48::-;;;;;;;;;;;;;;;;18372:145;;;;;;;;;;;;;:::i;2727:79::-;;;;;;;;;;-1:-1:-1;2765:7:0;2792:6;-1:-1:-1;;;;;2792:6:0;2727:79;;19173:373;;;;;;;;;;-1:-1:-1;19173:373:0;;;;;:::i;:::-;;:::i;18200:164::-;;;;;;;;;;-1:-1:-1;18200:164:0;;;;;:::i;:::-;;:::i;4305:87::-;;;;;;;;;;;;;:::i;19554:358::-;;;;;;;;;;-1:-1:-1;19554:358:0;;;;;:::i;:::-;;:::i;18525:165::-;;;;;;;;;;-1:-1:-1;18525:165:0;;;;;:::i;:::-;;:::i;17934:258::-;;;;;;;;;;-1:-1:-1;17934:258:0;;;;;:::i;:::-;;:::i;15042:93::-;;;;;;;;;;-1:-1:-1;15042:93:0;;;;-1:-1:-1;;;;;15042:93:0;;;14416:51;;;;;;;;;;;;;;;16922:165;;;;;;;;;;-1:-1:-1;16922:165:0;;;;;:::i;:::-;;:::i;15239:100::-;;;;;;;;;;-1:-1:-1;15239:100:0;;;;-1:-1:-1;;;;;15239:100:0;;;20338:171;;;;;;;;;;-1:-1:-1;20338:171:0;;;;;:::i;:::-;;:::i;18698:344::-;;;;;;;;;;-1:-1:-1;18698:344:0;;;;;:::i;:::-;;:::i;14847:33::-;;;;;;;;;;;;;;;;14887:36;;;;;;;;;;;;;;;;14982:49;;;;;;;;;;;;15028:3;14982:49;;17093:142;;;;;;;;;;-1:-1:-1;17093:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;17199:19:0;;;17175:4;17199:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17093:142;14930:43;;;;;;;;;;;;;;;;20942:110;;;;;;;;;;-1:-1:-1;20942:110:0;;;;;:::i;:::-;;:::i;3673:244::-;;;;;;;;;;-1:-1:-1;3673:244:0;;;;;:::i;:::-;;:::i;25326:444::-;;;;;;;;;;-1:-1:-1;25326:444:0;;;;;:::i;:::-;;:::i;4216:83::-;4253:13;4286:5;4279:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4216:83;:::o;17241:158::-;17313:4;17330:39;2243:10;17353:7;17362:6;17330:8;:39::i;:::-;-1:-1:-1;17387:4:0;17241:158;;;;;:::o;19920:408::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;;;;;;;;;20033:23:::1;::::0;-1:-1:-1;;;;;20033:23:0;;::::1;20023:33:::0;;::::1;::::0;20015:99:::1;;;::::0;-1:-1:-1;;;20015:99:0;;5491:2:1;20015:99:0::1;::::0;::::1;5473:21:1::0;5530:2;5510:18;;;5503:30;5569:34;5549:18;;;5542:62;-1:-1:-1;;;5620:18:1;;;5613:52;5682:19;;20015:99:0::1;5289:418:1::0;20015:99:0::1;-1:-1:-1::0;;;;;19134:19:0;;;:23;20125:82:::1;;;::::0;-1:-1:-1;;;20125:82:0;;5914:2:1;20125:82:0::1;::::0;::::1;5896:21:1::0;5953:2;5933:18;;;5926:30;5992:34;5972:18;;;5965:62;-1:-1:-1;;;6043:18:1;;;6036:49;6102:19;;20125:82:0::1;5712:415:1::0;20125:82:0::1;-1:-1:-1::0;;;;;20226:20:0;::::1;20218:59;;;;-1:-1:-1::0;;;20218:59:0::1;;;;;;;:::i;:::-;20288:23;:32:::0;;-1:-1:-1;;;;;;20288:32:0::1;-1:-1:-1::0;;;;;20288:32:0;;;::::1;::::0;;;::::1;::::0;;19920:408::o;17405:310::-;17500:4;17517:36;17527:6;17535:9;17546:6;17517:9;:36::i;:::-;17564:121;17573:6;2243:10;17595:89;17633:6;17595:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17595:19:0;;;;;;:11;:19;;;;;;;;2243:10;17595:33;;;;;;;;;;:37;:89::i;:::-;17564:8;:121::i;:::-;-1:-1:-1;17703:4:0;17405:310;;;;;:::o;20517:298::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;20646:10:::1;20623:19;:33;;:77;;;;;20683:17;20660:19;:40;;20623:77;20615:141;;;::::0;-1:-1:-1;;;20615:141:0;;6689:2:1;20615:141:0::1;::::0;::::1;6671:21:1::0;6728:2;6708:18;;;6701:30;6767:34;6747:18;;;6740:62;-1:-1:-1;;;6818:18:1;;;6811:49;6877:19;;20615:141:0::1;6487:415:1::0;20615:141:0::1;20767:18;:40:::0;20517:298::o;17721:207::-;2243:10;17798:4;17847:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17847:34:0;;;;;;;;;;17798:4;;17815:83;;17838:7;;17847:50;;17886:10;17847:38;:50::i;20823:111::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20892:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;20892:34:0::1;20922:4;20892:34;::::0;;20823:111::o;3370:148::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;3477:1:::1;3461:6:::0;;3440:40:::1;::::0;-1:-1:-1;;;;;3461:6:0;;::::1;::::0;3440:40:::1;::::0;3477:1;;3440:40:::1;3508:1;3491:19:::0;;-1:-1:-1;;;;;;3491:19:0::1;::::0;;3370:148::o;18372:145::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;18434:14:::1;::::0;-1:-1:-1;;;18434:14:0;::::1;;;18433:15;18425:52;;;::::0;-1:-1:-1;;;18425:52:0;;7109:2:1;18425:52:0::1;::::0;::::1;7091:21:1::0;7148:2;7128:18;;;7121:30;7187:26;7167:18;;;7160:54;7231:18;;18425:52:0::1;6907:348:1::0;18425:52:0::1;18488:14;:21:::0;;-1:-1:-1;;;;18488:21:0::1;-1:-1:-1::0;;;18488:21:0::1;::::0;;18372:145::o;19173:373::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;19279:16:::1;::::0;-1:-1:-1;;;;;19279:16:0;;::::1;19269:26:::0;;::::1;::::0;19261:85:::1;;;::::0;-1:-1:-1;;;19261:85:0;;7462:2:1;19261:85:0::1;::::0;::::1;7444:21:1::0;7501:2;7481:18;;;7474:30;7540:34;7520:18;;;7513:62;-1:-1:-1;;;7591:18:1;;;7584:45;7646:19;;19261:85:0::1;7260:411:1::0;19261:85:0::1;-1:-1:-1::0;;;;;19134:19:0;;;:23;19357:75:::1;;;::::0;-1:-1:-1;;;19357:75:0;;7878:2:1;19357:75:0::1;::::0;::::1;7860:21:1::0;7917:2;7897:18;;;7890:30;7956:34;7936:18;;;7929:62;-1:-1:-1;;;8007:18:1;;;8000:42;8059:19;;19357:75:0::1;7676:408:1::0;19357:75:0::1;-1:-1:-1::0;;;;;19451:20:0;::::1;19443:59;;;;-1:-1:-1::0;;;19443:59:0::1;;;;;;;:::i;:::-;19513:16;:25:::0;;-1:-1:-1;;;;;;19513:25:0::1;-1:-1:-1::0;;;;;19513:25:0;;;::::1;::::0;;;::::1;::::0;;19173:373::o;18200:164::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;18290:2:::1;18280:6;:12;;18272:56;;;::::0;-1:-1:-1;;;18272:56:0;;8291:2:1;18272:56:0::1;::::0;::::1;8273:21:1::0;8330:2;8310:18;;;8303:30;8369:33;8349:18;;;8342:61;8420:18;;18272:56:0::1;8089:355:1::0;18272:56:0::1;18339:6;:15:::0;18200:164::o;4305:87::-;4344:13;4377:7;4370:14;;;;;:::i;19554:358::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;19657:13:::1;::::0;-1:-1:-1;;;;;19657:13:0;;::::1;19647:23:::0;;::::1;::::0;19639:79:::1;;;::::0;-1:-1:-1;;;19639:79:0;;8651:2:1;19639:79:0::1;::::0;::::1;8633:21:1::0;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:42;8832:19;;19639:79:0::1;8449:408:1::0;19639:79:0::1;-1:-1:-1::0;;;;;19134:19:0;;;:23;19729:72:::1;;;::::0;-1:-1:-1;;;19729:72:0;;9064:2:1;19729:72:0::1;::::0;::::1;9046:21:1::0;9103:2;9083:18;;;9076:30;9142:34;9122:18;;;9115:62;-1:-1:-1;;;9193:18:1;;;9186:39;9242:19;;19729:72:0::1;8862:405:1::0;19729:72:0::1;-1:-1:-1::0;;;;;19820:20:0;::::1;19812:59;;;;-1:-1:-1::0;;;19812:59:0::1;;;;;;;:::i;:::-;19882:13;:22:::0;;-1:-1:-1;;;;;;19882:22:0::1;-1:-1:-1::0;;;;;19882:22:0;;;::::1;::::0;;;::::1;::::0;;19554:358::o;18525:165::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;18616:2:::1;18606:6;:12;;18598:57;;;::::0;-1:-1:-1;;;18598:57:0;;9474:2:1;18598:57:0::1;::::0;::::1;9456:21:1::0;;;9493:18;;;9486:30;9552:34;9532:18;;;9525:62;9604:18;;18598:57:0::1;9272:356:1::0;18598:57:0::1;18666:7;:16:::0;18525:165::o;17934:258::-;18016:4;18033:129;2243:10;18056:7;18065:96;18104:15;18065:96;;;;;;;;;;;;;;;;;2243:10;18065:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18065:34:0;;;;;;;;;;;;:38;:96::i;16922:165::-;16998:4;17015:42;2243:10;17039:9;17050:6;17015:9;:42::i;20338:171::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;20415:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;20415:32:0::1;-1:-1:-1::0;;;;20415:32:0;;::::1;;::::0;;20463:38:::1;::::0;::::1;::::0;::::1;::::0;20439:8;1445:14:1;1438:22;1420:41;;1408:2;1393:18;;1280:187;20463:38:0::1;;;;;;;;20338:171:::0;:::o;18698:344::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;15028:3:::1;18879:6:::0;18848:28:::1;18867:9:::0;18848:16;:28:::1;:::i;:::-;:37;;;;:::i;:::-;:60;18840:69;;;::::0;::::1;;18920:23;:42:::0;;;;18973:16:::1;:28:::0;19012:13:::1;:22:::0;18698:344::o;20942:110::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21009:27:0::1;21039:5;21009:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;21009:35:0::1;::::0;;20942:110::o;3673:244::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3762:22:0;::::1;3754:73;;;::::0;-1:-1:-1;;;3754:73:0;;10100:2:1;3754:73:0::1;::::0;::::1;10082:21:1::0;10139:2;10119:18;;;10112:30;10178:34;10158:18;;;10151:62;-1:-1:-1;;;10229:18:1;;;10222:36;10275:19;;3754:73:0::1;9898:402:1::0;3754:73:0::1;3864:6;::::0;;3843:38:::1;::::0;-1:-1:-1;;;;;3843:38:0;;::::1;::::0;3864:6;::::1;::::0;3843:38:::1;::::0;::::1;3892:6;:17:::0;;-1:-1:-1;;;;;;3892:17:0::1;-1:-1:-1::0;;;;;3892:17:0;;;::::1;::::0;;;::::1;::::0;;3673:244::o;25326:444::-;2939:6;;-1:-1:-1;;;;;2939:6:0;2243:10;2939:22;2931:68;;;;-1:-1:-1;;;2931:68:0;;;;;;;:::i;:::-;25422:4:::1;-1:-1:-1::0;;;;;25405:22:0;::::1;::::0;25397:67:::1;;;::::0;-1:-1:-1;;;25397:67:0;;10507:2:1;25397:67:0::1;::::0;::::1;10489:21:1::0;;;10526:18;;;10519:30;10585:34;10565:18;;;10558:62;10637:18;;25397:67:0::1;10305:356:1::0;25397:67:0::1;-1:-1:-1::0;;;;;25479:21:0;::::1;25475:126;;25517:51;::::0;25525:10:::1;::::0;25546:21:::1;25517:51:::0;::::1;;;::::0;::::1;::::0;;;25546:21;25525:10;25517:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25326:444:::0;:::o;25475:126::-:1;25674:36;::::0;-1:-1:-1;;;25674:36:0;;25704:4:::1;25674:36;::::0;::::1;160:51:1::0;25639:5:0;;25611:18:::1;::::0;-1:-1:-1;;;;;25674:21:0;::::1;::::0;::::1;::::0;133:18:1;;25674:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25721:41;::::0;-1:-1:-1;;;25721:41:0;;25742:10:::1;25721:41;::::0;::::1;11029:51:1::0;11096:18;;;11089:34;;;25656:54:0;;-1:-1:-1;;;;;;25721:20:0;::::1;::::0;::::1;::::0;11002:18:1;;25721:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25386:384;;3010:1;25326:444:::0;:::o;24979:339::-;-1:-1:-1;;;;;25071:20:0;;25063:69;;;;-1:-1:-1;;;25063:69:0;;11586:2:1;25063:69:0;;;11568:21:1;11625:2;11605:18;;;11598:30;11664:34;11644:18;;;11637:62;-1:-1:-1;;;11715:18:1;;;11708:34;11759:19;;25063:69:0;11384:400:1;25063:69:0;-1:-1:-1;;;;;25151:21:0;;25143:68;;;;-1:-1:-1;;;25143:68:0;;11991:2:1;25143:68:0;;;11973:21:1;12030:2;12010:18;;;12003:30;12069:34;12049:18;;;12042:62;-1:-1:-1;;;12120:18:1;;;12113:32;12162:19;;25143:68:0;11789:398:1;25143:68:0;-1:-1:-1;;;;;25224:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;25277:33;;1878:25:1;;;25277:33:0;;1851:18:1;25277:33:0;;;;;;;24979:339;;;:::o;21153:2403::-;-1:-1:-1;;;;;21249:20:0;;21241:70;;;;-1:-1:-1;;;21241:70:0;;12394:2:1;21241:70:0;;;12376:21:1;12433:2;12413:18;;;12406:30;12472:34;12452:18;;;12445:62;-1:-1:-1;;;12523:18:1;;;12516:35;12568:19;;21241:70:0;12192:401:1;21241:70:0;-1:-1:-1;;;;;21330:23:0;;21322:71;;;;-1:-1:-1;;;21322:71:0;;12800:2:1;21322:71:0;;;12782:21:1;12839:2;12819:18;;;12812:30;12878:34;12858:18;;;12851:62;-1:-1:-1;;;12929:18:1;;;12922:33;12972:19;;21322:71:0;12598:399:1;21322:71:0;21739:4;21690:28;16890:18;;;:9;:18;;;;;;21811;;21787:42;;;;;;;21858:53;;-1:-1:-1;21895:16:0;;-1:-1:-1;;;21895:16:0;;;;21894:17;21858:53;:93;;;;;21938:13;-1:-1:-1;;;;;21928:23:0;:6;-1:-1:-1;;;;;21928:23:0;;;21858:93;:131;;;;-1:-1:-1;21968:21:0;;-1:-1:-1;;;21968:21:0;;;;21858:131;21840:309;;;22039:18;;22016:41;;22101:36;22116:20;22101:14;:36::i;:::-;-1:-1:-1;;;;;22341:26:0;;22222:12;22341:26;;;:18;:26;;;;;;22237:4;;22341:26;;;:59;;-1:-1:-1;;;;;;22371:29:0;;;;;;:18;:29;;;;;;;;22341:59;22338:188;;;-1:-1:-1;22426:5:0;22338:188;;;22472:14;;-1:-1:-1;;;22472:14:0;;;;22464:50;;;;-1:-1:-1;;;22464:50:0;;13204:2:1;22464:50:0;;;13186:21:1;13243:2;13223:18;;;13216:30;13282:25;13262:18;;;13255:53;13325:18;;22464:50:0;13002:347:1;22464:50:0;22551:13;-1:-1:-1;;;;;22541:23:0;:6;-1:-1:-1;;;;;22541:23:0;;;:53;;;;;22581:13;-1:-1:-1;;;;;22568:26:0;:9;-1:-1:-1;;;;;22568:26:0;;;22541:53;22538:85;;;-1:-1:-1;22616:5:0;22538:85;22638:7;22635:912;;;22684:13;-1:-1:-1;;;;;22674:23:0;:6;-1:-1:-1;;;;;22674:23:0;;22671:94;;22714:6;;22699:12;:21;22671:94;;;22756:7;;22741:12;:22;22671:94;22779:17;22799:33;22828:3;22799:24;22810:12;;22799:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;22779:53;-1:-1:-1;22847:17:0;22867:21;:6;22779:53;22867:10;:21::i;:::-;22847:41;;22923:71;22945:6;22923:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22923:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;22903:17:0;;;;;;;:9;:17;;;;;;:91;;;;23032:20;;;;;;;:35;;23057:9;23032:24;:35::i;:::-;-1:-1:-1;;;;;23009:20:0;;;;;;:9;:20;;;;;;:58;;;;23127:4;23109:24;;;;:39;;23138:9;23109:28;:39::i;:::-;23100:4;23082:24;;;;:9;:24;;;;;;;;;:66;;;;23168:38;1878:25:1;;;-1:-1:-1;;;;;23168:38:0;;;;;;;;;;1851:18:1;23168:38:0;;;;;;;23226:42;;1878:25:1;;;23251:4:0;;-1:-1:-1;;;;;23226:42:0;;;;;1866:2:1;1851:18;23226:42:0;;;;;;;22656:624;;22635:912;;;23339:71;23361:6;23339:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23339:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;23319:17:0;;;;;;;:9;:17;;;;;;:91;;;;23448:20;;;;;;;:32;;23473:6;23448:24;:32::i;:::-;-1:-1:-1;;;;;23425:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23500:35;;;;;;;;;;23528:6;1878:25:1;;1866:2;1851:18;;1732:177;23500:35:0;;;;;;;;22635:912;21228:2328;;;21153:2403;;;:::o;1255:180::-;1335:4;1368:12;1360:6;;;;1352:29;;;;-1:-1:-1;;;1352:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1392:6:0;1401:5;1405:1;1401;:5;:::i;:::-;1392:14;1255:180;-1:-1:-1;;;;;1255:180:0:o;947:169::-;999:4;;1025:5;1029:1;1025;:5;:::i;:::-;1016:14;;1054:1;1049;:6;;1041:46;;;;-1:-1:-1;;;1041:46:0;;13686:2:1;1041:46:0;;;13668:21:1;13725:2;13705:18;;;13698:30;13764:29;13744:18;;;13737:57;13811:18;;1041:46:0;13484:351:1;1041:46:0;1107:1;947:169;-1:-1:-1;;;947:169:0:o;23564:810::-;15777:16;:23;;-1:-1:-1;;;;15777:23:0;-1:-1:-1;;;15777:23:0;;;23683:38:::1;23700:20:::0;23683:16:::1;:38::i;:::-;23800:18;23821:65;15028:3;23821:40;23847:13;;23821:21;:25;;:40;;;;:::i;:65::-;23800:86;;23897:21;23921:68;15028:3;23921:43;23947:16;;23921:21;:25;;:43;;;;:::i;:68::-;23897:92;;24000:24;24027:75;15028:3;24027:50;24053:23;;24027:21;:25;;:50;;;;:::i;:75::-;24121:16;::::0;24113:46:::1;::::0;24000:102;;-1:-1:-1;;;;;;24121:16:0::1;::::0;24113:46;::::1;;;::::0;24148:10;;24121:16:::1;24113:46:::0;24121:16;24113:46;24148:10;24121:16;24113:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24178:16:0::1;::::0;24170:49:::1;::::0;-1:-1:-1;;;;;24178:16:0;;::::1;::::0;24170:49;::::1;;;::::0;24205:13;;24178:16:::1;24170:49:::0;24178:16;24170:49;24205:13;24178:16;24170:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24238:23:0::1;::::0;24230:59:::1;::::0;-1:-1:-1;;;;;24238:23:0;;::::1;::::0;24230:59;::::1;;;::::0;24272:16;;24238:23:::1;24230:59:::0;24238:23;24230:59;24272:16;24238:23;24230:59;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24307:59:0::1;::::0;;14014:25:1;;;24344:21:0::1;14070:2:1::0;14055:18;;14048:34;24307:59:0::1;::::0;13987:18:1;24307:59:0::1;;;;;;;-1:-1:-1::0;;15823:16:0;:24;;-1:-1:-1;;;;15823:24:0;;;-1:-1:-1;;23564:810:0:o;1441:238::-;1493:4;1514:1;1519;1514:6;1510:47;;-1:-1:-1;1544:1:0;1537:8;;1510:47;1569:6;1578:5;1582:1;1578;:5;:::i;:::-;1569:14;-1:-1:-1;1611:1:0;1602:5;1606:1;1569:14;1602:5;:::i;:::-;:10;1594:56;;;;-1:-1:-1;;;1594:56:0;;14690:2:1;1594:56:0;;;14672:21:1;14729:2;14709:18;;;14702:30;14768:34;14748:18;;;14741:62;-1:-1:-1;;;14819:18:1;;;14812:31;14860:19;;1594:56:0;14488:397:1;1685:123:0;1737:4;1761:39;1765:1;1768;1761:39;;;;;;;;;;;;;;;;;:3;:39::i;1122:127::-;1174:4;1198:43;1202:1;1205;1198:43;;;;;;;;;;;;;;;;;:3;:43::i;24382:589::-;24532:16;;;24546:1;24532:16;;;;;;;;24508:21;;24532:16;;;;;;;;;;-1:-1:-1;24532:16:0;24508:40;;24577:4;24559;24564:1;24559:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24559:23:0;;;-1:-1:-1;;;;;24559:23:0;;;;;24603:15;-1:-1:-1;;;;;24603:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24593:4;24598:1;24593:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24593:32:0;;;-1:-1:-1;;;;;24593:32:0;;;;;24638:62;24655:4;24670:15;24688:11;24638:8;:62::i;:::-;24739:224;;-1:-1:-1;;;24739:224:0;;-1:-1:-1;;;;;24739:15:0;:66;;;;:224;;24820:11;;24846:1;;24890:4;;24917;;24937:15;;24739:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:246;1894:4;1993:12;1986:5;1978:28;;;;-1:-1:-1;;;1978:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2017:6:0;2026:5;2030:1;2026;:5;:::i;222:597:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;824:131::-;-1:-1:-1;;;;;899:31:1;;889:42;;879:70;;945:1;942;935:12;960:315;1028:6;1036;1089:2;1077:9;1068:7;1064:23;1060:32;1057:52;;;1105:1;1102;1095:12;1057:52;1144:9;1131:23;1163:31;1188:5;1163:31;:::i;:::-;1213:5;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;960:315:1:o;1472:255::-;1539:6;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;1914:456::-;1991:6;1999;2007;2060:2;2048:9;2039:7;2035:23;2031:32;2028:52;;;2076:1;2073;2066:12;2028:52;2115:9;2102:23;2134:31;2159:5;2134:31;:::i;:::-;2184:5;-1:-1:-1;2241:2:1;2226:18;;2213:32;2254:33;2213:32;2254:33;:::i;:::-;1914:456;;2306:7;;-1:-1:-1;;;2360:2:1;2345:18;;;;2332:32;;1914:456::o;2564:180::-;2623:6;2676:2;2664:9;2655:7;2651:23;2647:32;2644:52;;;2692:1;2689;2682:12;2644:52;-1:-1:-1;2715:23:1;;2564:180;-1:-1:-1;2564:180:1:o;3460:118::-;3546:5;3539:13;3532:21;3525:5;3522:32;3512:60;;3568:1;3565;3558:12;3583:241;3639:6;3692:2;3680:9;3671:7;3667:23;3663:32;3660:52;;;3708:1;3705;3698:12;3660:52;3747:9;3734:23;3766:28;3788:5;3766:28;:::i;3829:316::-;3906:6;3914;3922;3975:2;3963:9;3954:7;3950:23;3946:32;3943:52;;;3991:1;3988;3981:12;3943:52;-1:-1:-1;;4014:23:1;;;4084:2;4069:18;;4056:32;;-1:-1:-1;4135:2:1;4120:18;;;4107:32;;3829:316;-1:-1:-1;3829:316:1:o;4150:388::-;4218:6;4226;4279:2;4267:9;4258:7;4254:23;4250:32;4247:52;;;4295:1;4292;4285:12;4247:52;4334:9;4321:23;4353:31;4378:5;4353:31;:::i;:::-;4403:5;-1:-1:-1;4460:2:1;4445:18;;4432:32;4473:33;4432:32;4473:33;:::i;:::-;4525:7;4515:17;;;4150:388;;;;;:::o;4543:380::-;4622:1;4618:12;;;;4665;;;4686:61;;4740:4;4732:6;4728:17;4718:27;;4686:61;4793:2;4785:6;4782:14;4762:18;4759:38;4756:161;;4839:10;4834:3;4830:20;4827:1;4820:31;4874:4;4871:1;4864:15;4902:4;4899:1;4892:15;4756:161;;4543:380;;;:::o;4928:356::-;5130:2;5112:21;;;5149:18;;;5142:30;5208:34;5203:2;5188:18;;5181:62;5275:2;5260:18;;4928:356::o;6132:350::-;6334:2;6316:21;;;6373:2;6353:18;;;6346:30;6412:28;6407:2;6392:18;;6385:56;6473:2;6458:18;;6132:350::o;9633:127::-;9694:10;9689:3;9685:20;9682:1;9675:31;9725:4;9722:1;9715:15;9749:4;9746:1;9739:15;9765:128;9805:3;9836:1;9832:6;9829:1;9826:13;9823:39;;;9842:18;;:::i;:::-;-1:-1:-1;9878:9:1;;9765:128::o;10666:184::-;10736:6;10789:2;10777:9;10768:7;10764:23;10760:32;10757:52;;;10805:1;10802;10795:12;10757:52;-1:-1:-1;10828:16:1;;10666:184;-1:-1:-1;10666:184:1:o;11134:245::-;11201:6;11254:2;11242:9;11233:7;11229:23;11225:32;11222:52;;;11270:1;11267;11260:12;11222:52;11302:9;11296:16;11321:28;11343:5;11321:28;:::i;13354:125::-;13394:4;13422:1;13419;13416:8;13413:34;;;13427:18;;:::i;:::-;-1:-1:-1;13464:9:1;;13354:125::o;14093:168::-;14133:7;14199:1;14195;14191:6;14187:14;14184:1;14181:21;14176:1;14169:9;14162:17;14158:45;14155:71;;;14206:18;;:::i;:::-;-1:-1:-1;14246:9:1;;14093:168::o;14266:217::-;14306:1;14332;14322:132;;14376:10;14371:3;14367:20;14364:1;14357:31;14411:4;14408:1;14401:15;14439:4;14436:1;14429:15;14322:132;-1:-1:-1;14468:9:1;;14266:217::o;15022:127::-;15083:10;15078:3;15074:20;15071:1;15064:31;15114:4;15111:1;15104:15;15138:4;15135:1;15128:15;15154:251;15224:6;15277:2;15265:9;15256:7;15252:23;15248:32;15245:52;;;15293:1;15290;15283:12;15245:52;15325:9;15319:16;15344:31;15369:5;15344:31;:::i;15410:980::-;15672:4;15720:3;15709:9;15705:19;15751:6;15740:9;15733:25;15777:2;15815:6;15810:2;15799:9;15795:18;15788:34;15858:3;15853:2;15842:9;15838:18;15831:31;15882:6;15917;15911:13;15948:6;15940;15933:22;15986:3;15975:9;15971:19;15964:26;;16025:2;16017:6;16013:15;15999:29;;16046:1;16056:195;16070:6;16067:1;16064:13;16056:195;;;16135:13;;-1:-1:-1;;;;;16131:39:1;16119:52;;16226:15;;;;16191:12;;;;16167:1;16085:9;16056:195;;;-1:-1:-1;;;;;;;16307:32:1;;;;16302:2;16287:18;;16280:60;-1:-1:-1;;;16371:3:1;16356:19;16349:35;16268:3;15410:980;-1:-1:-1;;;15410:980:1:o

Metadata Hash

ipfs://5208ec3308c74b6c9c33a71369c09fb4360266187a2e3f09ed96b9ae64f22377
Loading