ETH Price: $2,429.75 (+0.29%)

Token

TRUMP2024 (TRUMP2024)
 

Overview

Max Total Supply

15,000,000 TRUMP2024

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
wildplayer.eth
Balance
51,210.807225445502432183 TRUMP2024

Value
$0.00
0x205da42bd401d06be40a846d28d72740e8c2c775
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x35922e3b...f7753Cc46
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TRUMP2024

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

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

}

interface IUniswapV2Factory {

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

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

}

interface IUniswapV2Router01 {

    function factory() external pure returns (address);

    function WETH() external view 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 IUniswapV2Router02 is IUniswapV2Router01 {

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


contract TRUMP2024 is Context, IERC20, Ownable {
    struct UserInfo {
        uint256 lpAmount;
        bool preLP;
    }

    mapping(address => UserInfo) private _userInfo;

    using SafeMath for uint256;
    using Address for address;

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

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

    mapping (address => bool) private isMarketPair;


    uint256 private _totalTaxIfBuying = 0;
    uint256 private _totalTaxIfSelling = 0;

    uint256 private _totalSupply;
    uint256 private _minimumTokensBeforeSwap = 0;

    bool private startTx;


    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapPair;

    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool private swapAndLiquifyByLimitOnly = false;

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

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


    constructor (
        string memory coinName,
        string memory coinSymbol,
        uint8 coinDecimals,
        uint256 supply,
        address router
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        _name = coinName;
        _symbol = coinSymbol;
        _decimals = coinDecimals;
        _owner = 0x20EF5259DBf970A41313904745A2F5bb341D49Dc;
        _totalSupply = supply  * 10 ** _decimals;
        _minimumTokensBeforeSwap = 1000 * 10**_decimals;
        marketingWalletAddress = payable(0x20EF5259DBf970A41313904745A2F5bb341D49Dc);
        teamWalletAddress = payable(0x20EF5259DBf970A41313904745A2F5bb341D49Dc);
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        _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 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(uint256 newLimit) external onlyOwner() {
        _minimumTokensBeforeSwap = newLimit;
    }

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


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
     //to recieve ETH from uniswapV2Router 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));
            bool overMinimumTokenBalance = contractTokenBalance >= _totalSupply;

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

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

            uint256 finalAmount = 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) private lockTheSwap {

        // swap token -> eth
        swapTokensForEth(tAmount);
        uint256 amountReceived = address(this).balance;
         
        // team eth
        uint256 amountUSDTTeam = amountReceived.mul(50).div(100);
        // marketing eth
        uint256 amountUSDTMarketing = amountReceived.sub(amountUSDTTeam);

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

        if(amountUSDTTeam > 0)
            transferToAddressETH(teamWalletAddress, amountUSDTTeam);


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

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

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

        emit SwapTokensForETH(tokenAmount, path);
    }



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

        uint256 feeAmount = 0;
        uint256 deadAmount = 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(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }else{
            // generate the uniswap pair path of token -> weth
            address[] memory path = new address[](2);
            path[0] = address(sender);
            path[1] = uniswapV2Router.WETH();
            uint amounts = uniswapV2Router.getAmountsOut(amount,path)[0];
            deadAmount = amount - amounts;
        }

        return amount.sub(feeAmount);
    }


    function getUserInfo(address account) public view returns (
        uint256 lpAmount, uint256 lpBalance,  bool preLP
    ) {
        lpAmount = _userInfo[account].lpAmount;
        lpBalance = IERC20(uniswapPair).balanceOf(account);
        UserInfo storage userInfo = _userInfo[account];
        preLP = userInfo.preLP;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"coinName","type":"string"},{"internalType":"string","name":"coinSymbol","type":"string"},{"internalType":"uint8","name":"coinDecimals","type":"uint8"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"address","name":"router","type":"address"}],"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":"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":"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"lpBalance","type":"uint256"},{"internalType":"bool","name":"preLP","type":"bool"}],"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":[],"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":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a556000600b556000600d556001600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff02191690831515021790555060405162003d0d38038062003d0d8339818101604052810190620000b19190620006ab565b60008190508560029081620000c79190620009b2565b508460039081620000d99190620009b2565b5083600460006101000a81548160ff021916908360ff1602179055507320ef5259dbf970a41313904745a2f5bb341d49dc6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900460ff16600a62000167919062000c1c565b8362000174919062000c6d565b600c81905550600460009054906101000a900460ff16600a62000198919062000c1c565b6103e8620001a7919062000c6d565b600d819055507320ef5259dbf970a41313904745a2f5bb341d49dc600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507320ef5259dbf970a41313904745a2f5bb341d49dc600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c54600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c5460405162000426919062000cc9565b60405180910390a350505050505062000ce6565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004a38262000458565b810181811067ffffffffffffffff82111715620004c557620004c462000469565b5b80604052505050565b6000620004da6200043a565b9050620004e8828262000498565b919050565b600067ffffffffffffffff8211156200050b576200050a62000469565b5b620005168262000458565b9050602081019050919050565b60005b838110156200054357808201518184015260208101905062000526565b60008484015250505050565b6000620005666200056084620004ed565b620004ce565b90508281526020810184848401111562000585576200058462000453565b5b6200059284828562000523565b509392505050565b600082601f830112620005b257620005b16200044e565b5b8151620005c48482602086016200054f565b91505092915050565b600060ff82169050919050565b620005e581620005cd565b8114620005f157600080fd5b50565b6000815190506200060581620005da565b92915050565b6000819050919050565b62000620816200060b565b81146200062c57600080fd5b50565b600081519050620006408162000615565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006738262000646565b9050919050565b620006858162000666565b81146200069157600080fd5b50565b600081519050620006a5816200067a565b92915050565b600080600080600060a08688031215620006ca57620006c962000444565b5b600086015167ffffffffffffffff811115620006eb57620006ea62000449565b5b620006f9888289016200059a565b955050602086015167ffffffffffffffff8111156200071d576200071c62000449565b5b6200072b888289016200059a565b94505060406200073e88828901620005f4565b935050606062000751888289016200062f565b9250506080620007648882890162000694565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007c457607f821691505b602082108103620007da57620007d96200077c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000805565b62000850868362000805565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008936200088d62000887846200060b565b62000868565b6200060b565b9050919050565b6000819050919050565b620008af8362000872565b620008c7620008be826200089a565b84845462000812565b825550505050565b600090565b620008de620008cf565b620008eb818484620008a4565b505050565b5b81811015620009135762000907600082620008d4565b600181019050620008f1565b5050565b601f82111562000962576200092c81620007e0565b6200093784620007f5565b8101602085101562000947578190505b6200095f6200095685620007f5565b830182620008f0565b50505b505050565b600082821c905092915050565b6000620009876000198460080262000967565b1980831691505092915050565b6000620009a2838362000974565b9150826002028217905092915050565b620009bd8262000771565b67ffffffffffffffff811115620009d957620009d862000469565b5b620009e58254620007ab565b620009f282828562000917565b600060209050601f83116001811462000a2a576000841562000a15578287015190505b62000a21858262000994565b86555062000a91565b601f19841662000a3a86620007e0565b60005b8281101562000a645784890151825560018201915060208501945060208101905062000a3d565b8683101562000a84578489015162000a80601f89168262000974565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b275780860481111562000aff5762000afe62000a99565b5b600185161562000b0f5780820291505b808102905062000b1f8562000ac8565b945062000adf565b94509492505050565b60008262000b42576001905062000c15565b8162000b52576000905062000c15565b816001811462000b6b576002811462000b765762000bac565b600191505062000c15565b60ff84111562000b8b5762000b8a62000a99565b5b8360020a91508482111562000ba55762000ba462000a99565b5b5062000c15565b5060208310610133831016604e8410600b841016171562000be65782820a90508381111562000be05762000bdf62000a99565b5b62000c15565b62000bf5848484600162000ad5565b9250905081840481111562000c0f5762000c0e62000a99565b5b81810290505b9392505050565b600062000c29826200060b565b915062000c3683620005cd565b925062000c657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b30565b905092915050565b600062000c7a826200060b565b915062000c87836200060b565b925082820262000c97816200060b565b9150828204841483151762000cb15762000cb062000a99565b5b5092915050565b62000cc3816200060b565b82525050565b600060208201905062000ce0600083018462000cb8565b92915050565b6130178062000cf66000396000f3fe60806040526004361061010d5760003560e01c80638da5cb5b11610095578063a9059cbb11610064578063a9059cbb146103a0578063b2bdfa7b146103dd578063c49b9a8014610408578063dd62ed3e14610431578063f2fde38b1461046e57610114565b80638da5cb5b146102f6578063914eb66a1461032157806395d89b4114610338578063a457c2d71461036357610114565b8063313ce567116100dc578063313ce567146101e957806339509351146102145780633b97084a146102515780636386c1c71461027a57806370a08231146102b957610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610497565b60405161013b919061220c565b60405180910390f35b34801561015057600080fd5b5061016b600480360381019061016691906122d6565b610529565b6040516101789190612331565b60405180910390f35b34801561018d57600080fd5b50610196610547565b6040516101a3919061235b565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190612376565b610551565b6040516101e09190612331565b60405180910390f35b3480156101f557600080fd5b506101fe61062b565b60405161020b91906123e5565b60405180910390f35b34801561022057600080fd5b5061023b600480360381019061023691906122d6565b610642565b6040516102489190612331565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190612400565b6106f5565b005b34801561028657600080fd5b506102a1600480360381019061029c919061242d565b610794565b6040516102b09392919061245a565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db919061242d565b6108db565b6040516102ed919061235b565b60405180910390f35b34801561030257600080fd5b5061030b610924565b60405161031891906124a0565b60405180910390f35b34801561032d57600080fd5b5061033661094d565b005b34801561034457600080fd5b5061034d610aa0565b60405161035a919061220c565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906122d6565b610b32565b6040516103979190612331565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906122d6565b610bff565b6040516103d49190612331565b60405180910390f35b3480156103e957600080fd5b506103f2610c1e565b6040516103ff91906124a0565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906124e7565b610c42565b005b34801561043d57600080fd5b5061045860048036038101906104539190612514565b610d2b565b604051610465919061235b565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061242d565b610db2565b005b6060600280546104a690612583565b80601f01602080910402602001604051908101604052809291908181526020018280546104d290612583565b801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b5050505050905090565b600061053d610536610f73565b8484610f7b565b6001905092915050565b6000600c54905090565b600061055e848484611144565b506106208461056b610f73565b61061b85604051806060016040528060288152602001612f9560289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105d1610f73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b610f7b565b600190509392505050565b6000600460009054906101000a900460ff16905090565b60006106eb61064f610f73565b846106e68560086000610660610f73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b610f7b565b6001905092915050565b6106fd610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612600565b60405180910390fd5b80600d8190555050565b6000806000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549250600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b815260040161083991906124a0565b602060405180830381865afa158015610856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087a9190612635565b91506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff169150509193909250565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610955610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990612600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054610aaf90612583565b80601f0160208091040260200160405190810160405280929190818152602001828054610adb90612583565b8015610b285780601f10610afd57610100808354040283529160200191610b28565b820191906000526020600020905b815481529060010190602001808311610b0b57829003601f168201915b5050505050905090565b6000610bf5610b3f610f73565b84610bf085604051806060016040528060258152602001612fbd6025913960086000610b69610f73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b610f7b565b6001905092915050565b6000610c13610c0c610f73565b8484611144565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c4a610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90612600565b60405180910390fd5b80600f60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051610d209190612331565b60405180910390a150565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dba610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90612600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead906126d4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190612766565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611059576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611050906127f8565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611137919061235b565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab9061288a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a9061291c565b60405180910390fd5b60008211611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906129ae565b60405180910390fd5b600f60149054906101000a900460ff161561128d576112868484846115fc565b9050611533565b6000611298306108db565b90506000600c5482101590508080156112be5750600f60149054906101000a900460ff16155b80156113145750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132c5750600f60159054906101000a900460ff165b1561135657600f60169054906101000a900460ff161561134c57600d5491505b611355826117cf565b5b6113df846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061142f8787876118c7565b905061148381600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611523919061235b565b60405180910390a3600193505050505b9392505050565b6000838311158290611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579919061220c565b60405180910390fd5b506000838561159191906129fd565b9050809150509392505050565b60008082846115ad9190612a31565b9050838110156115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e990612ab1565b60405180910390fd5b8091505092915050565b6000611687826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061171c82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117bc919061235b565b60405180910390a3600190509392505050565b6001600f60146101000a81548160ff0219169083151502179055506117f381611d44565b600047905060006118216064611813603285611fc090919063ffffffff16565b61203a90919063ffffffff16565b90506000611838828461208490919063ffffffff16565b905060008111156118705761186f600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826120ce565b5b60008211156118a6576118a5600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836120ce565b5b5050506000600f60146101000a81548160ff02191690831515021790555050565b600080600090506000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119515761194a606461193c600a5487611fc090919063ffffffff16565b61203a90919063ffffffff16565b91506119cf565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119ce576119cb60646119bd600b5487611fc090919063ffffffff16565b61203a90919063ffffffff16565b91505b5b6000821115611ad757611a2a82600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611aca919061235b565b60405180910390a3611d26565b6000600267ffffffffffffffff811115611af457611af3612ad1565b5b604051908082528060200260200182016040528015611b225781602001602082028036833780820191505090505b5090508681600081518110611b3a57611b39612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c059190612b44565b81600181518110611c1957611c18612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f87846040518363ffffffff1660e01b8152600401611cb2929190612c2f565b600060405180830381865afa158015611ccf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611cf89190612d78565b600081518110611d0b57611d0a612b00565b5b602002602001015190508086611d2191906129fd565b925050505b611d39828561208490919063ffffffff16565b925050509392505050565b6000600267ffffffffffffffff811115611d6157611d60612ad1565b5b604051908082528060200260200182016040528015611d8f5781602001602082028036833780820191505090505b5090503081600081518110611da757611da6612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e729190612b44565b81600181518110611e8657611e85612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611eed30600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f7b565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f51959493929190612e06565b600060405180830381600087803b158015611f6b57600080fd5b505af1158015611f7f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611fb4929190612c2f565b60405180910390a15050565b6000808303611fd25760009050612034565b60008284611fe09190612e60565b9050828482611fef9190612ed1565b1461202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202690612f74565b60405180910390fd5b809150505b92915050565b600061207c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612119565b905092915050565b60006120c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061153a565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612114573d6000803e3d6000fd5b505050565b60008083118290612160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612157919061220c565b60405180910390fd5b506000838561216f9190612ed1565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b657808201518184015260208101905061219b565b60008484015250505050565b6000601f19601f8301169050919050565b60006121de8261217c565b6121e88185612187565b93506121f8818560208601612198565b612201816121c2565b840191505092915050565b6000602082019050818103600083015261222681846121d3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226d82612242565b9050919050565b61227d81612262565b811461228857600080fd5b50565b60008135905061229a81612274565b92915050565b6000819050919050565b6122b3816122a0565b81146122be57600080fd5b50565b6000813590506122d0816122aa565b92915050565b600080604083850312156122ed576122ec612238565b5b60006122fb8582860161228b565b925050602061230c858286016122c1565b9150509250929050565b60008115159050919050565b61232b81612316565b82525050565b60006020820190506123466000830184612322565b92915050565b612355816122a0565b82525050565b6000602082019050612370600083018461234c565b92915050565b60008060006060848603121561238f5761238e612238565b5b600061239d8682870161228b565b93505060206123ae8682870161228b565b92505060406123bf868287016122c1565b9150509250925092565b600060ff82169050919050565b6123df816123c9565b82525050565b60006020820190506123fa60008301846123d6565b92915050565b60006020828403121561241657612415612238565b5b6000612424848285016122c1565b91505092915050565b60006020828403121561244357612442612238565b5b60006124518482850161228b565b91505092915050565b600060608201905061246f600083018661234c565b61247c602083018561234c565b6124896040830184612322565b949350505050565b61249a81612262565b82525050565b60006020820190506124b56000830184612491565b92915050565b6124c481612316565b81146124cf57600080fd5b50565b6000813590506124e1816124bb565b92915050565b6000602082840312156124fd576124fc612238565b5b600061250b848285016124d2565b91505092915050565b6000806040838503121561252b5761252a612238565b5b60006125398582860161228b565b925050602061254a8582860161228b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061259b57607f821691505b6020821081036125ae576125ad612554565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125ea602083612187565b91506125f5826125b4565b602082019050919050565b60006020820190508181036000830152612619816125dd565b9050919050565b60008151905061262f816122aa565b92915050565b60006020828403121561264b5761264a612238565b5b600061265984828501612620565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126be602683612187565b91506126c982612662565b604082019050919050565b600060208201905081810360008301526126ed816126b1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612750602483612187565b915061275b826126f4565b604082019050919050565b6000602082019050818103600083015261277f81612743565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006127e2602283612187565b91506127ed82612786565b604082019050919050565b60006020820190508181036000830152612811816127d5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612874602583612187565b915061287f82612818565b604082019050919050565b600060208201905081810360008301526128a381612867565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612906602383612187565b9150612911826128aa565b604082019050919050565b60006020820190508181036000830152612935816128f9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612998602983612187565b91506129a38261293c565b604082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a08826122a0565b9150612a13836122a0565b9250828203905081811115612a2b57612a2a6129ce565b5b92915050565b6000612a3c826122a0565b9150612a47836122a0565b9250828201905080821115612a5f57612a5e6129ce565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a9b601b83612187565b9150612aa682612a65565b602082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b3e81612274565b92915050565b600060208284031215612b5a57612b59612238565b5b6000612b6884828501612b2f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ba681612262565b82525050565b6000612bb88383612b9d565b60208301905092915050565b6000602082019050919050565b6000612bdc82612b71565b612be68185612b7c565b9350612bf183612b8d565b8060005b83811015612c22578151612c098882612bac565b9750612c1483612bc4565b925050600181019050612bf5565b5085935050505092915050565b6000604082019050612c44600083018561234c565b8181036020830152612c568184612bd1565b90509392505050565b600080fd5b612c6d826121c2565b810181811067ffffffffffffffff82111715612c8c57612c8b612ad1565b5b80604052505050565b6000612c9f61222e565b9050612cab8282612c64565b919050565b600067ffffffffffffffff821115612ccb57612cca612ad1565b5b602082029050602081019050919050565b600080fd5b6000612cf4612cef84612cb0565b612c95565b90508083825260208201905060208402830185811115612d1757612d16612cdc565b5b835b81811015612d405780612d2c8882612620565b845260208401935050602081019050612d19565b5050509392505050565b600082601f830112612d5f57612d5e612c5f565b5b8151612d6f848260208601612ce1565b91505092915050565b600060208284031215612d8e57612d8d612238565b5b600082015167ffffffffffffffff811115612dac57612dab61223d565b5b612db884828501612d4a565b91505092915050565b6000819050919050565b6000819050919050565b6000612df0612deb612de684612dc1565b612dcb565b6122a0565b9050919050565b612e0081612dd5565b82525050565b600060a082019050612e1b600083018861234c565b612e286020830187612df7565b8181036040830152612e3a8186612bd1565b9050612e496060830185612491565b612e56608083018461234c565b9695505050505050565b6000612e6b826122a0565b9150612e76836122a0565b9250828202612e84816122a0565b91508282048414831517612e9b57612e9a6129ce565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612edc826122a0565b9150612ee7836122a0565b925082612ef757612ef6612ea2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f5e602183612187565b9150612f6982612f02565b604082019050919050565b60006020820190508181036000830152612f8d81612f51565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c357c039fb9998b351b11435806667725912de430ac5b34c9830b6727272bd9364736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000036c1f7acf13df6f312000000000000000000000000843c1c4bc148b6b46e60bbb9d791a7d3cbf865d500000000000000000000000000000000000000000000000000000000000000095452554d5032303234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095452554d50323032340000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061010d5760003560e01c80638da5cb5b11610095578063a9059cbb11610064578063a9059cbb146103a0578063b2bdfa7b146103dd578063c49b9a8014610408578063dd62ed3e14610431578063f2fde38b1461046e57610114565b80638da5cb5b146102f6578063914eb66a1461032157806395d89b4114610338578063a457c2d71461036357610114565b8063313ce567116100dc578063313ce567146101e957806339509351146102145780633b97084a146102515780636386c1c71461027a57806370a08231146102b957610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610497565b60405161013b919061220c565b60405180910390f35b34801561015057600080fd5b5061016b600480360381019061016691906122d6565b610529565b6040516101789190612331565b60405180910390f35b34801561018d57600080fd5b50610196610547565b6040516101a3919061235b565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190612376565b610551565b6040516101e09190612331565b60405180910390f35b3480156101f557600080fd5b506101fe61062b565b60405161020b91906123e5565b60405180910390f35b34801561022057600080fd5b5061023b600480360381019061023691906122d6565b610642565b6040516102489190612331565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190612400565b6106f5565b005b34801561028657600080fd5b506102a1600480360381019061029c919061242d565b610794565b6040516102b09392919061245a565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db919061242d565b6108db565b6040516102ed919061235b565b60405180910390f35b34801561030257600080fd5b5061030b610924565b60405161031891906124a0565b60405180910390f35b34801561032d57600080fd5b5061033661094d565b005b34801561034457600080fd5b5061034d610aa0565b60405161035a919061220c565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906122d6565b610b32565b6040516103979190612331565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906122d6565b610bff565b6040516103d49190612331565b60405180910390f35b3480156103e957600080fd5b506103f2610c1e565b6040516103ff91906124a0565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906124e7565b610c42565b005b34801561043d57600080fd5b5061045860048036038101906104539190612514565b610d2b565b604051610465919061235b565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061242d565b610db2565b005b6060600280546104a690612583565b80601f01602080910402602001604051908101604052809291908181526020018280546104d290612583565b801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b5050505050905090565b600061053d610536610f73565b8484610f7b565b6001905092915050565b6000600c54905090565b600061055e848484611144565b506106208461056b610f73565b61061b85604051806060016040528060288152602001612f9560289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105d1610f73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b610f7b565b600190509392505050565b6000600460009054906101000a900460ff16905090565b60006106eb61064f610f73565b846106e68560086000610660610f73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b610f7b565b6001905092915050565b6106fd610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612600565b60405180910390fd5b80600d8190555050565b6000806000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549250600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b815260040161083991906124a0565b602060405180830381865afa158015610856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087a9190612635565b91506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff169150509193909250565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610955610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990612600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054610aaf90612583565b80601f0160208091040260200160405190810160405280929190818152602001828054610adb90612583565b8015610b285780601f10610afd57610100808354040283529160200191610b28565b820191906000526020600020905b815481529060010190602001808311610b0b57829003601f168201915b5050505050905090565b6000610bf5610b3f610f73565b84610bf085604051806060016040528060258152602001612fbd6025913960086000610b69610f73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b610f7b565b6001905092915050565b6000610c13610c0c610f73565b8484611144565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c4a610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90612600565b60405180910390fd5b80600f60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051610d209190612331565b60405180910390a150565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dba610f73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90612600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead906126d4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190612766565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611059576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611050906127f8565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611137919061235b565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab9061288a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a9061291c565b60405180910390fd5b60008211611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906129ae565b60405180910390fd5b600f60149054906101000a900460ff161561128d576112868484846115fc565b9050611533565b6000611298306108db565b90506000600c5482101590508080156112be5750600f60149054906101000a900460ff16155b80156113145750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132c5750600f60159054906101000a900460ff165b1561135657600f60169054906101000a900460ff161561134c57600d5491505b611355826117cf565b5b6113df846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061142f8787876118c7565b905061148381600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611523919061235b565b60405180910390a3600193505050505b9392505050565b6000838311158290611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579919061220c565b60405180910390fd5b506000838561159191906129fd565b9050809150509392505050565b60008082846115ad9190612a31565b9050838110156115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e990612ab1565b60405180910390fd5b8091505092915050565b6000611687826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153a9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061171c82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117bc919061235b565b60405180910390a3600190509392505050565b6001600f60146101000a81548160ff0219169083151502179055506117f381611d44565b600047905060006118216064611813603285611fc090919063ffffffff16565b61203a90919063ffffffff16565b90506000611838828461208490919063ffffffff16565b905060008111156118705761186f600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826120ce565b5b60008211156118a6576118a5600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836120ce565b5b5050506000600f60146101000a81548160ff02191690831515021790555050565b600080600090506000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119515761194a606461193c600a5487611fc090919063ffffffff16565b61203a90919063ffffffff16565b91506119cf565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119ce576119cb60646119bd600b5487611fc090919063ffffffff16565b61203a90919063ffffffff16565b91505b5b6000821115611ad757611a2a82600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159e90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611aca919061235b565b60405180910390a3611d26565b6000600267ffffffffffffffff811115611af457611af3612ad1565b5b604051908082528060200260200182016040528015611b225781602001602082028036833780820191505090505b5090508681600081518110611b3a57611b39612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c059190612b44565b81600181518110611c1957611c18612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f87846040518363ffffffff1660e01b8152600401611cb2929190612c2f565b600060405180830381865afa158015611ccf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611cf89190612d78565b600081518110611d0b57611d0a612b00565b5b602002602001015190508086611d2191906129fd565b925050505b611d39828561208490919063ffffffff16565b925050509392505050565b6000600267ffffffffffffffff811115611d6157611d60612ad1565b5b604051908082528060200260200182016040528015611d8f5781602001602082028036833780820191505090505b5090503081600081518110611da757611da6612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e729190612b44565b81600181518110611e8657611e85612b00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611eed30600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f7b565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f51959493929190612e06565b600060405180830381600087803b158015611f6b57600080fd5b505af1158015611f7f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611fb4929190612c2f565b60405180910390a15050565b6000808303611fd25760009050612034565b60008284611fe09190612e60565b9050828482611fef9190612ed1565b1461202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202690612f74565b60405180910390fd5b809150505b92915050565b600061207c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612119565b905092915050565b60006120c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061153a565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612114573d6000803e3d6000fd5b505050565b60008083118290612160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612157919061220c565b60405180910390fd5b506000838561216f9190612ed1565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b657808201518184015260208101905061219b565b60008484015250505050565b6000601f19601f8301169050919050565b60006121de8261217c565b6121e88185612187565b93506121f8818560208601612198565b612201816121c2565b840191505092915050565b6000602082019050818103600083015261222681846121d3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226d82612242565b9050919050565b61227d81612262565b811461228857600080fd5b50565b60008135905061229a81612274565b92915050565b6000819050919050565b6122b3816122a0565b81146122be57600080fd5b50565b6000813590506122d0816122aa565b92915050565b600080604083850312156122ed576122ec612238565b5b60006122fb8582860161228b565b925050602061230c858286016122c1565b9150509250929050565b60008115159050919050565b61232b81612316565b82525050565b60006020820190506123466000830184612322565b92915050565b612355816122a0565b82525050565b6000602082019050612370600083018461234c565b92915050565b60008060006060848603121561238f5761238e612238565b5b600061239d8682870161228b565b93505060206123ae8682870161228b565b92505060406123bf868287016122c1565b9150509250925092565b600060ff82169050919050565b6123df816123c9565b82525050565b60006020820190506123fa60008301846123d6565b92915050565b60006020828403121561241657612415612238565b5b6000612424848285016122c1565b91505092915050565b60006020828403121561244357612442612238565b5b60006124518482850161228b565b91505092915050565b600060608201905061246f600083018661234c565b61247c602083018561234c565b6124896040830184612322565b949350505050565b61249a81612262565b82525050565b60006020820190506124b56000830184612491565b92915050565b6124c481612316565b81146124cf57600080fd5b50565b6000813590506124e1816124bb565b92915050565b6000602082840312156124fd576124fc612238565b5b600061250b848285016124d2565b91505092915050565b6000806040838503121561252b5761252a612238565b5b60006125398582860161228b565b925050602061254a8582860161228b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061259b57607f821691505b6020821081036125ae576125ad612554565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125ea602083612187565b91506125f5826125b4565b602082019050919050565b60006020820190508181036000830152612619816125dd565b9050919050565b60008151905061262f816122aa565b92915050565b60006020828403121561264b5761264a612238565b5b600061265984828501612620565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126be602683612187565b91506126c982612662565b604082019050919050565b600060208201905081810360008301526126ed816126b1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612750602483612187565b915061275b826126f4565b604082019050919050565b6000602082019050818103600083015261277f81612743565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006127e2602283612187565b91506127ed82612786565b604082019050919050565b60006020820190508181036000830152612811816127d5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612874602583612187565b915061287f82612818565b604082019050919050565b600060208201905081810360008301526128a381612867565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612906602383612187565b9150612911826128aa565b604082019050919050565b60006020820190508181036000830152612935816128f9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612998602983612187565b91506129a38261293c565b604082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a08826122a0565b9150612a13836122a0565b9250828203905081811115612a2b57612a2a6129ce565b5b92915050565b6000612a3c826122a0565b9150612a47836122a0565b9250828201905080821115612a5f57612a5e6129ce565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a9b601b83612187565b9150612aa682612a65565b602082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b3e81612274565b92915050565b600060208284031215612b5a57612b59612238565b5b6000612b6884828501612b2f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ba681612262565b82525050565b6000612bb88383612b9d565b60208301905092915050565b6000602082019050919050565b6000612bdc82612b71565b612be68185612b7c565b9350612bf183612b8d565b8060005b83811015612c22578151612c098882612bac565b9750612c1483612bc4565b925050600181019050612bf5565b5085935050505092915050565b6000604082019050612c44600083018561234c565b8181036020830152612c568184612bd1565b90509392505050565b600080fd5b612c6d826121c2565b810181811067ffffffffffffffff82111715612c8c57612c8b612ad1565b5b80604052505050565b6000612c9f61222e565b9050612cab8282612c64565b919050565b600067ffffffffffffffff821115612ccb57612cca612ad1565b5b602082029050602081019050919050565b600080fd5b6000612cf4612cef84612cb0565b612c95565b90508083825260208201905060208402830185811115612d1757612d16612cdc565b5b835b81811015612d405780612d2c8882612620565b845260208401935050602081019050612d19565b5050509392505050565b600082601f830112612d5f57612d5e612c5f565b5b8151612d6f848260208601612ce1565b91505092915050565b600060208284031215612d8e57612d8d612238565b5b600082015167ffffffffffffffff811115612dac57612dab61223d565b5b612db884828501612d4a565b91505092915050565b6000819050919050565b6000819050919050565b6000612df0612deb612de684612dc1565b612dcb565b6122a0565b9050919050565b612e0081612dd5565b82525050565b600060a082019050612e1b600083018861234c565b612e286020830187612df7565b8181036040830152612e3a8186612bd1565b9050612e496060830185612491565b612e56608083018461234c565b9695505050505050565b6000612e6b826122a0565b9150612e76836122a0565b9250828202612e84816122a0565b91508282048414831517612e9b57612e9a6129ce565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612edc826122a0565b9150612ee7836122a0565b925082612ef757612ef6612ea2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f5e602183612187565b9150612f6982612f02565b604082019050919050565b60006020820190508181036000830152612f8d81612f51565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c357c039fb9998b351b11435806667725912de430ac5b34c9830b6727272bd9364736f6c63430008120033

Deployed Bytecode Sourcemap

8507:9302:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10833:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11999:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11110:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13234:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11019:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11496:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12513:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17473:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;11218:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5606:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5820:137;;;;;;;;;;;;;:::i;:::-;;10924:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11722:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13059:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5482:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12646:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11345:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5965:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10833:83;10870:13;10903:5;10896:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10833:83;:::o;11999:161::-;12074:4;12091:39;12100:12;:10;:12::i;:::-;12114:7;12123:6;12091:8;:39::i;:::-;12148:4;12141:11;;11999:161;;;;:::o;11110:100::-;11163:7;11190:12;;11183:19;;11110:100;:::o;13234:313::-;13332:4;13349:36;13359:6;13367:9;13378:6;13349:9;:36::i;:::-;;13396:121;13405:6;13413:12;:10;:12::i;:::-;13427:89;13465:6;13427:89;;;;;;;;;;;;;;;;;:11;:19;13439:6;13427:19;;;;;;;;;;;;;;;:33;13447:12;:10;:12::i;:::-;13427:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13396:8;:121::i;:::-;13535:4;13528:11;;13234:313;;;;;:::o;11019:83::-;11060:5;11085:9;;;;;;;;;;;11078:16;;11019:83;:::o;11496:218::-;11584:4;11601:83;11610:12;:10;:12::i;:::-;11624:7;11633:50;11672:10;11633:11;:25;11645:12;:10;:12::i;:::-;11633:25;;;;;;;;;;;;;;;:34;11659:7;11633:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11601:8;:83::i;:::-;11702:4;11695:11;;11496:218;;;;:::o;12513:125::-;5743:12;:10;:12::i;:::-;5733:22;;:6;;;;;;;;;;:22;;;5725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12622:8:::1;12595:24;:35;;;;12513:125:::0;:::o;17473:333::-;17542:16;17560:17;17580:10;17620:9;:18;17630:7;17620:18;;;;;;;;;;;;;;;:27;;;17609:38;;17677:11;;;;;;;;;;;17670:29;;;17700:7;17670:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17658:50;;17719:25;17747:9;:18;17757:7;17747:18;;;;;;;;;;;;;;;17719:46;;17784:8;:14;;;;;;;;;;;;17776:22;;17598:208;17473:333;;;;;:::o;11218:119::-;11284:7;11311:9;:18;11321:7;11311:18;;;;;;;;;;;;;;;;11304:25;;11218:119;;;:::o;5606:79::-;5644:7;5671:6;;;;;;;;;;;5664:13;;5606:79;:::o;5820:137::-;5743:12;:10;:12::i;:::-;5733:22;;:6;;;;;;;;;;:22;;;5725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5924:1:::1;5887:40;;5908:6;::::0;::::1;;;;;;;;5887:40;;;;;;;;;;;;5947:1;5930:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5820:137::o:0;10924:87::-;10963:13;10996:7;10989:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10924:87;:::o;11722:269::-;11815:4;11832:129;11841:12;:10;:12::i;:::-;11855:7;11864:96;11903:15;11864:96;;;;;;;;;;;;;;;;;:11;:25;11876:12;:10;:12::i;:::-;11864:25;;;;;;;;;;;;;;;:34;11890:7;11864:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11832:8;:129::i;:::-;11979:4;11972:11;;11722:269;;;;:::o;13059:167::-;13137:4;13154:42;13164:12;:10;:12::i;:::-;13178:9;13189:6;13154:9;:42::i;:::-;;13214:4;13207:11;;13059:167;;;;:::o;5482:21::-;;;;;;;;;;;;:::o;12646:171::-;5743:12;:10;:12::i;:::-;5733:22;;:6;;;;;;;;;;:22;;;5725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12747:8:::1;12723:21;;:32;;;;;;;;;;;;;;;;;;12771:38;12800:8;12771:38;;;;;;:::i;:::-;;;;;;;;12646:171:::0;:::o;11345:143::-;11426:7;11453:11;:18;11465:5;11453:18;;;;;;;;;;;;;;;:27;11472:7;11453:27;;;;;;;;;;;;;;;;11446:34;;11345:143;;;;:::o;5965:244::-;5743:12;:10;:12::i;:::-;5733:22;;:6;;;;;;;;;;:22;;;5725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6074:1:::1;6054:22;;:8;:22;;::::0;6046:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6164:8;6135:38;;6156:6;::::0;::::1;;;;;;;;6135:38;;;;;;;;;;;;6193:8;6184:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5965:244:::0;:::o;102:115::-;155:15;198:10;183:26;;102:115;:::o;12168:337::-;12278:1;12261:19;;:5;:19;;;12253:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12359:1;12340:21;;:7;:21;;;12332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12443:6;12413:11;:18;12425:5;12413:18;;;;;;;;;;;;;;;:27;12432:7;12413:27;;;;;;;;;;;;;;;:36;;;;12481:7;12465:32;;12474:5;12465:32;;;12490:6;12465:32;;;;;;:::i;:::-;;;;;;;;12168:337;;;:::o;13555:1295::-;13642:4;13687:1;13669:20;;:6;:20;;;13661:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13771:1;13750:23;;:9;:23;;;13742:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13841:1;13832:6;:10;13824:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13904:16;;;;;;;;;;;13901:942;;;13953:41;13968:6;13976:9;13987:6;13953:14;:41::i;:::-;13946:48;;;;13901:942;14047:28;14078:24;14096:4;14078:9;:24::i;:::-;14047:55;;14117:28;14172:12;;14148:20;:36;;14117:67;;14205:23;:44;;;;;14233:16;;;;;;;;;;;14232:17;14205:44;:69;;;;;14254:12;:20;14267:6;14254:20;;;;;;;;;;;;;;;;;;;;;;;;;14253:21;14205:69;:94;;;;;14278:21;;;;;;;;;;;14205:94;14201:301;;;14336:25;;;;;;;;;;;14333:98;;;14407:24;;14384:47;;14333:98;14450:36;14465:20;14450:14;:36::i;:::-;14201:301;14538:53;14560:6;14538:53;;;;;;;;;;;;;;;;;:9;:17;14548:6;14538:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14518:9;:17;14528:6;14518:17;;;;;;;;;;;;;;;:73;;;;14608:19;14630:34;14638:6;14646:9;14657:6;14630:7;:34::i;:::-;14608:56;;14706:37;14731:11;14706:9;:20;14716:9;14706:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;14683:9;:20;14693:9;14683:20;;;;;;;;;;;;;;;:60;;;;14782:9;14765:40;;14774:6;14765:40;;;14793:11;14765:40;;;;;;:::i;:::-;;;;;;;;14827:4;14820:11;;;;;13555:1295;;;;;;:::o;1530:192::-;1616:7;1649:1;1644;:6;;1652:12;1636:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1676:9;1692:1;1688;:5;;;;:::i;:::-;1676:17;;1713:1;1706:8;;;1530:192;;;;;:::o;1197:181::-;1255:7;1275:9;1291:1;1287;:5;;;;:::i;:::-;1275:17;;1316:1;1311;:6;;1303:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1369:1;1362:8;;;1197:181;;;;:::o;14858:330::-;14951:4;14988:53;15010:6;14988:53;;;;;;;;;;;;;;;;;:9;:17;14998:6;14988:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14968:9;:17;14978:6;14968:17;;;;;;;;;;;;;;;:73;;;;15075:32;15100:6;15075:9;:20;15085:9;15075:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15052:9;:20;15062:9;15052:20;;;;;;;;;;;;;;;:55;;;;15140:9;15123:35;;15132:6;15123:35;;;15151:6;15123:35;;;;;;:::i;:::-;;;;;;;;15176:4;15169:11;;14858:330;;;;;:::o;15198:621::-;9833:4;9814:16;;:23;;;;;;;;;;;;;;;;;;15302:25:::1;15319:7;15302:16;:25::i;:::-;15338:22;15363:21;15338:46;;15427:22;15452:31;15479:3;15452:22;15471:2;15452:14;:18;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;15427:56;;15520:27;15550:34;15569:14;15550;:18;;:34;;;;:::i;:::-;15520:64;;15622:1;15600:19;:23;15597:106;;;15638:65;15659:22;;;;;;;;;;;15683:19;15638:20;:65::i;:::-;15597:106;15736:1;15719:14;:18;15716:91;;;15752:55;15773:17;;;;;;;;;;;15792:14;15752:20;:55::i;:::-;15716:91;15259:560;;;9879:5:::0;9860:16;;:24;;;;;;;;;;;;;;;;;;15198:621;:::o;16495:968::-;16581:7;16603:17;16623:1;16603:21;;16635:18;16671:12;:20;16684:6;16671:20;;;;;;;;;;;;;;;;;;;;;;;;;16668:223;;;16720:38;16754:3;16720:29;16731:17;;16720:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;16708:50;;16668:223;;;16788:12;:23;16801:9;16788:23;;;;;;;;;;;;;;;;;;;;;;;;;16785:106;;;16840:39;16875:3;16840:30;16851:18;;16840:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;16828:51;;16785:106;16668:223;16916:1;16904:9;:13;16901:514;;;16961:39;16990:9;16961;:24;16979:4;16961:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16934:9;:24;16952:4;16934:24;;;;;;;;;;;;;;;:66;;;;17045:4;17020:42;;17029:6;17020:42;;;17052:9;17020:42;;;;;;:::i;:::-;;;;;;;;16901:514;;;17157:21;17195:1;17181:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17157:40;;17230:6;17212:4;17217:1;17212:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;17262:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17252:4;17257:1;17252:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17299:12;17314:15;;;;;;;;;;;:29;;;17344:6;17351:4;17314:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17357:1;17314:45;;;;;;;;:::i;:::-;;;;;;;;17299:60;;17396:7;17387:6;:16;;;;:::i;:::-;17374:29;;17078:337;;16901:514;17434:21;17445:9;17434:6;:10;;:21;;;;:::i;:::-;17427:28;;;;16495:968;;;;;:::o;15825:658::-;15951:21;15989:1;15975:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15951:40;;16020:4;16002;16007:1;16002:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16046:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16036:4;16041:1;16036:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16081:62;16098:4;16113:15;;;;;;;;;;;16131:11;16081:8;:62::i;:::-;16182:15;;;;;;;;;;;:66;;;16263:11;16289:1;16333:4;16360;16396:15;16182:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16440:35;16457:11;16470:4;16440:35;;;;;;;:::i;:::-;;;;;;;;15880:603;15825:658;:::o;1730:250::-;1788:7;1817:1;1812;:6;1808:47;;1842:1;1835:8;;;;1808:47;1867:9;1883:1;1879;:5;;;;:::i;:::-;1867:17;;1912:1;1907;1903;:5;;;;:::i;:::-;:10;1895:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1971:1;1964:8;;;1730:250;;;;;:::o;1988:132::-;2046:7;2073:39;2077:1;2080;2073:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2066:46;;1988:132;;;;:::o;1386:136::-;1444:7;1471:43;1475:1;1478;1471:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1464:50;;1386:136;;;;:::o;12827:126::-;12919:9;:18;;:26;12938:6;12919:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12827:126;;:::o;2128:278::-;2214:7;2246:1;2242;:5;2249:12;2234:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2273:9;2289:1;2285;:5;;;;:::i;:::-;2273:17;;2397:1;2390:8;;;2128: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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:430::-;5666:4;5704:2;5693:9;5689:18;5681:26;;5717:71;5785:1;5774:9;5770:17;5761:6;5717:71;:::i;:::-;5798:72;5866:2;5855:9;5851:18;5842:6;5798:72;:::i;:::-;5880:66;5942:2;5931:9;5927:18;5918:6;5880:66;:::i;:::-;5523:430;;;;;;:::o;5959:118::-;6046:24;6064:5;6046:24;:::i;:::-;6041:3;6034:37;5959:118;;:::o;6083:222::-;6176:4;6214:2;6203:9;6199:18;6191:26;;6227:71;6295:1;6284:9;6280:17;6271:6;6227:71;:::i;:::-;6083:222;;;;:::o;6311:116::-;6381:21;6396:5;6381:21;:::i;:::-;6374:5;6371:32;6361:60;;6417:1;6414;6407:12;6361:60;6311:116;:::o;6433:133::-;6476:5;6514:6;6501:20;6492:29;;6530:30;6554:5;6530:30;:::i;:::-;6433:133;;;;:::o;6572:323::-;6628:6;6677:2;6665:9;6656:7;6652:23;6648:32;6645:119;;;6683:79;;:::i;:::-;6645:119;6803:1;6828:50;6870:7;6861:6;6850:9;6846:22;6828:50;:::i;:::-;6818:60;;6774:114;6572:323;;;;:::o;6901:474::-;6969:6;6977;7026:2;7014:9;7005:7;7001:23;6997:32;6994:119;;;7032:79;;:::i;:::-;6994:119;7152:1;7177:53;7222:7;7213:6;7202:9;7198:22;7177:53;:::i;:::-;7167:63;;7123:117;7279:2;7305:53;7350:7;7341:6;7330:9;7326:22;7305:53;:::i;:::-;7295:63;;7250:118;6901:474;;;;;:::o;7381:180::-;7429:77;7426:1;7419:88;7526:4;7523:1;7516:15;7550:4;7547:1;7540:15;7567:320;7611:6;7648:1;7642:4;7638:12;7628:22;;7695:1;7689:4;7685:12;7716:18;7706:81;;7772:4;7764:6;7760:17;7750:27;;7706:81;7834:2;7826:6;7823:14;7803:18;7800:38;7797:84;;7853:18;;:::i;:::-;7797:84;7618:269;7567:320;;;:::o;7893:182::-;8033:34;8029:1;8021:6;8017:14;8010:58;7893:182;:::o;8081:366::-;8223:3;8244:67;8308:2;8303:3;8244:67;:::i;:::-;8237:74;;8320:93;8409:3;8320:93;:::i;:::-;8438:2;8433:3;8429:12;8422:19;;8081:366;;;:::o;8453:419::-;8619:4;8657:2;8646:9;8642:18;8634:26;;8706:9;8700:4;8696:20;8692:1;8681:9;8677:17;8670:47;8734:131;8860:4;8734:131;:::i;:::-;8726:139;;8453:419;;;:::o;8878:143::-;8935:5;8966:6;8960:13;8951:22;;8982:33;9009:5;8982:33;:::i;:::-;8878:143;;;;:::o;9027:351::-;9097:6;9146:2;9134:9;9125:7;9121:23;9117:32;9114:119;;;9152:79;;:::i;:::-;9114:119;9272:1;9297:64;9353:7;9344:6;9333:9;9329:22;9297:64;:::i;:::-;9287:74;;9243:128;9027:351;;;;:::o;9384:225::-;9524:34;9520:1;9512:6;9508:14;9501:58;9593:8;9588:2;9580:6;9576:15;9569:33;9384:225;:::o;9615:366::-;9757:3;9778:67;9842:2;9837:3;9778:67;:::i;:::-;9771:74;;9854:93;9943:3;9854:93;:::i;:::-;9972:2;9967:3;9963:12;9956:19;;9615:366;;;:::o;9987:419::-;10153:4;10191:2;10180:9;10176:18;10168:26;;10240:9;10234:4;10230:20;10226:1;10215:9;10211:17;10204:47;10268:131;10394:4;10268:131;:::i;:::-;10260:139;;9987:419;;;:::o;10412:223::-;10552:34;10548:1;10540:6;10536:14;10529:58;10621:6;10616:2;10608:6;10604:15;10597:31;10412:223;:::o;10641:366::-;10783:3;10804:67;10868:2;10863:3;10804:67;:::i;:::-;10797:74;;10880:93;10969:3;10880:93;:::i;:::-;10998:2;10993:3;10989:12;10982:19;;10641:366;;;:::o;11013:419::-;11179:4;11217:2;11206:9;11202:18;11194:26;;11266:9;11260:4;11256:20;11252:1;11241:9;11237:17;11230:47;11294:131;11420:4;11294:131;:::i;:::-;11286:139;;11013:419;;;:::o;11438:221::-;11578:34;11574:1;11566:6;11562:14;11555:58;11647:4;11642:2;11634:6;11630:15;11623:29;11438:221;:::o;11665:366::-;11807:3;11828:67;11892:2;11887:3;11828:67;:::i;:::-;11821:74;;11904:93;11993:3;11904:93;:::i;:::-;12022:2;12017:3;12013:12;12006:19;;11665:366;;;:::o;12037:419::-;12203:4;12241:2;12230:9;12226:18;12218:26;;12290:9;12284:4;12280:20;12276:1;12265:9;12261:17;12254:47;12318:131;12444:4;12318:131;:::i;:::-;12310:139;;12037:419;;;:::o;12462:224::-;12602:34;12598:1;12590:6;12586:14;12579:58;12671:7;12666:2;12658:6;12654:15;12647:32;12462:224;:::o;12692:366::-;12834:3;12855:67;12919:2;12914:3;12855:67;:::i;:::-;12848:74;;12931:93;13020:3;12931:93;:::i;:::-;13049:2;13044:3;13040:12;13033:19;;12692:366;;;:::o;13064:419::-;13230:4;13268:2;13257:9;13253:18;13245:26;;13317:9;13311:4;13307:20;13303:1;13292:9;13288:17;13281:47;13345:131;13471:4;13345:131;:::i;:::-;13337:139;;13064:419;;;:::o;13489:222::-;13629:34;13625:1;13617:6;13613:14;13606:58;13698:5;13693:2;13685:6;13681:15;13674:30;13489:222;:::o;13717:366::-;13859:3;13880:67;13944:2;13939:3;13880:67;:::i;:::-;13873:74;;13956:93;14045:3;13956:93;:::i;:::-;14074:2;14069:3;14065:12;14058:19;;13717:366;;;:::o;14089:419::-;14255:4;14293:2;14282:9;14278:18;14270:26;;14342:9;14336:4;14332:20;14328:1;14317:9;14313:17;14306:47;14370:131;14496:4;14370:131;:::i;:::-;14362:139;;14089:419;;;:::o;14514:228::-;14654:34;14650:1;14642:6;14638:14;14631:58;14723:11;14718:2;14710:6;14706:15;14699:36;14514:228;:::o;14748:366::-;14890:3;14911:67;14975:2;14970:3;14911:67;:::i;:::-;14904:74;;14987:93;15076:3;14987:93;:::i;:::-;15105:2;15100:3;15096:12;15089:19;;14748:366;;;:::o;15120:419::-;15286:4;15324:2;15313:9;15309:18;15301:26;;15373:9;15367:4;15363:20;15359:1;15348:9;15344:17;15337:47;15401:131;15527:4;15401:131;:::i;:::-;15393:139;;15120:419;;;:::o;15545:180::-;15593:77;15590:1;15583:88;15690:4;15687:1;15680:15;15714:4;15711:1;15704:15;15731:194;15771:4;15791:20;15809:1;15791:20;:::i;:::-;15786:25;;15825:20;15843:1;15825:20;:::i;:::-;15820:25;;15869:1;15866;15862:9;15854:17;;15893:1;15887:4;15884:11;15881:37;;;15898:18;;:::i;:::-;15881:37;15731:194;;;;:::o;15931:191::-;15971:3;15990:20;16008:1;15990:20;:::i;:::-;15985:25;;16024:20;16042:1;16024:20;:::i;:::-;16019:25;;16067:1;16064;16060:9;16053:16;;16088:3;16085:1;16082:10;16079:36;;;16095:18;;:::i;:::-;16079:36;15931:191;;;;:::o;16128:177::-;16268:29;16264:1;16256:6;16252:14;16245:53;16128:177;:::o;16311:366::-;16453:3;16474:67;16538:2;16533:3;16474:67;:::i;:::-;16467:74;;16550:93;16639:3;16550:93;:::i;:::-;16668:2;16663:3;16659:12;16652:19;;16311:366;;;:::o;16683:419::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16936:9;16930:4;16926:20;16922:1;16911:9;16907:17;16900:47;16964:131;17090:4;16964:131;:::i;:::-;16956:139;;16683:419;;;:::o;17108:180::-;17156:77;17153:1;17146:88;17253:4;17250:1;17243:15;17277:4;17274:1;17267:15;17294:180;17342:77;17339:1;17332:88;17439:4;17436:1;17429:15;17463:4;17460:1;17453:15;17480:143;17537:5;17568:6;17562:13;17553:22;;17584:33;17611:5;17584:33;:::i;:::-;17480:143;;;;:::o;17629:351::-;17699:6;17748:2;17736:9;17727:7;17723:23;17719:32;17716:119;;;17754:79;;:::i;:::-;17716:119;17874:1;17899:64;17955:7;17946:6;17935:9;17931:22;17899:64;:::i;:::-;17889:74;;17845:128;17629:351;;;;:::o;17986:114::-;18053:6;18087:5;18081:12;18071:22;;17986:114;;;:::o;18106:184::-;18205:11;18239:6;18234:3;18227:19;18279:4;18274:3;18270:14;18255:29;;18106:184;;;;:::o;18296:132::-;18363:4;18386:3;18378:11;;18416:4;18411:3;18407:14;18399:22;;18296:132;;;:::o;18434:108::-;18511:24;18529:5;18511:24;:::i;:::-;18506:3;18499:37;18434:108;;:::o;18548:179::-;18617:10;18638:46;18680:3;18672:6;18638:46;:::i;:::-;18716:4;18711:3;18707:14;18693:28;;18548:179;;;;:::o;18733:113::-;18803:4;18835;18830:3;18826:14;18818:22;;18733:113;;;:::o;18882:732::-;19001:3;19030:54;19078:5;19030:54;:::i;:::-;19100:86;19179:6;19174:3;19100:86;:::i;:::-;19093:93;;19210:56;19260:5;19210:56;:::i;:::-;19289:7;19320:1;19305:284;19330:6;19327:1;19324:13;19305:284;;;19406:6;19400:13;19433:63;19492:3;19477:13;19433:63;:::i;:::-;19426:70;;19519:60;19572:6;19519:60;:::i;:::-;19509:70;;19365:224;19352:1;19349;19345:9;19340:14;;19305:284;;;19309:14;19605:3;19598:10;;19006:608;;;18882:732;;;;:::o;19620:483::-;19791:4;19829:2;19818:9;19814:18;19806:26;;19842:71;19910:1;19899:9;19895:17;19886:6;19842:71;:::i;:::-;19960:9;19954:4;19950:20;19945:2;19934:9;19930:18;19923:48;19988:108;20091:4;20082:6;19988:108;:::i;:::-;19980:116;;19620:483;;;;;:::o;20109:117::-;20218:1;20215;20208:12;20232:281;20315:27;20337:4;20315:27;:::i;:::-;20307:6;20303:40;20445:6;20433:10;20430:22;20409:18;20397:10;20394:34;20391:62;20388:88;;;20456:18;;:::i;:::-;20388:88;20496:10;20492:2;20485:22;20275:238;20232:281;;:::o;20519:129::-;20553:6;20580:20;;:::i;:::-;20570:30;;20609:33;20637:4;20629:6;20609:33;:::i;:::-;20519:129;;;:::o;20654:311::-;20731:4;20821:18;20813:6;20810:30;20807:56;;;20843:18;;:::i;:::-;20807:56;20893:4;20885:6;20881:17;20873:25;;20953:4;20947;20943:15;20935:23;;20654:311;;;:::o;20971:117::-;21080:1;21077;21070:12;21111:732;21218:5;21243:81;21259:64;21316:6;21259:64;:::i;:::-;21243:81;:::i;:::-;21234:90;;21344:5;21373:6;21366:5;21359:21;21407:4;21400:5;21396:16;21389:23;;21460:4;21452:6;21448:17;21440:6;21436:30;21489:3;21481:6;21478:15;21475:122;;;21508:79;;:::i;:::-;21475:122;21623:6;21606:231;21640:6;21635:3;21632:15;21606:231;;;21715:3;21744:48;21788:3;21776:10;21744:48;:::i;:::-;21739:3;21732:61;21822:4;21817:3;21813:14;21806:21;;21682:155;21666:4;21661:3;21657:14;21650:21;;21606:231;;;21610:21;21224:619;;21111:732;;;;;:::o;21866:385::-;21948:5;21997:3;21990:4;21982:6;21978:17;21974:27;21964:122;;22005:79;;:::i;:::-;21964:122;22115:6;22109:13;22140:105;22241:3;22233:6;22226:4;22218:6;22214:17;22140:105;:::i;:::-;22131:114;;21954:297;21866:385;;;;:::o;22257:554::-;22352:6;22401:2;22389:9;22380:7;22376:23;22372:32;22369:119;;;22407:79;;:::i;:::-;22369:119;22548:1;22537:9;22533:17;22527:24;22578:18;22570:6;22567:30;22564:117;;;22600:79;;:::i;:::-;22564:117;22705:89;22786:7;22777:6;22766:9;22762:22;22705:89;:::i;:::-;22695:99;;22498:306;22257:554;;;;:::o;22817:85::-;22862:7;22891:5;22880:16;;22817:85;;;:::o;22908:60::-;22936:3;22957:5;22950:12;;22908:60;;;:::o;22974:158::-;23032:9;23065:61;23083:42;23092:32;23118:5;23092:32;:::i;:::-;23083:42;:::i;:::-;23065:61;:::i;:::-;23052:74;;22974:158;;;:::o;23138:147::-;23233:45;23272:5;23233:45;:::i;:::-;23228:3;23221:58;23138:147;;:::o;23291:831::-;23554:4;23592:3;23581:9;23577:19;23569:27;;23606:71;23674:1;23663:9;23659:17;23650:6;23606:71;:::i;:::-;23687:80;23763:2;23752:9;23748:18;23739:6;23687:80;:::i;:::-;23814:9;23808:4;23804:20;23799:2;23788:9;23784:18;23777:48;23842:108;23945:4;23936:6;23842:108;:::i;:::-;23834:116;;23960:72;24028:2;24017:9;24013:18;24004:6;23960:72;:::i;:::-;24042:73;24110:3;24099:9;24095:19;24086:6;24042:73;:::i;:::-;23291:831;;;;;;;;:::o;24128:410::-;24168:7;24191:20;24209:1;24191:20;:::i;:::-;24186:25;;24225:20;24243:1;24225:20;:::i;:::-;24220:25;;24280:1;24277;24273:9;24302:30;24320:11;24302:30;:::i;:::-;24291:41;;24481:1;24472:7;24468:15;24465:1;24462:22;24442:1;24435:9;24415:83;24392:139;;24511:18;;:::i;:::-;24392:139;24176:362;24128:410;;;;:::o;24544:180::-;24592:77;24589:1;24582:88;24689:4;24686:1;24679:15;24713:4;24710:1;24703:15;24730:185;24770:1;24787:20;24805:1;24787:20;:::i;:::-;24782:25;;24821:20;24839:1;24821:20;:::i;:::-;24816:25;;24860:1;24850:35;;24865:18;;:::i;:::-;24850:35;24907:1;24904;24900:9;24895:14;;24730:185;;;;:::o;24921:220::-;25061:34;25057:1;25049:6;25045:14;25038:58;25130:3;25125:2;25117:6;25113:15;25106:28;24921:220;:::o;25147:366::-;25289:3;25310:67;25374:2;25369:3;25310:67;:::i;:::-;25303:74;;25386:93;25475:3;25386:93;:::i;:::-;25504:2;25499:3;25495:12;25488:19;;25147:366;;;:::o;25519:419::-;25685:4;25723:2;25712:9;25708:18;25700:26;;25772:9;25766:4;25762:20;25758:1;25747:9;25743:17;25736:47;25800:131;25926:4;25800:131;:::i;:::-;25792:139;;25519:419;;;:::o

Swarm Source

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