ETH Price: $3,437.71 (-1.44%)
Gas: 9 Gwei

Token

Ape Society (APES)
 

Overview

Max Total Supply

1,000,000 APES

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
23,346.098495011830133912 APES

Value
$0.00
0x1f4aeda8d2ce102d1a6eb6ddff886fd21ba195f4
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ApeSociety

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-07
*/

//SPDX-License-Identifier: MIT

/*

   Ape Society

   Tax - 4/4
   Socials + Website links in telegram/discord groups
   
   https://t.me/ApeSocietyERC

*/

pragma solidity 0.8.12;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

contract ApeSociety is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 1_000 * 10e18;
    uint256 public maxTxAmount = 1_000_000 * 10**18;
    uint256 public maxWalletAmount = 1_000_000 * 10**18;
    
    address public marketingWallet = 0xde86b20F7f9d64DD0ed337E7e84FC82230c85D66;
    address public developerWallet = 0xde86b20F7f9d64DD0ed337E7e84FC82230c85D66;
    address public lpReceiver = marketingWallet;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 developer;
    }
    
    Taxes public taxes = Taxes(4,0,0);
    Taxes public sellTaxes = Taxes(4,0,0);
    uint256 public totTax = 4;
    uint256 public totSellTax = 4;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Ape Society", "APES") {
        _mint(msg.sender, 1e6 * 10**decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[developerWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 developerAmt = unitBalance * 2 * sellTaxes.developer;
            if(developerAmt > 0){
                payable(developerWallet).sendValue(developerAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpReceiver,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner {
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner{
        excludedFromFees[_address] = state;
    }

    function manualSwap(uint256 amount, uint256 developerPercentage, uint256 marketingPercentage) external {
        require (msg.sender == marketingWallet);
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (developerPercentage + marketingPercentage));
        if(developerPercentage > 0) payable(developerWallet).sendValue(newBalance * developerPercentage / (developerPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"developerPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060095569021e19e0c9bab2400000600a5569d3c21bcecceda1000000600b5569d3c21bcecceda1000000600c5573de86b20f7f9d64dd0ed337e7e84fc82230c85d66600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073de86b20f7f9d64dd0ed337e7e84fc82230c85d66600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060048152602001600081526020016000815250601060008201518160000155602082015181600101556040820151816002015550506040518060600160405280600481526020016000815260200160008152506013600082015181600001556020820151816001015560408201518160020155505060046016556004601755348015620001d757600080fd5b506040518060400160405280600b81526020017f41706520536f63696574790000000000000000000000000000000000000000008152506040518060400160405280600481526020017f415045530000000000000000000000000000000000000000000000000000000081525081600390805190602001906200025c929190620008c8565b50806004908051906020019062000275929190620008c8565b505050620002986200028c6200068760201b60201c565b6200068f60201b60201c565b620002d733620002ad6200075560201b60201c565b600a620002bb919062000b12565b620f4240620002cb919062000b63565b6200075e60201b60201c565b6001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000396573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bc919062000c2e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044a919062000c2e565b6040518363ffffffff1660e01b81526004016200046992919062000c71565b6020604051808303816000875af115801562000489573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004af919062000c2e565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e11565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c89062000cff565b60405180910390fd5b620007e560008383620008c360201b60201c565b8060026000828254620007f9919062000d21565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000850919062000d21565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008b7919062000d8f565b60405180910390a35050565b505050565b828054620008d69062000ddb565b90600052602060002090601f016020900481019282620008fa576000855562000946565b82601f106200091557805160ff191683800117855562000946565b8280016001018555821562000946579182015b828111156200094557825182559160200191906001019062000928565b5b50905062000955919062000959565b5090565b5b80821115620009745760008160009055506001016200095a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a0657808604811115620009de57620009dd62000978565b5b6001851615620009ee5780820291505b8081029050620009fe85620009a7565b9450620009be565b94509492505050565b60008262000a21576001905062000af4565b8162000a31576000905062000af4565b816001811462000a4a576002811462000a555762000a8b565b600191505062000af4565b60ff84111562000a6a5762000a6962000978565b5b8360020a91508482111562000a845762000a8362000978565b5b5062000af4565b5060208310610133831016604e8410600b841016171562000ac55782820a90508381111562000abf5762000abe62000978565b5b62000af4565b62000ad48484846001620009b4565b9250905081840481111562000aee5762000aed62000978565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b1f8262000afb565b915062000b2c8362000b05565b925062000b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a0f565b905092915050565b600062000b708262000afb565b915062000b7d8362000afb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bb95762000bb862000978565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bf68262000bc9565b9050919050565b62000c088162000be9565b811462000c1457600080fd5b50565b60008151905062000c288162000bfd565b92915050565b60006020828403121562000c475762000c4662000bc4565b5b600062000c578482850162000c17565b91505092915050565b62000c6b8162000be9565b82525050565b600060408201905062000c88600083018562000c60565b62000c97602083018462000c60565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ce7601f8362000c9e565b915062000cf48262000caf565b602082019050919050565b6000602082019050818103600083015262000d1a8162000cd8565b9050919050565b600062000d2e8262000afb565b915062000d3b8362000afb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d735762000d7262000978565b5b828201905092915050565b62000d898162000afb565b82525050565b600060208201905062000da6600083018462000d7e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000df457607f821691505b6020821081141562000e0b5762000e0a62000dac565b5b50919050565b613a418062000e216000396000f3fe60806040526004361061021e5760003560e01c8063715018a611610123578063a8aa1b31116100ab578063e01af92c1161006f578063e01af92c14610814578063e545fd6d1461083d578063f2fde38b14610866578063f66895a31461088f578063f887ea40146108bc57610225565b8063a8aa1b3114610707578063a9059cbb14610732578063aa4bde281461076f578063dbe66ca01461079a578063dd62ed3e146107d757610225565b80638c0b5e22116100f25780638c0b5e22146106205780638da5cb5b1461064b57806395d89b41146106765780639d0014b1146106a1578063a457c2d7146106ca57610225565b8063715018a614610588578063728f8eea1461059f57806375f0a874146105cc57806382aa7c68146105f757610225565b8063274a533c116101a65780633bbac579116101755780633bbac5791461048d5780634ada218b146104ca57806350c9a88f146104f55780636ddd17131461052057806370a082311461054b57610225565b8063274a533c146103cf578063293b7ef4146103fa578063313ce56714610425578063395093511461045057610225565b8063185870f9116101ed578063185870f9146102e85780631f0c57fc146103135780632253163d1461033e57806323b872dd1461036957806326b5d32f146103a657610225565b80630445b6671461022a57806306fdde0314610255578063095ea7b31461028057806318160ddd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108e7565b60405161024c91906127a1565b60405180910390f35b34801561026157600080fd5b5061026a6108ed565b6040516102779190612855565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612906565b61097f565b6040516102b49190612961565b60405180910390f35b3480156102c957600080fd5b506102d261099d565b6040516102df91906127a1565b60405180910390f35b3480156102f457600080fd5b506102fd6109a7565b60405161030a919061298b565b60405180910390f35b34801561031f57600080fd5b506103286109cd565b604051610335919061298b565b60405180910390f35b34801561034a57600080fd5b506103536109f3565b60405161036091906127a1565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b91906129a6565b6109f9565b60405161039d9190612961565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906129f9565b610afa565b005b3480156103db57600080fd5b506103e4610c65565b6040516103f191906127a1565b60405180910390f35b34801561040657600080fd5b5061040f610c6b565b60405161041c91906127a1565b60405180910390f35b34801561043157600080fd5b5061043a610c71565b6040516104479190612a68565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612906565b610c7a565b6040516104849190612961565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190612a83565b610d26565b6040516104c19190612961565b60405180910390f35b3480156104d657600080fd5b506104df610d46565b6040516104ec9190612961565b60405180910390f35b34801561050157600080fd5b5061050a610d59565b60405161051791906127a1565b60405180910390f35b34801561052c57600080fd5b50610535610d5f565b6040516105429190612961565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612a83565b610d72565b60405161057f91906127a1565b60405180910390f35b34801561059457600080fd5b5061059d610dba565b005b3480156105ab57600080fd5b506105b4610e42565b6040516105c393929190612ab0565b60405180910390f35b3480156105d857600080fd5b506105e1610e5a565b6040516105ee919061298b565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612ae7565b610e80565b005b34801561062c57600080fd5b50610635610f93565b60405161064291906127a1565b60405180910390f35b34801561065757600080fd5b50610660610f99565b60405161066d919061298b565b60405180910390f35b34801561068257600080fd5b5061068b610fc3565b6040516106989190612855565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190612ae7565b611055565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190612906565b6110db565b6040516106fe9190612961565b60405180910390f35b34801561071357600080fd5b5061071c6111cf565b604051610729919061298b565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190612906565b6111f5565b6040516107669190612961565b60405180910390f35b34801561077b57600080fd5b50610784611213565b60405161079191906127a1565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190612a83565b611219565b6040516107ce9190612961565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190612b14565b611239565b60405161080b91906127a1565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190612b80565b6112c0565b005b34801561084957600080fd5b50610864600480360381019061085f9190612bad565b611359565b005b34801561087257600080fd5b5061088d60048036038101906108889190612a83565b611430565b005b34801561089b57600080fd5b506108a4611528565b6040516108b393929190612ab0565b60405180910390f35b3480156108c857600080fd5b506108d1611540565b6040516108de9190612c4c565b60405180910390f35b600a5481565b6060600380546108fc90612c96565b80601f016020809104026020016040519081016040528092919081815260200182805461092890612c96565b80156109755780601f1061094a57610100808354040283529160200191610975565b820191906000526020600020905b81548152906001019060200180831161095857829003601f168201915b5050505050905090565b600061099361098c611566565b848461156e565b6001905092915050565b6000600254905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000610a06848484611739565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a51611566565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac890612d3a565b60405180910390fd5b610aee85610add611566565b8584610ae99190612d89565b61156e565b60019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5457600080fd5b6000479050610b6284611e03565b60008147610b709190612d89565b90506000831115610be857610be78385610b8a9190612dbd565b8483610b969190612e13565b610ba09190612e9c565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b6000841115610c5e57610c5d8385610c009190612dbd565b8583610c0c9190612e13565b610c169190612e9c565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b5050505050565b60085481565b60165481565b60006012905090565b6000610d1c610c87611566565b848460016000610c95611566565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d179190612dbd565b61156e565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600760169054906101000a900460ff1681565b60095481565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc2611566565b73ffffffffffffffffffffffffffffffffffffffff16610de0610f99565b73ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90612f19565b60405180910390fd5b610e40600061213a565b565b60108060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e88611566565b73ffffffffffffffffffffffffffffffffffffffff16610ea6610f99565b73ffffffffffffffffffffffffffffffffffffffff1614610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390612f19565b60405180910390fd5b600760169054906101000a900460ff1615610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390612f85565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fd290612c96565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90612c96565b801561104b5780601f106110205761010080835404028352916020019161104b565b820191906000526020600020905b81548152906001019060200180831161102e57829003601f168201915b5050505050905090565b61105d611566565b73ffffffffffffffffffffffffffffffffffffffff1661107b610f99565b73ffffffffffffffffffffffffffffffffffffffff16146110d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c890612f19565b60405180910390fd5b80600a8190555050565b600080600160006110ea611566565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90613017565b60405180910390fd5b6111c46111b2611566565b8585846111bf9190612d89565b61156e565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611209611202611566565b8484611739565b6001905092915050565b600c5481565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c8611566565b73ffffffffffffffffffffffffffffffffffffffff166112e6610f99565b73ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390612f19565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611361611566565b73ffffffffffffffffffffffffffffffffffffffff1661137f610f99565b73ffffffffffffffffffffffffffffffffffffffff16146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612f19565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611438611566565b73ffffffffffffffffffffffffffffffffffffffff16611456610f99565b73ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612f19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561151c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611513906130a9565b60405180910390fd5b6115258161213a565b50565b60138060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d59061313b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906131cd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172c91906127a1565b60405180910390a3505050565b6000811161177c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117739061325f565b60405180910390fd5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118205750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61185f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611856906132cb565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119035750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561191c5750600760149054906101000a900460ff16155b15611bd857600760169054906101000a900460ff16611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613337565b60405180910390fd5b436009546008546119819190612dbd565b1115611ae457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a35576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ae3576001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b20906133a3565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bd757600c5481611b8b84610d72565b611b959190612dbd565b1115611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd90613435565b60405180910390fd5b5b5b6000600760149054906101000a900460ff1680611c3e5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c925750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ca05760009050611d35565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d1757606460175483611d069190612e13565b611d109190612e9c565b9050611d34565b606460165483611d279190612e13565b611d319190612e9c565b90505b5b600760159054906101000a900460ff168015611d5e5750600760149054906101000a900460ff16155b8015611db85750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611dc45750600081115b15611dd257611dd1612200565b5b611de884848385611de39190612d89565b612404565b6000811115611dfd57611dfc843083612404565b5b50505050565b6000600267ffffffffffffffff811115611e2057611e1f613455565b5b604051908082528060200260200182016040528015611e4e5781602001602082028036833780820191505090505b5090503081600081518110611e6657611e65613484565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3191906134c8565b81600181518110611f4557611f44613484565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fac30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461156e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120109594939291906135ee565b600060405180830381600087803b15801561202a57600080fd5b505af115801561203e573d6000803e3d6000fd5b505050505050565b80471015612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208090613694565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516120af906136e5565b60006040518083038185875af1925050503d80600081146120ec576040519150601f19603f3d011682016040523d82523d6000602084013e6120f1565b606091505b5050905080612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061376c565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612402576001600760146101000a81548160ff021916908315150217905550600061223a30610d72565b9050600a5481106123e557600060026017546122569190612e13565b90506000816013600101548461226c9190612e13565b6122769190612e9c565b9050600081846122869190612d89565b9050600047905061229682611e03565b600081476122a49190612d89565b90506000601360010154866122b99190612d89565b826122c49190612e9c565b90506000601360010154826122d99190612e13565b905060008111156122ef576122ee8682612683565b5b60006013600001546002846123049190612e13565b61230e9190612e13565b905060008111156123655761236481600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b600060136002015460028561237a9190612e13565b6123849190612e13565b905060008111156123db576123da81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b906137fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90613890565b60405180910390fd5b6124ef838383612783565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c90613922565b60405180910390fd5b81816125819190612d89565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126119190612dbd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161267591906127a1565b60405180910390a350505050565b6126b030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461156e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161273996959493929190613942565b60606040518083038185885af1158015612757573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061277c91906139b8565b5050505050565b505050565b6000819050919050565b61279b81612788565b82525050565b60006020820190506127b66000830184612792565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f65780820151818401526020810190506127db565b83811115612805576000848401525b50505050565b6000601f19601f8301169050919050565b6000612827826127bc565b61283181856127c7565b93506128418185602086016127d8565b61284a8161280b565b840191505092915050565b6000602082019050818103600083015261286f818461281c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a78261287c565b9050919050565b6128b78161289c565b81146128c257600080fd5b50565b6000813590506128d4816128ae565b92915050565b6128e381612788565b81146128ee57600080fd5b50565b600081359050612900816128da565b92915050565b6000806040838503121561291d5761291c612877565b5b600061292b858286016128c5565b925050602061293c858286016128f1565b9150509250929050565b60008115159050919050565b61295b81612946565b82525050565b60006020820190506129766000830184612952565b92915050565b6129858161289c565b82525050565b60006020820190506129a0600083018461297c565b92915050565b6000806000606084860312156129bf576129be612877565b5b60006129cd868287016128c5565b93505060206129de868287016128c5565b92505060406129ef868287016128f1565b9150509250925092565b600080600060608486031215612a1257612a11612877565b5b6000612a20868287016128f1565b9350506020612a31868287016128f1565b9250506040612a42868287016128f1565b9150509250925092565b600060ff82169050919050565b612a6281612a4c565b82525050565b6000602082019050612a7d6000830184612a59565b92915050565b600060208284031215612a9957612a98612877565b5b6000612aa7848285016128c5565b91505092915050565b6000606082019050612ac56000830186612792565b612ad26020830185612792565b612adf6040830184612792565b949350505050565b600060208284031215612afd57612afc612877565b5b6000612b0b848285016128f1565b91505092915050565b60008060408385031215612b2b57612b2a612877565b5b6000612b39858286016128c5565b9250506020612b4a858286016128c5565b9150509250929050565b612b5d81612946565b8114612b6857600080fd5b50565b600081359050612b7a81612b54565b92915050565b600060208284031215612b9657612b95612877565b5b6000612ba484828501612b6b565b91505092915050565b60008060408385031215612bc457612bc3612877565b5b6000612bd2858286016128c5565b9250506020612be385828601612b6b565b9150509250929050565b6000819050919050565b6000612c12612c0d612c088461287c565b612bed565b61287c565b9050919050565b6000612c2482612bf7565b9050919050565b6000612c3682612c19565b9050919050565b612c4681612c2b565b82525050565b6000602082019050612c616000830184612c3d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cae57607f821691505b60208210811415612cc257612cc1612c67565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612d246028836127c7565b9150612d2f82612cc8565b604082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d9482612788565b9150612d9f83612788565b925082821015612db257612db1612d5a565b5b828203905092915050565b6000612dc882612788565b9150612dd383612788565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e0857612e07612d5a565b5b828201905092915050565b6000612e1e82612788565b9150612e2983612788565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6257612e61612d5a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ea782612788565b9150612eb283612788565b925082612ec257612ec1612e6d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f036020836127c7565b9150612f0e82612ecd565b602082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000612f6f6016836127c7565b9150612f7a82612f39565b602082019050919050565b60006020820190508181036000830152612f9e81612f62565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130016025836127c7565b915061300c82612fa5565b604082019050919050565b6000602082019050818103600083015261303081612ff4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130936026836127c7565b915061309e82613037565b604082019050919050565b600060208201905081810360008301526130c281613086565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131256024836127c7565b9150613130826130c9565b604082019050919050565b6000602082019050818103600083015261315481613118565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131b76022836127c7565b91506131c28261315b565b604082019050919050565b600060208201905081810360008301526131e6816131aa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006132496029836127c7565b9150613254826131ed565b604082019050919050565b600060208201905081810360008301526132788161323c565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006132b56019836127c7565b91506132c08261327f565b602082019050919050565b600060208201905081810360008301526132e4816132a8565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b60006133216016836127c7565b915061332c826132eb565b602082019050919050565b6000602082019050818103600083015261335081613314565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b600061338d601d836127c7565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061341f6021836127c7565b915061342a826133c3565b604082019050919050565b6000602082019050818103600083015261344e81613412565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134c2816128ae565b92915050565b6000602082840312156134de576134dd612877565b5b60006134ec848285016134b3565b91505092915050565b6000819050919050565b600061351a613515613510846134f5565b612bed565b612788565b9050919050565b61352a816134ff565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135658161289c565b82525050565b6000613577838361355c565b60208301905092915050565b6000602082019050919050565b600061359b82613530565b6135a5818561353b565b93506135b08361354c565b8060005b838110156135e15781516135c8888261356b565b97506135d383613583565b9250506001810190506135b4565b5085935050505092915050565b600060a0820190506136036000830188612792565b6136106020830187613521565b81810360408301526136228186613590565b9050613631606083018561297c565b61363e6080830184612792565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061367e601d836127c7565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b600081905092915050565b50565b60006136cf6000836136b4565b91506136da826136bf565b600082019050919050565b60006136f0826136c2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613756603a836127c7565b9150613761826136fa565b604082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137e86025836127c7565b91506137f38261378c565b604082019050919050565b60006020820190508181036000830152613817816137db565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061387a6023836127c7565b91506138858261381e565b604082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061390c6026836127c7565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b600060c082019050613957600083018961297c565b6139646020830188612792565b6139716040830187613521565b61397e6060830186613521565b61398b608083018561297c565b61399860a0830184612792565b979650505050505050565b6000815190506139b2816128da565b92915050565b6000806000606084860312156139d1576139d0612877565b5b60006139df868287016139a3565b93505060206139f0868287016139a3565b9250506040613a01868287016139a3565b915050925092509256fea2646970667358221220d66c7ff0ed262cf1d43820d51960c8056b3a1bff40309ac8dbfa3baf3179425564736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063715018a611610123578063a8aa1b31116100ab578063e01af92c1161006f578063e01af92c14610814578063e545fd6d1461083d578063f2fde38b14610866578063f66895a31461088f578063f887ea40146108bc57610225565b8063a8aa1b3114610707578063a9059cbb14610732578063aa4bde281461076f578063dbe66ca01461079a578063dd62ed3e146107d757610225565b80638c0b5e22116100f25780638c0b5e22146106205780638da5cb5b1461064b57806395d89b41146106765780639d0014b1146106a1578063a457c2d7146106ca57610225565b8063715018a614610588578063728f8eea1461059f57806375f0a874146105cc57806382aa7c68146105f757610225565b8063274a533c116101a65780633bbac579116101755780633bbac5791461048d5780634ada218b146104ca57806350c9a88f146104f55780636ddd17131461052057806370a082311461054b57610225565b8063274a533c146103cf578063293b7ef4146103fa578063313ce56714610425578063395093511461045057610225565b8063185870f9116101ed578063185870f9146102e85780631f0c57fc146103135780632253163d1461033e57806323b872dd1461036957806326b5d32f146103a657610225565b80630445b6671461022a57806306fdde0314610255578063095ea7b31461028057806318160ddd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108e7565b60405161024c91906127a1565b60405180910390f35b34801561026157600080fd5b5061026a6108ed565b6040516102779190612855565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612906565b61097f565b6040516102b49190612961565b60405180910390f35b3480156102c957600080fd5b506102d261099d565b6040516102df91906127a1565b60405180910390f35b3480156102f457600080fd5b506102fd6109a7565b60405161030a919061298b565b60405180910390f35b34801561031f57600080fd5b506103286109cd565b604051610335919061298b565b60405180910390f35b34801561034a57600080fd5b506103536109f3565b60405161036091906127a1565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b91906129a6565b6109f9565b60405161039d9190612961565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906129f9565b610afa565b005b3480156103db57600080fd5b506103e4610c65565b6040516103f191906127a1565b60405180910390f35b34801561040657600080fd5b5061040f610c6b565b60405161041c91906127a1565b60405180910390f35b34801561043157600080fd5b5061043a610c71565b6040516104479190612a68565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612906565b610c7a565b6040516104849190612961565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190612a83565b610d26565b6040516104c19190612961565b60405180910390f35b3480156104d657600080fd5b506104df610d46565b6040516104ec9190612961565b60405180910390f35b34801561050157600080fd5b5061050a610d59565b60405161051791906127a1565b60405180910390f35b34801561052c57600080fd5b50610535610d5f565b6040516105429190612961565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612a83565b610d72565b60405161057f91906127a1565b60405180910390f35b34801561059457600080fd5b5061059d610dba565b005b3480156105ab57600080fd5b506105b4610e42565b6040516105c393929190612ab0565b60405180910390f35b3480156105d857600080fd5b506105e1610e5a565b6040516105ee919061298b565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612ae7565b610e80565b005b34801561062c57600080fd5b50610635610f93565b60405161064291906127a1565b60405180910390f35b34801561065757600080fd5b50610660610f99565b60405161066d919061298b565b60405180910390f35b34801561068257600080fd5b5061068b610fc3565b6040516106989190612855565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190612ae7565b611055565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190612906565b6110db565b6040516106fe9190612961565b60405180910390f35b34801561071357600080fd5b5061071c6111cf565b604051610729919061298b565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190612906565b6111f5565b6040516107669190612961565b60405180910390f35b34801561077b57600080fd5b50610784611213565b60405161079191906127a1565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190612a83565b611219565b6040516107ce9190612961565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190612b14565b611239565b60405161080b91906127a1565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190612b80565b6112c0565b005b34801561084957600080fd5b50610864600480360381019061085f9190612bad565b611359565b005b34801561087257600080fd5b5061088d60048036038101906108889190612a83565b611430565b005b34801561089b57600080fd5b506108a4611528565b6040516108b393929190612ab0565b60405180910390f35b3480156108c857600080fd5b506108d1611540565b6040516108de9190612c4c565b60405180910390f35b600a5481565b6060600380546108fc90612c96565b80601f016020809104026020016040519081016040528092919081815260200182805461092890612c96565b80156109755780601f1061094a57610100808354040283529160200191610975565b820191906000526020600020905b81548152906001019060200180831161095857829003601f168201915b5050505050905090565b600061099361098c611566565b848461156e565b6001905092915050565b6000600254905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000610a06848484611739565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a51611566565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac890612d3a565b60405180910390fd5b610aee85610add611566565b8584610ae99190612d89565b61156e565b60019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5457600080fd5b6000479050610b6284611e03565b60008147610b709190612d89565b90506000831115610be857610be78385610b8a9190612dbd565b8483610b969190612e13565b610ba09190612e9c565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b6000841115610c5e57610c5d8385610c009190612dbd565b8583610c0c9190612e13565b610c169190612e9c565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b5050505050565b60085481565b60165481565b60006012905090565b6000610d1c610c87611566565b848460016000610c95611566565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d179190612dbd565b61156e565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600760169054906101000a900460ff1681565b60095481565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc2611566565b73ffffffffffffffffffffffffffffffffffffffff16610de0610f99565b73ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90612f19565b60405180910390fd5b610e40600061213a565b565b60108060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e88611566565b73ffffffffffffffffffffffffffffffffffffffff16610ea6610f99565b73ffffffffffffffffffffffffffffffffffffffff1614610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390612f19565b60405180910390fd5b600760169054906101000a900460ff1615610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390612f85565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fd290612c96565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90612c96565b801561104b5780601f106110205761010080835404028352916020019161104b565b820191906000526020600020905b81548152906001019060200180831161102e57829003601f168201915b5050505050905090565b61105d611566565b73ffffffffffffffffffffffffffffffffffffffff1661107b610f99565b73ffffffffffffffffffffffffffffffffffffffff16146110d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c890612f19565b60405180910390fd5b80600a8190555050565b600080600160006110ea611566565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90613017565b60405180910390fd5b6111c46111b2611566565b8585846111bf9190612d89565b61156e565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611209611202611566565b8484611739565b6001905092915050565b600c5481565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c8611566565b73ffffffffffffffffffffffffffffffffffffffff166112e6610f99565b73ffffffffffffffffffffffffffffffffffffffff161461133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390612f19565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611361611566565b73ffffffffffffffffffffffffffffffffffffffff1661137f610f99565b73ffffffffffffffffffffffffffffffffffffffff16146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612f19565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611438611566565b73ffffffffffffffffffffffffffffffffffffffff16611456610f99565b73ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612f19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561151c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611513906130a9565b60405180910390fd5b6115258161213a565b50565b60138060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d59061313b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906131cd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172c91906127a1565b60405180910390a3505050565b6000811161177c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117739061325f565b60405180910390fd5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118205750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61185f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611856906132cb565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119035750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561191c5750600760149054906101000a900460ff16155b15611bd857600760169054906101000a900460ff16611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613337565b60405180910390fd5b436009546008546119819190612dbd565b1115611ae457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a35576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ae3576001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b20906133a3565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bd757600c5481611b8b84610d72565b611b959190612dbd565b1115611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd90613435565b60405180910390fd5b5b5b6000600760149054906101000a900460ff1680611c3e5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c925750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ca05760009050611d35565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d1757606460175483611d069190612e13565b611d109190612e9c565b9050611d34565b606460165483611d279190612e13565b611d319190612e9c565b90505b5b600760159054906101000a900460ff168015611d5e5750600760149054906101000a900460ff16155b8015611db85750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611dc45750600081115b15611dd257611dd1612200565b5b611de884848385611de39190612d89565b612404565b6000811115611dfd57611dfc843083612404565b5b50505050565b6000600267ffffffffffffffff811115611e2057611e1f613455565b5b604051908082528060200260200182016040528015611e4e5781602001602082028036833780820191505090505b5090503081600081518110611e6657611e65613484565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3191906134c8565b81600181518110611f4557611f44613484565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fac30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461156e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120109594939291906135ee565b600060405180830381600087803b15801561202a57600080fd5b505af115801561203e573d6000803e3d6000fd5b505050505050565b80471015612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208090613694565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516120af906136e5565b60006040518083038185875af1925050503d80600081146120ec576040519150601f19603f3d011682016040523d82523d6000602084013e6120f1565b606091505b5050905080612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061376c565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612402576001600760146101000a81548160ff021916908315150217905550600061223a30610d72565b9050600a5481106123e557600060026017546122569190612e13565b90506000816013600101548461226c9190612e13565b6122769190612e9c565b9050600081846122869190612d89565b9050600047905061229682611e03565b600081476122a49190612d89565b90506000601360010154866122b99190612d89565b826122c49190612e9c565b90506000601360010154826122d99190612e13565b905060008111156122ef576122ee8682612683565b5b60006013600001546002846123049190612e13565b61230e9190612e13565b905060008111156123655761236481600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b600060136002015460028561237a9190612e13565b6123849190612e13565b905060008111156123db576123da81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661204690919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b906137fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90613890565b60405180910390fd5b6124ef838383612783565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c90613922565b60405180910390fd5b81816125819190612d89565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126119190612dbd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161267591906127a1565b60405180910390a350505050565b6126b030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461156e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161273996959493929190613942565b60606040518083038185885af1158015612757573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061277c91906139b8565b5050505050565b505050565b6000819050919050565b61279b81612788565b82525050565b60006020820190506127b66000830184612792565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f65780820151818401526020810190506127db565b83811115612805576000848401525b50505050565b6000601f19601f8301169050919050565b6000612827826127bc565b61283181856127c7565b93506128418185602086016127d8565b61284a8161280b565b840191505092915050565b6000602082019050818103600083015261286f818461281c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a78261287c565b9050919050565b6128b78161289c565b81146128c257600080fd5b50565b6000813590506128d4816128ae565b92915050565b6128e381612788565b81146128ee57600080fd5b50565b600081359050612900816128da565b92915050565b6000806040838503121561291d5761291c612877565b5b600061292b858286016128c5565b925050602061293c858286016128f1565b9150509250929050565b60008115159050919050565b61295b81612946565b82525050565b60006020820190506129766000830184612952565b92915050565b6129858161289c565b82525050565b60006020820190506129a0600083018461297c565b92915050565b6000806000606084860312156129bf576129be612877565b5b60006129cd868287016128c5565b93505060206129de868287016128c5565b92505060406129ef868287016128f1565b9150509250925092565b600080600060608486031215612a1257612a11612877565b5b6000612a20868287016128f1565b9350506020612a31868287016128f1565b9250506040612a42868287016128f1565b9150509250925092565b600060ff82169050919050565b612a6281612a4c565b82525050565b6000602082019050612a7d6000830184612a59565b92915050565b600060208284031215612a9957612a98612877565b5b6000612aa7848285016128c5565b91505092915050565b6000606082019050612ac56000830186612792565b612ad26020830185612792565b612adf6040830184612792565b949350505050565b600060208284031215612afd57612afc612877565b5b6000612b0b848285016128f1565b91505092915050565b60008060408385031215612b2b57612b2a612877565b5b6000612b39858286016128c5565b9250506020612b4a858286016128c5565b9150509250929050565b612b5d81612946565b8114612b6857600080fd5b50565b600081359050612b7a81612b54565b92915050565b600060208284031215612b9657612b95612877565b5b6000612ba484828501612b6b565b91505092915050565b60008060408385031215612bc457612bc3612877565b5b6000612bd2858286016128c5565b9250506020612be385828601612b6b565b9150509250929050565b6000819050919050565b6000612c12612c0d612c088461287c565b612bed565b61287c565b9050919050565b6000612c2482612bf7565b9050919050565b6000612c3682612c19565b9050919050565b612c4681612c2b565b82525050565b6000602082019050612c616000830184612c3d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cae57607f821691505b60208210811415612cc257612cc1612c67565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612d246028836127c7565b9150612d2f82612cc8565b604082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d9482612788565b9150612d9f83612788565b925082821015612db257612db1612d5a565b5b828203905092915050565b6000612dc882612788565b9150612dd383612788565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e0857612e07612d5a565b5b828201905092915050565b6000612e1e82612788565b9150612e2983612788565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6257612e61612d5a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ea782612788565b9150612eb283612788565b925082612ec257612ec1612e6d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f036020836127c7565b9150612f0e82612ecd565b602082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000612f6f6016836127c7565b9150612f7a82612f39565b602082019050919050565b60006020820190508181036000830152612f9e81612f62565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130016025836127c7565b915061300c82612fa5565b604082019050919050565b6000602082019050818103600083015261303081612ff4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130936026836127c7565b915061309e82613037565b604082019050919050565b600060208201905081810360008301526130c281613086565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131256024836127c7565b9150613130826130c9565b604082019050919050565b6000602082019050818103600083015261315481613118565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131b76022836127c7565b91506131c28261315b565b604082019050919050565b600060208201905081810360008301526131e6816131aa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006132496029836127c7565b9150613254826131ed565b604082019050919050565b600060208201905081810360008301526132788161323c565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006132b56019836127c7565b91506132c08261327f565b602082019050919050565b600060208201905081810360008301526132e4816132a8565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b60006133216016836127c7565b915061332c826132eb565b602082019050919050565b6000602082019050818103600083015261335081613314565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b600061338d601d836127c7565b915061339882613357565b602082019050919050565b600060208201905081810360008301526133bc81613380565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061341f6021836127c7565b915061342a826133c3565b604082019050919050565b6000602082019050818103600083015261344e81613412565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134c2816128ae565b92915050565b6000602082840312156134de576134dd612877565b5b60006134ec848285016134b3565b91505092915050565b6000819050919050565b600061351a613515613510846134f5565b612bed565b612788565b9050919050565b61352a816134ff565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135658161289c565b82525050565b6000613577838361355c565b60208301905092915050565b6000602082019050919050565b600061359b82613530565b6135a5818561353b565b93506135b08361354c565b8060005b838110156135e15781516135c8888261356b565b97506135d383613583565b9250506001810190506135b4565b5085935050505092915050565b600060a0820190506136036000830188612792565b6136106020830187613521565b81810360408301526136228186613590565b9050613631606083018561297c565b61363e6080830184612792565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061367e601d836127c7565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b600081905092915050565b50565b60006136cf6000836136b4565b91506136da826136bf565b600082019050919050565b60006136f0826136c2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613756603a836127c7565b9150613761826136fa565b604082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137e86025836127c7565b91506137f38261378c565b604082019050919050565b60006020820190508181036000830152613817816137db565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061387a6023836127c7565b91506138858261381e565b604082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061390c6026836127c7565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b600060c082019050613957600083018961297c565b6139646020830188612792565b6139716040830187613521565b61397e6060830186613521565b61398b608083018561297c565b61399860a0830184612792565b979650505050505050565b6000815190506139b2816128da565b92915050565b6000806000606084860312156139d1576139d0612877565b5b60006139df868287016139a3565b93505060206139f0868287016139a3565b9250506040613a01868287016139a3565b915050925092509256fea2646970667358221220d66c7ff0ed262cf1d43820d51960c8056b3a1bff40309ac8dbfa3baf3179425564736f6c634300080c0033

Deployed Bytecode Sourcemap

7847:7041:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8167:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1806:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2708:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2121:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8418:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8500:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8790:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2883:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14201:623;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8090:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8758:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2022:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3311:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8888:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8055:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8125:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8025:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2237:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6624:94;;;;;;;;;;;;;:::i;:::-;;8674:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8336:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13777:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8218:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6401:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1912:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13659:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3532:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7965:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2370:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8272:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8832:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2551:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13558:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14060:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6726:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8714:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7937:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8167:44;;;;:::o;1806:100::-;1860:13;1893:5;1886:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1806:100;:::o;2708:169::-;2791:4;2808:39;2817:12;:10;:12::i;:::-;2831:7;2840:6;2808:8;:39::i;:::-;2865:4;2858:11;;2708:169;;;;:::o;2121:108::-;2182:7;2209:12;;2202:19;;2121:108;:::o;8418:75::-;;;;;;;;;;;;;:::o;8500:43::-;;;;;;;;;;;;;:::o;8790:29::-;;;;:::o;2883:422::-;2989:4;3006:36;3016:6;3024:9;3035:6;3006:9;:36::i;:::-;3055:24;3082:11;:19;3094:6;3082:19;;;;;;;;;;;;;;;:33;3102:12;:10;:12::i;:::-;3082:33;;;;;;;;;;;;;;;;3055:60;;3154:6;3134:16;:26;;3126:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3216:57;3225:6;3233:12;:10;:12::i;:::-;3266:6;3247:16;:25;;;;:::i;:::-;3216:8;:57::i;:::-;3293:4;3286:11;;;2883:422;;;;;:::o;14201:623::-;14338:15;;;;;;;;;;;14324:29;;:10;:29;;;14315:39;;;;;;14365:19;14387:21;14365:43;;14419:24;14436:6;14419:16;:24::i;:::-;14454:18;14499:11;14475:21;:35;;;;:::i;:::-;14454:56;;14546:1;14524:19;:23;14521:142;;;14549:114;14642:19;14620;:41;;;;:::i;:::-;14597:19;14584:10;:32;;;;:::i;:::-;:78;;;;:::i;:::-;14557:15;;;;;;;;;;;14549:34;;;;:114;;;;:::i;:::-;14521:142;14699:1;14677:19;:23;14674:142;;;14702:114;14795:19;14773;:41;;;;:::i;:::-;14750:19;14737:10;:32;;;;:::i;:::-;:78;;;;:::i;:::-;14710:15;;;;;;;;;;;14702:34;;;;:114;;;;:::i;:::-;14674:142;14304:520;;14201:623;;;:::o;8090:28::-;;;;:::o;8758:25::-;;;;:::o;2022:93::-;2080:5;2105:2;2098:9;;2022:93;:::o;3311:215::-;3399:4;3416:80;3425:12;:10;:12::i;:::-;3439:7;3485:10;3448:11;:25;3460:12;:10;:12::i;:::-;3448:25;;;;;;;;;;;;;;;:34;3474:7;3448:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3416:8;:80::i;:::-;3514:4;3507:11;;3311:215;;;;:::o;8888:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;8055:26::-;;;;;;;;;;;;;:::o;8125:29::-;;;;:::o;8025:23::-;;;;;;;;;;;;;:::o;2237:127::-;2311:7;2338:9;:18;2348:7;2338:18;;;;;;;;;;;;;;;;2331:25;;2237:127;;;:::o;6624:94::-;6547:12;:10;:12::i;:::-;6536:23;;:7;:5;:7::i;:::-;:23;;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6689:21:::1;6707:1;6689:9;:21::i;:::-;6624:94::o:0;8674:33::-;;;;;;;;;;;;;;;;;;;:::o;8336:75::-;;;;;;;;;;;;;:::o;13777:275::-;6547:12;:10;:12::i;:::-;6536:23;;:7;:5;:7::i;:::-;:23;;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13864:14:::1;;;;;;;;;;;13863:15;13855:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13933:4;13916:14;;:21;;;;;;;;;;;;;;;;;;13962:4;13948:11;;:18;;;;;;;;;;;;;;;;;;13993:12;13977:13;:28;;;;14029:15;14016:10;:28;;;;13777:275:::0;:::o;8218:47::-;;;;:::o;6401:87::-;6447:7;6474:6;;;;;;;;;;;6467:13;;6401:87;:::o;1912:104::-;1968:13;2001:7;1994:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:104;:::o;13659:110::-;6547:12;:10;:12::i;:::-;6536:23;;:7;:5;:7::i;:::-;:23;;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13751:10:::1;13735:13;:26;;;;13659:110:::0;:::o;3532:377::-;3625:4;3642:24;3669:11;:25;3681:12;:10;:12::i;:::-;3669:25;;;;;;;;;;;;;;;:34;3695:7;3669:34;;;;;;;;;;;;;;;;3642:61;;3742:15;3722:16;:35;;3714:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3810:67;3819:12;:10;:12::i;:::-;3833:7;3861:15;3842:16;:34;;;;:::i;:::-;3810:8;:67::i;:::-;3897:4;3890:11;;;3532:377;;;;:::o;7965:19::-;;;;;;;;;;;;;:::o;2370:175::-;2456:4;2473:42;2483:12;:10;:12::i;:::-;2497:9;2508:6;2473:9;:42::i;:::-;2533:4;2526:11;;2370:175;;;;:::o;8272:51::-;;;;:::o;8832:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;2551:151::-;2640:7;2667:11;:18;2679:5;2667:18;;;;;;;;;;;;;;;:27;2686:7;2667:27;;;;;;;;;;;;;;;;2660:34;;2551:151;;;;:::o;13558:93::-;6547:12;:10;:12::i;:::-;6536:23;;:7;:5;:7::i;:::-;:23;;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13638:5:::1;13624:11;;:19;;;;;;;;;;;;;;;;;;13558:93:::0;:::o;14060:133::-;6547:12;:10;:12::i;:::-;6536:23;;:7;:5;:7::i;:::-;:23;;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14180:5:::1;14151:16;:26;14168:8;14151:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14060:133:::0;;:::o;6726:192::-;6547:12;:10;:12::i;:::-;6536:23;;:7;:5;:7::i;:::-;:23;;;6528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6835:1:::1;6815:22;;:8;:22;;;;6807:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6891:19;6901:8;6891:9;:19::i;:::-;6726:192:::0;:::o;8714:37::-;;;;;;;;;;;;;;;;;;;:::o;7937:21::-;;;;;;;;;;;;;:::o;231:98::-;284:7;311:10;304:17;;231:98;:::o;5371:346::-;5490:1;5473:19;;:5;:19;;;;5465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5571:1;5552:21;;:7;:21;;;;5544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5655:6;5625:11;:18;5637:5;5625:18;;;;;;;;;;;;;;;:27;5644:7;5625:27;;;;;;;;;;;;;;;:36;;;;5693:7;5677:32;;5686:5;5677:32;;;5702:6;5677:32;;;;;;:::i;:::-;;;;;;;;5371:346;;;:::o;9649:1573::-;9765:1;9756:6;:10;9748:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9832:5;:13;9838:6;9832:13;;;;;;;;;;;;;;;;;;;;;;;;;9831:14;:35;;;;;9850:5;:16;9856:9;9850:16;;;;;;;;;;;;;;;;;;;;;;;;;9849:17;9831:35;9823:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9939:16;:24;9956:6;9939:24;;;;;;;;;;;;;;;;;;;;;;;;;9938:25;:57;;;;;9968:16;:27;9985:9;9968:27;;;;;;;;;;;;;;;;;;;;;;;;;9967:28;9938:57;:70;;;;;10000:8;;;;;;;;;;;9999:9;9938:70;9935:589;;;10032:14;;;;;;;;;;;10024:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10120:12;10107:10;;10091:13;;:26;;;;:::i;:::-;:41;10088:183;;;10168:4;;;;;;;;;;;10155:17;;:9;:17;;;10152:45;;10193:4;10174:5;:16;10180:9;10174:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10152:45;10229:4;;;;;;;;;;;10219:14;;:6;:14;;;10216:39;;10251:4;10235:5;:13;10241:6;10235:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10216:39;10088:183;10303:11;;10293:6;:21;;10285:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10379:4;;;;;;;;;;;10366:17;;:9;:17;;;10363:150;;10444:15;;10434:6;10411:20;10421:9;10411;:20::i;:::-;:29;;;;:::i;:::-;:48;;10403:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;10363:150;9935:589;10536:11;10643:8;;;;;;;;;;;:36;;;;10655:16;:24;10672:6;10655:24;;;;;;;;;;;;;;;;;;;;;;;;;10643:36;:67;;;;10683:16;:27;10700:9;10683:27;;;;;;;;;;;;;;;;;;;;;;;;;10643:67;10639:257;;;10718:1;10712:7;;10639:257;;;10800:4;;;;;;;;;;;10787:17;;:9;:17;;;10784:100;;;10834:3;10821:10;;10812:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10806:31;;10784:100;;;10881:3;10872:6;;10863;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10857:27;;10784:100;10639:257;11017:11;;;;;;;;;;;:24;;;;;11033:8;;;;;;;;;;;11032:9;11017:24;:42;;;;;11055:4;;;;;;;;;;;11045:14;;:6;:14;;;;11017:42;:53;;;;;11069:1;11063:3;:7;11017:53;11013:72;;;11072:13;:11;:13::i;:::-;11013:72;11098:48;11114:6;11122:9;11142:3;11133:6;:12;;;;:::i;:::-;11098:15;:48::i;:::-;11166:1;11160:3;:7;11157:55;;;11169:43;11185:6;11201:4;11208:3;11169:15;:43::i;:::-;11157:55;9737:1485;9649:1573;;;:::o;12644:400::-;12710:21;12748:1;12734:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12710:40;;12779:4;12761;12766:1;12761:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12805:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12795:4;12800:1;12795:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12831:53;12848:4;12863:6;;;;;;;;;;;12872:11;12831:8;:53::i;:::-;12923:6;;;;;;;;;;;:57;;;12981:11;12994:1;12997:4;13011;13018:15;12923:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12699:345;12644:400;:::o;5846:317::-;5961:6;5936:21;:31;;5928:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6015:12;6033:9;:14;;6055:6;6033:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6014:52;;;6085:7;6077:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5917:246;5846:317;;:::o;6926:173::-;6982:16;7001:6;;;;;;;;;;;6982:25;;7027:8;7018:6;;:17;;;;;;;;;;;;;;;;;;7082:8;7051:40;;7072:8;7051:40;;;;;;;;;;;;6971:128;6926:173;:::o;11230:1404::-;8973:8;;;;;;;;;;;8968:104;;9009:4;8998:8;;:15;;;;;;;;;;;;;;;;;;11279:23:::1;11305:24;11323:4;11305:9;:24::i;:::-;11279:50;;11363:13;;11344:15;:32;11340:1287;;11450:19;11485:1;11472:10;;:14;;;;:::i;:::-;11450:36;;11501:32;11576:11;11554:9;:19;;;11536:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11501:86;;11602:14;11637:24;11619:15;:42;;;;:::i;:::-;11602:59;;11682:22;11707:21;11682:46;;11749:24;11766:6;11749:16;:24::i;:::-;11794:20;11841:14;11817:21;:38;;;;:::i;:::-;11794:61;;11870:19;11921:9;:19;;;11907:11;:33;;;;:::i;:::-;11891:12;:50;;;;:::i;:::-;11870:71;;11956:29;12002:9;:19;;;11988:11;:33;;;;:::i;:::-;11956:65;;12069:1;12045:21;:25;12042:170;;;12135:61;12148:24;12174:21;12135:12;:61::i;:::-;12042:170;12232:20;12273:9;:19;;;12269:1;12255:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;12232:60;;12325:1;12310:12;:16;12307:103;;;12346:48;12381:12;12354:15;;;;;;;;;;;12346:34;;;;:48;;;;:::i;:::-;12307:103;12438:20;12479:9;:19;;;12475:1;12461:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;12438:60;;12531:1;12516:12;:16;12513:103;;;12552:48;12587:12;12560:15;;;;;;;;;;;12552:34;;;;:48;;;;:::i;:::-;12513:103;11378:1249;;;;;;;;;11340:1287;11268:1366;9055:5:::0;9044:8;;:16;;;;;;;;;;;;;;;;;;8968:104;11230:1404::o;3915:604::-;4039:1;4021:20;;:6;:20;;;;4013:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4123:1;4102:23;;:9;:23;;;;4094:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4178:47;4199:6;4207:9;4218:6;4178:20;:47::i;:::-;4238:21;4262:9;:17;4272:6;4262:17;;;;;;;;;;;;;;;;4238:41;;4315:6;4298:13;:23;;4290:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4411:6;4395:13;:22;;;;:::i;:::-;4375:9;:17;4385:6;4375:17;;;;;;;;;;;;;;;:42;;;;4452:6;4428:9;:20;4438:9;4428:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4493:9;4476:35;;4485:6;4476:35;;;4504:6;4476:35;;;;;;:::i;:::-;;;;;;;;4002:517;3915:604;;;:::o;13052:498::-;13200:53;13217:4;13232:6;;;;;;;;;;;13241:11;13200:8;:53::i;:::-;13296:6;;;;;;;;;;;:22;;;13326:9;13359:4;13379:11;13405:1;13448;13491:10;;;;;;;;;;;13516:15;13296:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13052:498;;:::o;5725:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:118::-;3933:24;3951:5;3933:24;:::i;:::-;3928:3;3921:37;3846:118;;:::o;3970:222::-;4063:4;4101:2;4090:9;4086:18;4078:26;;4114:71;4182:1;4171:9;4167:17;4158:6;4114:71;:::i;:::-;3970:222;;;;:::o;4198:619::-;4275:6;4283;4291;4340:2;4328:9;4319:7;4315:23;4311:32;4308:119;;;4346:79;;:::i;:::-;4308:119;4466:1;4491:53;4536:7;4527:6;4516:9;4512:22;4491:53;:::i;:::-;4481:63;;4437:117;4593:2;4619:53;4664:7;4655:6;4644:9;4640:22;4619:53;:::i;:::-;4609:63;;4564:118;4721:2;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4692:118;4198:619;;;;;:::o;4823:::-;4900:6;4908;4916;4965:2;4953:9;4944:7;4940:23;4936:32;4933:119;;;4971:79;;:::i;:::-;4933:119;5091:1;5116:53;5161:7;5152:6;5141:9;5137:22;5116:53;:::i;:::-;5106:63;;5062:117;5218:2;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5189:118;5346:2;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5317:118;4823:619;;;;;:::o;5448:86::-;5483:7;5523:4;5516:5;5512:16;5501:27;;5448:86;;;:::o;5540:112::-;5623:22;5639:5;5623:22;:::i;:::-;5618:3;5611:35;5540:112;;:::o;5658:214::-;5747:4;5785:2;5774:9;5770:18;5762:26;;5798:67;5862:1;5851:9;5847:17;5838:6;5798:67;:::i;:::-;5658:214;;;;:::o;5878:329::-;5937:6;5986:2;5974:9;5965:7;5961:23;5957:32;5954:119;;;5992:79;;:::i;:::-;5954:119;6112:1;6137:53;6182:7;6173:6;6162:9;6158:22;6137:53;:::i;:::-;6127:63;;6083:117;5878:329;;;;:::o;6213:442::-;6362:4;6400:2;6389:9;6385:18;6377:26;;6413:71;6481:1;6470:9;6466:17;6457:6;6413:71;:::i;:::-;6494:72;6562:2;6551:9;6547:18;6538:6;6494:72;:::i;:::-;6576;6644:2;6633:9;6629:18;6620:6;6576:72;:::i;:::-;6213:442;;;;;;:::o;6661:329::-;6720:6;6769:2;6757:9;6748:7;6744:23;6740:32;6737:119;;;6775:79;;:::i;:::-;6737:119;6895:1;6920:53;6965:7;6956:6;6945:9;6941:22;6920:53;:::i;:::-;6910:63;;6866:117;6661:329;;;;:::o;6996:474::-;7064:6;7072;7121:2;7109:9;7100:7;7096:23;7092:32;7089:119;;;7127:79;;:::i;:::-;7089:119;7247:1;7272:53;7317:7;7308:6;7297:9;7293:22;7272:53;:::i;:::-;7262:63;;7218:117;7374:2;7400:53;7445:7;7436:6;7425:9;7421:22;7400:53;:::i;:::-;7390:63;;7345:118;6996:474;;;;;:::o;7476:116::-;7546:21;7561:5;7546:21;:::i;:::-;7539:5;7536:32;7526:60;;7582:1;7579;7572:12;7526:60;7476:116;:::o;7598:133::-;7641:5;7679:6;7666:20;7657:29;;7695:30;7719:5;7695:30;:::i;:::-;7598:133;;;;:::o;7737:323::-;7793:6;7842:2;7830:9;7821:7;7817:23;7813:32;7810:119;;;7848:79;;:::i;:::-;7810:119;7968:1;7993:50;8035:7;8026:6;8015:9;8011:22;7993:50;:::i;:::-;7983:60;;7939:114;7737:323;;;;:::o;8066:468::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:50;8509:7;8500:6;8489:9;8485:22;8467:50;:::i;:::-;8457:60;;8412:115;8066:468;;;;;:::o;8540:60::-;8568:3;8589:5;8582:12;;8540:60;;;:::o;8606:142::-;8656:9;8689:53;8707:34;8716:24;8734:5;8716:24;:::i;:::-;8707:34;:::i;:::-;8689:53;:::i;:::-;8676:66;;8606:142;;;:::o;8754:126::-;8804:9;8837:37;8868:5;8837:37;:::i;:::-;8824:50;;8754:126;;;:::o;8886:141::-;8951:9;8984:37;9015:5;8984:37;:::i;:::-;8971:50;;8886:141;;;:::o;9033:161::-;9135:52;9181:5;9135:52;:::i;:::-;9130:3;9123:65;9033:161;;:::o;9200:252::-;9308:4;9346:2;9335:9;9331:18;9323:26;;9359:86;9442:1;9431:9;9427:17;9418:6;9359:86;:::i;:::-;9200:252;;;;:::o;9458:180::-;9506:77;9503:1;9496:88;9603:4;9600:1;9593:15;9627:4;9624:1;9617:15;9644:320;9688:6;9725:1;9719:4;9715:12;9705:22;;9772:1;9766:4;9762:12;9793:18;9783:81;;9849:4;9841:6;9837:17;9827:27;;9783:81;9911:2;9903:6;9900:14;9880:18;9877:38;9874:84;;;9930:18;;:::i;:::-;9874:84;9695:269;9644:320;;;:::o;9970:227::-;10110:34;10106:1;10098:6;10094:14;10087:58;10179:10;10174:2;10166:6;10162:15;10155:35;9970:227;:::o;10203:366::-;10345:3;10366:67;10430:2;10425:3;10366:67;:::i;:::-;10359:74;;10442:93;10531:3;10442:93;:::i;:::-;10560:2;10555:3;10551:12;10544:19;;10203:366;;;:::o;10575:419::-;10741:4;10779:2;10768:9;10764:18;10756:26;;10828:9;10822:4;10818:20;10814:1;10803:9;10799:17;10792:47;10856:131;10982:4;10856:131;:::i;:::-;10848:139;;10575:419;;;:::o;11000:180::-;11048:77;11045:1;11038:88;11145:4;11142:1;11135:15;11169:4;11166:1;11159:15;11186:191;11226:4;11246:20;11264:1;11246:20;:::i;:::-;11241:25;;11280:20;11298:1;11280:20;:::i;:::-;11275:25;;11319:1;11316;11313:8;11310:34;;;11324:18;;:::i;:::-;11310:34;11369:1;11366;11362:9;11354:17;;11186:191;;;;:::o;11383:305::-;11423:3;11442:20;11460:1;11442:20;:::i;:::-;11437:25;;11476:20;11494:1;11476:20;:::i;:::-;11471:25;;11630:1;11562:66;11558:74;11555:1;11552:81;11549:107;;;11636:18;;:::i;:::-;11549:107;11680:1;11677;11673:9;11666:16;;11383:305;;;;:::o;11694:348::-;11734:7;11757:20;11775:1;11757:20;:::i;:::-;11752:25;;11791:20;11809:1;11791:20;:::i;:::-;11786:25;;11979:1;11911:66;11907:74;11904:1;11901:81;11896:1;11889:9;11882:17;11878:105;11875:131;;;11986:18;;:::i;:::-;11875:131;12034:1;12031;12027:9;12016:20;;11694:348;;;;:::o;12048:180::-;12096:77;12093:1;12086:88;12193:4;12190:1;12183:15;12217:4;12214:1;12207:15;12234:185;12274:1;12291:20;12309:1;12291:20;:::i;:::-;12286:25;;12325:20;12343:1;12325:20;:::i;:::-;12320:25;;12364:1;12354:35;;12369:18;;:::i;:::-;12354:35;12411:1;12408;12404:9;12399:14;;12234:185;;;;:::o;12425:182::-;12565:34;12561:1;12553:6;12549:14;12542:58;12425:182;:::o;12613:366::-;12755:3;12776:67;12840:2;12835:3;12776:67;:::i;:::-;12769:74;;12852:93;12941:3;12852:93;:::i;:::-;12970:2;12965:3;12961:12;12954:19;;12613:366;;;:::o;12985:419::-;13151:4;13189:2;13178:9;13174:18;13166:26;;13238:9;13232:4;13228:20;13224:1;13213:9;13209:17;13202:47;13266:131;13392:4;13266:131;:::i;:::-;13258:139;;12985:419;;;:::o;13410:172::-;13550:24;13546:1;13538:6;13534:14;13527:48;13410:172;:::o;13588:366::-;13730:3;13751:67;13815:2;13810:3;13751:67;:::i;:::-;13744:74;;13827:93;13916:3;13827:93;:::i;:::-;13945:2;13940:3;13936:12;13929:19;;13588:366;;;:::o;13960:419::-;14126:4;14164:2;14153:9;14149:18;14141:26;;14213:9;14207:4;14203:20;14199:1;14188:9;14184:17;14177:47;14241:131;14367:4;14241:131;:::i;:::-;14233:139;;13960:419;;;:::o;14385:224::-;14525:34;14521:1;14513:6;14509:14;14502:58;14594:7;14589:2;14581:6;14577:15;14570:32;14385:224;:::o;14615:366::-;14757:3;14778:67;14842:2;14837:3;14778:67;:::i;:::-;14771:74;;14854:93;14943:3;14854:93;:::i;:::-;14972:2;14967:3;14963:12;14956:19;;14615:366;;;:::o;14987:419::-;15153:4;15191:2;15180:9;15176:18;15168:26;;15240:9;15234:4;15230:20;15226:1;15215:9;15211:17;15204:47;15268:131;15394:4;15268:131;:::i;:::-;15260:139;;14987:419;;;:::o;15412:225::-;15552:34;15548:1;15540:6;15536:14;15529:58;15621:8;15616:2;15608:6;15604:15;15597:33;15412:225;:::o;15643:366::-;15785:3;15806:67;15870:2;15865:3;15806:67;:::i;:::-;15799:74;;15882:93;15971:3;15882:93;:::i;:::-;16000:2;15995:3;15991:12;15984:19;;15643:366;;;:::o;16015:419::-;16181:4;16219:2;16208:9;16204:18;16196:26;;16268:9;16262:4;16258:20;16254:1;16243:9;16239:17;16232:47;16296:131;16422:4;16296:131;:::i;:::-;16288:139;;16015:419;;;:::o;16440:223::-;16580:34;16576:1;16568:6;16564:14;16557:58;16649:6;16644:2;16636:6;16632:15;16625:31;16440:223;:::o;16669:366::-;16811:3;16832:67;16896:2;16891:3;16832:67;:::i;:::-;16825:74;;16908:93;16997:3;16908:93;:::i;:::-;17026:2;17021:3;17017:12;17010:19;;16669:366;;;:::o;17041:419::-;17207:4;17245:2;17234:9;17230:18;17222:26;;17294:9;17288:4;17284:20;17280:1;17269:9;17265:17;17258:47;17322:131;17448:4;17322:131;:::i;:::-;17314:139;;17041:419;;;:::o;17466:221::-;17606:34;17602:1;17594:6;17590:14;17583:58;17675:4;17670:2;17662:6;17658:15;17651:29;17466:221;:::o;17693:366::-;17835:3;17856:67;17920:2;17915:3;17856:67;:::i;:::-;17849:74;;17932:93;18021:3;17932:93;:::i;:::-;18050:2;18045:3;18041:12;18034:19;;17693:366;;;:::o;18065:419::-;18231:4;18269:2;18258:9;18254:18;18246:26;;18318:9;18312:4;18308:20;18304:1;18293:9;18289:17;18282:47;18346:131;18472:4;18346:131;:::i;:::-;18338:139;;18065:419;;;:::o;18490:228::-;18630:34;18626:1;18618:6;18614:14;18607:58;18699:11;18694:2;18686:6;18682:15;18675:36;18490:228;:::o;18724:366::-;18866:3;18887:67;18951:2;18946:3;18887:67;:::i;:::-;18880:74;;18963:93;19052:3;18963:93;:::i;:::-;19081:2;19076:3;19072:12;19065:19;;18724:366;;;:::o;19096:419::-;19262:4;19300:2;19289:9;19285:18;19277:26;;19349:9;19343:4;19339:20;19335:1;19324:9;19320:17;19313:47;19377:131;19503:4;19377:131;:::i;:::-;19369:139;;19096:419;;;:::o;19521:175::-;19661:27;19657:1;19649:6;19645:14;19638:51;19521:175;:::o;19702:366::-;19844:3;19865:67;19929:2;19924:3;19865:67;:::i;:::-;19858:74;;19941:93;20030:3;19941:93;:::i;:::-;20059:2;20054:3;20050:12;20043:19;;19702:366;;;:::o;20074:419::-;20240:4;20278:2;20267:9;20263:18;20255:26;;20327:9;20321:4;20317:20;20313:1;20302:9;20298:17;20291:47;20355:131;20481:4;20355:131;:::i;:::-;20347:139;;20074:419;;;:::o;20499:172::-;20639:24;20635:1;20627:6;20623:14;20616:48;20499:172;:::o;20677:366::-;20819:3;20840:67;20904:2;20899:3;20840:67;:::i;:::-;20833:74;;20916:93;21005:3;20916:93;:::i;:::-;21034:2;21029:3;21025:12;21018:19;;20677:366;;;:::o;21049:419::-;21215:4;21253:2;21242:9;21238:18;21230:26;;21302:9;21296:4;21292:20;21288:1;21277:9;21273:17;21266:47;21330:131;21456:4;21330:131;:::i;:::-;21322:139;;21049:419;;;:::o;21474:179::-;21614:31;21610:1;21602:6;21598:14;21591:55;21474:179;:::o;21659:366::-;21801:3;21822:67;21886:2;21881:3;21822:67;:::i;:::-;21815:74;;21898:93;21987:3;21898:93;:::i;:::-;22016:2;22011:3;22007:12;22000:19;;21659:366;;;:::o;22031:419::-;22197:4;22235:2;22224:9;22220:18;22212:26;;22284:9;22278:4;22274:20;22270:1;22259:9;22255:17;22248:47;22312:131;22438:4;22312:131;:::i;:::-;22304:139;;22031:419;;;:::o;22456:220::-;22596:34;22592:1;22584:6;22580:14;22573:58;22665:3;22660:2;22652:6;22648:15;22641:28;22456:220;:::o;22682:366::-;22824:3;22845:67;22909:2;22904:3;22845:67;:::i;:::-;22838:74;;22921:93;23010:3;22921:93;:::i;:::-;23039:2;23034:3;23030:12;23023:19;;22682:366;;;:::o;23054:419::-;23220:4;23258:2;23247:9;23243:18;23235:26;;23307:9;23301:4;23297:20;23293:1;23282:9;23278:17;23271:47;23335:131;23461:4;23335:131;:::i;:::-;23327:139;;23054:419;;;:::o;23479:180::-;23527:77;23524:1;23517:88;23624:4;23621:1;23614:15;23648:4;23645:1;23638:15;23665:180;23713:77;23710:1;23703:88;23810:4;23807:1;23800:15;23834:4;23831:1;23824:15;23851:143;23908:5;23939:6;23933:13;23924:22;;23955:33;23982:5;23955:33;:::i;:::-;23851:143;;;;:::o;24000:351::-;24070:6;24119:2;24107:9;24098:7;24094:23;24090:32;24087:119;;;24125:79;;:::i;:::-;24087:119;24245:1;24270:64;24326:7;24317:6;24306:9;24302:22;24270:64;:::i;:::-;24260:74;;24216:128;24000:351;;;;:::o;24357:85::-;24402:7;24431:5;24420:16;;24357:85;;;:::o;24448:158::-;24506:9;24539:61;24557:42;24566:32;24592:5;24566:32;:::i;:::-;24557:42;:::i;:::-;24539:61;:::i;:::-;24526:74;;24448:158;;;:::o;24612:147::-;24707:45;24746:5;24707:45;:::i;:::-;24702:3;24695:58;24612:147;;:::o;24765:114::-;24832:6;24866:5;24860:12;24850:22;;24765:114;;;:::o;24885:184::-;24984:11;25018:6;25013:3;25006:19;25058:4;25053:3;25049:14;25034:29;;24885:184;;;;:::o;25075:132::-;25142:4;25165:3;25157:11;;25195:4;25190:3;25186:14;25178:22;;25075:132;;;:::o;25213:108::-;25290:24;25308:5;25290:24;:::i;:::-;25285:3;25278:37;25213:108;;:::o;25327:179::-;25396:10;25417:46;25459:3;25451:6;25417:46;:::i;:::-;25495:4;25490:3;25486:14;25472:28;;25327:179;;;;:::o;25512:113::-;25582:4;25614;25609:3;25605:14;25597:22;;25512:113;;;:::o;25661:732::-;25780:3;25809:54;25857:5;25809:54;:::i;:::-;25879:86;25958:6;25953:3;25879:86;:::i;:::-;25872:93;;25989:56;26039:5;25989:56;:::i;:::-;26068:7;26099:1;26084:284;26109:6;26106:1;26103:13;26084:284;;;26185:6;26179:13;26212:63;26271:3;26256:13;26212:63;:::i;:::-;26205:70;;26298:60;26351:6;26298:60;:::i;:::-;26288:70;;26144:224;26131:1;26128;26124:9;26119:14;;26084:284;;;26088:14;26384:3;26377:10;;25785:608;;;25661:732;;;;:::o;26399:831::-;26662:4;26700:3;26689:9;26685:19;26677:27;;26714:71;26782:1;26771:9;26767:17;26758:6;26714:71;:::i;:::-;26795:80;26871:2;26860:9;26856:18;26847:6;26795:80;:::i;:::-;26922:9;26916:4;26912:20;26907:2;26896:9;26892:18;26885:48;26950:108;27053:4;27044:6;26950:108;:::i;:::-;26942:116;;27068:72;27136:2;27125:9;27121:18;27112:6;27068:72;:::i;:::-;27150:73;27218:3;27207:9;27203:19;27194:6;27150:73;:::i;:::-;26399:831;;;;;;;;:::o;27236:179::-;27376:31;27372:1;27364:6;27360:14;27353:55;27236:179;:::o;27421:366::-;27563:3;27584:67;27648:2;27643:3;27584:67;:::i;:::-;27577:74;;27660:93;27749:3;27660:93;:::i;:::-;27778:2;27773:3;27769:12;27762:19;;27421:366;;;:::o;27793:419::-;27959:4;27997:2;27986:9;27982:18;27974:26;;28046:9;28040:4;28036:20;28032:1;28021:9;28017:17;28010:47;28074:131;28200:4;28074:131;:::i;:::-;28066:139;;27793:419;;;:::o;28218:147::-;28319:11;28356:3;28341:18;;28218:147;;;;:::o;28371:114::-;;:::o;28491:398::-;28650:3;28671:83;28752:1;28747:3;28671:83;:::i;:::-;28664:90;;28763:93;28852:3;28763:93;:::i;:::-;28881:1;28876:3;28872:11;28865:18;;28491:398;;;:::o;28895:379::-;29079:3;29101:147;29244:3;29101:147;:::i;:::-;29094:154;;29265:3;29258:10;;28895:379;;;:::o;29280:245::-;29420:34;29416:1;29408:6;29404:14;29397:58;29489:28;29484:2;29476:6;29472:15;29465:53;29280:245;:::o;29531:366::-;29673:3;29694:67;29758:2;29753:3;29694:67;:::i;:::-;29687:74;;29770:93;29859:3;29770:93;:::i;:::-;29888:2;29883:3;29879:12;29872:19;;29531:366;;;:::o;29903:419::-;30069:4;30107:2;30096:9;30092:18;30084:26;;30156:9;30150:4;30146:20;30142:1;30131:9;30127:17;30120:47;30184:131;30310:4;30184:131;:::i;:::-;30176:139;;29903:419;;;:::o;30328:224::-;30468:34;30464:1;30456:6;30452:14;30445:58;30537:7;30532:2;30524:6;30520:15;30513:32;30328:224;:::o;30558:366::-;30700:3;30721:67;30785:2;30780:3;30721:67;:::i;:::-;30714:74;;30797:93;30886:3;30797:93;:::i;:::-;30915:2;30910:3;30906:12;30899:19;;30558:366;;;:::o;30930:419::-;31096:4;31134:2;31123:9;31119:18;31111:26;;31183:9;31177:4;31173:20;31169:1;31158:9;31154:17;31147:47;31211:131;31337:4;31211:131;:::i;:::-;31203:139;;30930:419;;;:::o;31355:222::-;31495:34;31491:1;31483:6;31479:14;31472:58;31564:5;31559:2;31551:6;31547:15;31540:30;31355:222;:::o;31583:366::-;31725:3;31746:67;31810:2;31805:3;31746:67;:::i;:::-;31739:74;;31822:93;31911:3;31822:93;:::i;:::-;31940:2;31935:3;31931:12;31924:19;;31583:366;;;:::o;31955:419::-;32121:4;32159:2;32148:9;32144:18;32136:26;;32208:9;32202:4;32198:20;32194:1;32183:9;32179:17;32172:47;32236:131;32362:4;32236:131;:::i;:::-;32228:139;;31955:419;;;:::o;32380:225::-;32520:34;32516:1;32508:6;32504:14;32497:58;32589:8;32584:2;32576:6;32572:15;32565:33;32380:225;:::o;32611:366::-;32753:3;32774:67;32838:2;32833:3;32774:67;:::i;:::-;32767:74;;32850:93;32939:3;32850:93;:::i;:::-;32968:2;32963:3;32959:12;32952:19;;32611:366;;;:::o;32983:419::-;33149:4;33187:2;33176:9;33172:18;33164:26;;33236:9;33230:4;33226:20;33222:1;33211:9;33207:17;33200:47;33264:131;33390:4;33264:131;:::i;:::-;33256:139;;32983:419;;;:::o;33408:807::-;33657:4;33695:3;33684:9;33680:19;33672:27;;33709:71;33777:1;33766:9;33762:17;33753:6;33709:71;:::i;:::-;33790:72;33858:2;33847:9;33843:18;33834:6;33790:72;:::i;:::-;33872:80;33948:2;33937:9;33933:18;33924:6;33872:80;:::i;:::-;33962;34038:2;34027:9;34023:18;34014:6;33962:80;:::i;:::-;34052:73;34120:3;34109:9;34105:19;34096:6;34052:73;:::i;:::-;34135;34203:3;34192:9;34188:19;34179:6;34135:73;:::i;:::-;33408:807;;;;;;;;;:::o;34221:143::-;34278:5;34309:6;34303:13;34294:22;;34325:33;34352:5;34325:33;:::i;:::-;34221:143;;;;:::o;34370:663::-;34458:6;34466;34474;34523:2;34511:9;34502:7;34498:23;34494:32;34491:119;;;34529:79;;:::i;:::-;34491:119;34649:1;34674:64;34730:7;34721:6;34710:9;34706:22;34674:64;:::i;:::-;34664:74;;34620:128;34787:2;34813:64;34869:7;34860:6;34849:9;34845:22;34813:64;:::i;:::-;34803:74;;34758:129;34926:2;34952:64;35008:7;34999:6;34988:9;34984:22;34952:64;:::i;:::-;34942:74;;34897:129;34370:663;;;;;:::o

Swarm Source

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