ETH Price: $3,892.57 (+7.86%)

Token

FLEABONE (BONE)
 

Overview

Max Total Supply

420,690,000,000 BONE

Holders

1,052 ( 0.285%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000393 BONE

Value
$0.00
0x0c514383a91d723c5bd806340a5a4e6b360866e0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Fleabone is the Dog Main Character in Matt Furie's previously undiscovered 11-minute animated TV Pilot.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BONE

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-15
*/

// SPDX-License-Identifier: UNLICENSE
// This token was deployed on Telegram Using @TitanDeployerBot
/*
Telegram: https://t.me/fleabone_eth
X: https://x.com/fleabone_eth
Website: https://fleabone.com/
Instagram: https://www.instagram.com/fleaboneeth
Youtube : https://www.youtube.com/@fleabone_eth
*/

pragma solidity 0.8.23;

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 BONE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=18;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=1;
    uint256 private _reduceSellTaxAt=1;
    uint256 private _preventSwapBefore=1;
    uint256 private _transferTax=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"FLEABONE";
    string private constant _symbol = unicode"BONE";
    uint256 public _maxTxAmount = 6310350000 * 10**_decimals;                            
    uint256 public _maxWalletSize = 6310350000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event OpenTrade(address indexed owner, uint256 timestamp);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = 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 getTaxDetails() public view returns (
        uint256 initialBuyTax,
        uint256 initialSellTax,
        uint256 finalBuyTax,
        uint256 finalSellTax,
        uint256 transferTax
        ) {
            return (
                _initialBuyTax,
                _initialSellTax,
                _finalBuyTax,
                _finalSellTax,
                _transferTax
            );
    }

    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() && to != _taxWallet) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        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 removeLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTranTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

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

    function addBot(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrade() external onlyOwner() {
        require(!tradingOpen,"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;
        tradingOpen = true;

        emit OpenTrade(owner(), block.timestamp);
    }

    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OpenTrade","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTaxDetails","outputs":[{"internalType":"uint256","name":"initialBuyTax","type":"uint256"},{"internalType":"uint256","name":"initialSellTax","type":"uint256"},{"internalType":"uint256","name":"finalBuyTax","type":"uint256"},{"internalType":"uint256","name":"finalSellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTranTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601260065560146007555f6008555f6009556001600a556001600b556001600c556014600d555f600e556009600a6200003e919062000601565b640178204cb062000050919062000651565b600f556009600a62000063919062000601565b640178204cb062000075919062000651565b6010556009600a62000088919062000601565b620f424062000098919062000651565b6011556009600a620000ab919062000601565b62989680620000bb919062000651565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f60165534801562000106575f80fd5b505f620001186200044160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001c46200044160201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000213919062000601565b6461f313f88062000225919062000651565b60015f620002386200044160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200028a6200044860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003b46200044160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000412919062000601565b6461f313f88062000424919062000651565b604051620004339190620006ac565b60405180910390a3620006c7565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004f957808604811115620004d157620004d06200046f565b5b6001851615620004e15780820291505b8081029050620004f1856200049c565b9450620004b1565b94509492505050565b5f82620005135760019050620005e5565b8162000522575f9050620005e5565b81600181146200053b576002811462000546576200057c565b6001915050620005e5565b60ff8411156200055b576200055a6200046f565b5b8360020a9150848211156200057557620005746200046f565b5b50620005e5565b5060208310610133831016604e8410600b8410161715620005b65782820a905083811115620005b057620005af6200046f565b5b620005e5565b620005c58484846001620004a8565b92509050818404811115620005df57620005de6200046f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060d82620005ec565b91506200061a83620005f5565b9250620006497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000502565b905092915050565b5f6200065d82620005ec565b91506200066a83620005ec565b92508282026200067a81620005ec565b915082820484148315176200069457620006936200046f565b5b5092915050565b620006a681620005ec565b82525050565b5f602082019050620006c15f8301846200069b565b92915050565b6139a680620006d55f395ff3fe608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610533578063ec1f3f631461056f578063fb201b1d14610597578063ffb54a99146105ad5761018b565b8063a9059cbb146104a5578063bf474bed146104e1578063c97c18211461050b5761018b565b8063715018a6146103bf5780637d1db4a5146103d55780638cd4426d146103ff5780638da5cb5b146104275780638f9a55c01461045157806395d89b411461047b5761018b565b806321bbcbb11161013d5780633bbac579116101175780633bbac5791461031b57806351bc3c8514610357578063622565891461036d57806370a08231146103835761018b565b806321bbcbb11461028d57806323b872dd146102b5578063313ce567146102f15761018b565b806302fa1f4a1461018f57806306fdde03146101a5578063095ea7b3146101cf5780630faee56f1461020b57806318160ddd146102355780631fee58941461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d7565b005b3480156101b0575f80fd5b506101b96106ab565b6040516101c69190612844565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f09190612902565b6106e8565b604051610202919061295a565b60405180910390f35b348015610216575f80fd5b5061021f610705565b60405161022c9190612982565b60405180910390f35b348015610240575f80fd5b5061024961070b565b6040516102569190612982565b60405180910390f35b34801561026a575f80fd5b5061027361072f565b60405161028495949392919061299b565b60405180910390f35b348015610298575f80fd5b506102b360048036038101906102ae9190612b2c565b610754565b005b3480156102c0575f80fd5b506102db60048036038101906102d69190612b73565b610873565b6040516102e8919061295a565b60405180910390f35b3480156102fc575f80fd5b50610305610947565b6040516103129190612bde565b60405180910390f35b348015610326575f80fd5b50610341600480360381019061033c9190612bf7565b61094f565b60405161034e919061295a565b60405180910390f35b348015610362575f80fd5b5061036b6109a1565b005b348015610378575f80fd5b50610381610a50565b005b34801561038e575f80fd5b506103a960048036038101906103a49190612bf7565b610b82565b6040516103b69190612982565b60405180910390f35b3480156103ca575f80fd5b506103d3610bc8565b005b3480156103e0575f80fd5b506103e9610d16565b6040516103f69190612982565b60405180910390f35b34801561040a575f80fd5b5061042560048036038101906104209190612902565b610d1c565b005b348015610432575f80fd5b5061043b610ebd565b6040516104489190612c31565b60405180910390f35b34801561045c575f80fd5b50610465610ee4565b6040516104729190612982565b60405180910390f35b348015610486575f80fd5b5061048f610eea565b60405161049c9190612844565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612902565b610f27565b6040516104d8919061295a565b60405180910390f35b3480156104ec575f80fd5b506104f5610f44565b6040516105029190612982565b60405180910390f35b348015610516575f80fd5b50610531600480360381019061052c9190612b2c565b610f4a565b005b34801561053e575f80fd5b5061055960048036038101906105549190612c4a565b611068565b6040516105669190612982565b60405180910390f35b34801561057a575f80fd5b5061059560048036038101906105909190612c88565b6110ea565b005b3480156105a2575f80fd5b506105ab611176565b005b3480156105b8575f80fd5b506105c16116eb565b6040516105ce919061295a565b60405180910390f35b6105df6116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290612cfd565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106a19190612d5d565b60405180910390a1565b60606040518060400160405280600881526020017f464c4541424f4e45000000000000000000000000000000000000000000000000815250905090565b5f6106fb6106f46116fc565b8484611703565b6001905092915050565b60125481565b5f6009600a61071a9190612ed2565b6461f313f88061072a9190612f1c565b905090565b5f805f805f600654600754600854600954600d54945094509450945094509091929394565b61075c6116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cfd565b60405180910390fd5b5f5b815181101561086f57600160045f84848151811061080b5761080a612f5d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107ea565b5050565b5f61087f8484846118c6565b61093c8461088b6116fc565b610937856040518060600160405280602881526020016139496028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108ee6116fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a69092919063ffffffff16565b611703565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e16116fc565b73ffffffffffffffffffffffffffffffffffffffff1614610a00575f80fd5b5f610a0a30610b82565b90505f81118015610a275750601460169054906101000a900460ff165b15610a3657610a3581612308565b5b5f4790505f811115610a4c57610a4b81612573565b5b5050565b610a586116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90612cfd565b60405180910390fd5b6009600a610af29190612ed2565b6461f313f880610b029190612f1c565b600f819055506009600a610b169190612ed2565b6461f313f880610b269190612f1c565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b5b9190612ed2565b6461f313f880610b6b9190612f1c565b604051610b789190612982565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bd06116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5390612cfd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d5c6116fc565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b575f80fd5b5f610e196064610e0b848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dbe9190612c31565b602060405180830381865afa158015610dd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dfd9190612f9e565b6125db90919063ffffffff16565b61265290919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e7792919061301b565b6020604051808303815f875af1158015610e93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb7919061306c565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f424f4e4500000000000000000000000000000000000000000000000000000000815250905090565b5f610f3a610f336116fc565b84846118c6565b6001905092915050565b60115481565b610f526116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590612cfd565b60405180910390fd5b5f5b8151811015611064575f60045f84848151811061100057610fff612f5d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fe0565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661112a6116fc565b73ffffffffffffffffffffffffffffffffffffffff1614611149575f80fd5b600854811115801561115d57506009548111155b611165575f80fd5b806008819055508060098190555050565b61117e6116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190612cfd565b60405180910390fd5b60148054906101000a900460ff1615611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f906130e1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f53060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6112e09190612ed2565b6461f313f8806112f09190612f1c565b611703565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113839190613113565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142d9190613113565b6040518363ffffffff1660e01b815260040161144a92919061313e565b6020604051808303815f875af1158015611466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148a9190613113565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061151130610b82565b5f8061151b610ebd565b426040518863ffffffff1660e01b815260040161153d96959493929190613165565b60606040518083038185885af1158015611559573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157e91906131c4565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161161e929190613214565b6020604051808303815f875af115801561163a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165e919061306c565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555061169c610ebd565b73ffffffffffffffffffffffffffffffffffffffff167ff9ca0f11181041c16343c0e2d0e0c3cf66188e39b033ab29e2fe6f0f84374a36426040516116e19190612982565b60405180910390a2565b60148054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611768906132ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613339565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118b99190612982565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b906133c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613455565b60405180910390fd5b5f81116119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db906134e3565b60405180910390fd5b5f6119ed610ebd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a5b5750611a2b610ebd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ab4575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff65760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b57575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b5f575f80fd5b5f600e5403611ba757611ba46064611b96600a54600e5411611b8357600654611b87565b6008545b856125db90919063ffffffff16565b61265290919063ffffffff16565b90505b5f600e541115611bdc57611bd96064611bcb600d54856125db90919063ffffffff16565b61265290919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c85575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dd057600f54821115611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061354b565b60405180910390fd5b60105482611d2f85610b82565b611d399190613569565b1115611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d71906135e6565b60405180910390fd5b611db66064611da8600a54600e5411611d9557600654611d99565b6008545b856125db90919063ffffffff16565b61265290919063ffffffff16565b9050600e5f815480929190611dca90613604565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9c57611e996064611e8b600b54600e5411611e7857600754611e7c565b6009545b856125db90919063ffffffff16565b61265290919063ffffffff16565b90505b5f611ea630610b82565b9050601460159054906101000a900460ff16158015611f11575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f295750601460169054906101000a900460ff165b8015611f36575060115481115b8015611f455750600c54600e54115b15611ff457601654431115611f5c575f6015819055505b600360155410611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613695565b60405180910390fd5b611fbe611fb984611fb48460125461269b565b61269b565b612308565b5f4790505f811115611fd457611fd347612573565b5b60155f815480929190611fe690613604565b919050555043601681905550505b505b5f8111156120f55761204e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ec9190612982565b60405180910390a35b6121458260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461271090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e861219c828461271090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61228b848661271090919063ffffffff16565b6040516122989190612982565b60405180910390a350505050565b5f8383111582906122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e49190612844565b60405180910390fd5b505f83856122fb91906136b3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233f5761233e6129f0565b5b60405190808252806020026020018201604052801561236d5781602001602082028036833780820191505090505b50905030815f8151811061238457612383612f5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612428573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244c9190613113565b816001815181106124605761245f612f5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c63060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611703565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161252895949392919061379d565b5f604051808303815f87803b15801561253f575f80fd5b505af1158015612551573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125d7573d5f803e3d5ffd5b5050565b5f8083036125eb575f905061264c565b5f82846125f89190612f1c565b90508284826126079190613822565b14612647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263e906138c2565b60405180910390fd5b809150505b92915050565b5f61269383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612759565b905092915050565b5f8183116126a957826126ab565b815b905092915050565b5f8082846126c19190613569565b905083811015612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd9061392a565b60405180910390fd5b8091505092915050565b5f61275183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a6565b905092915050565b5f808311829061279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969190612844565b60405180910390fd5b505f83856127ad9190613822565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127f15780820151818401526020810190506127d6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612816826127ba565b61282081856127c4565b93506128308185602086016127d4565b612839816127fc565b840191505092915050565b5f6020820190508181035f83015261285c818461280c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61289e82612875565b9050919050565b6128ae81612894565b81146128b8575f80fd5b50565b5f813590506128c9816128a5565b92915050565b5f819050919050565b6128e1816128cf565b81146128eb575f80fd5b50565b5f813590506128fc816128d8565b92915050565b5f80604083850312156129185761291761286d565b5b5f612925858286016128bb565b9250506020612936858286016128ee565b9150509250929050565b5f8115159050919050565b61295481612940565b82525050565b5f60208201905061296d5f83018461294b565b92915050565b61297c816128cf565b82525050565b5f6020820190506129955f830184612973565b92915050565b5f60a0820190506129ae5f830188612973565b6129bb6020830187612973565b6129c86040830186612973565b6129d56060830185612973565b6129e26080830184612973565b9695505050505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a26826127fc565b810181811067ffffffffffffffff82111715612a4557612a446129f0565b5b80604052505050565b5f612a57612864565b9050612a638282612a1d565b919050565b5f67ffffffffffffffff821115612a8257612a816129f0565b5b602082029050602081019050919050565b5f80fd5b5f612aa9612aa484612a68565b612a4e565b90508083825260208201905060208402830185811115612acc57612acb612a93565b5b835b81811015612af55780612ae188826128bb565b845260208401935050602081019050612ace565b5050509392505050565b5f82601f830112612b1357612b126129ec565b5b8135612b23848260208601612a97565b91505092915050565b5f60208284031215612b4157612b4061286d565b5b5f82013567ffffffffffffffff811115612b5e57612b5d612871565b5b612b6a84828501612aff565b91505092915050565b5f805f60608486031215612b8a57612b8961286d565b5b5f612b97868287016128bb565b9350506020612ba8868287016128bb565b9250506040612bb9868287016128ee565b9150509250925092565b5f60ff82169050919050565b612bd881612bc3565b82525050565b5f602082019050612bf15f830184612bcf565b92915050565b5f60208284031215612c0c57612c0b61286d565b5b5f612c19848285016128bb565b91505092915050565b612c2b81612894565b82525050565b5f602082019050612c445f830184612c22565b92915050565b5f8060408385031215612c6057612c5f61286d565b5b5f612c6d858286016128bb565b9250506020612c7e858286016128bb565b9150509250929050565b5f60208284031215612c9d57612c9c61286d565b5b5f612caa848285016128ee565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ce76020836127c4565b9150612cf282612cb3565b602082019050919050565b5f6020820190508181035f830152612d1481612cdb565b9050919050565b5f819050919050565b5f819050919050565b5f612d47612d42612d3d84612d1b565b612d24565b6128cf565b9050919050565b612d5781612d2d565b82525050565b5f602082019050612d705f830184612d4e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612df857808604811115612dd457612dd3612d76565b5b6001851615612de35780820291505b8081029050612df185612da3565b9450612db8565b94509492505050565b5f82612e105760019050612ecb565b81612e1d575f9050612ecb565b8160018114612e335760028114612e3d57612e6c565b6001915050612ecb565b60ff841115612e4f57612e4e612d76565b5b8360020a915084821115612e6657612e65612d76565b5b50612ecb565b5060208310610133831016604e8410600b8410161715612ea15782820a905083811115612e9c57612e9b612d76565b5b612ecb565b612eae8484846001612daf565b92509050818404811115612ec557612ec4612d76565b5b81810290505b9392505050565b5f612edc826128cf565b9150612ee783612bc3565b9250612f147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e01565b905092915050565b5f612f26826128cf565b9150612f31836128cf565b9250828202612f3f816128cf565b91508282048414831517612f5657612f55612d76565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612f98816128d8565b92915050565b5f60208284031215612fb357612fb261286d565b5b5f612fc084828501612f8a565b91505092915050565b5f612fe3612fde612fd984612875565b612d24565b612875565b9050919050565b5f612ff482612fc9565b9050919050565b5f61300582612fea565b9050919050565b61301581612ffb565b82525050565b5f60408201905061302e5f83018561300c565b61303b6020830184612973565b9392505050565b61304b81612940565b8114613055575f80fd5b50565b5f8151905061306681613042565b92915050565b5f602082840312156130815761308061286d565b5b5f61308e84828501613058565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130cb6017836127c4565b91506130d682613097565b602082019050919050565b5f6020820190508181035f8301526130f8816130bf565b9050919050565b5f8151905061310d816128a5565b92915050565b5f602082840312156131285761312761286d565b5b5f613135848285016130ff565b91505092915050565b5f6040820190506131515f830185612c22565b61315e6020830184612c22565b9392505050565b5f60c0820190506131785f830189612c22565b6131856020830188612973565b6131926040830187612d4e565b61319f6060830186612d4e565b6131ac6080830185612c22565b6131b960a0830184612973565b979650505050505050565b5f805f606084860312156131db576131da61286d565b5b5f6131e886828701612f8a565b93505060206131f986828701612f8a565b925050604061320a86828701612f8a565b9150509250925092565b5f6040820190506132275f830185612c22565b6132346020830184612973565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132956024836127c4565b91506132a08261323b565b604082019050919050565b5f6020820190508181035f8301526132c281613289565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133236022836127c4565b915061332e826132c9565b604082019050919050565b5f6020820190508181035f83015261335081613317565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b16025836127c4565b91506133bc82613357565b604082019050919050565b5f6020820190508181035f8301526133de816133a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343f6023836127c4565b915061344a826133e5565b604082019050919050565b5f6020820190508181035f83015261346c81613433565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134cd6029836127c4565b91506134d882613473565b604082019050919050565b5f6020820190508181035f8301526134fa816134c1565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135356019836127c4565b915061354082613501565b602082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b5f613573826128cf565b915061357e836128cf565b925082820190508082111561359657613595612d76565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6135d0601a836127c4565b91506135db8261359c565b602082019050919050565b5f6020820190508181035f8301526135fd816135c4565b9050919050565b5f61360e826128cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136405761363f612d76565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61367f6017836127c4565b915061368a8261364b565b602082019050919050565b5f6020820190508181035f8301526136ac81613673565b9050919050565b5f6136bd826128cf565b91506136c8836128cf565b92508282039050818111156136e0576136df612d76565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61371881612894565b82525050565b5f613729838361370f565b60208301905092915050565b5f602082019050919050565b5f61374b826136e6565b61375581856136f0565b935061376083613700565b805f5b83811015613790578151613777888261371e565b975061378283613735565b925050600181019050613763565b5085935050505092915050565b5f60a0820190506137b05f830188612973565b6137bd6020830187612d4e565b81810360408301526137cf8186613741565b90506137de6060830185612c22565b6137eb6080830184612973565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61382c826128cf565b9150613837836128cf565b925082613847576138466137f5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138ac6021836127c4565b91506138b782613852565b604082019050919050565b5f6020820190508181035f8301526138d9816138a0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613914601b836127c4565b915061391f826138e0565b602082019050919050565b5f6020820190508181035f83015261394181613908565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208acac4d1e48df790a5cd610d6162b45ead1f03c8f1787105a53926e60a4ff68d64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610533578063ec1f3f631461056f578063fb201b1d14610597578063ffb54a99146105ad5761018b565b8063a9059cbb146104a5578063bf474bed146104e1578063c97c18211461050b5761018b565b8063715018a6146103bf5780637d1db4a5146103d55780638cd4426d146103ff5780638da5cb5b146104275780638f9a55c01461045157806395d89b411461047b5761018b565b806321bbcbb11161013d5780633bbac579116101175780633bbac5791461031b57806351bc3c8514610357578063622565891461036d57806370a08231146103835761018b565b806321bbcbb11461028d57806323b872dd146102b5578063313ce567146102f15761018b565b806302fa1f4a1461018f57806306fdde03146101a5578063095ea7b3146101cf5780630faee56f1461020b57806318160ddd146102355780631fee58941461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d7565b005b3480156101b0575f80fd5b506101b96106ab565b6040516101c69190612844565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f09190612902565b6106e8565b604051610202919061295a565b60405180910390f35b348015610216575f80fd5b5061021f610705565b60405161022c9190612982565b60405180910390f35b348015610240575f80fd5b5061024961070b565b6040516102569190612982565b60405180910390f35b34801561026a575f80fd5b5061027361072f565b60405161028495949392919061299b565b60405180910390f35b348015610298575f80fd5b506102b360048036038101906102ae9190612b2c565b610754565b005b3480156102c0575f80fd5b506102db60048036038101906102d69190612b73565b610873565b6040516102e8919061295a565b60405180910390f35b3480156102fc575f80fd5b50610305610947565b6040516103129190612bde565b60405180910390f35b348015610326575f80fd5b50610341600480360381019061033c9190612bf7565b61094f565b60405161034e919061295a565b60405180910390f35b348015610362575f80fd5b5061036b6109a1565b005b348015610378575f80fd5b50610381610a50565b005b34801561038e575f80fd5b506103a960048036038101906103a49190612bf7565b610b82565b6040516103b69190612982565b60405180910390f35b3480156103ca575f80fd5b506103d3610bc8565b005b3480156103e0575f80fd5b506103e9610d16565b6040516103f69190612982565b60405180910390f35b34801561040a575f80fd5b5061042560048036038101906104209190612902565b610d1c565b005b348015610432575f80fd5b5061043b610ebd565b6040516104489190612c31565b60405180910390f35b34801561045c575f80fd5b50610465610ee4565b6040516104729190612982565b60405180910390f35b348015610486575f80fd5b5061048f610eea565b60405161049c9190612844565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612902565b610f27565b6040516104d8919061295a565b60405180910390f35b3480156104ec575f80fd5b506104f5610f44565b6040516105029190612982565b60405180910390f35b348015610516575f80fd5b50610531600480360381019061052c9190612b2c565b610f4a565b005b34801561053e575f80fd5b5061055960048036038101906105549190612c4a565b611068565b6040516105669190612982565b60405180910390f35b34801561057a575f80fd5b5061059560048036038101906105909190612c88565b6110ea565b005b3480156105a2575f80fd5b506105ab611176565b005b3480156105b8575f80fd5b506105c16116eb565b6040516105ce919061295a565b60405180910390f35b6105df6116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290612cfd565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106a19190612d5d565b60405180910390a1565b60606040518060400160405280600881526020017f464c4541424f4e45000000000000000000000000000000000000000000000000815250905090565b5f6106fb6106f46116fc565b8484611703565b6001905092915050565b60125481565b5f6009600a61071a9190612ed2565b6461f313f88061072a9190612f1c565b905090565b5f805f805f600654600754600854600954600d54945094509450945094509091929394565b61075c6116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cfd565b60405180910390fd5b5f5b815181101561086f57600160045f84848151811061080b5761080a612f5d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107ea565b5050565b5f61087f8484846118c6565b61093c8461088b6116fc565b610937856040518060600160405280602881526020016139496028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108ee6116fc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a69092919063ffffffff16565b611703565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e16116fc565b73ffffffffffffffffffffffffffffffffffffffff1614610a00575f80fd5b5f610a0a30610b82565b90505f81118015610a275750601460169054906101000a900460ff165b15610a3657610a3581612308565b5b5f4790505f811115610a4c57610a4b81612573565b5b5050565b610a586116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90612cfd565b60405180910390fd5b6009600a610af29190612ed2565b6461f313f880610b029190612f1c565b600f819055506009600a610b169190612ed2565b6461f313f880610b269190612f1c565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b5b9190612ed2565b6461f313f880610b6b9190612f1c565b604051610b789190612982565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bd06116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5390612cfd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d5c6116fc565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b575f80fd5b5f610e196064610e0b848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dbe9190612c31565b602060405180830381865afa158015610dd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dfd9190612f9e565b6125db90919063ffffffff16565b61265290919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e7792919061301b565b6020604051808303815f875af1158015610e93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb7919061306c565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f424f4e4500000000000000000000000000000000000000000000000000000000815250905090565b5f610f3a610f336116fc565b84846118c6565b6001905092915050565b60115481565b610f526116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590612cfd565b60405180910390fd5b5f5b8151811015611064575f60045f84848151811061100057610fff612f5d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fe0565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661112a6116fc565b73ffffffffffffffffffffffffffffffffffffffff1614611149575f80fd5b600854811115801561115d57506009548111155b611165575f80fd5b806008819055508060098190555050565b61117e6116fc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190612cfd565b60405180910390fd5b60148054906101000a900460ff1615611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f906130e1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f53060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6112e09190612ed2565b6461f313f8806112f09190612f1c565b611703565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113839190613113565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142d9190613113565b6040518363ffffffff1660e01b815260040161144a92919061313e565b6020604051808303815f875af1158015611466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148a9190613113565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061151130610b82565b5f8061151b610ebd565b426040518863ffffffff1660e01b815260040161153d96959493929190613165565b60606040518083038185885af1158015611559573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157e91906131c4565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161161e929190613214565b6020604051808303815f875af115801561163a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165e919061306c565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555061169c610ebd565b73ffffffffffffffffffffffffffffffffffffffff167ff9ca0f11181041c16343c0e2d0e0c3cf66188e39b033ab29e2fe6f0f84374a36426040516116e19190612982565b60405180910390a2565b60148054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611768906132ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613339565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118b99190612982565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b906133c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613455565b60405180910390fd5b5f81116119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db906134e3565b60405180910390fd5b5f6119ed610ebd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a5b5750611a2b610ebd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ab4575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff65760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b57575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b5f575f80fd5b5f600e5403611ba757611ba46064611b96600a54600e5411611b8357600654611b87565b6008545b856125db90919063ffffffff16565b61265290919063ffffffff16565b90505b5f600e541115611bdc57611bd96064611bcb600d54856125db90919063ffffffff16565b61265290919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c85575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dd057600f54821115611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061354b565b60405180910390fd5b60105482611d2f85610b82565b611d399190613569565b1115611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d71906135e6565b60405180910390fd5b611db66064611da8600a54600e5411611d9557600654611d99565b6008545b856125db90919063ffffffff16565b61265290919063ffffffff16565b9050600e5f815480929190611dca90613604565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9c57611e996064611e8b600b54600e5411611e7857600754611e7c565b6009545b856125db90919063ffffffff16565b61265290919063ffffffff16565b90505b5f611ea630610b82565b9050601460159054906101000a900460ff16158015611f11575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f295750601460169054906101000a900460ff165b8015611f36575060115481115b8015611f455750600c54600e54115b15611ff457601654431115611f5c575f6015819055505b600360155410611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613695565b60405180910390fd5b611fbe611fb984611fb48460125461269b565b61269b565b612308565b5f4790505f811115611fd457611fd347612573565b5b60155f815480929190611fe690613604565b919050555043601681905550505b505b5f8111156120f55761204e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ec9190612982565b60405180910390a35b6121458260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461271090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e861219c828461271090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61228b848661271090919063ffffffff16565b6040516122989190612982565b60405180910390a350505050565b5f8383111582906122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e49190612844565b60405180910390fd5b505f83856122fb91906136b3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233f5761233e6129f0565b5b60405190808252806020026020018201604052801561236d5781602001602082028036833780820191505090505b50905030815f8151811061238457612383612f5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612428573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244c9190613113565b816001815181106124605761245f612f5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c63060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611703565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161252895949392919061379d565b5f604051808303815f87803b15801561253f575f80fd5b505af1158015612551573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125d7573d5f803e3d5ffd5b5050565b5f8083036125eb575f905061264c565b5f82846125f89190612f1c565b90508284826126079190613822565b14612647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263e906138c2565b60405180910390fd5b809150505b92915050565b5f61269383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612759565b905092915050565b5f8183116126a957826126ab565b815b905092915050565b5f8082846126c19190613569565b905083811015612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd9061392a565b60405180910390fd5b8091505092915050565b5f61275183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a6565b905092915050565b5f808311829061279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969190612844565b60405180910390fd5b505f83856127ad9190613822565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127f15780820151818401526020810190506127d6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612816826127ba565b61282081856127c4565b93506128308185602086016127d4565b612839816127fc565b840191505092915050565b5f6020820190508181035f83015261285c818461280c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61289e82612875565b9050919050565b6128ae81612894565b81146128b8575f80fd5b50565b5f813590506128c9816128a5565b92915050565b5f819050919050565b6128e1816128cf565b81146128eb575f80fd5b50565b5f813590506128fc816128d8565b92915050565b5f80604083850312156129185761291761286d565b5b5f612925858286016128bb565b9250506020612936858286016128ee565b9150509250929050565b5f8115159050919050565b61295481612940565b82525050565b5f60208201905061296d5f83018461294b565b92915050565b61297c816128cf565b82525050565b5f6020820190506129955f830184612973565b92915050565b5f60a0820190506129ae5f830188612973565b6129bb6020830187612973565b6129c86040830186612973565b6129d56060830185612973565b6129e26080830184612973565b9695505050505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a26826127fc565b810181811067ffffffffffffffff82111715612a4557612a446129f0565b5b80604052505050565b5f612a57612864565b9050612a638282612a1d565b919050565b5f67ffffffffffffffff821115612a8257612a816129f0565b5b602082029050602081019050919050565b5f80fd5b5f612aa9612aa484612a68565b612a4e565b90508083825260208201905060208402830185811115612acc57612acb612a93565b5b835b81811015612af55780612ae188826128bb565b845260208401935050602081019050612ace565b5050509392505050565b5f82601f830112612b1357612b126129ec565b5b8135612b23848260208601612a97565b91505092915050565b5f60208284031215612b4157612b4061286d565b5b5f82013567ffffffffffffffff811115612b5e57612b5d612871565b5b612b6a84828501612aff565b91505092915050565b5f805f60608486031215612b8a57612b8961286d565b5b5f612b97868287016128bb565b9350506020612ba8868287016128bb565b9250506040612bb9868287016128ee565b9150509250925092565b5f60ff82169050919050565b612bd881612bc3565b82525050565b5f602082019050612bf15f830184612bcf565b92915050565b5f60208284031215612c0c57612c0b61286d565b5b5f612c19848285016128bb565b91505092915050565b612c2b81612894565b82525050565b5f602082019050612c445f830184612c22565b92915050565b5f8060408385031215612c6057612c5f61286d565b5b5f612c6d858286016128bb565b9250506020612c7e858286016128bb565b9150509250929050565b5f60208284031215612c9d57612c9c61286d565b5b5f612caa848285016128ee565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ce76020836127c4565b9150612cf282612cb3565b602082019050919050565b5f6020820190508181035f830152612d1481612cdb565b9050919050565b5f819050919050565b5f819050919050565b5f612d47612d42612d3d84612d1b565b612d24565b6128cf565b9050919050565b612d5781612d2d565b82525050565b5f602082019050612d705f830184612d4e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612df857808604811115612dd457612dd3612d76565b5b6001851615612de35780820291505b8081029050612df185612da3565b9450612db8565b94509492505050565b5f82612e105760019050612ecb565b81612e1d575f9050612ecb565b8160018114612e335760028114612e3d57612e6c565b6001915050612ecb565b60ff841115612e4f57612e4e612d76565b5b8360020a915084821115612e6657612e65612d76565b5b50612ecb565b5060208310610133831016604e8410600b8410161715612ea15782820a905083811115612e9c57612e9b612d76565b5b612ecb565b612eae8484846001612daf565b92509050818404811115612ec557612ec4612d76565b5b81810290505b9392505050565b5f612edc826128cf565b9150612ee783612bc3565b9250612f147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e01565b905092915050565b5f612f26826128cf565b9150612f31836128cf565b9250828202612f3f816128cf565b91508282048414831517612f5657612f55612d76565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612f98816128d8565b92915050565b5f60208284031215612fb357612fb261286d565b5b5f612fc084828501612f8a565b91505092915050565b5f612fe3612fde612fd984612875565b612d24565b612875565b9050919050565b5f612ff482612fc9565b9050919050565b5f61300582612fea565b9050919050565b61301581612ffb565b82525050565b5f60408201905061302e5f83018561300c565b61303b6020830184612973565b9392505050565b61304b81612940565b8114613055575f80fd5b50565b5f8151905061306681613042565b92915050565b5f602082840312156130815761308061286d565b5b5f61308e84828501613058565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130cb6017836127c4565b91506130d682613097565b602082019050919050565b5f6020820190508181035f8301526130f8816130bf565b9050919050565b5f8151905061310d816128a5565b92915050565b5f602082840312156131285761312761286d565b5b5f613135848285016130ff565b91505092915050565b5f6040820190506131515f830185612c22565b61315e6020830184612c22565b9392505050565b5f60c0820190506131785f830189612c22565b6131856020830188612973565b6131926040830187612d4e565b61319f6060830186612d4e565b6131ac6080830185612c22565b6131b960a0830184612973565b979650505050505050565b5f805f606084860312156131db576131da61286d565b5b5f6131e886828701612f8a565b93505060206131f986828701612f8a565b925050604061320a86828701612f8a565b9150509250925092565b5f6040820190506132275f830185612c22565b6132346020830184612973565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132956024836127c4565b91506132a08261323b565b604082019050919050565b5f6020820190508181035f8301526132c281613289565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133236022836127c4565b915061332e826132c9565b604082019050919050565b5f6020820190508181035f83015261335081613317565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b16025836127c4565b91506133bc82613357565b604082019050919050565b5f6020820190508181035f8301526133de816133a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343f6023836127c4565b915061344a826133e5565b604082019050919050565b5f6020820190508181035f83015261346c81613433565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134cd6029836127c4565b91506134d882613473565b604082019050919050565b5f6020820190508181035f8301526134fa816134c1565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135356019836127c4565b915061354082613501565b602082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b5f613573826128cf565b915061357e836128cf565b925082820190508082111561359657613595612d76565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6135d0601a836127c4565b91506135db8261359c565b602082019050919050565b5f6020820190508181035f8301526135fd816135c4565b9050919050565b5f61360e826128cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136405761363f612d76565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61367f6017836127c4565b915061368a8261364b565b602082019050919050565b5f6020820190508181035f8301526136ac81613673565b9050919050565b5f6136bd826128cf565b91506136c8836128cf565b92508282039050818111156136e0576136df612d76565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61371881612894565b82525050565b5f613729838361370f565b60208301905092915050565b5f602082019050919050565b5f61374b826136e6565b61375581856136f0565b935061376083613700565b805f5b83811015613790578151613777888261371e565b975061378283613735565b925050600181019050613763565b5085935050505092915050565b5f60a0820190506137b05f830188612973565b6137bd6020830187612d4e565b81810360408301526137cf8186613741565b90506137de6060830185612c22565b6137eb6080830184612973565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61382c826128cf565b9150613837836128cf565b925082613847576138466137f5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138ac6021836127c4565b91506138b782613852565b604082019050919050565b5f6020820190508181035f8301526138d9816138a0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613914601b836127c4565b915061391f826138e0565b602082019050919050565b5f6020820190508181035f83015261394181613908565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208acac4d1e48df790a5cd610d6162b45ead1f03c8f1787105a53926e60a4ff68d64736f6c63430008170033

Deployed Bytecode Sourcemap

3750:9690:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11147:115;;;;;;;;;;;;;:::i;:::-;;5813:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7073:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4905:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6090:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6320:419;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;11370:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7242:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5999:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11710;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13074:363;;;;;;;;;;;;;:::i;:::-;;10981:158;;;;;;;;;;;;;:::i;:::-;;6193:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2831:148;;;;;;;;;;;;;:::i;:::-;;4685:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12800:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2617:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4776:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5904:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6747:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4841:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11541:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6922:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12537:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11801:722;;;;;;;;;;;;;:::i;:::-;;5055:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11147:115;2754:12;:10;:12::i;:::-;2744:22;;:6;;;;;;;;;;:22;;;2736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11216:1:::1;11201:12;:16;;;;11233:21;11252:1;11233:21;;;;;;:::i;:::-;;;;;;;;11147:115::o:0;5813:83::-;5850:13;5883:5;;;;;;;;;;;;;;;;;5876:12;;5813:83;:::o;7073:161::-;7148:4;7165:39;7174:12;:10;:12::i;:::-;7188:7;7197:6;7165:8;:39::i;:::-;7222:4;7215:11;;7073:161;;;;:::o;4905:52::-;;;;:::o;6090:95::-;6143:7;4497:1;4555:2;:13;;;;:::i;:::-;4540:12;:28;;;;:::i;:::-;6163:14;;6090:95;:::o;6320:419::-;6376:21;6408:22;6441:19;6471:20;6502:19;6574:14;;6607:15;;6641:12;;6672:13;;6704:12;;6548:183;;;;;;;;;;6320:419;;;;;:::o;11370:163::-;2754:12;:10;:12::i;:::-;2744:22;;:6;;;;;;;;;;:22;;;2736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11443:6:::1;11438:88;11459:5;:12;11455:1;:16;11438:88;;;11510:4;11493;:14;11498:5;11504:1;11498:8;;;;;;;;:::i;:::-;;;;;;;;11493:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11473:3;;;;;;;11438:88;;;;11370:163:::0;:::o;7242:313::-;7340:4;7357:36;7367:6;7375:9;7386:6;7357:9;:36::i;:::-;7404:121;7413:6;7421:12;:10;:12::i;:::-;7435:89;7473:6;7435:89;;;;;;;;;;;;;;;;;:11;:19;7447:6;7435:19;;;;;;;;;;;;;;;:33;7455:12;:10;:12::i;:::-;7435:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7404:8;:121::i;:::-;7543:4;7536:11;;7242:313;;;;;:::o;5999:83::-;6040:5;4497:1;6058:16;;5999:83;:::o;11710:::-;11757:4;11778;:7;11783:1;11778:7;;;;;;;;;;;;;;;;;;;;;;;;;11771:14;;11710:83;;;:::o;13074:363::-;13138:10;;;;;;;;;;;13124:24;;:12;:10;:12::i;:::-;:24;;;13116:33;;;;;;13160:20;13181:24;13199:4;13181:9;:24::i;:::-;13160:45;;13232:1;13219:12;:14;:29;;;;;13237:11;;;;;;;;;;;13219:29;13216:88;;;13262:30;13279:12;13262:16;:30::i;:::-;13216:88;13314:18;13333:21;13314:40;;13379:1;13368:10;:12;13365:65;;;13394:24;13407:10;13394:12;:24::i;:::-;13365:65;13105:332;;13074:363::o;10981:158::-;2754:12;:10;:12::i;:::-;2744:22;;:6;;;;;;;;;;:22;;;2736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4497:1:::1;4555:2;:13;;;;:::i;:::-;4540:12;:28;;;;:::i;:::-;11033:12;:22;;;;4497:1;4555:2;:13;;;;:::i;:::-;4540:12;:28;;;;:::i;:::-;11066:14;:22;;;;11104:27;4497:1;4555:2;:13;;;;:::i;:::-;4540:12;:28;;;;:::i;:::-;11104:27;;;;;;:::i;:::-;;;;;;;;10981:158::o:0;6193:119::-;6259:7;6286:9;:18;6296:7;6286:18;;;;;;;;;;;;;;;;6279:25;;6193:119;;;:::o;2831:148::-;2754:12;:10;:12::i;:::-;2744:22;;:6;;;;;;;;;;:22;;;2736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2938:1:::1;2901:40;;2922:6;::::0;::::1;;;;;;;;2901:40;;;;;;;;;;;;2969:1;2952:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2831:148::o:0;4685:56::-;;;;:::o;12800:266::-;12898:10;;;;;;;;;;;12884:24;;:12;:10;:12::i;:::-;:24;;;12876:33;;;;;;12920:15;12938:63;12997:3;12938:54;12984:7;12945:8;12938:26;;;12973:4;12938:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;12920:81;;13019:8;13012:25;;;13038:10;;;;;;;;;;;13050:7;13012:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12865:201;12800:266;;:::o;2617:79::-;2655:7;2682:6;;;;;;;;;;;2675:13;;2617:79;:::o;4776:58::-;;;;:::o;5904:87::-;5943:13;5976:7;;;;;;;;;;;;;;;;;5969:14;;5904:87;:::o;6747:167::-;6825:4;6842:42;6852:12;:10;:12::i;:::-;6866:9;6877:6;6842:9;:42::i;:::-;6902:4;6895:11;;6747:167;;;;:::o;4841:57::-;;;;:::o;11541:161::-;2754:12;:10;:12::i;:::-;2744:22;;:6;;;;;;;;;;:22;;;2736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11613:6:::1;11608:87;11629:6;:13;11625:1;:17;11608:87;;;11680:5;11662:4;:15;11667:6;11674:1;11667:9;;;;;;;;:::i;:::-;;;;;;;;11662:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11644:3;;;;;;;11608:87;;;;11541:161:::0;:::o;6922:143::-;7003:7;7030:11;:18;7042:5;7030:18;;;;;;;;;;;;;;;:27;7049:7;7030:27;;;;;;;;;;;;;;;;7023:34;;6922:143;;;;:::o;12537:218::-;12612:10;;;;;;;;;;;12598:24;;:12;:10;:12::i;:::-;:24;;;12590:33;;;;;;12649:12;;12640:7;:21;;:47;;;;;12674:13;;12665:7;:22;;12640:47;12632:56;;;;;;12710:7;12697:12;:20;;;;12740:7;12726:13;:21;;;;12537:218;:::o;11801:722::-;2754:12;:10;:12::i;:::-;2744:22;;:6;;;;;;;;;;:22;;;2736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11863:11:::1;::::0;::::1;;;;;;;;11862:12;11854:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11949:42;11912:15;;:80;;;;;;;;;;;;;;;;;;12003:58;12020:4;12035:15;;;;;;;;;;;4497:1;4555:2;:13;;;;:::i;:::-;4540:12;:28;;;;:::i;:::-;12003:8;:58::i;:::-;12106:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12088:55;;;12152:4;12159:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12088:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12072:13;;:110;;;;;;;;;;;;;;;;;;12193:15;;;;;;;;;;;:31;;;12232:21;12263:4;12269:24;12287:4;12269:9;:24::i;:::-;12294:1;12296::::0;12298:7:::1;:5;:7::i;:::-;12306:15;12193:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12340:13;;;;;;;;;;;12333:29;;;12371:15;;;;;;;;;;;12389:14;12333:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12429:4;12415:11;;:18;;;;;;;;;;;;;;;;;;12458:4;12444:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12490:7;:5;:7::i;:::-;12480:35;;;12499:15;12480:35;;;;;;:::i;:::-;;;;;;;;11801:722::o:0;5055:23::-;;;;;;;;;;;;:::o;372:98::-;425:7;452:10;445:17;;372:98;:::o;7563:335::-;7673:1;7656:19;;:5;:19;;;7648:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7754:1;7735:21;;:7;:21;;;7727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7836:6;7806:11;:18;7818:5;7806:18;;;;;;;;;;;;;;;:27;7825:7;7806:27;;;;;;;;;;;;;;;:36;;;;7874:7;7858:32;;7867:5;7858:32;;;7883:6;7858:32;;;;;;:::i;:::-;;;;;;;;7563:335;;;:::o;7906:2468::-;8010:1;7994:18;;:4;:18;;;7986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8087:1;8073:16;;:2;:16;;;8065:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8157:1;8148:6;:10;8140:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8215:17;8257:7;:5;:7::i;:::-;8249:15;;:4;:15;;;;:32;;;;;8274:7;:5;:7::i;:::-;8268:13;;:2;:13;;;;8249:32;:52;;;;;8291:10;;;;;;;;;;;8285:16;;:2;:16;;;;8249:52;8245:1773;;;8327:4;:10;8332:4;8327:10;;;;;;;;;;;;;;;;;;;;;;;;;8326:11;:24;;;;;8342:4;:8;8347:2;8342:8;;;;;;;;;;;;;;;;;;;;;;;;;8341:9;8326:24;8318:33;;;;;;8382:1;8371:9;;:12;8368:139;;8415:76;8487:3;8415:67;8437:15;;8427:9;;:25;8426:55;;8467:14;;8426:55;;;8454:12;;8426:55;8415:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8403:88;;8368:139;8534:1;8524:9;;:11;8521:95;;;8567:33;8596:3;8567:24;8578:12;;8567:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8555:45;;8521:95;8644:13;;;;;;;;;;;8636:21;;:4;:21;;;:55;;;;;8675:15;;;;;;;;;;;8661:30;;:2;:30;;;;8636:55;:83;;;;;8697:18;:22;8716:2;8697:22;;;;;;;;;;;;;;;;;;;;;;;;;8695:24;8636:83;8632:420;;;8759:12;;8749:6;:22;;8741:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8854:14;;8844:6;8828:13;8838:2;8828:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8820:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8930:76;9002:3;8930:67;8952:15;;8942:9;;:25;8941:55;;8982:14;;8941:55;;;8969:12;;8941:55;8930:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8918:88;;9025:9;;:11;;;;;;;;;:::i;:::-;;;;;;8632:420;9077:13;;;;;;;;;;;9071:19;;:2;:19;;;:43;;;;;9109:4;9094:20;;:4;:20;;;;9071:43;9068:174;;;9147:79;9222:3;9147:70;9169:16;;9159:9;;:26;9158:58;;9201:15;;9158:58;;;9187:13;;9158:58;9147:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9135:91;;9068:174;9258:28;9289:24;9307:4;9289:9;:24::i;:::-;9258:55;;9333:6;;;;;;;;;;;9332:7;:30;;;;;9349:13;;;;;;;;;;;9343:19;;:2;:19;;;9332:30;:45;;;;;9366:11;;;;;;;;;;;9332:45;:89;;;;;9404:17;;9381:20;:40;9332:89;:123;;;;;9437:18;;9425:9;;:30;9332:123;9328:679;;;9495:13;;9480:12;:28;9476:90;;;9545:1;9533:9;:13;;;;9476:90;9604:1;9592:9;;:13;9584:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9652:69;9669:51;9673:6;9681:38;9685:20;9707:11;;9681:3;:38::i;:::-;9669:3;:51::i;:::-;9652:16;:69::i;:::-;9740:26;9769:21;9740:50;;9834:1;9813:18;:22;9809:106;;;9860:35;9873:21;9860:12;:35::i;:::-;9809:106;9933:9;;:11;;;;;;;;;:::i;:::-;;;;;;9979:12;9963:13;:28;;;;9457:550;9328:679;8303:1715;8245:1773;10043:1;10033:9;:11;10030:161;;;10083:39;10112:9;10083;:24;10101:4;10083:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10058:9;:24;10076:4;10058:24;;;;;;;;;;;;;;;:64;;;;10163:4;10140:39;;10149:4;10140:39;;;10169:9;10140:39;;;;;;:::i;:::-;;;;;;;;10030:161;10217:27;10237:6;10217:9;:15;10227:4;10217:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10201:9;:15;10211:4;10201:15;;;;;;;;;;;;;;;:43;;;;10269:40;10287:21;10298:9;10287:6;:10;;:21;;;;:::i;:::-;10269:9;:13;10279:2;10269:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10255:9;:13;10265:2;10255:13;;;;;;;;;;;;;;;:54;;;;10340:2;10325:41;;10334:4;10325:41;;;10344:21;10355:9;10344:6;:10;;:21;;;;:::i;:::-;10325:41;;;;;;:::i;:::-;;;;;;;;7975:2399;7906:2468;;;:::o;1509:190::-;1595:7;1628:1;1623;:6;;1631:12;1615:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1655:9;1671:1;1667;:5;;;;:::i;:::-;1655:17;;1690:1;1683:8;;;1509:190;;;;;:::o;10490:483::-;5431:4;5422:6;;:13;;;;;;;;;;;;;;;;;;10568:21:::1;10606:1;10592:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10568:40;;10637:4;10619;10624:1;10619:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10663:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10653:4;10658:1;10653:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10696:62;10713:4;10728:15;;;;;;;;;;;10746:11;10696:8;:62::i;:::-;10769:15;;;;;;;;;;;:66;;;10850:11;10876:1;10892:4;10919;10939:15;10769:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10557:416;5467:5:::0;5458:6;;:14;;;;;;;;;;;;;;;;;;10490:483;:::o;11270:92::-;11327:10;;;;;;;;;;;:19;;:27;11347:6;11327:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11270:92;:::o;1707:246::-;1765:7;1794:1;1789;:6;1785:47;;1819:1;1812:8;;;;1785:47;1842:9;1858:1;1854;:5;;;;:::i;:::-;1842:17;;1887:1;1882;1878;:5;;;;:::i;:::-;:10;1870:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1944:1;1937:8;;;1707:246;;;;;:::o;1961:132::-;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2039:46;;1961:132;;;;:::o;10384:98::-;10441:7;10468:1;10466;:3;10465:9;;10473:1;10465:9;;;10471:1;10465:9;10458:16;;10384:98;;;;:::o;1178:179::-;1236:7;1256:9;1272:1;1268;:5;;;;:::i;:::-;1256:17;;1297:1;1292;:6;;1284:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1348:1;1341:8;;;1178:179;;;;:::o;1365:136::-;1423:7;1450:43;1454:1;1457;1450:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1443:50;;1365:136;;;;:::o;2101:189::-;2187:7;2219:1;2215;:5;2222:12;2207:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2281:1;2274:8;;;2101: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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:664::-;4003:4;4041:3;4030:9;4026:19;4018:27;;4055:71;4123:1;4112:9;4108:17;4099:6;4055:71;:::i;:::-;4136:72;4204:2;4193:9;4189:18;4180:6;4136:72;:::i;:::-;4218;4286:2;4275:9;4271:18;4262:6;4218:72;:::i;:::-;4300;4368:2;4357:9;4353:18;4344:6;4300:72;:::i;:::-;4382:73;4450:3;4439:9;4435:19;4426:6;4382:73;:::i;:::-;3798:664;;;;;;;;:::o;4468:117::-;4577:1;4574;4567:12;4591:180;4639:77;4636:1;4629:88;4736:4;4733:1;4726:15;4760:4;4757:1;4750:15;4777:281;4860:27;4882:4;4860:27;:::i;:::-;4852:6;4848:40;4990:6;4978:10;4975:22;4954:18;4942:10;4939:34;4936:62;4933:88;;;5001:18;;:::i;:::-;4933:88;5041:10;5037:2;5030:22;4820:238;4777:281;;:::o;5064:129::-;5098:6;5125:20;;:::i;:::-;5115:30;;5154:33;5182:4;5174:6;5154:33;:::i;:::-;5064:129;;;:::o;5199:311::-;5276:4;5366:18;5358:6;5355:30;5352:56;;;5388:18;;:::i;:::-;5352:56;5438:4;5430:6;5426:17;5418:25;;5498:4;5492;5488:15;5480:23;;5199:311;;;:::o;5516:117::-;5625:1;5622;5615:12;5656:710;5752:5;5777:81;5793:64;5850:6;5793:64;:::i;:::-;5777:81;:::i;:::-;5768:90;;5878:5;5907:6;5900:5;5893:21;5941:4;5934:5;5930:16;5923:23;;5994:4;5986:6;5982:17;5974:6;5970:30;6023:3;6015:6;6012:15;6009:122;;;6042:79;;:::i;:::-;6009:122;6157:6;6140:220;6174:6;6169:3;6166:15;6140:220;;;6249:3;6278:37;6311:3;6299:10;6278:37;:::i;:::-;6273:3;6266:50;6345:4;6340:3;6336:14;6329:21;;6216:144;6200:4;6195:3;6191:14;6184:21;;6140:220;;;6144:21;5758:608;;5656:710;;;;;:::o;6389:370::-;6460:5;6509:3;6502:4;6494:6;6490:17;6486:27;6476:122;;6517:79;;:::i;:::-;6476:122;6634:6;6621:20;6659:94;6749:3;6741:6;6734:4;6726:6;6722:17;6659:94;:::i;:::-;6650:103;;6466:293;6389:370;;;;:::o;6765:539::-;6849:6;6898:2;6886:9;6877:7;6873:23;6869:32;6866:119;;;6904:79;;:::i;:::-;6866:119;7052:1;7041:9;7037:17;7024:31;7082:18;7074:6;7071:30;7068:117;;;7104:79;;:::i;:::-;7068:117;7209:78;7279:7;7270:6;7259:9;7255:22;7209:78;:::i;:::-;7199:88;;6995:302;6765:539;;;;:::o;7310:619::-;7387:6;7395;7403;7452:2;7440:9;7431:7;7427:23;7423:32;7420:119;;;7458:79;;:::i;:::-;7420:119;7578:1;7603:53;7648:7;7639:6;7628:9;7624:22;7603:53;:::i;:::-;7593:63;;7549:117;7705:2;7731:53;7776:7;7767:6;7756:9;7752:22;7731:53;:::i;:::-;7721:63;;7676:118;7833:2;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7804:118;7310:619;;;;;:::o;7935:86::-;7970:7;8010:4;8003:5;7999:16;7988:27;;7935:86;;;:::o;8027:112::-;8110:22;8126:5;8110:22;:::i;:::-;8105:3;8098:35;8027:112;;:::o;8145:214::-;8234:4;8272:2;8261:9;8257:18;8249:26;;8285:67;8349:1;8338:9;8334:17;8325:6;8285:67;:::i;:::-;8145:214;;;;:::o;8365:329::-;8424:6;8473:2;8461:9;8452:7;8448:23;8444:32;8441:119;;;8479:79;;:::i;:::-;8441:119;8599:1;8624:53;8669:7;8660:6;8649:9;8645:22;8624:53;:::i;:::-;8614:63;;8570:117;8365:329;;;;:::o;8700:118::-;8787:24;8805:5;8787:24;:::i;:::-;8782:3;8775:37;8700:118;;:::o;8824:222::-;8917:4;8955:2;8944:9;8940:18;8932:26;;8968:71;9036:1;9025:9;9021:17;9012:6;8968:71;:::i;:::-;8824:222;;;;:::o;9052:474::-;9120:6;9128;9177:2;9165:9;9156:7;9152:23;9148:32;9145:119;;;9183:79;;:::i;:::-;9145:119;9303:1;9328:53;9373:7;9364:6;9353:9;9349:22;9328:53;:::i;:::-;9318:63;;9274:117;9430:2;9456:53;9501:7;9492:6;9481:9;9477:22;9456:53;:::i;:::-;9446:63;;9401:118;9052:474;;;;;:::o;9532:329::-;9591:6;9640:2;9628:9;9619:7;9615:23;9611:32;9608:119;;;9646:79;;:::i;:::-;9608:119;9766:1;9791:53;9836:7;9827:6;9816:9;9812:22;9791:53;:::i;:::-;9781:63;;9737:117;9532:329;;;;:::o;9867:182::-;10007:34;10003:1;9995:6;9991:14;9984:58;9867:182;:::o;10055:366::-;10197:3;10218:67;10282:2;10277:3;10218:67;:::i;:::-;10211:74;;10294:93;10383:3;10294:93;:::i;:::-;10412:2;10407:3;10403:12;10396:19;;10055:366;;;:::o;10427:419::-;10593:4;10631:2;10620:9;10616:18;10608:26;;10680:9;10674:4;10670:20;10666:1;10655:9;10651:17;10644:47;10708:131;10834:4;10708:131;:::i;:::-;10700:139;;10427:419;;;:::o;10852:85::-;10897:7;10926:5;10915:16;;10852:85;;;:::o;10943:60::-;10971:3;10992:5;10985:12;;10943:60;;;:::o;11009:158::-;11067:9;11100:61;11118:42;11127:32;11153:5;11127:32;:::i;:::-;11118:42;:::i;:::-;11100:61;:::i;:::-;11087:74;;11009:158;;;:::o;11173:147::-;11268:45;11307:5;11268:45;:::i;:::-;11263:3;11256:58;11173:147;;:::o;11326:238::-;11427:4;11465:2;11454:9;11450:18;11442:26;;11478:79;11554:1;11543:9;11539:17;11530:6;11478:79;:::i;:::-;11326:238;;;;:::o;11570:180::-;11618:77;11615:1;11608:88;11715:4;11712:1;11705:15;11739:4;11736:1;11729:15;11756:102;11798:8;11845:5;11842:1;11838:13;11817:34;;11756:102;;;:::o;11864:848::-;11925:5;11932:4;11956:6;11947:15;;11980:5;11971:14;;11994:712;12015:1;12005:8;12002:15;11994:712;;;12110:4;12105:3;12101:14;12095:4;12092:24;12089:50;;;12119:18;;:::i;:::-;12089:50;12169:1;12159:8;12155:16;12152:451;;;12584:4;12577:5;12573:16;12564:25;;12152:451;12634:4;12628;12624:15;12616:23;;12664:32;12687:8;12664:32;:::i;:::-;12652:44;;11994:712;;;11864:848;;;;;;;:::o;12718:1073::-;12772:5;12963:8;12953:40;;12984:1;12975:10;;12986:5;;12953:40;13012:4;13002:36;;13029:1;13020:10;;13031:5;;13002:36;13098:4;13146:1;13141:27;;;;13182:1;13177:191;;;;13091:277;;13141:27;13159:1;13150:10;;13161:5;;;13177:191;13222:3;13212:8;13209:17;13206:43;;;13229:18;;:::i;:::-;13206:43;13278:8;13275:1;13271:16;13262:25;;13313:3;13306:5;13303:14;13300:40;;;13320:18;;:::i;:::-;13300:40;13353:5;;;13091:277;;13477:2;13467:8;13464:16;13458:3;13452:4;13449:13;13445:36;13427:2;13417:8;13414:16;13409:2;13403:4;13400:12;13396:35;13380:111;13377:246;;;13533:8;13527:4;13523:19;13514:28;;13568:3;13561:5;13558:14;13555:40;;;13575:18;;:::i;:::-;13555:40;13608:5;;13377:246;13648:42;13686:3;13676:8;13670:4;13667:1;13648:42;:::i;:::-;13633:57;;;;13722:4;13717:3;13713:14;13706:5;13703:25;13700:51;;;13731:18;;:::i;:::-;13700:51;13780:4;13773:5;13769:16;13760:25;;12718:1073;;;;;;:::o;13797:281::-;13855:5;13879:23;13897:4;13879:23;:::i;:::-;13871:31;;13923:25;13939:8;13923:25;:::i;:::-;13911:37;;13967:104;14004:66;13994:8;13988:4;13967:104;:::i;:::-;13958:113;;13797:281;;;;:::o;14084:410::-;14124:7;14147:20;14165:1;14147:20;:::i;:::-;14142:25;;14181:20;14199:1;14181:20;:::i;:::-;14176:25;;14236:1;14233;14229:9;14258:30;14276:11;14258:30;:::i;:::-;14247:41;;14437:1;14428:7;14424:15;14421:1;14418:22;14398:1;14391:9;14371:83;14348:139;;14467:18;;:::i;:::-;14348:139;14132:362;14084:410;;;;:::o;14500:180::-;14548:77;14545:1;14538:88;14645:4;14642:1;14635:15;14669:4;14666:1;14659:15;14686:143;14743:5;14774:6;14768:13;14759:22;;14790:33;14817:5;14790:33;:::i;:::-;14686:143;;;;:::o;14835:351::-;14905:6;14954:2;14942:9;14933:7;14929:23;14925:32;14922:119;;;14960:79;;:::i;:::-;14922:119;15080:1;15105:64;15161:7;15152:6;15141:9;15137:22;15105:64;:::i;:::-;15095:74;;15051:128;14835:351;;;;:::o;15192:142::-;15242:9;15275:53;15293:34;15302:24;15320:5;15302:24;:::i;:::-;15293:34;:::i;:::-;15275:53;:::i;:::-;15262:66;;15192:142;;;:::o;15340:126::-;15390:9;15423:37;15454:5;15423:37;:::i;:::-;15410:50;;15340:126;;;:::o;15472:134::-;15530:9;15563:37;15594:5;15563:37;:::i;:::-;15550:50;;15472:134;;;:::o;15612:147::-;15707:45;15746:5;15707:45;:::i;:::-;15702:3;15695:58;15612:147;;:::o;15765:348::-;15894:4;15932:2;15921:9;15917:18;15909:26;;15945:79;16021:1;16010:9;16006:17;15997:6;15945:79;:::i;:::-;16034:72;16102:2;16091:9;16087:18;16078:6;16034:72;:::i;:::-;15765:348;;;;;:::o;16119:116::-;16189:21;16204:5;16189:21;:::i;:::-;16182:5;16179:32;16169:60;;16225:1;16222;16215:12;16169:60;16119:116;:::o;16241:137::-;16295:5;16326:6;16320:13;16311:22;;16342:30;16366:5;16342:30;:::i;:::-;16241:137;;;;:::o;16384:345::-;16451:6;16500:2;16488:9;16479:7;16475:23;16471:32;16468:119;;;16506:79;;:::i;:::-;16468:119;16626:1;16651:61;16704:7;16695:6;16684:9;16680:22;16651:61;:::i;:::-;16641:71;;16597:125;16384:345;;;;:::o;16735:173::-;16875:25;16871:1;16863:6;16859:14;16852:49;16735:173;:::o;16914:366::-;17056:3;17077:67;17141:2;17136:3;17077:67;:::i;:::-;17070:74;;17153:93;17242:3;17153:93;:::i;:::-;17271:2;17266:3;17262:12;17255:19;;16914:366;;;:::o;17286:419::-;17452:4;17490:2;17479:9;17475:18;17467:26;;17539:9;17533:4;17529:20;17525:1;17514:9;17510:17;17503:47;17567:131;17693:4;17567:131;:::i;:::-;17559:139;;17286:419;;;:::o;17711:143::-;17768:5;17799:6;17793:13;17784:22;;17815:33;17842:5;17815:33;:::i;:::-;17711:143;;;;:::o;17860:351::-;17930:6;17979:2;17967:9;17958:7;17954:23;17950:32;17947:119;;;17985:79;;:::i;:::-;17947:119;18105:1;18130:64;18186:7;18177:6;18166:9;18162:22;18130:64;:::i;:::-;18120:74;;18076:128;17860:351;;;;:::o;18217:332::-;18338:4;18376:2;18365:9;18361:18;18353:26;;18389:71;18457:1;18446:9;18442:17;18433:6;18389:71;:::i;:::-;18470:72;18538:2;18527:9;18523:18;18514:6;18470:72;:::i;:::-;18217:332;;;;;:::o;18555:807::-;18804:4;18842:3;18831:9;18827:19;18819:27;;18856:71;18924:1;18913:9;18909:17;18900:6;18856:71;:::i;:::-;18937:72;19005:2;18994:9;18990:18;18981:6;18937:72;:::i;:::-;19019:80;19095:2;19084:9;19080:18;19071:6;19019:80;:::i;:::-;19109;19185:2;19174:9;19170:18;19161:6;19109:80;:::i;:::-;19199:73;19267:3;19256:9;19252:19;19243:6;19199:73;:::i;:::-;19282;19350:3;19339:9;19335:19;19326:6;19282:73;:::i;:::-;18555:807;;;;;;;;;:::o;19368:663::-;19456:6;19464;19472;19521:2;19509:9;19500:7;19496:23;19492:32;19489:119;;;19527:79;;:::i;:::-;19489:119;19647:1;19672:64;19728:7;19719:6;19708:9;19704:22;19672:64;:::i;:::-;19662:74;;19618:128;19785:2;19811:64;19867:7;19858:6;19847:9;19843:22;19811:64;:::i;:::-;19801:74;;19756:129;19924:2;19950:64;20006:7;19997:6;19986:9;19982:22;19950:64;:::i;:::-;19940:74;;19895:129;19368:663;;;;;:::o;20037:332::-;20158:4;20196:2;20185:9;20181:18;20173:26;;20209:71;20277:1;20266:9;20262:17;20253:6;20209:71;:::i;:::-;20290:72;20358:2;20347:9;20343:18;20334:6;20290:72;:::i;:::-;20037:332;;;;;:::o;20375:223::-;20515:34;20511:1;20503:6;20499:14;20492:58;20584:6;20579:2;20571:6;20567:15;20560:31;20375:223;:::o;20604:366::-;20746:3;20767:67;20831:2;20826:3;20767:67;:::i;:::-;20760:74;;20843:93;20932:3;20843:93;:::i;:::-;20961:2;20956:3;20952:12;20945:19;;20604:366;;;:::o;20976:419::-;21142:4;21180:2;21169:9;21165:18;21157:26;;21229:9;21223:4;21219:20;21215:1;21204:9;21200:17;21193:47;21257:131;21383:4;21257:131;:::i;:::-;21249:139;;20976:419;;;:::o;21401:221::-;21541:34;21537:1;21529:6;21525:14;21518:58;21610:4;21605:2;21597:6;21593:15;21586:29;21401:221;:::o;21628:366::-;21770:3;21791:67;21855:2;21850:3;21791:67;:::i;:::-;21784:74;;21867:93;21956:3;21867:93;:::i;:::-;21985:2;21980:3;21976:12;21969:19;;21628:366;;;:::o;22000:419::-;22166:4;22204:2;22193:9;22189:18;22181:26;;22253:9;22247:4;22243:20;22239:1;22228:9;22224:17;22217:47;22281:131;22407:4;22281:131;:::i;:::-;22273:139;;22000:419;;;:::o;22425:224::-;22565:34;22561:1;22553:6;22549:14;22542:58;22634:7;22629:2;22621:6;22617:15;22610:32;22425:224;:::o;22655:366::-;22797:3;22818:67;22882:2;22877:3;22818:67;:::i;:::-;22811:74;;22894:93;22983:3;22894:93;:::i;:::-;23012:2;23007:3;23003:12;22996:19;;22655:366;;;:::o;23027:419::-;23193:4;23231:2;23220:9;23216:18;23208:26;;23280:9;23274:4;23270:20;23266:1;23255:9;23251:17;23244:47;23308:131;23434:4;23308:131;:::i;:::-;23300:139;;23027:419;;;:::o;23452:222::-;23592:34;23588:1;23580:6;23576:14;23569:58;23661:5;23656:2;23648:6;23644:15;23637:30;23452:222;:::o;23680:366::-;23822:3;23843:67;23907:2;23902:3;23843:67;:::i;:::-;23836:74;;23919:93;24008:3;23919:93;:::i;:::-;24037:2;24032:3;24028:12;24021:19;;23680:366;;;:::o;24052:419::-;24218:4;24256:2;24245:9;24241:18;24233:26;;24305:9;24299:4;24295:20;24291:1;24280:9;24276:17;24269:47;24333:131;24459:4;24333:131;:::i;:::-;24325:139;;24052:419;;;:::o;24477:228::-;24617:34;24613:1;24605:6;24601:14;24594:58;24686:11;24681:2;24673:6;24669:15;24662:36;24477:228;:::o;24711:366::-;24853:3;24874:67;24938:2;24933:3;24874:67;:::i;:::-;24867:74;;24950:93;25039:3;24950:93;:::i;:::-;25068:2;25063:3;25059:12;25052:19;;24711:366;;;:::o;25083:419::-;25249:4;25287:2;25276:9;25272:18;25264:26;;25336:9;25330:4;25326:20;25322:1;25311:9;25307:17;25300:47;25364:131;25490:4;25364:131;:::i;:::-;25356:139;;25083:419;;;:::o;25508:175::-;25648:27;25644:1;25636:6;25632:14;25625:51;25508:175;:::o;25689:366::-;25831:3;25852:67;25916:2;25911:3;25852:67;:::i;:::-;25845:74;;25928:93;26017:3;25928:93;:::i;:::-;26046:2;26041:3;26037:12;26030:19;;25689:366;;;:::o;26061:419::-;26227:4;26265:2;26254:9;26250:18;26242:26;;26314:9;26308:4;26304:20;26300:1;26289:9;26285:17;26278:47;26342:131;26468:4;26342:131;:::i;:::-;26334:139;;26061:419;;;:::o;26486:191::-;26526:3;26545:20;26563:1;26545:20;:::i;:::-;26540:25;;26579:20;26597:1;26579:20;:::i;:::-;26574:25;;26622:1;26619;26615:9;26608:16;;26643:3;26640:1;26637:10;26634:36;;;26650:18;;:::i;:::-;26634:36;26486:191;;;;:::o;26683:176::-;26823:28;26819:1;26811:6;26807:14;26800:52;26683:176;:::o;26865:366::-;27007:3;27028:67;27092:2;27087:3;27028:67;:::i;:::-;27021:74;;27104:93;27193:3;27104:93;:::i;:::-;27222:2;27217:3;27213:12;27206:19;;26865:366;;;:::o;27237:419::-;27403:4;27441:2;27430:9;27426:18;27418:26;;27490:9;27484:4;27480:20;27476:1;27465:9;27461:17;27454:47;27518:131;27644:4;27518:131;:::i;:::-;27510:139;;27237:419;;;:::o;27662:233::-;27701:3;27724:24;27742:5;27724:24;:::i;:::-;27715:33;;27770:66;27763:5;27760:77;27757:103;;27840:18;;:::i;:::-;27757:103;27887:1;27880:5;27876:13;27869:20;;27662:233;;;:::o;27901:173::-;28041:25;28037:1;28029:6;28025:14;28018:49;27901:173;:::o;28080:366::-;28222:3;28243:67;28307:2;28302:3;28243:67;:::i;:::-;28236:74;;28319:93;28408:3;28319:93;:::i;:::-;28437:2;28432:3;28428:12;28421:19;;28080:366;;;:::o;28452:419::-;28618:4;28656:2;28645:9;28641:18;28633:26;;28705:9;28699:4;28695:20;28691:1;28680:9;28676:17;28669:47;28733:131;28859:4;28733:131;:::i;:::-;28725:139;;28452:419;;;:::o;28877:194::-;28917:4;28937:20;28955:1;28937:20;:::i;:::-;28932:25;;28971:20;28989:1;28971:20;:::i;:::-;28966:25;;29015:1;29012;29008:9;29000:17;;29039:1;29033:4;29030:11;29027:37;;;29044:18;;:::i;:::-;29027:37;28877:194;;;;:::o;29077:114::-;29144:6;29178:5;29172:12;29162:22;;29077:114;;;:::o;29197:184::-;29296:11;29330:6;29325:3;29318:19;29370:4;29365:3;29361:14;29346:29;;29197:184;;;;:::o;29387:132::-;29454:4;29477:3;29469:11;;29507:4;29502:3;29498:14;29490:22;;29387:132;;;:::o;29525:108::-;29602:24;29620:5;29602:24;:::i;:::-;29597:3;29590:37;29525:108;;:::o;29639:179::-;29708:10;29729:46;29771:3;29763:6;29729:46;:::i;:::-;29807:4;29802:3;29798:14;29784:28;;29639:179;;;;:::o;29824:113::-;29894:4;29926;29921:3;29917:14;29909:22;;29824:113;;;:::o;29973:732::-;30092:3;30121:54;30169:5;30121:54;:::i;:::-;30191:86;30270:6;30265:3;30191:86;:::i;:::-;30184:93;;30301:56;30351:5;30301:56;:::i;:::-;30380:7;30411:1;30396:284;30421:6;30418:1;30415:13;30396:284;;;30497:6;30491:13;30524:63;30583:3;30568:13;30524:63;:::i;:::-;30517:70;;30610:60;30663:6;30610:60;:::i;:::-;30600:70;;30456:224;30443:1;30440;30436:9;30431:14;;30396:284;;;30400:14;30696:3;30689:10;;30097:608;;;29973:732;;;;:::o;30711:831::-;30974:4;31012:3;31001:9;30997:19;30989:27;;31026:71;31094:1;31083:9;31079:17;31070:6;31026:71;:::i;:::-;31107:80;31183:2;31172:9;31168:18;31159:6;31107:80;:::i;:::-;31234:9;31228:4;31224:20;31219:2;31208:9;31204:18;31197:48;31262:108;31365:4;31356:6;31262:108;:::i;:::-;31254:116;;31380:72;31448:2;31437:9;31433:18;31424:6;31380:72;:::i;:::-;31462:73;31530:3;31519:9;31515:19;31506:6;31462:73;:::i;:::-;30711:831;;;;;;;;:::o;31548:180::-;31596:77;31593:1;31586:88;31693:4;31690:1;31683:15;31717:4;31714:1;31707:15;31734:185;31774:1;31791:20;31809:1;31791:20;:::i;:::-;31786:25;;31825:20;31843:1;31825:20;:::i;:::-;31820:25;;31864:1;31854:35;;31869:18;;:::i;:::-;31854:35;31911:1;31908;31904:9;31899:14;;31734:185;;;;:::o;31925:220::-;32065:34;32061:1;32053:6;32049:14;32042:58;32134:3;32129:2;32121:6;32117:15;32110:28;31925:220;:::o;32151:366::-;32293:3;32314:67;32378:2;32373:3;32314:67;:::i;:::-;32307:74;;32390:93;32479:3;32390:93;:::i;:::-;32508:2;32503:3;32499:12;32492:19;;32151:366;;;:::o;32523:419::-;32689:4;32727:2;32716:9;32712:18;32704:26;;32776:9;32770:4;32766:20;32762:1;32751:9;32747:17;32740:47;32804:131;32930:4;32804:131;:::i;:::-;32796:139;;32523:419;;;:::o;32948:177::-;33088:29;33084:1;33076:6;33072:14;33065:53;32948:177;:::o;33131:366::-;33273:3;33294:67;33358:2;33353:3;33294:67;:::i;:::-;33287:74;;33370:93;33459:3;33370:93;:::i;:::-;33488:2;33483:3;33479:12;33472:19;;33131:366;;;:::o;33503:419::-;33669:4;33707:2;33696:9;33692:18;33684:26;;33756:9;33750:4;33746:20;33742:1;33731:9;33727:17;33720:47;33784:131;33910:4;33784:131;:::i;:::-;33776:139;;33503:419;;;:::o

Swarm Source

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