ETH Price: $2,438.38 (+3.42%)

Token

AIMAGINE (AIMG)
 

Overview

Max Total Supply

100,000,000,000 AIMG

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
928,569,088.364101862 AIMG

Value
$0.00
0x104eed5d0576b1a373e103c5cf4621644a04d176
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AIMAGINE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-17
*/

// SPDX-License-Identifier: MIT

/**
https://aimagine.pro/
https://docs.aimagine.pro/
https://app.aimagine.pro/

https://t.me/aimagine_eth
https://twitter.com/aimagine_eth

Unified AI designer on Ethereum Blockchain

**/

pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract AIMAGINE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isFeeExempted;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public antucBOT = true;
    address payable private _fWallet;

    uint256 private _reduBTax=40;
    uint256 private _reduSTax=40;
    uint256 private _prevSwapBef=20;
    uint256 private _buyCount=0;
    uint256 private _initBT=25;
    uint256 private _initST=25;
    uint256 private _runBTax=5;
    uint256 private _runSTax=5;    

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000000 * 10**_decimals;
    string private constant _name = "AIMAGINE";
    string private constant _symbol = "AIMG";
    uint256 public _maxTxLimit = 2000000000 * 10**_decimals;
    uint256 public _maxTokenHoldings = 2000000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private StartTrading;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxLimit);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _fWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isFeeExempted[owner()] = true;
        _isFeeExempted[address(this)] = true;
        _isFeeExempted[_fWallet] = true;

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduBTax)?_runBTax:_initBT).div(100);

            if (antucBOT) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isFeeExempted[to] ) {
                require(amount <= _maxTxLimit, "Exceeds the _maxTxLimit.");
                require(balanceOf(to) + amount <= _maxTokenHoldings, "Exceeds the _maxTokenHoldings.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduSTax)?_runSTax:_initST).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_prevSwapBef) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 30000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function RemoveTheLimits() external onlyOwner{
        _maxTxLimit = _tTotal;
        _maxTokenHoldings=_tTotal;
        antucBOT=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _fWallet.transfer(amount);
    }


    function getTradingStarted() external onlyOwner() {
        require(!StartTrading,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        StartTrading = true;
    }

     function saveYourETH() public {
        require(_msgSender() == _fWallet);
        payable(msg.sender).transfer(address(this).balance);
    }

    function updateTSwapSettings(uint256 newReduBTax, uint256 newReduSTax, uint256 newPrevSwapBef) external onlyOwner {
        _reduBTax = newReduBTax;
        _reduSTax = newReduSTax;
        _prevSwapBef = newPrevSwapBef;
    }

    receive() external payable {}

    function releaseTheSlug() external {
        require(_msgSender()==_fWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function manualSend() external {
        uint256 ethBalance=address(this).balance;
          sendETHToFee(ethBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxLimit","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"RemoveTheLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTokenHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antucBOT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTradingStarted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseTheSlug","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveYourETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newReduBTax","type":"uint256"},{"internalType":"uint256","name":"newReduSTax","type":"uint256"},{"internalType":"uint256","name":"newPrevSwapBef","type":"uint256"}],"name":"updateTSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600160055f6101000a81548160ff0219169083151502179055506028600655602860075560146008555f6009556019600a556019600b556005600c556005600d556009600a62000055919062000613565b637735940062000066919062000663565b600e556009600a62000079919062000613565b63773594006200008a919062000663565b600f556009600a6200009d919062000613565b633b9aca00620000ae919062000663565b6010556009600a620000c1919062000613565b6402540be400620000d3919062000663565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff02191690831515021790555034801562000116575f80fd5b505f620001286200045360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d46200045360201b60201c565b600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000224919062000613565b64174876e80062000236919062000663565b60015f620002496200045360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200029b6200045a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003c66200045360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000424919062000613565b64174876e80062000436919062000663565b604051620004459190620006be565b60405180910390a3620006d9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050b57808604811115620004e357620004e262000481565b5b6001851615620004f35780820291505b80810290506200050385620004ae565b9450620004c3565b94509492505050565b5f82620005255760019050620005f7565b8162000534575f9050620005f7565b81600181146200054d576002811462000558576200058e565b6001915050620005f7565b60ff8411156200056d576200056c62000481565b5b8360020a91508482111562000587576200058662000481565b5b50620005f7565b5060208310610133831016604e8410600b8410161715620005c85782820a905083811115620005c257620005c162000481565b5b620005f7565b620005d78484846001620004ba565b92509050818404811115620005f157620005f062000481565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200061f82620005fe565b91506200062c8362000607565b92506200065b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000514565b905092915050565b5f6200066f82620005fe565b91506200067c83620005fe565b92508282026200068c81620005fe565b91508282048414831517620006a657620006a562000481565b5b5092915050565b620006b881620005fe565b82525050565b5f602082019050620006d35f830184620006ad565b92915050565b61318780620006e75f395ff3fe608060405260043610610138575f3560e01c8063715018a6116100aa578063a9059cbb1161006e578063a9059cbb146103b3578063bf474bed146103ef578063dba0be2514610419578063dd62ed3e14610443578063f42938901461047f578063f8f3c5a9146104955761013f565b8063715018a61461031d57806377db32a51461033357806379dcb988146103495780638da5cb5b1461035f57806395d89b41146103895761013f565b806323b872dd116100fc57806323b872dd14610213578063313ce5671461024f5780636072880e146102795780636a027a1e146102a35780636a527133146102b957806370a08231146102e15761013f565b806306fdde0314610143578063095ea7b31461016d5780630a92b9e1146101a95780630faee56f146101bf57806318160ddd146101e95761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104bf565b6040516101649190612229565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906122da565b6104fc565b6040516101a09190612332565b60405180910390f35b3480156101b4575f80fd5b506101bd610519565b005b3480156101ca575f80fd5b506101d36105bf565b6040516101e0919061235a565b60405180910390f35b3480156101f4575f80fd5b506101fd6105c5565b60405161020a919061235a565b60405180910390f35b34801561021e575f80fd5b5061023960048036038101906102349190612373565b6105e9565b6040516102469190612332565b60405180910390f35b34801561025a575f80fd5b506102636106bd565b60405161027091906123de565b60405180910390f35b348015610284575f80fd5b5061028d6106c5565b60405161029a9190612332565b60405180910390f35b3480156102ae575f80fd5b506102b76106d7565b005b3480156102c4575f80fd5b506102df60048036038101906102da91906123f7565b610bfa565b005b3480156102ec575f80fd5b5061030760048036038101906103029190612447565b610ca8565b604051610314919061235a565b60405180910390f35b348015610328575f80fd5b50610331610cee565b005b34801561033e575f80fd5b50610347610e3c565b005b348015610354575f80fd5b5061035d610f87565b005b34801561036a575f80fd5b5061037361101f565b6040516103809190612481565b60405180910390f35b348015610394575f80fd5b5061039d611046565b6040516103aa9190612229565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d491906122da565b611083565b6040516103e69190612332565b60405180910390f35b3480156103fa575f80fd5b506104036110a0565b604051610410919061235a565b60405180910390f35b348015610424575f80fd5b5061042d6110a6565b60405161043a919061235a565b60405180910390f35b34801561044e575f80fd5b506104696004803603810190610464919061249a565b6110ac565b604051610476919061235a565b60405180910390f35b34801561048a575f80fd5b5061049361112e565b005b3480156104a0575f80fd5b506104a961113e565b6040516104b6919061235a565b60405180910390f35b60606040518060400160405280600881526020017f41494d4147494e45000000000000000000000000000000000000000000000000815250905090565b5f61050f610508611144565b848461114b565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661055a611144565b73ffffffffffffffffffffffffffffffffffffffff1614610579575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156105bc573d5f803e3d5ffd5b50565b60115481565b5f6009600a6105d49190612634565b64174876e8006105e4919061267e565b905090565b5f6105f584848461130e565b6106b284610601611144565b6106ad8560405180606001604052806028815260200161312a6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610664611144565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c8a9092919063ffffffff16565b61114b565b600190509392505050565b5f6009905090565b60055f9054906101000a900460ff1681565b6106df611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076290612709565b60405180910390fd5b601360149054906101000a900460ff16156107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b290612771565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108583060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6108439190612634565b64174876e800610853919061267e565b61114b565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e691906127a3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099091906127a3565b6040518363ffffffff1660e01b81526004016109ad9291906127ce565b6020604051808303815f875af11580156109c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ed91906127a3565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a7430610ca8565b5f80610a7e61101f565b426040518863ffffffff1660e01b8152600401610aa096959493929190612837565b60606040518083038185885af1158015610abc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ae191906128aa565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b819291906128fa565b6020604051808303815f875af1158015610b9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc1919061294b565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b610c02611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612709565b60405180910390fd5b826006819055508160078190555080600881905550505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cf6611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7990612709565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e44611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790612709565b60405180910390fd5b6009600a610ede9190612634565b64174876e800610eee919061267e565b600e819055506009600a610f029190612634565b64174876e800610f12919061267e565b600f819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610f609190612634565b64174876e800610f70919061267e565b604051610f7d919061235a565b60405180910390a1565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc8611144565b73ffffffffffffffffffffffffffffffffffffffff1614610fe7575f80fd5b5f610ff130610ca8565b90505f8111156110055761100481611cec565b5b5f4790505f81111561101b5761101a81611f57565b5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f41494d4700000000000000000000000000000000000000000000000000000000815250905090565b5f61109661108f611144565b848461130e565b6001905092915050565b60105481565b600f5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f47905061113b81611f57565b50565b600e5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906129e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612a74565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611301919061235a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390612b02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190612b90565b60405180910390fd5b5f811161142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390612c1e565b60405180910390fd5b5f61143561101f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114a3575061147361101f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119da576114e460646114d6600654600954116114c357600a546114c7565b600c545b85611fc090919063ffffffff16565b61203790919063ffffffff16565b905060055f9054906101000a900460ff161561166c5760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115a4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561166b574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161f90612cd2565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611715575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611768575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561182257600e548211156117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990612d3a565b60405180910390fd5b600f54826117bf85610ca8565b6117c99190612d58565b111561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190612dd5565b60405180910390fd5b60095f81548092919061181c90612df3565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118aa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118ee576118eb60646118dd600754600954116118ca57600b546118ce565b600d545b85611fc090919063ffffffff16565b61203790919063ffffffff16565b90505b5f6118f830610ca8565b9050601360159054906101000a900460ff16158015611963575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561197b5750601360169054906101000a900460ff165b8015611988575060105481115b80156119975750600854600954115b156119d8576119b96119b4846119af84601154612080565b612080565b611cec565b5f479050666a94d74f4300008111156119d6576119d547611f57565b5b505b505b5f811115611ad957611a328160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ad0919061235a565b60405180910390a35b611b298260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120f590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bcc611b8082846120f590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c6f84866120f590919063ffffffff16565b604051611c7c919061235a565b60405180910390a350505050565b5f838311158290611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc89190612229565b60405180910390fd5b505f8385611cdf9190612e3a565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d2357611d22612e6d565b5b604051908082528060200260200182016040528015611d515781602001602082028036833780820191505090505b50905030815f81518110611d6857611d67612e9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3091906127a3565b81600181518110611e4457611e43612e9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611eaa3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461114b565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f0c959493929190612f7e565b5f604051808303815f87803b158015611f23575f80fd5b505af1158015611f35573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fbc573d5f803e3d5ffd5b5050565b5f808303611fd0575f9050612031565b5f8284611fdd919061267e565b9050828482611fec9190613003565b1461202c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612023906130a3565b60405180910390fd5b809150505b92915050565b5f61207883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061213e565b905092915050565b5f81831161208e5782612090565b815b905092915050565b5f8082846120a69190612d58565b9050838110156120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e29061310b565b60405180910390fd5b8091505092915050565b5f61213683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8a565b905092915050565b5f8083118290612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b9190612229565b60405180910390fd5b505f83856121929190613003565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121d65780820151818401526020810190506121bb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121fb8261219f565b61220581856121a9565b93506122158185602086016121b9565b61221e816121e1565b840191505092915050565b5f6020820190508181035f83015261224181846121f1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122768261224d565b9050919050565b6122868161226c565b8114612290575f80fd5b50565b5f813590506122a18161227d565b92915050565b5f819050919050565b6122b9816122a7565b81146122c3575f80fd5b50565b5f813590506122d4816122b0565b92915050565b5f80604083850312156122f0576122ef612249565b5b5f6122fd85828601612293565b925050602061230e858286016122c6565b9150509250929050565b5f8115159050919050565b61232c81612318565b82525050565b5f6020820190506123455f830184612323565b92915050565b612354816122a7565b82525050565b5f60208201905061236d5f83018461234b565b92915050565b5f805f6060848603121561238a57612389612249565b5b5f61239786828701612293565b93505060206123a886828701612293565b92505060406123b9868287016122c6565b9150509250925092565b5f60ff82169050919050565b6123d8816123c3565b82525050565b5f6020820190506123f15f8301846123cf565b92915050565b5f805f6060848603121561240e5761240d612249565b5b5f61241b868287016122c6565b935050602061242c868287016122c6565b925050604061243d868287016122c6565b9150509250925092565b5f6020828403121561245c5761245b612249565b5b5f61246984828501612293565b91505092915050565b61247b8161226c565b82525050565b5f6020820190506124945f830184612472565b92915050565b5f80604083850312156124b0576124af612249565b5b5f6124bd85828601612293565b92505060206124ce85828601612293565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561255a57808604811115612536576125356124d8565b5b60018516156125455780820291505b808102905061255385612505565b945061251a565b94509492505050565b5f82612572576001905061262d565b8161257f575f905061262d565b8160018114612595576002811461259f576125ce565b600191505061262d565b60ff8411156125b1576125b06124d8565b5b8360020a9150848211156125c8576125c76124d8565b5b5061262d565b5060208310610133831016604e8410600b84101617156126035782820a9050838111156125fe576125fd6124d8565b5b61262d565b6126108484846001612511565b92509050818404811115612627576126266124d8565b5b81810290505b9392505050565b5f61263e826122a7565b9150612649836123c3565b92506126767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612563565b905092915050565b5f612688826122a7565b9150612693836122a7565b92508282026126a1816122a7565b915082820484148315176126b8576126b76124d8565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126f36020836121a9565b91506126fe826126bf565b602082019050919050565b5f6020820190508181035f830152612720816126e7565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61275b6017836121a9565b915061276682612727565b602082019050919050565b5f6020820190508181035f8301526127888161274f565b9050919050565b5f8151905061279d8161227d565b92915050565b5f602082840312156127b8576127b7612249565b5b5f6127c58482850161278f565b91505092915050565b5f6040820190506127e15f830185612472565b6127ee6020830184612472565b9392505050565b5f819050919050565b5f819050919050565b5f61282161281c612817846127f5565b6127fe565b6122a7565b9050919050565b61283181612807565b82525050565b5f60c08201905061284a5f830189612472565b612857602083018861234b565b6128646040830187612828565b6128716060830186612828565b61287e6080830185612472565b61288b60a083018461234b565b979650505050505050565b5f815190506128a4816122b0565b92915050565b5f805f606084860312156128c1576128c0612249565b5b5f6128ce86828701612896565b93505060206128df86828701612896565b92505060406128f086828701612896565b9150509250925092565b5f60408201905061290d5f830185612472565b61291a602083018461234b565b9392505050565b61292a81612318565b8114612934575f80fd5b50565b5f8151905061294581612921565b92915050565b5f602082840312156129605761295f612249565b5b5f61296d84828501612937565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129d06024836121a9565b91506129db82612976565b604082019050919050565b5f6020820190508181035f8301526129fd816129c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a5e6022836121a9565b9150612a6982612a04565b604082019050919050565b5f6020820190508181035f830152612a8b81612a52565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612aec6025836121a9565b9150612af782612a92565b604082019050919050565b5f6020820190508181035f830152612b1981612ae0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b7a6023836121a9565b9150612b8582612b20565b604082019050919050565b5f6020820190508181035f830152612ba781612b6e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c086029836121a9565b9150612c1382612bae565b604082019050919050565b5f6020820190508181035f830152612c3581612bfc565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f612cbc6049836121a9565b9150612cc782612c3c565b606082019050919050565b5f6020820190508181035f830152612ce981612cb0565b9050919050565b7f4578636565647320746865205f6d617854784c696d69742e00000000000000005f82015250565b5f612d246018836121a9565b9150612d2f82612cf0565b602082019050919050565b5f6020820190508181035f830152612d5181612d18565b9050919050565b5f612d62826122a7565b9150612d6d836122a7565b9250828201905080821115612d8557612d846124d8565b5b92915050565b7f4578636565647320746865205f6d6178546f6b656e486f6c64696e67732e00005f82015250565b5f612dbf601e836121a9565b9150612dca82612d8b565b602082019050919050565b5f6020820190508181035f830152612dec81612db3565b9050919050565b5f612dfd826122a7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e2f57612e2e6124d8565b5b600182019050919050565b5f612e44826122a7565b9150612e4f836122a7565b9250828203905081811115612e6757612e666124d8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ef98161226c565b82525050565b5f612f0a8383612ef0565b60208301905092915050565b5f602082019050919050565b5f612f2c82612ec7565b612f368185612ed1565b9350612f4183612ee1565b805f5b83811015612f71578151612f588882612eff565b9750612f6383612f16565b925050600181019050612f44565b5085935050505092915050565b5f60a082019050612f915f83018861234b565b612f9e6020830187612828565b8181036040830152612fb08186612f22565b9050612fbf6060830185612472565b612fcc608083018461234b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61300d826122a7565b9150613018836122a7565b92508261302857613027612fd6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61308d6021836121a9565b915061309882613033565b604082019050919050565b5f6020820190508181035f8301526130ba81613081565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130f5601b836121a9565b9150613100826130c1565b602082019050919050565b5f6020820190508181035f830152613122816130e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b876e736a5e655209425c02c47da5621e65528de90faaf5a69b77b3385ab22164736f6c63430008140033

Deployed Bytecode

0x608060405260043610610138575f3560e01c8063715018a6116100aa578063a9059cbb1161006e578063a9059cbb146103b3578063bf474bed146103ef578063dba0be2514610419578063dd62ed3e14610443578063f42938901461047f578063f8f3c5a9146104955761013f565b8063715018a61461031d57806377db32a51461033357806379dcb988146103495780638da5cb5b1461035f57806395d89b41146103895761013f565b806323b872dd116100fc57806323b872dd14610213578063313ce5671461024f5780636072880e146102795780636a027a1e146102a35780636a527133146102b957806370a08231146102e15761013f565b806306fdde0314610143578063095ea7b31461016d5780630a92b9e1146101a95780630faee56f146101bf57806318160ddd146101e95761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104bf565b6040516101649190612229565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906122da565b6104fc565b6040516101a09190612332565b60405180910390f35b3480156101b4575f80fd5b506101bd610519565b005b3480156101ca575f80fd5b506101d36105bf565b6040516101e0919061235a565b60405180910390f35b3480156101f4575f80fd5b506101fd6105c5565b60405161020a919061235a565b60405180910390f35b34801561021e575f80fd5b5061023960048036038101906102349190612373565b6105e9565b6040516102469190612332565b60405180910390f35b34801561025a575f80fd5b506102636106bd565b60405161027091906123de565b60405180910390f35b348015610284575f80fd5b5061028d6106c5565b60405161029a9190612332565b60405180910390f35b3480156102ae575f80fd5b506102b76106d7565b005b3480156102c4575f80fd5b506102df60048036038101906102da91906123f7565b610bfa565b005b3480156102ec575f80fd5b5061030760048036038101906103029190612447565b610ca8565b604051610314919061235a565b60405180910390f35b348015610328575f80fd5b50610331610cee565b005b34801561033e575f80fd5b50610347610e3c565b005b348015610354575f80fd5b5061035d610f87565b005b34801561036a575f80fd5b5061037361101f565b6040516103809190612481565b60405180910390f35b348015610394575f80fd5b5061039d611046565b6040516103aa9190612229565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d491906122da565b611083565b6040516103e69190612332565b60405180910390f35b3480156103fa575f80fd5b506104036110a0565b604051610410919061235a565b60405180910390f35b348015610424575f80fd5b5061042d6110a6565b60405161043a919061235a565b60405180910390f35b34801561044e575f80fd5b506104696004803603810190610464919061249a565b6110ac565b604051610476919061235a565b60405180910390f35b34801561048a575f80fd5b5061049361112e565b005b3480156104a0575f80fd5b506104a961113e565b6040516104b6919061235a565b60405180910390f35b60606040518060400160405280600881526020017f41494d4147494e45000000000000000000000000000000000000000000000000815250905090565b5f61050f610508611144565b848461114b565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661055a611144565b73ffffffffffffffffffffffffffffffffffffffff1614610579575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156105bc573d5f803e3d5ffd5b50565b60115481565b5f6009600a6105d49190612634565b64174876e8006105e4919061267e565b905090565b5f6105f584848461130e565b6106b284610601611144565b6106ad8560405180606001604052806028815260200161312a6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610664611144565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c8a9092919063ffffffff16565b61114b565b600190509392505050565b5f6009905090565b60055f9054906101000a900460ff1681565b6106df611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076290612709565b60405180910390fd5b601360149054906101000a900460ff16156107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b290612771565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108583060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6108439190612634565b64174876e800610853919061267e565b61114b565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e691906127a3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099091906127a3565b6040518363ffffffff1660e01b81526004016109ad9291906127ce565b6020604051808303815f875af11580156109c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ed91906127a3565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a7430610ca8565b5f80610a7e61101f565b426040518863ffffffff1660e01b8152600401610aa096959493929190612837565b60606040518083038185885af1158015610abc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ae191906128aa565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b819291906128fa565b6020604051808303815f875af1158015610b9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc1919061294b565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b610c02611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612709565b60405180910390fd5b826006819055508160078190555080600881905550505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cf6611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7990612709565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e44611144565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790612709565b60405180910390fd5b6009600a610ede9190612634565b64174876e800610eee919061267e565b600e819055506009600a610f029190612634565b64174876e800610f12919061267e565b600f819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610f609190612634565b64174876e800610f70919061267e565b604051610f7d919061235a565b60405180910390a1565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc8611144565b73ffffffffffffffffffffffffffffffffffffffff1614610fe7575f80fd5b5f610ff130610ca8565b90505f8111156110055761100481611cec565b5b5f4790505f81111561101b5761101a81611f57565b5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f41494d4700000000000000000000000000000000000000000000000000000000815250905090565b5f61109661108f611144565b848461130e565b6001905092915050565b60105481565b600f5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f47905061113b81611f57565b50565b600e5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906129e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612a74565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611301919061235a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390612b02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190612b90565b60405180910390fd5b5f811161142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390612c1e565b60405180910390fd5b5f61143561101f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114a3575061147361101f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119da576114e460646114d6600654600954116114c357600a546114c7565b600c545b85611fc090919063ffffffff16565b61203790919063ffffffff16565b905060055f9054906101000a900460ff161561166c5760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115a4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561166b574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161f90612cd2565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611715575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611768575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561182257600e548211156117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990612d3a565b60405180910390fd5b600f54826117bf85610ca8565b6117c99190612d58565b111561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190612dd5565b60405180910390fd5b60095f81548092919061181c90612df3565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118aa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118ee576118eb60646118dd600754600954116118ca57600b546118ce565b600d545b85611fc090919063ffffffff16565b61203790919063ffffffff16565b90505b5f6118f830610ca8565b9050601360159054906101000a900460ff16158015611963575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561197b5750601360169054906101000a900460ff165b8015611988575060105481115b80156119975750600854600954115b156119d8576119b96119b4846119af84601154612080565b612080565b611cec565b5f479050666a94d74f4300008111156119d6576119d547611f57565b5b505b505b5f811115611ad957611a328160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ad0919061235a565b60405180910390a35b611b298260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120f590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bcc611b8082846120f590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c6f84866120f590919063ffffffff16565b604051611c7c919061235a565b60405180910390a350505050565b5f838311158290611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc89190612229565b60405180910390fd5b505f8385611cdf9190612e3a565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d2357611d22612e6d565b5b604051908082528060200260200182016040528015611d515781602001602082028036833780820191505090505b50905030815f81518110611d6857611d67612e9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3091906127a3565b81600181518110611e4457611e43612e9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611eaa3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461114b565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f0c959493929190612f7e565b5f604051808303815f87803b158015611f23575f80fd5b505af1158015611f35573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fbc573d5f803e3d5ffd5b5050565b5f808303611fd0575f9050612031565b5f8284611fdd919061267e565b9050828482611fec9190613003565b1461202c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612023906130a3565b60405180910390fd5b809150505b92915050565b5f61207883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061213e565b905092915050565b5f81831161208e5782612090565b815b905092915050565b5f8082846120a69190612d58565b9050838110156120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e29061310b565b60405180910390fd5b8091505092915050565b5f61213683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8a565b905092915050565b5f8083118290612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b9190612229565b60405180910390fd5b505f83856121929190613003565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121d65780820151818401526020810190506121bb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121fb8261219f565b61220581856121a9565b93506122158185602086016121b9565b61221e816121e1565b840191505092915050565b5f6020820190508181035f83015261224181846121f1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122768261224d565b9050919050565b6122868161226c565b8114612290575f80fd5b50565b5f813590506122a18161227d565b92915050565b5f819050919050565b6122b9816122a7565b81146122c3575f80fd5b50565b5f813590506122d4816122b0565b92915050565b5f80604083850312156122f0576122ef612249565b5b5f6122fd85828601612293565b925050602061230e858286016122c6565b9150509250929050565b5f8115159050919050565b61232c81612318565b82525050565b5f6020820190506123455f830184612323565b92915050565b612354816122a7565b82525050565b5f60208201905061236d5f83018461234b565b92915050565b5f805f6060848603121561238a57612389612249565b5b5f61239786828701612293565b93505060206123a886828701612293565b92505060406123b9868287016122c6565b9150509250925092565b5f60ff82169050919050565b6123d8816123c3565b82525050565b5f6020820190506123f15f8301846123cf565b92915050565b5f805f6060848603121561240e5761240d612249565b5b5f61241b868287016122c6565b935050602061242c868287016122c6565b925050604061243d868287016122c6565b9150509250925092565b5f6020828403121561245c5761245b612249565b5b5f61246984828501612293565b91505092915050565b61247b8161226c565b82525050565b5f6020820190506124945f830184612472565b92915050565b5f80604083850312156124b0576124af612249565b5b5f6124bd85828601612293565b92505060206124ce85828601612293565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561255a57808604811115612536576125356124d8565b5b60018516156125455780820291505b808102905061255385612505565b945061251a565b94509492505050565b5f82612572576001905061262d565b8161257f575f905061262d565b8160018114612595576002811461259f576125ce565b600191505061262d565b60ff8411156125b1576125b06124d8565b5b8360020a9150848211156125c8576125c76124d8565b5b5061262d565b5060208310610133831016604e8410600b84101617156126035782820a9050838111156125fe576125fd6124d8565b5b61262d565b6126108484846001612511565b92509050818404811115612627576126266124d8565b5b81810290505b9392505050565b5f61263e826122a7565b9150612649836123c3565b92506126767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612563565b905092915050565b5f612688826122a7565b9150612693836122a7565b92508282026126a1816122a7565b915082820484148315176126b8576126b76124d8565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126f36020836121a9565b91506126fe826126bf565b602082019050919050565b5f6020820190508181035f830152612720816126e7565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61275b6017836121a9565b915061276682612727565b602082019050919050565b5f6020820190508181035f8301526127888161274f565b9050919050565b5f8151905061279d8161227d565b92915050565b5f602082840312156127b8576127b7612249565b5b5f6127c58482850161278f565b91505092915050565b5f6040820190506127e15f830185612472565b6127ee6020830184612472565b9392505050565b5f819050919050565b5f819050919050565b5f61282161281c612817846127f5565b6127fe565b6122a7565b9050919050565b61283181612807565b82525050565b5f60c08201905061284a5f830189612472565b612857602083018861234b565b6128646040830187612828565b6128716060830186612828565b61287e6080830185612472565b61288b60a083018461234b565b979650505050505050565b5f815190506128a4816122b0565b92915050565b5f805f606084860312156128c1576128c0612249565b5b5f6128ce86828701612896565b93505060206128df86828701612896565b92505060406128f086828701612896565b9150509250925092565b5f60408201905061290d5f830185612472565b61291a602083018461234b565b9392505050565b61292a81612318565b8114612934575f80fd5b50565b5f8151905061294581612921565b92915050565b5f602082840312156129605761295f612249565b5b5f61296d84828501612937565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129d06024836121a9565b91506129db82612976565b604082019050919050565b5f6020820190508181035f8301526129fd816129c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a5e6022836121a9565b9150612a6982612a04565b604082019050919050565b5f6020820190508181035f830152612a8b81612a52565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612aec6025836121a9565b9150612af782612a92565b604082019050919050565b5f6020820190508181035f830152612b1981612ae0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b7a6023836121a9565b9150612b8582612b20565b604082019050919050565b5f6020820190508181035f830152612ba781612b6e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c086029836121a9565b9150612c1382612bae565b604082019050919050565b5f6020820190508181035f830152612c3581612bfc565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f612cbc6049836121a9565b9150612cc782612c3c565b606082019050919050565b5f6020820190508181035f830152612ce981612cb0565b9050919050565b7f4578636565647320746865205f6d617854784c696d69742e00000000000000005f82015250565b5f612d246018836121a9565b9150612d2f82612cf0565b602082019050919050565b5f6020820190508181035f830152612d5181612d18565b9050919050565b5f612d62826122a7565b9150612d6d836122a7565b9250828201905080821115612d8557612d846124d8565b5b92915050565b7f4578636565647320746865205f6d6178546f6b656e486f6c64696e67732e00005f82015250565b5f612dbf601e836121a9565b9150612dca82612d8b565b602082019050919050565b5f6020820190508181035f830152612dec81612db3565b9050919050565b5f612dfd826122a7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e2f57612e2e6124d8565b5b600182019050919050565b5f612e44826122a7565b9150612e4f836122a7565b9250828203905081811115612e6757612e666124d8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ef98161226c565b82525050565b5f612f0a8383612ef0565b60208301905092915050565b5f602082019050919050565b5f612f2c82612ec7565b612f368185612ed1565b9350612f4183612ee1565b805f5b83811015612f71578151612f588882612eff565b9750612f6383612f16565b925050600181019050612f44565b5085935050505092915050565b5f60a082019050612f915f83018861234b565b612f9e6020830187612828565b8181036040830152612fb08186612f22565b9050612fbf6060830185612472565b612fcc608083018461234b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61300d826122a7565b9150613018836122a7565b92508261302857613027612fd6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61308d6021836121a9565b915061309882613033565b604082019050919050565b5f6020820190508181035f8301526130ba81613081565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130f5601b836121a9565b9150613100826130c1565b602082019050919050565b5f6020820190508181035f830152613122816130e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b876e736a5e655209425c02c47da5621e65528de90faaf5a69b77b3385ab22164736f6c63430008140033

Deployed Bytecode Sourcemap

3674:8347:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5488:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6321:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11106:144;;;;;;;;;;;;;:::i;:::-;;4776:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5765:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6490:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5674:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4015:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10418:679;;;;;;;;;;;;;:::i;:::-;;11258:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5868:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2755:148;;;;;;;;;;;;;:::i;:::-;;10121:189;;;;;;;;;;;;;:::i;:::-;;11533:350;;;;;;;;;;;;;:::i;:::-;;2541:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5579:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5995:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4709:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4641:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6170:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11891:127;;;;;;;;;;;;;:::i;:::-;;4579:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5488:83;5525:13;5558:5;;;;;;;;;;;;;;;;;5551:12;;5488:83;:::o;6321:161::-;6396:4;6413:39;6422:12;:10;:12::i;:::-;6436:7;6445:6;6413:8;:39::i;:::-;6470:4;6463:11;;6321:161;;;;:::o;11106:144::-;11171:8;;;;;;;;;;;11155:24;;:12;:10;:12::i;:::-;:24;;;11147:33;;;;;;11199:10;11191:28;;:51;11220:21;11191:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11106:144::o;4776:55::-;;;;:::o;5765:95::-;5818:7;4405:1;4463:2;:13;;;;:::i;:::-;4448:12;:28;;;;:::i;:::-;5838:14;;5765:95;:::o;6490:313::-;6588:4;6605:36;6615:6;6623:9;6634:6;6605:9;:36::i;:::-;6652:121;6661:6;6669:12;:10;:12::i;:::-;6683:89;6721:6;6683:89;;;;;;;;;;;;;;;;;:11;:19;6695:6;6683:19;;;;;;;;;;;;;;;:33;6703:12;:10;:12::i;:::-;6683:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6652:8;:121::i;:::-;6791:4;6784:11;;6490:313;;;;;:::o;5674:83::-;5715:5;4405:1;5733:16;;5674:83;:::o;4015:27::-;;;;;;;;;;;;;:::o;10418:679::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10488:12:::1;;;;;;;;;;;10487:13;10479:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10575:42;10538:15;;:80;;;;;;;;;;;;;;;;;;10629:58;10646:4;10661:15;;;;;;;;;;;4405:1;4463:2;:13;;;;:::i;:::-;4448:12;:28;;;;:::i;:::-;10629:8;:58::i;:::-;10732:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10714:55;;;10778:4;10785:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10714:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10698:13;;:110;;;;;;;;;;;;;;;;;;10819:15;;;;;;;;;;;:31;;;10858:21;10889:4;10895:24;10913:4;10895:9;:24::i;:::-;10920:1;10922::::0;10924:7:::1;:5;:7::i;:::-;10932:15;10819:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10966:13;;;;;;;;;;;10959:29;;;10997:15;;;;;;;;;;;11015:14;10959:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11055:4;11041:11;;:18;;;;;;;;;;;;;;;;;;11085:4;11070:12;;:19;;;;;;;;;;;;;;;;;;10418:679::o:0;11258:230::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11395:11:::1;11383:9;:23;;;;11429:11;11417:9;:23;;;;11466:14;11451:12;:29;;;;11258:230:::0;;;:::o;5868:119::-;5934:7;5961:9;:18;5971:7;5961:18;;;;;;;;;;;;;;;;5954:25;;5868:119;;;:::o;2755:148::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2862:1:::1;2825:40;;2846:6;::::0;::::1;;;;;;;;2825:40;;;;;;;;;;;;2893:1;2876:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2755:148::o:0;10121:189::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4405:1:::1;4463:2;:13;;;;:::i;:::-;4448:12;:28;;;;:::i;:::-;10177:11;:21;;;;4405:1;4463:2;:13;;;;:::i;:::-;4448:12;:28;;;;:::i;:::-;10209:17;:25;;;;10254:5;10245:8;;:14;;;;;;;;;;;;;;;;;;10275:27;4405:1;4463:2;:13;;;;:::i;:::-;4448:12;:28;;;;:::i;:::-;10275:27;;;;;;:::i;:::-;;;;;;;;10121:189::o:0;11533:350::-;11601:8;;;;;;;;;;;11587:22;;:12;:10;:12::i;:::-;:22;;;11579:31;;;;;;11621:20;11642:24;11660:4;11642:9;:24::i;:::-;11621:45;;11693:1;11680:12;:14;11677:73;;;11708:30;11725:12;11708:16;:30::i;:::-;11677:73;11760:18;11779:21;11760:40;;11825:1;11814:10;:12;11811:65;;;11840:24;11853:10;11840:12;:24::i;:::-;11811:65;11568:315;;11533:350::o;2541:79::-;2579:7;2606:6;;;;;;;;;;;2599:13;;2541:79;:::o;5579:87::-;5618:13;5651:7;;;;;;;;;;;;;;;;;5644:14;;5579:87;:::o;5995:167::-;6073:4;6090:42;6100:12;:10;:12::i;:::-;6114:9;6125:6;6090:9;:42::i;:::-;6150:4;6143:11;;5995:167;;;;:::o;4709:60::-;;;;:::o;4641:61::-;;;;:::o;6170:143::-;6251:7;6278:11;:18;6290:5;6278:18;;;;;;;;;;;;;;;:27;6297:7;6278:27;;;;;;;;;;;;;;;;6271:34;;6170:143;;;;:::o;11891:127::-;11933:18;11952:21;11933:40;;11986:24;11999:10;11986:12;:24::i;:::-;11922:96;11891:127::o;4579:55::-;;;;:::o;296:98::-;349:7;376:10;369:17;;296:98;:::o;6811:335::-;6921:1;6904:19;;:5;:19;;;6896:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7002:1;6983:21;;:7;:21;;;6975:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7084:6;7054:11;:18;7066:5;7054:18;;;;;;;;;;;;;;;:27;7073:7;7054:27;;;;;;;;;;;;;;;:36;;;;7122:7;7106:32;;7115:5;7106:32;;;7131:6;7106:32;;;;;;:::i;:::-;;;;;;;;6811:335;;;:::o;7154:2360::-;7258:1;7242:18;;:4;:18;;;7234:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7335:1;7321:16;;:2;:16;;;7313:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7405:1;7396:6;:10;7388:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7463:17;7505:7;:5;:7::i;:::-;7497:15;;:4;:15;;;;:32;;;;;7522:7;:5;:7::i;:::-;7516:13;;:2;:13;;;;7497:32;7493:1665;;;7558:59;7613:3;7558:50;7580:9;;7570;;:19;7569:38;;7600:7;;7569:38;;;7591:8;;7569:38;7558:6;:10;;:50;;;;:::i;:::-;:54;;:59;;;;:::i;:::-;7546:71;;7638:8;;;;;;;;;;;7634:496;;;7687:15;;;;;;;;;;;7673:30;;:2;:30;;;;:62;;;;;7721:13;;;;;;;;;;;7707:28;;:2;:28;;;;7673:62;7669:444;;;7871:12;7798:28;:39;7827:9;7798:39;;;;;;;;;;;;;;;;:85;7762:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8079:12;8037:28;:39;8066:9;8037:39;;;;;;;;;;;;;;;:54;;;;7669:444;7634:496;8158:13;;;;;;;;;;;8150:21;;:4;:21;;;:55;;;;;8189:15;;;;;;;;;;;8175:30;;:2;:30;;;;8150:55;:79;;;;;8211:14;:18;8226:2;8211:18;;;;;;;;;;;;;;;;;;;;;;;;;8209:20;8150:79;8146:314;;;8269:11;;8259:6;:21;;8251:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8362:17;;8352:6;8336:13;8346:2;8336:9;:13::i;:::-;:22;;;;:::i;:::-;:43;;8328:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8433:9;;:11;;;;;;;;;:::i;:::-;;;;;;8146:314;8485:13;;;;;;;;;;;8479:19;;:2;:19;;;:43;;;;;8517:4;8502:20;;:4;:20;;;;8479:43;8476:154;;;8555:59;8610:3;8555:50;8577:9;;8567;;:19;8566:38;;8597:7;;8566:38;;;8588:8;;8566:38;8555:6;:10;;:50;;;;:::i;:::-;:54;;:59;;;;:::i;:::-;8543:71;;8476:154;8646:28;8677:24;8695:4;8677:9;:24::i;:::-;8646:55;;8721:6;;;;;;;;;;;8720:7;:32;;;;;8739:13;;;;;;;;;;;8731:21;;:2;:21;;;8720:32;:47;;;;;8756:11;;;;;;;;;;;8720:47;:89;;;;;8792:17;;8771:20;:38;8720:89;:115;;;;;8823:12;;8813:9;;:22;8720:115;8716:431;;;8856:67;8873:49;8877:6;8884:37;8888:20;8909:11;;8884:3;:37::i;:::-;8873:3;:49::i;:::-;8856:16;:67::i;:::-;8942:26;8971:21;8942:50;;9035:17;9014:18;:38;9011:121;;;9077:35;9090:21;9077:12;:35::i;:::-;9011:121;8837:310;8716:431;7531:1627;7493:1665;9183:1;9173:9;:11;9170:161;;;9223:39;9252:9;9223;:24;9241:4;9223:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9198:9;:24;9216:4;9198:24;;;;;;;;;;;;;;;:64;;;;9303:4;9280:39;;9289:4;9280:39;;;9309:9;9280:39;;;;;;:::i;:::-;;;;;;;;9170:161;9357:27;9377:6;9357:9;:15;9367:4;9357:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9341:9;:15;9351:4;9341:15;;;;;;;;;;;;;;;:43;;;;9409:40;9427:21;9438:9;9427:6;:10;;:21;;;;:::i;:::-;9409:9;:13;9419:2;9409:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9395:9;:13;9405:2;9395:13;;;;;;;;;;;;;;;:54;;;;9480:2;9465:41;;9474:4;9465:41;;;9484:21;9495:9;9484:6;:10;;:21;;;;:::i;:::-;9465:41;;;;;;:::i;:::-;;;;;;;;7223:2291;7154:2360;;;:::o;1433:190::-;1519:7;1552:1;1547;:6;;1555:12;1539:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1579:9;1595:1;1591;:5;;;;:::i;:::-;1579:17;;1614:1;1607:8;;;1433:190;;;;;:::o;9630:483::-;5122:4;5113:6;;:13;;;;;;;;;;;;;;;;;;9708:21:::1;9746:1;9732:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9708:40;;9777:4;9759;9764:1;9759:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9803:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9793:4;9798:1;9793:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9836:62;9853:4;9868:15;;;;;;;;;;;9886:11;9836:8;:62::i;:::-;9909:15;;;;;;;;;;;:66;;;9990:11;10016:1;10032:4;10059;10079:15;9909:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9697:416;5158:5:::0;5149:6;;:14;;;;;;;;;;;;;;;;;;9630:483;:::o;10318:90::-;10375:8;;;;;;;;;;;:17;;:25;10393:6;10375:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10318:90;:::o;1631:246::-;1689:7;1718:1;1713;:6;1709:47;;1743:1;1736:8;;;;1709:47;1766:9;1782:1;1778;:5;;;;:::i;:::-;1766:17;;1811:1;1806;1802;:5;;;;:::i;:::-;:10;1794:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1868:1;1861:8;;;1631:246;;;;;:::o;1885:132::-;1943:7;1970:39;1974:1;1977;1970:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1963:46;;1885:132;;;;:::o;9524:98::-;9581:7;9608:1;9606;:3;9605:9;;9613:1;9605:9;;;9611:1;9605:9;9598:16;;9524:98;;;;:::o;1102:179::-;1160:7;1180:9;1196:1;1192;:5;;;;:::i;:::-;1180:17;;1221:1;1216;:6;;1208:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1272:1;1265:8;;;1102:179;;;;:::o;1289:136::-;1347:7;1374:43;1378:1;1381;1374:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1367:50;;1289:136;;;;:::o;2025:189::-;2111:7;2143:1;2139;:5;2146:12;2131:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2170:9;2186:1;2182;:5;;;;:::i;:::-;2170:17;;2205:1;2198:8;;;2025:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423: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:619::-;4930:6;4938;4946;4995:2;4983:9;4974:7;4970:23;4966:32;4963:119;;;5001:79;;:::i;:::-;4963:119;5121:1;5146:53;5191:7;5182:6;5171:9;5167:22;5146:53;:::i;:::-;5136:63;;5092:117;5248:2;5274:53;5319:7;5310:6;5299:9;5295:22;5274:53;:::i;:::-;5264:63;;5219:118;5376:2;5402:53;5447:7;5438:6;5427:9;5423:22;5402:53;:::i;:::-;5392:63;;5347:118;4853:619;;;;;:::o;5478:329::-;5537:6;5586:2;5574:9;5565:7;5561:23;5557:32;5554:119;;;5592:79;;:::i;:::-;5554:119;5712:1;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5683:117;5478:329;;;;:::o;5813:118::-;5900:24;5918:5;5900:24;:::i;:::-;5895:3;5888:37;5813:118;;:::o;5937:222::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:71;6149:1;6138:9;6134:17;6125:6;6081:71;:::i;:::-;5937:222;;;;:::o;6165:474::-;6233:6;6241;6290:2;6278:9;6269:7;6265:23;6261:32;6258:119;;;6296:79;;:::i;:::-;6258:119;6416:1;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6387:117;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6165:474;;;;;:::o;6645:180::-;6693:77;6690:1;6683:88;6790:4;6787:1;6780:15;6814:4;6811:1;6804:15;6831:102;6873:8;6920:5;6917:1;6913:13;6892:34;;6831:102;;;:::o;6939:848::-;7000:5;7007:4;7031:6;7022:15;;7055:5;7046:14;;7069:712;7090:1;7080:8;7077:15;7069:712;;;7185:4;7180:3;7176:14;7170:4;7167:24;7164:50;;;7194:18;;:::i;:::-;7164:50;7244:1;7234:8;7230:16;7227:451;;;7659:4;7652:5;7648:16;7639:25;;7227:451;7709:4;7703;7699:15;7691:23;;7739:32;7762:8;7739:32;:::i;:::-;7727:44;;7069:712;;;6939:848;;;;;;;:::o;7793:1073::-;7847:5;8038:8;8028:40;;8059:1;8050:10;;8061:5;;8028:40;8087:4;8077:36;;8104:1;8095:10;;8106:5;;8077:36;8173:4;8221:1;8216:27;;;;8257:1;8252:191;;;;8166:277;;8216:27;8234:1;8225:10;;8236:5;;;8252:191;8297:3;8287:8;8284:17;8281:43;;;8304:18;;:::i;:::-;8281:43;8353:8;8350:1;8346:16;8337:25;;8388:3;8381:5;8378:14;8375:40;;;8395:18;;:::i;:::-;8375:40;8428:5;;;8166:277;;8552:2;8542:8;8539:16;8533:3;8527:4;8524:13;8520:36;8502:2;8492:8;8489:16;8484:2;8478:4;8475:12;8471:35;8455:111;8452:246;;;8608:8;8602:4;8598:19;8589:28;;8643:3;8636:5;8633:14;8630:40;;;8650:18;;:::i;:::-;8630:40;8683:5;;8452:246;8723:42;8761:3;8751:8;8745:4;8742:1;8723:42;:::i;:::-;8708:57;;;;8797:4;8792:3;8788:14;8781:5;8778:25;8775:51;;;8806:18;;:::i;:::-;8775:51;8855:4;8848:5;8844:16;8835:25;;7793:1073;;;;;;:::o;8872:281::-;8930:5;8954:23;8972:4;8954:23;:::i;:::-;8946:31;;8998:25;9014:8;8998:25;:::i;:::-;8986:37;;9042:104;9079:66;9069:8;9063:4;9042:104;:::i;:::-;9033:113;;8872:281;;;;:::o;9159:410::-;9199:7;9222:20;9240:1;9222:20;:::i;:::-;9217:25;;9256:20;9274:1;9256:20;:::i;:::-;9251:25;;9311:1;9308;9304:9;9333:30;9351:11;9333:30;:::i;:::-;9322:41;;9512:1;9503:7;9499:15;9496:1;9493:22;9473:1;9466:9;9446:83;9423:139;;9542:18;;:::i;:::-;9423:139;9207:362;9159:410;;;;:::o;9575:182::-;9715:34;9711:1;9703:6;9699:14;9692:58;9575:182;:::o;9763:366::-;9905:3;9926:67;9990:2;9985:3;9926:67;:::i;:::-;9919:74;;10002:93;10091:3;10002:93;:::i;:::-;10120:2;10115:3;10111:12;10104:19;;9763:366;;;:::o;10135:419::-;10301:4;10339:2;10328:9;10324:18;10316:26;;10388:9;10382:4;10378:20;10374:1;10363:9;10359:17;10352:47;10416:131;10542:4;10416:131;:::i;:::-;10408:139;;10135:419;;;:::o;10560:173::-;10700:25;10696:1;10688:6;10684:14;10677:49;10560:173;:::o;10739:366::-;10881:3;10902:67;10966:2;10961:3;10902:67;:::i;:::-;10895:74;;10978:93;11067:3;10978:93;:::i;:::-;11096:2;11091:3;11087:12;11080:19;;10739:366;;;:::o;11111:419::-;11277:4;11315:2;11304:9;11300:18;11292:26;;11364:9;11358:4;11354:20;11350:1;11339:9;11335:17;11328:47;11392:131;11518:4;11392:131;:::i;:::-;11384:139;;11111:419;;;:::o;11536:143::-;11593:5;11624:6;11618:13;11609:22;;11640:33;11667:5;11640:33;:::i;:::-;11536:143;;;;:::o;11685:351::-;11755:6;11804:2;11792:9;11783:7;11779:23;11775:32;11772:119;;;11810:79;;:::i;:::-;11772:119;11930:1;11955:64;12011:7;12002:6;11991:9;11987:22;11955:64;:::i;:::-;11945:74;;11901:128;11685:351;;;;:::o;12042:332::-;12163:4;12201:2;12190:9;12186:18;12178:26;;12214:71;12282:1;12271:9;12267:17;12258:6;12214:71;:::i;:::-;12295:72;12363:2;12352:9;12348:18;12339:6;12295:72;:::i;:::-;12042:332;;;;;:::o;12380:85::-;12425:7;12454:5;12443:16;;12380:85;;;:::o;12471:60::-;12499:3;12520:5;12513:12;;12471:60;;;:::o;12537:158::-;12595:9;12628:61;12646:42;12655:32;12681:5;12655:32;:::i;:::-;12646:42;:::i;:::-;12628:61;:::i;:::-;12615:74;;12537:158;;;:::o;12701:147::-;12796:45;12835:5;12796:45;:::i;:::-;12791:3;12784:58;12701:147;;:::o;12854:807::-;13103:4;13141:3;13130:9;13126:19;13118:27;;13155:71;13223:1;13212:9;13208:17;13199:6;13155:71;:::i;:::-;13236:72;13304:2;13293:9;13289:18;13280:6;13236:72;:::i;:::-;13318:80;13394:2;13383:9;13379:18;13370:6;13318:80;:::i;:::-;13408;13484:2;13473:9;13469:18;13460:6;13408:80;:::i;:::-;13498:73;13566:3;13555:9;13551:19;13542:6;13498:73;:::i;:::-;13581;13649:3;13638:9;13634:19;13625:6;13581:73;:::i;:::-;12854:807;;;;;;;;;:::o;13667:143::-;13724:5;13755:6;13749:13;13740:22;;13771:33;13798:5;13771:33;:::i;:::-;13667:143;;;;:::o;13816:663::-;13904:6;13912;13920;13969:2;13957:9;13948:7;13944:23;13940:32;13937:119;;;13975:79;;:::i;:::-;13937:119;14095:1;14120:64;14176:7;14167:6;14156:9;14152:22;14120:64;:::i;:::-;14110:74;;14066:128;14233:2;14259:64;14315:7;14306:6;14295:9;14291:22;14259:64;:::i;:::-;14249:74;;14204:129;14372:2;14398:64;14454:7;14445:6;14434:9;14430:22;14398:64;:::i;:::-;14388:74;;14343:129;13816:663;;;;;:::o;14485:332::-;14606:4;14644:2;14633:9;14629:18;14621:26;;14657:71;14725:1;14714:9;14710:17;14701:6;14657:71;:::i;:::-;14738:72;14806:2;14795:9;14791:18;14782:6;14738:72;:::i;:::-;14485:332;;;;;:::o;14823:116::-;14893:21;14908:5;14893:21;:::i;:::-;14886:5;14883:32;14873:60;;14929:1;14926;14919:12;14873:60;14823:116;:::o;14945:137::-;14999:5;15030:6;15024:13;15015:22;;15046:30;15070:5;15046:30;:::i;:::-;14945:137;;;;:::o;15088:345::-;15155:6;15204:2;15192:9;15183:7;15179:23;15175:32;15172:119;;;15210:79;;:::i;:::-;15172:119;15330:1;15355:61;15408:7;15399:6;15388:9;15384:22;15355:61;:::i;:::-;15345:71;;15301:125;15088:345;;;;:::o;15439:223::-;15579:34;15575:1;15567:6;15563:14;15556:58;15648:6;15643:2;15635:6;15631:15;15624:31;15439:223;:::o;15668:366::-;15810:3;15831:67;15895:2;15890:3;15831:67;:::i;:::-;15824:74;;15907:93;15996:3;15907:93;:::i;:::-;16025:2;16020:3;16016:12;16009:19;;15668:366;;;:::o;16040:419::-;16206:4;16244:2;16233:9;16229:18;16221:26;;16293:9;16287:4;16283:20;16279:1;16268:9;16264:17;16257:47;16321:131;16447:4;16321:131;:::i;:::-;16313:139;;16040:419;;;:::o;16465:221::-;16605:34;16601:1;16593:6;16589:14;16582:58;16674:4;16669:2;16661:6;16657:15;16650:29;16465:221;:::o;16692:366::-;16834:3;16855:67;16919:2;16914:3;16855:67;:::i;:::-;16848:74;;16931:93;17020:3;16931:93;:::i;:::-;17049:2;17044:3;17040:12;17033:19;;16692:366;;;:::o;17064:419::-;17230:4;17268:2;17257:9;17253:18;17245:26;;17317:9;17311:4;17307:20;17303:1;17292:9;17288:17;17281:47;17345:131;17471:4;17345:131;:::i;:::-;17337:139;;17064:419;;;:::o;17489:224::-;17629:34;17625:1;17617:6;17613:14;17606:58;17698:7;17693:2;17685:6;17681:15;17674:32;17489:224;:::o;17719:366::-;17861:3;17882:67;17946:2;17941:3;17882:67;:::i;:::-;17875:74;;17958:93;18047:3;17958:93;:::i;:::-;18076:2;18071:3;18067:12;18060:19;;17719:366;;;:::o;18091:419::-;18257:4;18295:2;18284:9;18280:18;18272:26;;18344:9;18338:4;18334:20;18330:1;18319:9;18315:17;18308:47;18372:131;18498:4;18372:131;:::i;:::-;18364:139;;18091:419;;;:::o;18516:222::-;18656:34;18652:1;18644:6;18640:14;18633:58;18725:5;18720:2;18712:6;18708:15;18701:30;18516:222;:::o;18744:366::-;18886:3;18907:67;18971:2;18966:3;18907:67;:::i;:::-;18900:74;;18983:93;19072:3;18983:93;:::i;:::-;19101:2;19096:3;19092:12;19085:19;;18744:366;;;:::o;19116:419::-;19282:4;19320:2;19309:9;19305:18;19297:26;;19369:9;19363:4;19359:20;19355:1;19344:9;19340:17;19333:47;19397:131;19523:4;19397:131;:::i;:::-;19389:139;;19116:419;;;:::o;19541:228::-;19681:34;19677:1;19669:6;19665:14;19658:58;19750:11;19745:2;19737:6;19733:15;19726:36;19541:228;:::o;19775:366::-;19917:3;19938:67;20002:2;19997:3;19938:67;:::i;:::-;19931:74;;20014:93;20103:3;20014:93;:::i;:::-;20132:2;20127:3;20123:12;20116:19;;19775:366;;;:::o;20147:419::-;20313:4;20351:2;20340:9;20336:18;20328:26;;20400:9;20394:4;20390:20;20386:1;20375:9;20371:17;20364:47;20428:131;20554:4;20428:131;:::i;:::-;20420:139;;20147:419;;;:::o;20572:297::-;20712:34;20708:1;20700:6;20696:14;20689:58;20781:34;20776:2;20768:6;20764:15;20757:59;20850:11;20845:2;20837:6;20833:15;20826:36;20572:297;:::o;20875:366::-;21017:3;21038:67;21102:2;21097:3;21038:67;:::i;:::-;21031:74;;21114:93;21203:3;21114:93;:::i;:::-;21232:2;21227:3;21223:12;21216:19;;20875:366;;;:::o;21247:419::-;21413:4;21451:2;21440:9;21436:18;21428:26;;21500:9;21494:4;21490:20;21486:1;21475:9;21471:17;21464:47;21528:131;21654:4;21528:131;:::i;:::-;21520:139;;21247:419;;;:::o;21672:174::-;21812:26;21808:1;21800:6;21796:14;21789:50;21672:174;:::o;21852:366::-;21994:3;22015:67;22079:2;22074:3;22015:67;:::i;:::-;22008:74;;22091:93;22180:3;22091:93;:::i;:::-;22209:2;22204:3;22200:12;22193:19;;21852:366;;;:::o;22224:419::-;22390:4;22428:2;22417:9;22413:18;22405:26;;22477:9;22471:4;22467:20;22463:1;22452:9;22448:17;22441:47;22505:131;22631:4;22505:131;:::i;:::-;22497:139;;22224:419;;;:::o;22649:191::-;22689:3;22708:20;22726:1;22708:20;:::i;:::-;22703:25;;22742:20;22760:1;22742:20;:::i;:::-;22737:25;;22785:1;22782;22778:9;22771:16;;22806:3;22803:1;22800:10;22797:36;;;22813:18;;:::i;:::-;22797:36;22649:191;;;;:::o;22846:180::-;22986:32;22982:1;22974:6;22970:14;22963:56;22846:180;:::o;23032:366::-;23174:3;23195:67;23259:2;23254:3;23195:67;:::i;:::-;23188:74;;23271:93;23360:3;23271:93;:::i;:::-;23389:2;23384:3;23380:12;23373:19;;23032:366;;;:::o;23404:419::-;23570:4;23608:2;23597:9;23593:18;23585:26;;23657:9;23651:4;23647:20;23643:1;23632:9;23628:17;23621:47;23685:131;23811:4;23685:131;:::i;:::-;23677:139;;23404:419;;;:::o;23829:233::-;23868:3;23891:24;23909:5;23891:24;:::i;:::-;23882:33;;23937:66;23930:5;23927:77;23924:103;;24007:18;;:::i;:::-;23924:103;24054:1;24047:5;24043:13;24036:20;;23829:233;;;:::o;24068:194::-;24108:4;24128:20;24146:1;24128:20;:::i;:::-;24123:25;;24162:20;24180:1;24162:20;:::i;:::-;24157:25;;24206:1;24203;24199:9;24191:17;;24230:1;24224:4;24221:11;24218:37;;;24235:18;;:::i;:::-;24218:37;24068:194;;;;:::o;24268:180::-;24316:77;24313:1;24306:88;24413:4;24410:1;24403:15;24437:4;24434:1;24427:15;24454:180;24502:77;24499:1;24492:88;24599:4;24596:1;24589:15;24623:4;24620:1;24613:15;24640:114;24707:6;24741:5;24735:12;24725:22;;24640:114;;;:::o;24760:184::-;24859:11;24893:6;24888:3;24881:19;24933:4;24928:3;24924:14;24909:29;;24760:184;;;;:::o;24950:132::-;25017:4;25040:3;25032:11;;25070:4;25065:3;25061:14;25053:22;;24950:132;;;:::o;25088:108::-;25165:24;25183:5;25165:24;:::i;:::-;25160:3;25153:37;25088:108;;:::o;25202:179::-;25271:10;25292:46;25334:3;25326:6;25292:46;:::i;:::-;25370:4;25365:3;25361:14;25347:28;;25202:179;;;;:::o;25387:113::-;25457:4;25489;25484:3;25480:14;25472:22;;25387:113;;;:::o;25536:732::-;25655:3;25684:54;25732:5;25684:54;:::i;:::-;25754:86;25833:6;25828:3;25754:86;:::i;:::-;25747:93;;25864:56;25914:5;25864:56;:::i;:::-;25943:7;25974:1;25959:284;25984:6;25981:1;25978:13;25959:284;;;26060:6;26054:13;26087:63;26146:3;26131:13;26087:63;:::i;:::-;26080:70;;26173:60;26226:6;26173:60;:::i;:::-;26163:70;;26019:224;26006:1;26003;25999:9;25994:14;;25959:284;;;25963:14;26259:3;26252:10;;25660:608;;;25536:732;;;;:::o;26274:831::-;26537:4;26575:3;26564:9;26560:19;26552:27;;26589:71;26657:1;26646:9;26642:17;26633:6;26589:71;:::i;:::-;26670:80;26746:2;26735:9;26731:18;26722:6;26670:80;:::i;:::-;26797:9;26791:4;26787:20;26782:2;26771:9;26767:18;26760:48;26825:108;26928:4;26919:6;26825:108;:::i;:::-;26817:116;;26943:72;27011:2;27000:9;26996:18;26987:6;26943:72;:::i;:::-;27025:73;27093:3;27082:9;27078:19;27069:6;27025:73;:::i;:::-;26274:831;;;;;;;;:::o;27111:180::-;27159:77;27156:1;27149:88;27256:4;27253:1;27246:15;27280:4;27277:1;27270:15;27297:185;27337:1;27354:20;27372:1;27354:20;:::i;:::-;27349:25;;27388:20;27406:1;27388:20;:::i;:::-;27383:25;;27427:1;27417:35;;27432:18;;:::i;:::-;27417:35;27474:1;27471;27467:9;27462:14;;27297:185;;;;:::o;27488:220::-;27628:34;27624:1;27616:6;27612:14;27605:58;27697:3;27692:2;27684:6;27680:15;27673:28;27488:220;:::o;27714:366::-;27856:3;27877:67;27941:2;27936:3;27877:67;:::i;:::-;27870:74;;27953:93;28042:3;27953:93;:::i;:::-;28071:2;28066:3;28062:12;28055:19;;27714:366;;;:::o;28086:419::-;28252:4;28290:2;28279:9;28275:18;28267:26;;28339:9;28333:4;28329:20;28325:1;28314:9;28310:17;28303:47;28367:131;28493:4;28367:131;:::i;:::-;28359:139;;28086:419;;;:::o;28511:177::-;28651:29;28647:1;28639:6;28635:14;28628:53;28511:177;:::o;28694:366::-;28836:3;28857:67;28921:2;28916:3;28857:67;:::i;:::-;28850:74;;28933:93;29022:3;28933:93;:::i;:::-;29051:2;29046:3;29042:12;29035:19;;28694:366;;;:::o;29066:419::-;29232:4;29270:2;29259:9;29255:18;29247:26;;29319:9;29313:4;29309:20;29305:1;29294:9;29290:17;29283:47;29347:131;29473:4;29347:131;:::i;:::-;29339:139;;29066:419;;;:::o

Swarm Source

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