ETH Price: $3,471.13 (-0.30%)
Gas: 2 Gwei

Token

ElonsArmy (ERMY)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 ERMY

Holders

244

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
23,036,349,009,202,177.93679858 ERMY

Value
$0.00
0xc144e0f6961ec09a482833e41d047b7991e5a4b0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

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

Contract Name:
ElonsArmy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-23
*/

/**
 _______  __        ______   .__   __.      _______.        ___      .______      .___  ___. ____    ____ 
|   ____||  |      /  __  \  |  \ |  |     /       |       /   \     |   _  \     |   \/   | \   \  /   / 
|  |__   |  |     |  |  |  | |   \|  |    |   (----`      /  ^  \    |  |_)  |    |  \  /  |  \   \/   /  
|   __|  |  |     |  |  |  | |  . `  |     \   \         /  /_\  \   |      /     |  |\/|  |   \_    _/   
|  |____ |  `----.|  `--'  | |  |\   | .----)   |       /  _____  \  |  |\  \----.|  |  |  |     |  |     
|_______||_______| \______/  |__| \__| |_______/       /__/     \__\ | _| `._____||__|  |__|     |__|     
                                                                                                                                                                                       
/**
 //SPDX-License-Identifier: UNLICENSED
 
*/

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadlineroute
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract ElonsArmy is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _tTax;
    uint256 private _rTax;
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrMarketing;
    address payable private _feeAddrGameDevelopment;
    address payable private _feeAddrGameRewards;
    address payable private _feeAddrTeam;
    address private _administratorAddress; // Will be able todo limited stuff on the contract once renounced

    string private constant _name = "ElonsArmy";
    string private constant _symbol = "ERMY";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeAddrMarketing = payable(0x18f978F6F421613722ff7dE6604b5EC4b8F7BE7d);
        _feeAddrGameDevelopment = payable(
            0xB2b146aa898Ec6BC6344B4a0cC054f300EB4d73e
        );
        _feeAddrTeam = payable(0x4104770938Ce1446d2CFbF8e894ac69Bf200E7Cd);
        _feeAddrGameRewards = payable(
            0x1a69ad498dc893CD299297Cb1862898d2d2c54CC
        );

        _administratorAddress = address(0xBE84F8254188F254060bfE5fFC9Fc13EdfFeB737);

        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrMarketing] = true;
        _isExcludedFromFee[_feeAddrGameDevelopment] = true;
        _isExcludedFromFee[_feeAddrTeam] = true;
        _isExcludedFromFee[_feeAddrGameRewards] = true;
        _isExcludedFromFee[_administratorAddress] = true;

        _tTax = 9;
        _rTax = 1;

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

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

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

        function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        _feeAddr1 = _rTax;
        _feeAddr2 = _tTax;

        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniswapV2Pair &&
                from != address(uniswapV2Router) &&
                !_isExcludedFromFee[from]
            ) {
                _feeAddr1 = _rTax;
                _feeAddr2 = _tTax;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokenTransfer(from, to, amount);
    }

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

    function sendETHToFee(uint256 amount) private {
        // Send 1% to the game rewards wallet
        uint256 _feeAmount = amount.div(_tTax);
        _feeAddrGameRewards.transfer(_feeAmount);

        // Split the remaing balance between marketing, game dev and staff costs
        uint256 _remainingBalance = amount.sub(_feeAmount);
        uint256 _splitAmount = _remainingBalance.div(3);
        _feeAddrMarketing.transfer(_splitAmount);
        _feeAddrGameDevelopment.transfer(_splitAmount);
        _feeAddrTeam.transfer(_splitAmount);
    }

     function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 15000000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

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

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function manualswap() external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function excludeFromFee(address _address, bool _val) external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        _isExcludedFromFee[_address] = _val;
    }

    function updateTax(uint256 _newRTax, uint256 _newTTax) external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        require(
            _newRTax.add(_newTTax) <= 10,
            "New taxs can't be higher than the start tax"
        );
        _tTax = _newTTax;
        _rTax = _newRTax;
    }    

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_val","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRTax","type":"uint256"},{"internalType":"uint256","name":"_newTTax","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce8000000600019620000209190620007ac565b6000196200002f919062000767565b6008556000601460156101000a81548160ff0219169083151502179055506000601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce8000000601555348015620000a057600080fd5b506000620000b36200070860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507318f978f6f421613722ff7de6604b5ec4b8f7be7d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b2b146aa898ec6bc6344b4a0cc054f300eb4d73e600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734104770938ce1446d2cfbf8e894ac69bf200e7cd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731a69ad498dc893cd299297cb1862898d2d2c54cc601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073be84f8254188f254060bfe5ffc9fc13edffeb737601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620003116200070860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620003656200071060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a819055506001600b81905550620006906200070860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620006fa91906200074a565b60405180910390a362000842565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200074481620007a2565b82525050565b600060208201905062000761600083018462000739565b92915050565b60006200077482620007a2565b91506200078183620007a2565b925082821015620007975762000796620007e4565b5b828203905092915050565b6000819050919050565b6000620007b982620007a2565b9150620007c683620007a2565b925082620007d957620007d862000813565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6138a680620008526000396000f3fe6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063df8408fe1461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b8063273123b7116100e7578063273123b7146101f45780632f37aa6d1461021d578063313ce567146102465780635932ead1146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610455565b6040516101469190612f05565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906129f9565b610492565b6040516101839190612eea565b60405180910390f35b34801561019857600080fd5b506101a16104b0565b6040516101ae91906130a7565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612966565b6104c4565b6040516101eb9190612eea565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906128cc565b61059d565b005b34801561022957600080fd5b50610244600480360381019061023f9190612adc565b61068d565b005b34801561025257600080fd5b5061025b61078c565b604051610268919061311c565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612a82565b610795565b005b3480156102a657600080fd5b506102af610847565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906128cc565b6108ef565b6040516102e591906130a7565b60405180910390f35b3480156102fa57600080fd5b50610303610940565b005b34801561031157600080fd5b5061031a610a93565b6040516103279190612e1c565b60405180910390f35b34801561033c57600080fd5b50610345610abc565b6040516103529190612f05565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d91906129f9565b610af9565b60405161038f9190612eea565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612a39565b610b17565b005b3480156103cd57600080fd5b506103d6610c41565b005b3480156103e457600080fd5b506103ed610cf1565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612926565b611250565b60405161042391906130a7565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906129b9565b6112d7565b005b60606040518060400160405280600981526020017f456c6f6e7341726d790000000000000000000000000000000000000000000000815250905090565b60006104a661049f6113c9565b84846113d1565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b60006104d184848461159c565b610592846104dd6113c9565b61058d8560405180606001604052806028815260200161384960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105436113c9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba59092919063ffffffff16565b6113d1565b600190509392505050565b6105a56113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990613007565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ce6113c9565b73ffffffffffffffffffffffffffffffffffffffff1614610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b90612f47565b60405180910390fd5b600a6107398284611c0990919063ffffffff16565b111561077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077190612fc7565b60405180910390fd5b80600a8190555081600b819055505050565b60006009905090565b61079d6113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082190613007565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108886113c9565b73ffffffffffffffffffffffffffffffffffffffff16146108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612f47565b60405180910390fd5b60004790506108ec81611c67565b50565b6000610939600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e59565b9050919050565b6109486113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90613007565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f45524d5900000000000000000000000000000000000000000000000000000000815250905090565b6000610b0d610b066113c9565b848461159c565b6001905092915050565b610b1f6113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390613007565b60405180910390fd5b60005b8151811015610c3d57600160066000848481518110610bd157610bd0613464565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c35906133bd565b915050610baf565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c826113c9565b73ffffffffffffffffffffffffffffffffffffffff1614610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90612f47565b60405180910390fd5b6000610ce3306108ef565b9050610cee81611ec7565b50565b610cf96113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90613007565b60405180910390fd5b60148054906101000a900460ff1615610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613087565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e6730601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006113d1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ead57600080fd5b505afa158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee591906128f9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4757600080fd5b505afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f91906128f9565b6040518363ffffffff1660e01b8152600401610f9c929190612e37565b602060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906128f9565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611077306108ef565b600080611082610a93565b426040518863ffffffff1660e01b81526004016110a496959493929190612e89565b6060604051808303818588803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110f69190612b1c565b5050506001601460166101000a81548160ff0219169083151502179055506001601460176101000a81548160ff0219169083151502179055506a0c685fa11e01ec6f00000060158190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111fa929190612e60565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612aaf565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113186113c9565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136590612f47565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613067565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890612f87565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158f91906130a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613047565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390612f27565b60405180910390fd5b600081116116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613027565b60405180910390fd5b600b54600c81905550600a54600d819055506116d9610a93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117475750611717610a93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b9557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117f05750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117f957600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118a45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118fa5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119125750601460179054906101000a900460ff165b156119c25760155481111561192657600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061197157600080fd5b601e4261197e91906131dd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a6d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611adb57600b54600c81905550600a54600d819055505b6000611ae6306108ef565b9050601460159054906101000a900460ff16158015611b535750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6b5750601460169054906101000a900460ff165b15611b9357611b7981611ec7565b60004790506000811115611b9157611b9047611c67565b5b505b505b611ba083838361214f565b505050565b6000838311158290611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be49190612f05565b60405180910390fd5b5060008385611bfc91906132be565b9050809150509392505050565b6000808284611c1891906131dd565b905083811015611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490612fa7565b60405180910390fd5b8091505092915050565b6000611c7e600a548361215f90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ce8573d6000803e3d6000fd5b506000611cfe82846121a990919063ffffffff16565b90506000611d1660038361215f90919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d80573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611de9573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e52573d6000803e3d6000fd5b5050505050565b6000600854821115611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790612f67565b60405180910390fd5b6000611eaa6121f3565b9050611ebf818461215f90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eff57611efe613493565b5b604051908082528060200260200182016040528015611f2d5781602001602082028036833780820191505090505b5090503081600081518110611f4557611f44613464565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f91906128f9565b8160018151811061203357612032613464565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061209a30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113d1565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120fe9594939291906130c2565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b61215a83838361221e565b505050565b60006121a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123e9565b905092915050565b60006121eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba5565b905092915050565b600080600061220061244c565b91509150612217818361215f90919063ffffffff16565b9250505090565b600080600080600080612230876124b7565b95509550955095509550955061228e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c0990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236f8161251f565b61237984836125dc565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d691906130a7565b60405180910390a3505050505050505050565b60008083118290612430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124279190612f05565b60405180910390fd5b506000838561243f9190613233565b9050809150509392505050565b6000806000600854905060006b033b2e3c9fd0803ce800000090506124886b033b2e3c9fd0803ce800000060085461215f90919063ffffffff16565b8210156124aa576008546b033b2e3c9fd0803ce80000009350935050506124b3565b81819350935050505b9091565b60008060008060008060008060006124d48a600c54600d54612616565b92509250925060006124e46121f3565b905060008060006124f78e8787876126ac565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125296121f3565b90506000612540828461273590919063ffffffff16565b905061259481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c0990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125f1826008546121a990919063ffffffff16565b60088190555061260c81600954611c0990919063ffffffff16565b6009819055505050565b6000806000806126426064612634888a61273590919063ffffffff16565b61215f90919063ffffffff16565b9050600061266c606461265e888b61273590919063ffffffff16565b61215f90919063ffffffff16565b9050600061269582612687858c6121a990919063ffffffff16565b6121a990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806126c5858961273590919063ffffffff16565b905060006126dc868961273590919063ffffffff16565b905060006126f3878961273590919063ffffffff16565b9050600061271c8261270e85876121a990919063ffffffff16565b6121a990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561274857600090506127aa565b600082846127569190613264565b90508284826127659190613233565b146127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279c90612fe7565b60405180910390fd5b809150505b92915050565b60006127c36127be8461315c565b613137565b905080838252602082019050828560208602820111156127e6576127e56134c7565b5b60005b8581101561281657816127fc8882612820565b8452602084019350602083019250506001810190506127e9565b5050509392505050565b60008135905061282f81613803565b92915050565b60008151905061284481613803565b92915050565b600082601f83011261285f5761285e6134c2565b5b813561286f8482602086016127b0565b91505092915050565b6000813590506128878161381a565b92915050565b60008151905061289c8161381a565b92915050565b6000813590506128b181613831565b92915050565b6000815190506128c681613831565b92915050565b6000602082840312156128e2576128e16134d1565b5b60006128f084828501612820565b91505092915050565b60006020828403121561290f5761290e6134d1565b5b600061291d84828501612835565b91505092915050565b6000806040838503121561293d5761293c6134d1565b5b600061294b85828601612820565b925050602061295c85828601612820565b9150509250929050565b60008060006060848603121561297f5761297e6134d1565b5b600061298d86828701612820565b935050602061299e86828701612820565b92505060406129af868287016128a2565b9150509250925092565b600080604083850312156129d0576129cf6134d1565b5b60006129de85828601612820565b92505060206129ef85828601612878565b9150509250929050565b60008060408385031215612a1057612a0f6134d1565b5b6000612a1e85828601612820565b9250506020612a2f858286016128a2565b9150509250929050565b600060208284031215612a4f57612a4e6134d1565b5b600082013567ffffffffffffffff811115612a6d57612a6c6134cc565b5b612a798482850161284a565b91505092915050565b600060208284031215612a9857612a976134d1565b5b6000612aa684828501612878565b91505092915050565b600060208284031215612ac557612ac46134d1565b5b6000612ad38482850161288d565b91505092915050565b60008060408385031215612af357612af26134d1565b5b6000612b01858286016128a2565b9250506020612b12858286016128a2565b9150509250929050565b600080600060608486031215612b3557612b346134d1565b5b6000612b43868287016128b7565b9350506020612b54868287016128b7565b9250506040612b65868287016128b7565b9150509250925092565b6000612b7b8383612b87565b60208301905092915050565b612b90816132f2565b82525050565b612b9f816132f2565b82525050565b6000612bb082613198565b612bba81856131bb565b9350612bc583613188565b8060005b83811015612bf6578151612bdd8882612b6f565b9750612be8836131ae565b925050600181019050612bc9565b5085935050505092915050565b612c0c81613304565b82525050565b612c1b81613347565b82525050565b6000612c2c826131a3565b612c3681856131cc565b9350612c46818560208601613359565b612c4f816134d6565b840191505092915050565b6000612c676023836131cc565b9150612c72826134e7565b604082019050919050565b6000612c8a6015836131cc565b9150612c9582613536565b602082019050919050565b6000612cad602a836131cc565b9150612cb88261355f565b604082019050919050565b6000612cd06022836131cc565b9150612cdb826135ae565b604082019050919050565b6000612cf3601b836131cc565b9150612cfe826135fd565b602082019050919050565b6000612d16602b836131cc565b9150612d2182613626565b604082019050919050565b6000612d396021836131cc565b9150612d4482613675565b604082019050919050565b6000612d5c6020836131cc565b9150612d67826136c4565b602082019050919050565b6000612d7f6029836131cc565b9150612d8a826136ed565b604082019050919050565b6000612da26025836131cc565b9150612dad8261373c565b604082019050919050565b6000612dc56024836131cc565b9150612dd08261378b565b604082019050919050565b6000612de86017836131cc565b9150612df3826137da565b602082019050919050565b612e0781613330565b82525050565b612e168161333a565b82525050565b6000602082019050612e316000830184612b96565b92915050565b6000604082019050612e4c6000830185612b96565b612e596020830184612b96565b9392505050565b6000604082019050612e756000830185612b96565b612e826020830184612dfe565b9392505050565b600060c082019050612e9e6000830189612b96565b612eab6020830188612dfe565b612eb86040830187612c12565b612ec56060830186612c12565b612ed26080830185612b96565b612edf60a0830184612dfe565b979650505050505050565b6000602082019050612eff6000830184612c03565b92915050565b60006020820190508181036000830152612f1f8184612c21565b905092915050565b60006020820190508181036000830152612f4081612c5a565b9050919050565b60006020820190508181036000830152612f6081612c7d565b9050919050565b60006020820190508181036000830152612f8081612ca0565b9050919050565b60006020820190508181036000830152612fa081612cc3565b9050919050565b60006020820190508181036000830152612fc081612ce6565b9050919050565b60006020820190508181036000830152612fe081612d09565b9050919050565b6000602082019050818103600083015261300081612d2c565b9050919050565b6000602082019050818103600083015261302081612d4f565b9050919050565b6000602082019050818103600083015261304081612d72565b9050919050565b6000602082019050818103600083015261306081612d95565b9050919050565b6000602082019050818103600083015261308081612db8565b9050919050565b600060208201905081810360008301526130a081612ddb565b9050919050565b60006020820190506130bc6000830184612dfe565b92915050565b600060a0820190506130d76000830188612dfe565b6130e46020830187612c12565b81810360408301526130f68186612ba5565b90506131056060830185612b96565b6131126080830184612dfe565b9695505050505050565b60006020820190506131316000830184612e0d565b92915050565b6000613141613152565b905061314d828261338c565b919050565b6000604051905090565b600067ffffffffffffffff82111561317757613176613493565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006131e882613330565b91506131f383613330565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561322857613227613406565b5b828201905092915050565b600061323e82613330565b915061324983613330565b92508261325957613258613435565b5b828204905092915050565b600061326f82613330565b915061327a83613330565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132b3576132b2613406565b5b828202905092915050565b60006132c982613330565b91506132d483613330565b9250828210156132e7576132e6613406565b5b828203905092915050565b60006132fd82613310565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061335282613330565b9050919050565b60005b8381101561337757808201518184015260208101905061335c565b83811115613386576000848401525b50505050565b613395826134d6565b810181811067ffffffffffffffff821117156133b4576133b3613493565b5b80604052505050565b60006133c882613330565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133fb576133fa613406565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642061646d696e20616464726573730000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e657720746178732063616e277420626520686967686572207468616e20746860008201527f6520737461727420746178000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b61380c816132f2565b811461381757600080fd5b50565b61382381613304565b811461382e57600080fd5b50565b61383a81613330565b811461384557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a25763636a04fe2a4f3ce7bedd9dbddc27e5f4b823d51dc06091704e8cdef24064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063df8408fe1461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b8063273123b7116100e7578063273123b7146101f45780632f37aa6d1461021d578063313ce567146102465780635932ead1146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610455565b6040516101469190612f05565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906129f9565b610492565b6040516101839190612eea565b60405180910390f35b34801561019857600080fd5b506101a16104b0565b6040516101ae91906130a7565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612966565b6104c4565b6040516101eb9190612eea565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906128cc565b61059d565b005b34801561022957600080fd5b50610244600480360381019061023f9190612adc565b61068d565b005b34801561025257600080fd5b5061025b61078c565b604051610268919061311c565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612a82565b610795565b005b3480156102a657600080fd5b506102af610847565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906128cc565b6108ef565b6040516102e591906130a7565b60405180910390f35b3480156102fa57600080fd5b50610303610940565b005b34801561031157600080fd5b5061031a610a93565b6040516103279190612e1c565b60405180910390f35b34801561033c57600080fd5b50610345610abc565b6040516103529190612f05565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d91906129f9565b610af9565b60405161038f9190612eea565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612a39565b610b17565b005b3480156103cd57600080fd5b506103d6610c41565b005b3480156103e457600080fd5b506103ed610cf1565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612926565b611250565b60405161042391906130a7565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906129b9565b6112d7565b005b60606040518060400160405280600981526020017f456c6f6e7341726d790000000000000000000000000000000000000000000000815250905090565b60006104a661049f6113c9565b84846113d1565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b60006104d184848461159c565b610592846104dd6113c9565b61058d8560405180606001604052806028815260200161384960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105436113c9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba59092919063ffffffff16565b6113d1565b600190509392505050565b6105a56113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990613007565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ce6113c9565b73ffffffffffffffffffffffffffffffffffffffff1614610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b90612f47565b60405180910390fd5b600a6107398284611c0990919063ffffffff16565b111561077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077190612fc7565b60405180910390fd5b80600a8190555081600b819055505050565b60006009905090565b61079d6113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082190613007565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108886113c9565b73ffffffffffffffffffffffffffffffffffffffff16146108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612f47565b60405180910390fd5b60004790506108ec81611c67565b50565b6000610939600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e59565b9050919050565b6109486113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90613007565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f45524d5900000000000000000000000000000000000000000000000000000000815250905090565b6000610b0d610b066113c9565b848461159c565b6001905092915050565b610b1f6113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390613007565b60405180910390fd5b60005b8151811015610c3d57600160066000848481518110610bd157610bd0613464565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c35906133bd565b915050610baf565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c826113c9565b73ffffffffffffffffffffffffffffffffffffffff1614610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90612f47565b60405180910390fd5b6000610ce3306108ef565b9050610cee81611ec7565b50565b610cf96113c9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90613007565b60405180910390fd5b60148054906101000a900460ff1615610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613087565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e6730601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006113d1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ead57600080fd5b505afa158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee591906128f9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4757600080fd5b505afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f91906128f9565b6040518363ffffffff1660e01b8152600401610f9c929190612e37565b602060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906128f9565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611077306108ef565b600080611082610a93565b426040518863ffffffff1660e01b81526004016110a496959493929190612e89565b6060604051808303818588803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110f69190612b1c565b5050506001601460166101000a81548160ff0219169083151502179055506001601460176101000a81548160ff0219169083151502179055506a0c685fa11e01ec6f00000060158190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111fa929190612e60565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612aaf565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113186113c9565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136590612f47565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613067565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890612f87565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158f91906130a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390613047565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390612f27565b60405180910390fd5b600081116116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613027565b60405180910390fd5b600b54600c81905550600a54600d819055506116d9610a93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117475750611717610a93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b9557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117f05750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117f957600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118a45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118fa5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119125750601460179054906101000a900460ff165b156119c25760155481111561192657600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061197157600080fd5b601e4261197e91906131dd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a6d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611adb57600b54600c81905550600a54600d819055505b6000611ae6306108ef565b9050601460159054906101000a900460ff16158015611b535750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6b5750601460169054906101000a900460ff165b15611b9357611b7981611ec7565b60004790506000811115611b9157611b9047611c67565b5b505b505b611ba083838361214f565b505050565b6000838311158290611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be49190612f05565b60405180910390fd5b5060008385611bfc91906132be565b9050809150509392505050565b6000808284611c1891906131dd565b905083811015611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490612fa7565b60405180910390fd5b8091505092915050565b6000611c7e600a548361215f90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ce8573d6000803e3d6000fd5b506000611cfe82846121a990919063ffffffff16565b90506000611d1660038361215f90919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d80573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611de9573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e52573d6000803e3d6000fd5b5050505050565b6000600854821115611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790612f67565b60405180910390fd5b6000611eaa6121f3565b9050611ebf818461215f90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eff57611efe613493565b5b604051908082528060200260200182016040528015611f2d5781602001602082028036833780820191505090505b5090503081600081518110611f4557611f44613464565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f91906128f9565b8160018151811061203357612032613464565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061209a30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113d1565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120fe9594939291906130c2565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b61215a83838361221e565b505050565b60006121a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123e9565b905092915050565b60006121eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba5565b905092915050565b600080600061220061244c565b91509150612217818361215f90919063ffffffff16565b9250505090565b600080600080600080612230876124b7565b95509550955095509550955061228e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c0990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236f8161251f565b61237984836125dc565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d691906130a7565b60405180910390a3505050505050505050565b60008083118290612430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124279190612f05565b60405180910390fd5b506000838561243f9190613233565b9050809150509392505050565b6000806000600854905060006b033b2e3c9fd0803ce800000090506124886b033b2e3c9fd0803ce800000060085461215f90919063ffffffff16565b8210156124aa576008546b033b2e3c9fd0803ce80000009350935050506124b3565b81819350935050505b9091565b60008060008060008060008060006124d48a600c54600d54612616565b92509250925060006124e46121f3565b905060008060006124f78e8787876126ac565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125296121f3565b90506000612540828461273590919063ffffffff16565b905061259481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c0990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125f1826008546121a990919063ffffffff16565b60088190555061260c81600954611c0990919063ffffffff16565b6009819055505050565b6000806000806126426064612634888a61273590919063ffffffff16565b61215f90919063ffffffff16565b9050600061266c606461265e888b61273590919063ffffffff16565b61215f90919063ffffffff16565b9050600061269582612687858c6121a990919063ffffffff16565b6121a990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806126c5858961273590919063ffffffff16565b905060006126dc868961273590919063ffffffff16565b905060006126f3878961273590919063ffffffff16565b9050600061271c8261270e85876121a990919063ffffffff16565b6121a990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561274857600090506127aa565b600082846127569190613264565b90508284826127659190613233565b146127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279c90612fe7565b60405180910390fd5b809150505b92915050565b60006127c36127be8461315c565b613137565b905080838252602082019050828560208602820111156127e6576127e56134c7565b5b60005b8581101561281657816127fc8882612820565b8452602084019350602083019250506001810190506127e9565b5050509392505050565b60008135905061282f81613803565b92915050565b60008151905061284481613803565b92915050565b600082601f83011261285f5761285e6134c2565b5b813561286f8482602086016127b0565b91505092915050565b6000813590506128878161381a565b92915050565b60008151905061289c8161381a565b92915050565b6000813590506128b181613831565b92915050565b6000815190506128c681613831565b92915050565b6000602082840312156128e2576128e16134d1565b5b60006128f084828501612820565b91505092915050565b60006020828403121561290f5761290e6134d1565b5b600061291d84828501612835565b91505092915050565b6000806040838503121561293d5761293c6134d1565b5b600061294b85828601612820565b925050602061295c85828601612820565b9150509250929050565b60008060006060848603121561297f5761297e6134d1565b5b600061298d86828701612820565b935050602061299e86828701612820565b92505060406129af868287016128a2565b9150509250925092565b600080604083850312156129d0576129cf6134d1565b5b60006129de85828601612820565b92505060206129ef85828601612878565b9150509250929050565b60008060408385031215612a1057612a0f6134d1565b5b6000612a1e85828601612820565b9250506020612a2f858286016128a2565b9150509250929050565b600060208284031215612a4f57612a4e6134d1565b5b600082013567ffffffffffffffff811115612a6d57612a6c6134cc565b5b612a798482850161284a565b91505092915050565b600060208284031215612a9857612a976134d1565b5b6000612aa684828501612878565b91505092915050565b600060208284031215612ac557612ac46134d1565b5b6000612ad38482850161288d565b91505092915050565b60008060408385031215612af357612af26134d1565b5b6000612b01858286016128a2565b9250506020612b12858286016128a2565b9150509250929050565b600080600060608486031215612b3557612b346134d1565b5b6000612b43868287016128b7565b9350506020612b54868287016128b7565b9250506040612b65868287016128b7565b9150509250925092565b6000612b7b8383612b87565b60208301905092915050565b612b90816132f2565b82525050565b612b9f816132f2565b82525050565b6000612bb082613198565b612bba81856131bb565b9350612bc583613188565b8060005b83811015612bf6578151612bdd8882612b6f565b9750612be8836131ae565b925050600181019050612bc9565b5085935050505092915050565b612c0c81613304565b82525050565b612c1b81613347565b82525050565b6000612c2c826131a3565b612c3681856131cc565b9350612c46818560208601613359565b612c4f816134d6565b840191505092915050565b6000612c676023836131cc565b9150612c72826134e7565b604082019050919050565b6000612c8a6015836131cc565b9150612c9582613536565b602082019050919050565b6000612cad602a836131cc565b9150612cb88261355f565b604082019050919050565b6000612cd06022836131cc565b9150612cdb826135ae565b604082019050919050565b6000612cf3601b836131cc565b9150612cfe826135fd565b602082019050919050565b6000612d16602b836131cc565b9150612d2182613626565b604082019050919050565b6000612d396021836131cc565b9150612d4482613675565b604082019050919050565b6000612d5c6020836131cc565b9150612d67826136c4565b602082019050919050565b6000612d7f6029836131cc565b9150612d8a826136ed565b604082019050919050565b6000612da26025836131cc565b9150612dad8261373c565b604082019050919050565b6000612dc56024836131cc565b9150612dd08261378b565b604082019050919050565b6000612de86017836131cc565b9150612df3826137da565b602082019050919050565b612e0781613330565b82525050565b612e168161333a565b82525050565b6000602082019050612e316000830184612b96565b92915050565b6000604082019050612e4c6000830185612b96565b612e596020830184612b96565b9392505050565b6000604082019050612e756000830185612b96565b612e826020830184612dfe565b9392505050565b600060c082019050612e9e6000830189612b96565b612eab6020830188612dfe565b612eb86040830187612c12565b612ec56060830186612c12565b612ed26080830185612b96565b612edf60a0830184612dfe565b979650505050505050565b6000602082019050612eff6000830184612c03565b92915050565b60006020820190508181036000830152612f1f8184612c21565b905092915050565b60006020820190508181036000830152612f4081612c5a565b9050919050565b60006020820190508181036000830152612f6081612c7d565b9050919050565b60006020820190508181036000830152612f8081612ca0565b9050919050565b60006020820190508181036000830152612fa081612cc3565b9050919050565b60006020820190508181036000830152612fc081612ce6565b9050919050565b60006020820190508181036000830152612fe081612d09565b9050919050565b6000602082019050818103600083015261300081612d2c565b9050919050565b6000602082019050818103600083015261302081612d4f565b9050919050565b6000602082019050818103600083015261304081612d72565b9050919050565b6000602082019050818103600083015261306081612d95565b9050919050565b6000602082019050818103600083015261308081612db8565b9050919050565b600060208201905081810360008301526130a081612ddb565b9050919050565b60006020820190506130bc6000830184612dfe565b92915050565b600060a0820190506130d76000830188612dfe565b6130e46020830187612c12565b81810360408301526130f68186612ba5565b90506131056060830185612b96565b6131126080830184612dfe565b9695505050505050565b60006020820190506131316000830184612e0d565b92915050565b6000613141613152565b905061314d828261338c565b919050565b6000604051905090565b600067ffffffffffffffff82111561317757613176613493565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006131e882613330565b91506131f383613330565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561322857613227613406565b5b828201905092915050565b600061323e82613330565b915061324983613330565b92508261325957613258613435565b5b828204905092915050565b600061326f82613330565b915061327a83613330565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132b3576132b2613406565b5b828202905092915050565b60006132c982613330565b91506132d483613330565b9250828210156132e7576132e6613406565b5b828203905092915050565b60006132fd82613310565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061335282613330565b9050919050565b60005b8381101561337757808201518184015260208101905061335c565b83811115613386576000848401525b50505050565b613395826134d6565b810181811067ffffffffffffffff821117156133b4576133b3613493565b5b80604052505050565b60006133c882613330565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133fb576133fa613406565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642061646d696e20616464726573730000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e657720746178732063616e277420626520686967686572207468616e20746860008201527f6520737461727420746178000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b61380c816132f2565b811461381757600080fd5b50565b61382381613304565b811461382e57600080fd5b50565b61383a81613330565b811461384557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a25763636a04fe2a4f3ce7bedd9dbddc27e5f4b823d51dc06091704e8cdef24064736f6c63430008070033

Deployed Bytecode Sourcemap

4716:13427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7363:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8288:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7640:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8489:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13644:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15630:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7549:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8943:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15191:225;;;;;;;;;;;;;:::i;:::-;;7743:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3663:148;;;;;;;;;;;;;:::i;:::-;;3449:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7454:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7889:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13469:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14957:226;;;;;;;;;;;;;:::i;:::-;;12468:993;;;;;;;;;;;;;:::i;:::-;;8096:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15424:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7363:83;7400:13;7433:5;;;;;;;;;;;;;;;;;7426:12;;7363:83;:::o;8288:193::-;8390:4;8412:39;8421:12;:10;:12::i;:::-;8435:7;8444:6;8412:8;:39::i;:::-;8469:4;8462:11;;8288:193;;;;:::o;7640:95::-;7693:7;5214:27;7713:14;;7640:95;:::o;8489:446::-;8621:4;8638:36;8648:6;8656:9;8667:6;8638:9;:36::i;:::-;8685:220;8708:6;8729:12;:10;:12::i;:::-;8756:138;8812:6;8756:138;;;;;;;;;;;;;;;;;:11;:19;8768:6;8756:19;;;;;;;;;;;;;;;:33;8776:12;:10;:12::i;:::-;8756:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8685:8;:220::i;:::-;8923:4;8916:11;;8489:446;;;;;:::o;13644:88::-;3586:12;:10;:12::i;:::-;3576:22;;:6;;;;;;;;;;:22;;;3568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13719:5:::1;13704:4;:12;13709:6;13704:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13644:88:::0;:::o;15630:340::-;15729:21;;;;;;;;;;;15713:37;;:12;:10;:12::i;:::-;:37;;;15705:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15835:2;15809:22;15822:8;15809;:12;;:22;;;;:::i;:::-;:28;;15787:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;15927:8;15919:5;:16;;;;15954:8;15946:5;:16;;;;15630:340;;:::o;7549:83::-;7590:5;5898:1;7608:16;;7549:83;:::o;8943:101::-;3586:12;:10;:12::i;:::-;3576:22;;:6;;;;;;;;;;:22;;;3568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9031:5:::1;9013:15;;:23;;;;;;;;;;;;;;;;;;8943:101:::0;:::o;15191:225::-;15257:21;;;;;;;;;;;15241:37;;:12;:10;:12::i;:::-;:37;;;15233:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15315:26;15344:21;15315:50;;15376:32;15389:18;15376:12;:32::i;:::-;15222:194;15191:225::o;7743:138::-;7809:7;7836:37;7856:7;:16;7864:7;7856:16;;;;;;;;;;;;;;;;7836:19;:37::i;:::-;7829:44;;7743:138;;;:::o;3663:148::-;3586:12;:10;:12::i;:::-;3576:22;;:6;;;;;;;;;;:22;;;3568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3770:1:::1;3733:40;;3754:6;::::0;::::1;;;;;;;;3733:40;;;;;;;;;;;;3801:1;3784:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3663:148::o:0;3449:79::-;3487:7;3514:6;;;;;;;;;;;3507:13;;3449:79;:::o;7454:87::-;7493:13;7526:7;;;;;;;;;;;;;;;;;7519:14;;7454:87;:::o;7889:199::-;7994:4;8016:42;8026:12;:10;:12::i;:::-;8040:9;8051:6;8016:9;:42::i;:::-;8076:4;8069:11;;7889:199;;;;:::o;13469:167::-;3586:12;:10;:12::i;:::-;3576:22;;:6;;;;;;;;;;:22;;;3568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13543:9:::1;13538:91;13562:5;:12;13558:1;:16;13538:91;;;13613:4;13596;:14;13601:5;13607:1;13601:8;;;;;;;;:::i;:::-;;;;;;;;13596:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13576:3;;;;;:::i;:::-;;;;13538:91;;;;13469:167:::0;:::o;14957:226::-;15023:21;;;;;;;;;;;15007:37;;:12;:10;:12::i;:::-;:37;;;14999:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15081:23;15107:24;15125:4;15107:9;:24::i;:::-;15081:50;;15142:33;15159:15;15142:16;:33::i;:::-;14988:195;14957:226::o;12468:993::-;3586:12;:10;:12::i;:::-;3576:22;;:6;;;;;;;;;;:22;;;3568:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12530:11:::1;::::0;::::1;;;;;;;;12529:12;12521:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12580:35;12651:42;12580:124;;12733:16;12715:15;;:34;;;;;;;;;;;;;;;;;;12760:58;12777:4;12792:15;;;;;;;;;;;5214:27;12760:8;:58::i;:::-;12863:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12845:70;;;12924:4;12931:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12845:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12829:13;;:126;;;;;;;;;;;;;;;;;;12966:15;;;;;;;;;;;:31;;;13005:21;13050:4;13070:24;13088:4;13070:9;:24::i;:::-;13109:1;13125::::0;13141:7:::1;:5;:7::i;:::-;13163:15;12966:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13214:4;13200:11;;:18;;;;;;;;;;;;;;;;;;13247:4;13229:15;;:22;;;;;;;;;;;;;;;;;;13277:25;13262:12;:40;;;;13327:4;13313:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;13349:13;;;;;;;;;;;13342:29;;;13394:15;;;;;;;;;;;13425:17;13342:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12510:951;12468:993::o:0;8096:184::-;8213:7;8245:11;:18;8257:5;8245:18;;;;;;;;;;;;;;;:27;8264:7;8245:27;;;;;;;;;;;;;;;;8238:34;;8096:184;;;;:::o;15424:198::-;15521:21;;;;;;;;;;;15505:37;;:12;:10;:12::i;:::-;:37;;;15497:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15610:4;15579:18;:28;15598:8;15579:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15424:198;;:::o;952:98::-;1005:7;1032:10;1025:17;;952:98;:::o;9383:369::-;9527:1;9510:19;;:5;:19;;;;9502:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:1;9589:21;;:7;:21;;;;9581:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9690:6;9660:11;:18;9672:5;9660:18;;;;;;;;;;;;;;;:27;9679:7;9660:27;;;;;;;;;;;;;;;:36;;;;9728:7;9712:32;;9721:5;9712:32;;;9737:6;9712:32;;;;;;:::i;:::-;;;;;;;;9383:369;;;:::o;9764:1637::-;9902:1;9886:18;;:4;:18;;;;9878:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9979:1;9965:16;;:2;:16;;;;9957:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10049:1;10040:6;:10;10032:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10121:5;;10109:9;:17;;;;10149:5;;10137:9;:17;;;;10179:7;:5;:7::i;:::-;10171:15;;:4;:15;;;;:32;;;;;10196:7;:5;:7::i;:::-;10190:13;;:2;:13;;;;10171:32;10167:1182;;;10229:4;:10;10234:4;10229:10;;;;;;;;;;;;;;;;;;;;;;;;;10228:11;:24;;;;;10244:4;:8;10249:2;10244:8;;;;;;;;;;;;;;;;;;;;;;;;;10243:9;10228:24;10220:33;;;;;;10298:13;;;;;;;;;;;10290:21;;:4;:21;;;:72;;;;;10346:15;;;;;;;;;;;10332:30;;:2;:30;;;;10290:72;:116;;;;;10384:18;:22;10403:2;10384:22;;;;;;;;;;;;;;;;;;;;;;;;;10383:23;10290:116;:152;;;;;10427:15;;;;;;;;;;;10290:152;10268:407;;;10524:12;;10514:6;:22;;10506:31;;;;;;10579:15;10564:8;:12;10573:2;10564:12;;;;;;;;;;;;;;;;:30;10556:39;;;;;;10648:10;10629:15;:30;;;;:::i;:::-;10614:8;:12;10623:2;10614:12;;;;;;;;;;;;;;;:45;;;;10268:407;10719:13;;;;;;;;;;;10713:19;;:2;:19;;;:72;;;;;10769:15;;;;;;;;;;;10753:32;;:4;:32;;;;10713:72;:118;;;;;10807:18;:24;10826:4;10807:24;;;;;;;;;;;;;;;;;;;;;;;;;10806:25;10713:118;10691:244;;;10878:5;;10866:9;:17;;;;10914:5;;10902:9;:17;;;;10691:244;10949:28;10980:24;10998:4;10980:9;:24::i;:::-;10949:55;;11024:6;;;;;;;;;;;11023:7;:32;;;;;11042:13;;;;;;;;;;;11034:21;;:4;:21;;;;11023:32;:47;;;;;11059:11;;;;;;;;;;;11023:47;11019:319;;;11091:38;11108:20;11091:16;:38::i;:::-;11148:26;11177:21;11148:50;;11242:1;11221:18;:22;11217:106;;;11268:35;11281:21;11268:12;:35::i;:::-;11217:106;11072:266;11019:319;10205:1144;10167:1182;11361:32;11376:4;11382:2;11386:6;11361:14;:32::i;:::-;9764:1637;;;:::o;2214:224::-;2334:7;2367:1;2362;:6;;2370:12;2354:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2394:9;2410:1;2406;:5;;;;:::i;:::-;2394:17;;2429:1;2422:8;;;2214:224;;;;;:::o;1883:179::-;1941:7;1961:9;1977:1;1973;:5;;;;:::i;:::-;1961:17;;2002:1;1997;:6;;1989:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2053:1;2046:8;;;1883:179;;;;:::o;11901:558::-;12005:18;12026:17;12037:5;;12026:6;:10;;:17;;;;:::i;:::-;12005:38;;12054:19;;;;;;;;;;;:28;;:40;12083:10;12054:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12189:25;12217:22;12228:10;12217:6;:10;;:22;;;;:::i;:::-;12189:50;;12250:20;12273:24;12295:1;12273:17;:21;;:24;;;;:::i;:::-;12250:47;;12308:17;;;;;;;;;;;:26;;:40;12335:12;12308:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12359:23;;;;;;;;;;;:32;;:46;12392:12;12359:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12416:12;;;;;;;;;;;:21;;:35;12438:12;12416:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11947:512;;;11901:558;:::o;9052:323::-;9147:7;9205;;9194;:18;;9172:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9293:19;9315:10;:8;:10::i;:::-;9293:32;;9343:24;9355:11;9343:7;:11;;:24;;;;:::i;:::-;9336:31;;;9052:323;;;:::o;11410:483::-;6281:4;6272:6;;:13;;;;;;;;;;;;;;;;;;11488:21:::1;11526:1;11512:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11488:40;;11557:4;11539;11544:1;11539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11583:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11573:4;11578:1;11573:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11616:62;11633:4;11648:15;;;;;;;;;;;11666:11;11616:8;:62::i;:::-;11689:15;;;;;;;;;;;:66;;;11770:11;11796:1;11812:4;11839;11859:15;11689:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11477:416;6317:5:::0;6308:6;;:14;;;;;;;;;;;;;;;;;;11410:483;:::o;13740:180::-;13868:44;13886:6;13894:9;13905:6;13868:17;:44::i;:::-;13740:180;;;:::o;2700:132::-;2758:7;2785:39;2789:1;2792;2785:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2778:46;;2700:132;;;;:::o;2070:136::-;2128:7;2155:43;2159:1;2162;2155:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2148:50;;2070:136;;;;:::o;17711:164::-;17753:7;17774:15;17791;17810:19;:17;:19::i;:::-;17773:56;;;;17847:20;17859:7;17847;:11;;:20;;;;:::i;:::-;17840:27;;;;17711:164;:::o;13928:610::-;14075:15;14105:23;14143:12;14170:23;14208:12;14235:13;14262:19;14273:7;14262:10;:19::i;:::-;14060:221;;;;;;;;;;;;14310:28;14330:7;14310;:15;14318:6;14310:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14292:7;:15;14300:6;14292:15;;;;;;;;;;;;;;;:46;;;;14370:39;14393:15;14370:7;:18;14378:9;14370:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14349:7;:18;14357:9;14349:18;;;;;;;;;;;;;;;:60;;;;14420:16;14430:5;14420:9;:16::i;:::-;14447:23;14459:4;14465;14447:11;:23::i;:::-;14503:9;14486:44;;14495:6;14486:44;;;14514:15;14486:44;;;;;;:::i;:::-;;;;;;;;14049:489;;;;;;13928:610;;;:::o;2840:223::-;2960:7;2992:1;2988;:5;2995:12;2980:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3019:9;3035:1;3031;:5;;;;:::i;:::-;3019:17;;3054:1;3047:8;;;2840:223;;;;;:::o;17883:257::-;17934:7;17943;17963:15;17981:7;;17963:25;;17999:15;5214:27;17999:25;;18049:20;5214:27;18049:7;;:11;;:20;;;;:::i;:::-;18039:7;:30;18035:61;;;18079:7;;5214:27;18071:25;;;;;;;;18035:61;18115:7;18124;18107:25;;;;;;17883:257;;;:::o;15982:704::-;16082:7;16104;16126;16148;16170;16192;16228:23;16253:12;16267:13;16284:92;16310:7;16332:9;;16356;;16284:11;:92::i;:::-;16227:149;;;;;;16387:19;16409:10;:8;:10::i;:::-;16387:32;;16431:15;16448:23;16473:12;16489:109;16515:7;16537:4;16556:5;16576:11;16489;:109::i;:::-;16430:168;;;;;;16617:7;16626:15;16643:4;16649:15;16666:4;16672:5;16609:69;;;;;;;;;;;;;;;;;;;15982:704;;;;;;;:::o;14546:211::-;14599:19;14621:10;:8;:10::i;:::-;14599:32;;14642:13;14658:22;14668:11;14658:5;:9;;:22;;;;:::i;:::-;14642:38;;14716:33;14743:5;14716:7;:22;14732:4;14716:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14691:7;:22;14707:4;14691:22;;;;;;;;;;;;;;;:58;;;;14588:169;;14546:211;:::o;14765:147::-;14843:17;14855:4;14843:7;;:11;;:17;;;;:::i;:::-;14833:7;:27;;;;14884:20;14899:4;14884:10;;:14;;:20;;;;:::i;:::-;14871:10;:33;;;;14765:147;;:::o;16694:467::-;16862:7;16884;16906;16941:12;16956:28;16980:3;16956:19;16968:6;16956:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16941:43;;16995:13;17011:29;17036:3;17011:20;17023:7;17011;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16995:45;;17051:23;17077:28;17099:5;17077:17;17089:4;17077:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17051:54;;17124:15;17141:4;17147:5;17116:37;;;;;;;;;16694:467;;;;;;;:::o;17169:534::-;17363:7;17385;17407;17442:15;17460:24;17472:11;17460:7;:11;;:24;;;;:::i;:::-;17442:42;;17495:12;17510:21;17519:11;17510:4;:8;;:21;;;;:::i;:::-;17495:36;;17542:13;17558:22;17568:11;17558:5;:9;;:22;;;;:::i;:::-;17542:38;;17591:23;17617:28;17639:5;17617:17;17629:4;17617:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17591:54;;17664:7;17673:15;17690:4;17656:39;;;;;;;;;;17169:534;;;;;;;;:::o;2446:246::-;2504:7;2533:1;2528;:6;2524:47;;;2558:1;2551:8;;;;2524:47;2581:9;2597:1;2593;:5;;;;:::i;:::-;2581:17;;2626:1;2621;2617;:5;;;;:::i;:::-;:10;2609:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2683:1;2676:8;;;2446:246;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:329::-;2074:6;2123:2;2111:9;2102:7;2098:23;2094:32;2091:119;;;2129:79;;:::i;:::-;2091:119;2249:1;2274:53;2319:7;2310:6;2299:9;2295:22;2274:53;:::i;:::-;2264:63;;2220:117;2015:329;;;;:::o;2350:351::-;2420:6;2469:2;2457:9;2448:7;2444:23;2440:32;2437:119;;;2475:79;;:::i;:::-;2437:119;2595:1;2620:64;2676:7;2667:6;2656:9;2652:22;2620:64;:::i;:::-;2610:74;;2566:128;2350:351;;;;:::o;2707:474::-;2775:6;2783;2832:2;2820:9;2811:7;2807:23;2803:32;2800:119;;;2838:79;;:::i;:::-;2800:119;2958:1;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;:::i;:::-;2973:63;;2929:117;3085:2;3111:53;3156:7;3147:6;3136:9;3132:22;3111:53;:::i;:::-;3101:63;;3056:118;2707:474;;;;;:::o;3187:619::-;3264:6;3272;3280;3329:2;3317:9;3308:7;3304:23;3300:32;3297:119;;;3335:79;;:::i;:::-;3297:119;3455:1;3480:53;3525:7;3516:6;3505:9;3501:22;3480:53;:::i;:::-;3470:63;;3426:117;3582:2;3608:53;3653:7;3644:6;3633:9;3629:22;3608:53;:::i;:::-;3598:63;;3553:118;3710:2;3736:53;3781:7;3772:6;3761:9;3757:22;3736:53;:::i;:::-;3726:63;;3681:118;3187:619;;;;;:::o;3812:468::-;3877:6;3885;3934:2;3922:9;3913:7;3909:23;3905:32;3902:119;;;3940:79;;:::i;:::-;3902:119;4060:1;4085:53;4130:7;4121:6;4110:9;4106:22;4085:53;:::i;:::-;4075:63;;4031:117;4187:2;4213:50;4255:7;4246:6;4235:9;4231:22;4213:50;:::i;:::-;4203:60;;4158:115;3812:468;;;;;:::o;4286:474::-;4354:6;4362;4411:2;4399:9;4390:7;4386:23;4382:32;4379:119;;;4417:79;;:::i;:::-;4379:119;4537:1;4562:53;4607:7;4598:6;4587:9;4583:22;4562:53;:::i;:::-;4552:63;;4508:117;4664:2;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;:::i;:::-;4680:63;;4635:118;4286:474;;;;;:::o;4766:539::-;4850:6;4899:2;4887:9;4878:7;4874:23;4870:32;4867:119;;;4905:79;;:::i;:::-;4867:119;5053:1;5042:9;5038:17;5025:31;5083:18;5075:6;5072:30;5069:117;;;5105:79;;:::i;:::-;5069:117;5210:78;5280:7;5271:6;5260:9;5256:22;5210:78;:::i;:::-;5200:88;;4996:302;4766:539;;;;:::o;5311:323::-;5367:6;5416:2;5404:9;5395:7;5391:23;5387:32;5384:119;;;5422:79;;:::i;:::-;5384:119;5542:1;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5513:114;5311:323;;;;:::o;5640:345::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:61;5960:7;5951:6;5940:9;5936:22;5907:61;:::i;:::-;5897:71;;5853:125;5640:345;;;;:::o;5991:474::-;6059:6;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;5991:474;;;;;:::o;6471:663::-;6559:6;6567;6575;6624:2;6612:9;6603:7;6599:23;6595:32;6592:119;;;6630:79;;:::i;:::-;6592:119;6750:1;6775:64;6831:7;6822:6;6811:9;6807:22;6775:64;:::i;:::-;6765:74;;6721:128;6888:2;6914:64;6970:7;6961:6;6950:9;6946:22;6914:64;:::i;:::-;6904:74;;6859:129;7027:2;7053:64;7109:7;7100:6;7089:9;7085:22;7053:64;:::i;:::-;7043:74;;6998:129;6471:663;;;;;:::o;7140:179::-;7209:10;7230:46;7272:3;7264:6;7230:46;:::i;:::-;7308:4;7303:3;7299:14;7285:28;;7140:179;;;;:::o;7325:108::-;7402:24;7420:5;7402:24;:::i;:::-;7397:3;7390:37;7325:108;;:::o;7439:118::-;7526:24;7544:5;7526:24;:::i;:::-;7521:3;7514:37;7439:118;;:::o;7593:732::-;7712:3;7741:54;7789:5;7741:54;:::i;:::-;7811:86;7890:6;7885:3;7811:86;:::i;:::-;7804:93;;7921:56;7971:5;7921:56;:::i;:::-;8000:7;8031:1;8016:284;8041:6;8038:1;8035:13;8016:284;;;8117:6;8111:13;8144:63;8203:3;8188:13;8144:63;:::i;:::-;8137:70;;8230:60;8283:6;8230:60;:::i;:::-;8220:70;;8076:224;8063:1;8060;8056:9;8051:14;;8016:284;;;8020:14;8316:3;8309:10;;7717:608;;;7593:732;;;;:::o;8331:109::-;8412:21;8427:5;8412:21;:::i;:::-;8407:3;8400:34;8331:109;;:::o;8446:147::-;8541:45;8580:5;8541:45;:::i;:::-;8536:3;8529:58;8446:147;;:::o;8599:364::-;8687:3;8715:39;8748:5;8715:39;:::i;:::-;8770:71;8834:6;8829:3;8770:71;:::i;:::-;8763:78;;8850:52;8895:6;8890:3;8883:4;8876:5;8872:16;8850:52;:::i;:::-;8927:29;8949:6;8927:29;:::i;:::-;8922:3;8918:39;8911:46;;8691:272;8599:364;;;;:::o;8969:366::-;9111:3;9132:67;9196:2;9191:3;9132:67;:::i;:::-;9125:74;;9208:93;9297:3;9208:93;:::i;:::-;9326:2;9321:3;9317:12;9310:19;;8969:366;;;:::o;9341:::-;9483:3;9504:67;9568:2;9563:3;9504:67;:::i;:::-;9497:74;;9580:93;9669:3;9580:93;:::i;:::-;9698:2;9693:3;9689:12;9682:19;;9341:366;;;:::o;9713:::-;9855:3;9876:67;9940:2;9935:3;9876:67;:::i;:::-;9869:74;;9952:93;10041:3;9952:93;:::i;:::-;10070:2;10065:3;10061:12;10054:19;;9713:366;;;:::o;10085:::-;10227:3;10248:67;10312:2;10307:3;10248:67;:::i;:::-;10241:74;;10324:93;10413:3;10324:93;:::i;:::-;10442:2;10437:3;10433:12;10426:19;;10085:366;;;:::o;10457:::-;10599:3;10620:67;10684:2;10679:3;10620:67;:::i;:::-;10613:74;;10696:93;10785:3;10696:93;:::i;:::-;10814:2;10809:3;10805:12;10798:19;;10457:366;;;:::o;10829:::-;10971:3;10992:67;11056:2;11051:3;10992:67;:::i;:::-;10985:74;;11068:93;11157:3;11068:93;:::i;:::-;11186:2;11181:3;11177:12;11170:19;;10829:366;;;:::o;11201:::-;11343:3;11364:67;11428:2;11423:3;11364:67;:::i;:::-;11357:74;;11440:93;11529:3;11440:93;:::i;:::-;11558:2;11553:3;11549:12;11542:19;;11201:366;;;:::o;11573:::-;11715:3;11736:67;11800:2;11795:3;11736:67;:::i;:::-;11729:74;;11812:93;11901:3;11812:93;:::i;:::-;11930:2;11925:3;11921:12;11914:19;;11573:366;;;:::o;11945:::-;12087:3;12108:67;12172:2;12167:3;12108:67;:::i;:::-;12101:74;;12184:93;12273:3;12184:93;:::i;:::-;12302:2;12297:3;12293:12;12286:19;;11945:366;;;:::o;12317:::-;12459:3;12480:67;12544:2;12539:3;12480:67;:::i;:::-;12473:74;;12556:93;12645:3;12556:93;:::i;:::-;12674:2;12669:3;12665:12;12658:19;;12317:366;;;:::o;12689:::-;12831:3;12852:67;12916:2;12911:3;12852:67;:::i;:::-;12845:74;;12928:93;13017:3;12928:93;:::i;:::-;13046:2;13041:3;13037:12;13030:19;;12689:366;;;:::o;13061:::-;13203:3;13224:67;13288:2;13283:3;13224:67;:::i;:::-;13217:74;;13300:93;13389:3;13300:93;:::i;:::-;13418:2;13413:3;13409:12;13402:19;;13061:366;;;:::o;13433:118::-;13520:24;13538:5;13520:24;:::i;:::-;13515:3;13508:37;13433:118;;:::o;13557:112::-;13640:22;13656:5;13640:22;:::i;:::-;13635:3;13628:35;13557:112;;:::o;13675:222::-;13768:4;13806:2;13795:9;13791:18;13783:26;;13819:71;13887:1;13876:9;13872:17;13863:6;13819:71;:::i;:::-;13675:222;;;;:::o;13903:332::-;14024:4;14062:2;14051:9;14047:18;14039:26;;14075:71;14143:1;14132:9;14128:17;14119:6;14075:71;:::i;:::-;14156:72;14224:2;14213:9;14209:18;14200:6;14156:72;:::i;:::-;13903:332;;;;;:::o;14241:::-;14362:4;14400:2;14389:9;14385:18;14377:26;;14413:71;14481:1;14470:9;14466:17;14457:6;14413:71;:::i;:::-;14494:72;14562:2;14551:9;14547:18;14538:6;14494:72;:::i;:::-;14241:332;;;;;:::o;14579:807::-;14828:4;14866:3;14855:9;14851:19;14843:27;;14880:71;14948:1;14937:9;14933:17;14924:6;14880:71;:::i;:::-;14961:72;15029:2;15018:9;15014:18;15005:6;14961:72;:::i;:::-;15043:80;15119:2;15108:9;15104:18;15095:6;15043:80;:::i;:::-;15133;15209:2;15198:9;15194:18;15185:6;15133:80;:::i;:::-;15223:73;15291:3;15280:9;15276:19;15267:6;15223:73;:::i;:::-;15306;15374:3;15363:9;15359:19;15350:6;15306:73;:::i;:::-;14579:807;;;;;;;;;:::o;15392:210::-;15479:4;15517:2;15506:9;15502:18;15494:26;;15530:65;15592:1;15581:9;15577:17;15568:6;15530:65;:::i;:::-;15392:210;;;;:::o;15608:313::-;15721:4;15759:2;15748:9;15744:18;15736:26;;15808:9;15802:4;15798:20;15794:1;15783:9;15779:17;15772:47;15836:78;15909:4;15900:6;15836:78;:::i;:::-;15828:86;;15608:313;;;;:::o;15927:419::-;16093:4;16131:2;16120:9;16116:18;16108:26;;16180:9;16174:4;16170:20;16166:1;16155:9;16151:17;16144:47;16208:131;16334:4;16208:131;:::i;:::-;16200:139;;15927:419;;;:::o;16352:::-;16518:4;16556:2;16545:9;16541:18;16533:26;;16605:9;16599:4;16595:20;16591:1;16580:9;16576:17;16569:47;16633:131;16759:4;16633:131;:::i;:::-;16625:139;;16352:419;;;:::o;16777:::-;16943:4;16981:2;16970:9;16966:18;16958:26;;17030:9;17024:4;17020:20;17016:1;17005:9;17001:17;16994:47;17058:131;17184:4;17058:131;:::i;:::-;17050:139;;16777:419;;;:::o;17202:::-;17368:4;17406:2;17395:9;17391:18;17383:26;;17455:9;17449:4;17445:20;17441:1;17430:9;17426:17;17419:47;17483:131;17609:4;17483:131;:::i;:::-;17475:139;;17202:419;;;:::o;17627:::-;17793:4;17831:2;17820:9;17816:18;17808:26;;17880:9;17874:4;17870:20;17866:1;17855:9;17851:17;17844:47;17908:131;18034:4;17908:131;:::i;:::-;17900:139;;17627:419;;;:::o;18052:::-;18218:4;18256:2;18245:9;18241:18;18233:26;;18305:9;18299:4;18295:20;18291:1;18280:9;18276:17;18269:47;18333:131;18459:4;18333:131;:::i;:::-;18325:139;;18052:419;;;:::o;18477:::-;18643:4;18681:2;18670:9;18666:18;18658:26;;18730:9;18724:4;18720:20;18716:1;18705:9;18701:17;18694:47;18758:131;18884:4;18758:131;:::i;:::-;18750:139;;18477:419;;;:::o;18902:::-;19068:4;19106:2;19095:9;19091:18;19083:26;;19155:9;19149:4;19145:20;19141:1;19130:9;19126:17;19119:47;19183:131;19309:4;19183:131;:::i;:::-;19175:139;;18902:419;;;:::o;19327:::-;19493:4;19531:2;19520:9;19516:18;19508:26;;19580:9;19574:4;19570:20;19566:1;19555:9;19551:17;19544:47;19608:131;19734:4;19608:131;:::i;:::-;19600:139;;19327:419;;;:::o;19752:::-;19918:4;19956:2;19945:9;19941:18;19933:26;;20005:9;19999:4;19995:20;19991:1;19980:9;19976:17;19969:47;20033:131;20159:4;20033:131;:::i;:::-;20025:139;;19752:419;;;:::o;20177:::-;20343:4;20381:2;20370:9;20366:18;20358:26;;20430:9;20424:4;20420:20;20416:1;20405:9;20401:17;20394:47;20458:131;20584:4;20458:131;:::i;:::-;20450:139;;20177:419;;;:::o;20602:::-;20768:4;20806:2;20795:9;20791:18;20783:26;;20855:9;20849:4;20845:20;20841:1;20830:9;20826:17;20819:47;20883:131;21009:4;20883:131;:::i;:::-;20875:139;;20602:419;;;:::o;21027:222::-;21120:4;21158:2;21147:9;21143:18;21135:26;;21171:71;21239:1;21228:9;21224:17;21215:6;21171:71;:::i;:::-;21027:222;;;;:::o;21255:831::-;21518:4;21556:3;21545:9;21541:19;21533:27;;21570:71;21638:1;21627:9;21623:17;21614:6;21570:71;:::i;:::-;21651:80;21727:2;21716:9;21712:18;21703:6;21651:80;:::i;:::-;21778:9;21772:4;21768:20;21763:2;21752:9;21748:18;21741:48;21806:108;21909:4;21900:6;21806:108;:::i;:::-;21798:116;;21924:72;21992:2;21981:9;21977:18;21968:6;21924:72;:::i;:::-;22006:73;22074:3;22063:9;22059:19;22050:6;22006:73;:::i;:::-;21255:831;;;;;;;;:::o;22092:214::-;22181:4;22219:2;22208:9;22204:18;22196:26;;22232:67;22296:1;22285:9;22281:17;22272:6;22232:67;:::i;:::-;22092:214;;;;:::o;22312:129::-;22346:6;22373:20;;:::i;:::-;22363:30;;22402:33;22430:4;22422:6;22402:33;:::i;:::-;22312:129;;;:::o;22447:75::-;22480:6;22513:2;22507:9;22497:19;;22447:75;:::o;22528:311::-;22605:4;22695:18;22687:6;22684:30;22681:56;;;22717:18;;:::i;:::-;22681:56;22767:4;22759:6;22755:17;22747:25;;22827:4;22821;22817:15;22809:23;;22528:311;;;:::o;22845:132::-;22912:4;22935:3;22927:11;;22965:4;22960:3;22956:14;22948:22;;22845:132;;;:::o;22983:114::-;23050:6;23084:5;23078:12;23068:22;;22983:114;;;:::o;23103:99::-;23155:6;23189:5;23183:12;23173:22;;23103:99;;;:::o;23208:113::-;23278:4;23310;23305:3;23301:14;23293:22;;23208:113;;;:::o;23327:184::-;23426:11;23460:6;23455:3;23448:19;23500:4;23495:3;23491:14;23476:29;;23327:184;;;;:::o;23517:169::-;23601:11;23635:6;23630:3;23623:19;23675:4;23670:3;23666:14;23651:29;;23517:169;;;;:::o;23692:305::-;23732:3;23751:20;23769:1;23751:20;:::i;:::-;23746:25;;23785:20;23803:1;23785:20;:::i;:::-;23780:25;;23939:1;23871:66;23867:74;23864:1;23861:81;23858:107;;;23945:18;;:::i;:::-;23858:107;23989:1;23986;23982:9;23975:16;;23692:305;;;;:::o;24003:185::-;24043:1;24060:20;24078:1;24060:20;:::i;:::-;24055:25;;24094:20;24112:1;24094:20;:::i;:::-;24089:25;;24133:1;24123:35;;24138:18;;:::i;:::-;24123:35;24180:1;24177;24173:9;24168:14;;24003:185;;;;:::o;24194:348::-;24234:7;24257:20;24275:1;24257:20;:::i;:::-;24252:25;;24291:20;24309:1;24291:20;:::i;:::-;24286:25;;24479:1;24411:66;24407:74;24404:1;24401:81;24396:1;24389:9;24382:17;24378:105;24375:131;;;24486:18;;:::i;:::-;24375:131;24534:1;24531;24527:9;24516:20;;24194:348;;;;:::o;24548:191::-;24588:4;24608:20;24626:1;24608:20;:::i;:::-;24603:25;;24642:20;24660:1;24642:20;:::i;:::-;24637:25;;24681:1;24678;24675:8;24672:34;;;24686:18;;:::i;:::-;24672:34;24731:1;24728;24724:9;24716:17;;24548:191;;;;:::o;24745:96::-;24782:7;24811:24;24829:5;24811:24;:::i;:::-;24800:35;;24745:96;;;:::o;24847:90::-;24881:7;24924:5;24917:13;24910:21;24899:32;;24847:90;;;:::o;24943:126::-;24980:7;25020:42;25013:5;25009:54;24998:65;;24943:126;;;:::o;25075:77::-;25112:7;25141:5;25130:16;;25075:77;;;:::o;25158:86::-;25193:7;25233:4;25226:5;25222:16;25211:27;;25158:86;;;:::o;25250:121::-;25308:9;25341:24;25359:5;25341:24;:::i;:::-;25328:37;;25250:121;;;:::o;25377:307::-;25445:1;25455:113;25469:6;25466:1;25463:13;25455:113;;;25554:1;25549:3;25545:11;25539:18;25535:1;25530:3;25526:11;25519:39;25491:2;25488:1;25484:10;25479:15;;25455:113;;;25586:6;25583:1;25580:13;25577:101;;;25666:1;25657:6;25652:3;25648:16;25641:27;25577:101;25426:258;25377:307;;;:::o;25690:281::-;25773:27;25795:4;25773:27;:::i;:::-;25765:6;25761:40;25903:6;25891:10;25888:22;25867:18;25855:10;25852:34;25849:62;25846:88;;;25914:18;;:::i;:::-;25846:88;25954:10;25950:2;25943:22;25733:238;25690:281;;:::o;25977:233::-;26016:3;26039:24;26057:5;26039:24;:::i;:::-;26030:33;;26085:66;26078:5;26075:77;26072:103;;;26155:18;;:::i;:::-;26072:103;26202:1;26195:5;26191:13;26184:20;;25977:233;;;:::o;26216:180::-;26264:77;26261:1;26254:88;26361:4;26358:1;26351:15;26385:4;26382:1;26375:15;26402:180;26450:77;26447:1;26440:88;26547:4;26544:1;26537:15;26571:4;26568:1;26561:15;26588:180;26636:77;26633:1;26626:88;26733:4;26730:1;26723:15;26757:4;26754:1;26747:15;26774:180;26822:77;26819:1;26812:88;26919:4;26916:1;26909:15;26943:4;26940:1;26933:15;26960:117;27069:1;27066;27059:12;27083:117;27192:1;27189;27182:12;27206:117;27315:1;27312;27305:12;27329:117;27438:1;27435;27428:12;27452:102;27493:6;27544:2;27540:7;27535:2;27528:5;27524:14;27520:28;27510:38;;27452:102;;;:::o;27560:222::-;27700:34;27696:1;27688:6;27684:14;27677:58;27769:5;27764:2;27756:6;27752:15;27745:30;27560:222;:::o;27788:171::-;27928:23;27924:1;27916:6;27912:14;27905:47;27788:171;:::o;27965:229::-;28105:34;28101:1;28093:6;28089:14;28082:58;28174:12;28169:2;28161:6;28157:15;28150:37;27965:229;:::o;28200:221::-;28340:34;28336:1;28328:6;28324:14;28317:58;28409:4;28404:2;28396:6;28392:15;28385:29;28200:221;:::o;28427:177::-;28567:29;28563:1;28555:6;28551:14;28544:53;28427:177;:::o;28610:230::-;28750:34;28746:1;28738:6;28734:14;28727:58;28819:13;28814:2;28806:6;28802:15;28795:38;28610:230;:::o;28846:220::-;28986:34;28982:1;28974:6;28970:14;28963:58;29055:3;29050:2;29042:6;29038:15;29031:28;28846:220;:::o;29072:182::-;29212:34;29208:1;29200:6;29196:14;29189:58;29072:182;:::o;29260:228::-;29400:34;29396:1;29388:6;29384:14;29377:58;29469:11;29464:2;29456:6;29452:15;29445:36;29260:228;:::o;29494:224::-;29634:34;29630:1;29622:6;29618:14;29611:58;29703:7;29698:2;29690:6;29686:15;29679:32;29494:224;:::o;29724:223::-;29864:34;29860:1;29852:6;29848:14;29841:58;29933:6;29928:2;29920:6;29916:15;29909:31;29724:223;:::o;29953:173::-;30093:25;30089:1;30081:6;30077:14;30070:49;29953:173;:::o;30132:122::-;30205:24;30223:5;30205:24;:::i;:::-;30198:5;30195:35;30185:63;;30244:1;30241;30234:12;30185:63;30132:122;:::o;30260:116::-;30330:21;30345:5;30330:21;:::i;:::-;30323:5;30320:32;30310:60;;30366:1;30363;30356:12;30310:60;30260:116;:::o;30382:122::-;30455:24;30473:5;30455:24;:::i;:::-;30448:5;30445:35;30435:63;;30494:1;30491;30484:12;30435:63;30382:122;:::o

Swarm Source

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