ETH Price: $2,056.87 (-2.51%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve154649982022-09-03 11:01:421306 days ago1662202902IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000292676.19356165
Approve154649662022-09-03 10:54:351306 days ago1662202475IN
0x2D0F6091...d45A3Cd9e
0 ETH0.0006754914.29470856
Set Walletand Tx...154649632022-09-03 10:53:521306 days ago1662202432IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000242226.77767272
Approve154649542022-09-03 10:52:081306 days ago1662202328IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000363637.69509666
Set Walletand Tx...154649382022-09-03 10:49:011306 days ago1662202141IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000260747.29570996
Approve154649372022-09-03 10:48:471306 days ago1662202127IN
0x2D0F6091...d45A3Cd9e
0 ETH0.0005893912.4726219
Approve154649362022-09-03 10:48:331306 days ago1662202113IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000529311.20103803
Approve154649352022-09-03 10:48:051306 days ago1662202085IN
0x2D0F6091...d45A3Cd9e
0 ETH0.0005255711.12217636
Approve154649312022-09-03 10:47:081306 days ago1662202028IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000255445.40576754
Approve154649302022-09-03 10:46:401306 days ago1662202000IN
0x2D0F6091...d45A3Cd9e
0 ETH0.0006576313.91666383
Approve154649302022-09-03 10:46:401306 days ago1662202000IN
0x2D0F6091...d45A3Cd9e
0 ETH0.0006576313.91666383
Approve154649302022-09-03 10:46:401306 days ago1662202000IN
0x2D0F6091...d45A3Cd9e
0 ETH0.0006576313.91666383
Open Trading154649272022-09-03 10:46:141306 days ago1662201974IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000185336.36180982
Approve154649102022-09-03 10:42:051306 days ago1662201725IN
0x2D0F6091...d45A3Cd9e
0 ETH0.000257715.45360353

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TheHauntingAngel

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2022-09-03
*/

/*

// SPDX-License-Identifier: NOLICENSE

/**


Name: The Haunting Angel
Ticker: Banshee

Supply : 1,000,000,000,000
Initial buy: 5,000,000    

TAX: 2%

Telegram : 
https://t.me/BansheeERC20

*/


pragma solidity ^0.8.4;

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

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

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

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

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

contract TheHauntingAngel is Context, IERC20, Ownable {

    using SafeMath for uint256;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWalletSize;

    string private constant _name = "The Haunting Angel"; //
    string private constant _symbol = "Banshee"; //
    uint8 private constant _decimals = 9;

    uint256 public buyAutoLiquidityFee;
    uint256 public buyAutoBurnFee;
    uint256 public buyMarketingFee;
    uint256 public totalBuyFees = buyAutoLiquidityFee + buyAutoBurnFee + buyMarketingFee;

    uint256 public sellAutoLiquidityFee;
    uint256 public sellAutoBurnFee;
    uint256 public sellMarketingFee;
    uint256 public totalSellFees =  sellAutoLiquidityFee + sellAutoBurnFee + sellMarketingFee;

    uint256 public tokensForAutoLiquidity;
    uint256 public tokensForAutoBurn;  
    uint256 public tokensForMarketing;
    uint16 public masterTaxDivisor = 10000;

    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public pairAddress;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private _tTotal = 1000000000000 * 10 ** _decimals; //
    uint256 private maxWalletAmount = 5000000001 * 10 ** _decimals;
    uint256 private maxTxAmount = 5000000001 * 10 ** _decimals; 
    address payable private feeAddrWallet;

    event MaxWalletAmountUpdated(uint maxWalletAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
  
    constructor () {
        //require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        pairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
        feeAddrWallet = payable(0xc086A0564E40a31ed9B4f92AEe4A7Fe3dAe0FbBC); //wallet
        _tOwned[owner()] = _tTotal;
                
        uint256 _buyAutoLiquidityFee = 200; //
        uint256 _buyAutoBurnFee = 0; //
        uint256 _buyMarketingFee = 0; //
        uint256 _sellAutoLiquidityFee = 200; //
        uint256 _sellAutoBurnFee = 0; //
        uint256 _sellMarketingFee = 0; // 
        
        buyAutoLiquidityFee = _buyAutoLiquidityFee;
        buyAutoBurnFee = _buyAutoBurnFee;
        buyMarketingFee = _buyMarketingFee;
        totalBuyFees = buyAutoLiquidityFee + buyAutoBurnFee + buyMarketingFee;
        
        sellAutoLiquidityFee = _sellAutoLiquidityFee;
        sellAutoBurnFee = _sellAutoBurnFee;
        sellMarketingFee = _sellMarketingFee;
        totalSellFees = sellAutoLiquidityFee + sellAutoBurnFee + sellMarketingFee;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeAddrWallet] = true;
        _isExcludedFromMaxWalletSize[owner()] = true;
        _isExcludedFromMaxWalletSize[address(this)] = true;
        _isExcludedFromMaxWalletSize[feeAddrWallet] = true;  
        emit Transfer(address(0), owner(), _tTotal);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
             
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
        
    }

    function name() public pure returns (string memory) { return _name; }
    function getTxAmount() public view returns(uint256) {return maxTxAmount;}
    function getMaxWallet() public view returns(uint256) {return maxWalletAmount;}
    function symbol() public pure returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function totalSupply() public view override returns (uint256) { return _tTotal; }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; }
    function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");    
        require(tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading not enabled yet");

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= maxWalletAmount, "Exceeds the maxWalletSize.");
        }
        if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromMaxWalletSize[to]) {             
                require(amount + balanceOf(to) <= maxWalletAmount, "Recipient exceeds max wallet size.");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>0) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));
    }

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

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        _tOwned[sender] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(sender, recipient, amount) : amount;
        _tOwned[recipient] += amountReceived;
        emit Transfer(sender, recipient, amountReceived);
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        if(from == uniswapV2Pair && totalBuyFees > 0 ) { 
            tokensForAutoLiquidity = (amount * buyAutoLiquidityFee) / masterTaxDivisor;
            tokensForAutoBurn = (amount * buyAutoBurnFee) / masterTaxDivisor;         
            tokensForMarketing = (amount * buyMarketingFee) / masterTaxDivisor;    
        } else if (to == uniswapV2Pair  && totalSellFees > 0 ) { 
            tokensForAutoLiquidity = (amount * sellAutoLiquidityFee) / masterTaxDivisor;
            tokensForAutoBurn = (amount * sellAutoBurnFee) / masterTaxDivisor;
            tokensForMarketing = (amount * sellMarketingFee) / masterTaxDivisor;        
        }
        _tOwned[pairAddress] += tokensForAutoLiquidity;
        emit Transfer(from, pairAddress, tokensForAutoLiquidity);
        
        _tOwned[DEAD] += tokensForAutoBurn;
        _tTotal = _tTotal - tokensForAutoBurn;
        _tTotal = totalSupply();
        emit Transfer(from, DEAD, tokensForAutoBurn);
                
        _tOwned[address(this)] += tokensForMarketing;
        emit Transfer(from, address(this), tokensForMarketing);

        uint256 feeAmount = tokensForAutoLiquidity + tokensForAutoBurn + tokensForMarketing;
        return amount - feeAmount;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

     function excludeFromMaxWalletLimit(address account) public onlyOwner {
		_isExcludedFromMaxWalletSize[account] = true;
	}

    function includeInMaxWalletLimit(address account) public onlyOwner {
		_isExcludedFromMaxWalletSize[account] = false;
	}

    function SetWalletandTxtAmount(uint256 _maxTxAmount, uint256 _maxWalletSize) external onlyOwner{
        maxTxAmount = _maxTxAmount * 10 **_decimals;
        maxWalletAmount = _maxWalletSize * 10 **_decimals;
    }
    
    function sendETHToFee(uint256 amount) private {
        feeAddrWallet.transfer(amount);
    } 

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"SetWalletandTxtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAutoBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAutoLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterTaxDivisor","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAutoBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellAutoLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokensForAutoBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForAutoLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260075460065460055462000019919062000b3d565b62000025919062000b3d565b600855600b54600a546009546200003d919062000b3d565b62000049919062000b3d565b600c55612710601060006101000a81548161ffff021916908361ffff1602179055506000601260146101000a81548160ff0219169083151502179055506000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506009600a620000cc919062000cfb565b64e8d4a51000620000de919062000d4c565b6013556009600a620000f1919062000cfb565b64012a05f20162000103919062000d4c565b6014556009600a62000116919062000cfb565b64012a05f20162000128919062000d4c565b6015553480156200013857600080fd5b50620001596200014d62000a0f60201b60201c565b62000a1760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000e17565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000e17565b6040518363ffffffff1660e01b8152600401620002d292919062000e5a565b6020604051808303816000875af1158015620002f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000318919062000e17565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ca919062000e17565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000458919062000e17565b6040518363ffffffff1660e01b81526004016200047792919062000e5a565b602060405180830381865afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bb919062000e17565b601060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c086a0564e40a31ed9b4f92aee4a7fe3dae0fbbc601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601354600160006200056762000adb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060c89050600080600060c89050600080856005819055508460068190555083600781905550600754600654600554620005e1919062000b3d565b620005ed919062000b3d565b6008819055508260098190555081600a8190555080600b81905550600b54600a546009546200061d919062000b3d565b62000629919062000b3d565b600c819055506001600360006200064562000adb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200077e62000adb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008b162000adb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60135460405162000912919062000e98565b60405180910390a3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620009bb92919062000eb5565b6020604051808303816000875af1158015620009db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a01919062000f1f565b505050505050505062000f51565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b4a8262000b04565b915062000b578362000b04565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8f5762000b8e62000b0e565b5b828201905092915050565b60008160011c9050919050565b6000808291508390505b600185111562000bf95780860481111562000bd15762000bd062000b0e565b5b600185161562000be15780820291505b808102905062000bf18562000b9a565b945062000bb1565b94509492505050565b60008262000c14576001905062000ce7565b8162000c24576000905062000ce7565b816001811462000c3d576002811462000c485762000c7e565b600191505062000ce7565b60ff84111562000c5d5762000c5c62000b0e565b5b8360020a91508482111562000c775762000c7662000b0e565b5b5062000ce7565b5060208310610133831016604e8410600b841016171562000cb85782820a90508381111562000cb25762000cb162000b0e565b5b62000ce7565b62000cc7848484600162000ba7565b9250905081840481111562000ce15762000ce062000b0e565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d088262000b04565b915062000d158362000cee565b925062000d447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c02565b905092915050565b600062000d598262000b04565b915062000d668362000b04565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000da25762000da162000b0e565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ddf8262000db2565b9050919050565b62000df18162000dd2565b811462000dfd57600080fd5b50565b60008151905062000e118162000de6565b92915050565b60006020828403121562000e305762000e2f62000dad565b5b600062000e408482850162000e00565b91505092915050565b62000e548162000dd2565b82525050565b600060408201905062000e71600083018562000e49565b62000e80602083018462000e49565b9392505050565b62000e928162000b04565b82525050565b600060208201905062000eaf600083018462000e87565b92915050565b600060408201905062000ecc600083018562000e49565b62000edb602083018462000e87565b9392505050565b60008115159050919050565b62000ef98162000ee2565b811462000f0557600080fd5b50565b60008151905062000f198162000eee565b92915050565b60006020828403121562000f385762000f3762000dad565b5b600062000f488482850162000f08565b91505092915050565b6134378062000f616000396000f3fe6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063c9567bf9116100a0578063dd62ed3e1161006f578063dd62ed3e14610702578063ea2f0b371461073f578063ebece9c914610768578063f239eab814610791578063f2fde38b146107bc57610204565b8063c9567bf91461066a578063c99f2fed14610681578063cc70acee146106ac578063d0a39814146106d757610204565b80639f71146d116100dc5780639f71146d146105ae578063a8b08982146105d7578063a9059cbb14610602578063b9e937001461063f57610204565b80638da5cb5b14610502578063921369131461052d57806395d89b41146105585780639740a9461461058357610204565b8063313ce567116101905780636cce46fc1161015f5780636cce46fc1461042d57806370a0823114610458578063715018a6146104955780637bce5a04146104ac57806384d6c8c6146104d757610204565b8063313ce567146103855780633722355c146103b0578063437823ec146103d957806347afcbfe1461040257610204565b806318160ddd116101cc57806318160ddd146102c75780631d6167ac146102f25780631f3fed8f1461031d57806323b872dd1461034857610204565b806303fd2a451461020957806306fdde0314610234578063095ea7b31461025f5780630fa604e41461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107e5565b60405161022b9190612489565b60405180910390f35b34801561024057600080fd5b506102496107eb565b604051610256919061253d565b60405180910390f35b34801561026b57600080fd5b50610286600480360381019061028191906125c6565b610828565b6040516102939190612621565b60405180910390f35b3480156102a857600080fd5b506102b1610846565b6040516102be919061264b565b60405180910390f35b3480156102d357600080fd5b506102dc610850565b6040516102e9919061264b565b60405180910390f35b3480156102fe57600080fd5b5061030761085a565b6040516103149190612683565b60405180910390f35b34801561032957600080fd5b5061033261086e565b60405161033f919061264b565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a919061269e565b610874565b60405161037c9190612621565b60405180910390f35b34801561039157600080fd5b5061039a610975565b6040516103a7919061270d565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190612728565b61097e565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190612728565b610a55565b005b34801561040e57600080fd5b50610417610b2c565b604051610424919061264b565b60405180910390f35b34801561043957600080fd5b50610442610b32565b60405161044f919061264b565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612728565b610b38565b60405161048c919061264b565b60405180910390f35b3480156104a157600080fd5b506104aa610b81565b005b3480156104b857600080fd5b506104c1610c09565b6040516104ce919061264b565b60405180910390f35b3480156104e357600080fd5b506104ec610c0f565b6040516104f9919061264b565b60405180910390f35b34801561050e57600080fd5b50610517610c19565b6040516105249190612489565b60405180910390f35b34801561053957600080fd5b50610542610c42565b60405161054f919061264b565b60405180910390f35b34801561056457600080fd5b5061056d610c48565b60405161057a919061253d565b60405180910390f35b34801561058f57600080fd5b50610598610c85565b6040516105a5919061264b565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612728565b610c8b565b005b3480156105e357600080fd5b506105ec610d62565b6040516105f99190612489565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906125c6565b610d88565b6040516106369190612621565b60405180910390f35b34801561064b57600080fd5b50610654610da6565b604051610661919061264b565b60405180910390f35b34801561067657600080fd5b5061067f610dac565b005b34801561068d57600080fd5b50610696610eb0565b6040516106a3919061264b565b60405180910390f35b3480156106b857600080fd5b506106c1610eb6565b6040516106ce919061264b565b60405180910390f35b3480156106e357600080fd5b506106ec610ebc565b6040516106f9919061264b565b60405180910390f35b34801561070e57600080fd5b5061072960048036038101906107249190612755565b610ec2565b604051610736919061264b565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190612728565b610f49565b005b34801561077457600080fd5b5061078f600480360381019061078a9190612795565b611020565b005b34801561079d57600080fd5b506107a66110de565b6040516107b3919061264b565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612728565b6110e4565b005b61dead81565b60606040518060400160405280601281526020017f546865204861756e74696e6720416e67656c0000000000000000000000000000815250905090565b600061083c6108356111db565b84846111e3565b6001905092915050565b6000601454905090565b6000601354905090565b601060009054906101000a900461ffff1681565b600f5481565b60006108818484846113ac565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108cc6111db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094390612847565b60405180910390fd5b610969856109586111db565b85846109649190612896565b6111e3565b60019150509392505050565b60006009905090565b6109866111db565b73ffffffffffffffffffffffffffffffffffffffff166109a4610c19565b73ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190612916565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a5d6111db565b73ffffffffffffffffffffffffffffffffffffffff16610a7b610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac890612916565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60095481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b896111db565b73ffffffffffffffffffffffffffffffffffffffff16610ba7610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612916565b60405180910390fd5b610c076000611a89565b565b60075481565b6000601554905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60606040518060400160405280600781526020017f42616e7368656500000000000000000000000000000000000000000000000000815250905090565b600d5481565b610c936111db565b73ffffffffffffffffffffffffffffffffffffffff16610cb1610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe90612916565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d9c610d956111db565b84846113ac565b6001905092915050565b60085481565b610db46111db565b73ffffffffffffffffffffffffffffffffffffffff16610dd2610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f90612916565b60405180910390fd5b601260149054906101000a900460ff1615610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612982565b60405180910390fd5b6001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff021916908315150217905550565b60065481565b600e5481565b600c5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f516111db565b73ffffffffffffffffffffffffffffffffffffffff16610f6f610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc90612916565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6110286111db565b73ffffffffffffffffffffffffffffffffffffffff16611046610c19565b73ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612916565b60405180910390fd5b6009600a6110aa9190612ad5565b826110b59190612b20565b6015819055506009600a6110c99190612ad5565b816110d49190612b20565b6014819055505050565b60055481565b6110ec6111db565b73ffffffffffffffffffffffffffffffffffffffff1661110a610c19565b73ffffffffffffffffffffffffffffffffffffffff1614611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115790612916565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690612bec565b60405180910390fd5b6111d881611a89565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612c7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890612d10565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139f919061264b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290612da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190612e34565b60405180910390fd5b600081116114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612ec6565b60405180910390fd5b6114d683610b38565b811115611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90612f58565b60405180910390fd5b601260149054906101000a900460ff168061157c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115d05750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690612fc4565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116ba5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117105750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b35760155481111561175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190613030565b60405180910390fd5b6014548161176784610b38565b6117719190613050565b11156117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906130f2565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561185e5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118b45750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611912576014546118c583610b38565b826118d09190613050565b1115611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890613184565b60405180910390fd5b5b600061191d30610b38565b9050601260159054906101000a900460ff1615801561198a5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a25750601260169054906101000a900460ff165b80156119ae5750600081115b156119d6576119bc81611b4d565b600047905060008111156119d4576119d347611dc6565b5b505b611a83848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a7d5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e32565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b8557611b846131a4565b5b604051908082528060200260200182016040528015611bb35781602001602082028036833780820191505090505b5090503081600081518110611bcb57611bca6131d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190613217565b81600181518110611caa57611ca96131d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d1130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e3565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d75959493929190613347565b600060405180830381600087803b158015611d8f57600080fd5b505af1158015611da3573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e2e573d6000803e3d6000fd5b5050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e819190612896565b92505081905550600081611e955782611ea1565b611ea0858585611f65565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ef29190613050565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f56919061264b565b60405180910390a35050505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fc657506000600854115b1561206957601060009054906101000a900461ffff1661ffff1660055483611fee9190612b20565b611ff891906133d0565b600d81905550601060009054906101000a900461ffff1661ffff16600654836120219190612b20565b61202b91906133d0565b600e81905550601060009054906101000a900461ffff1661ffff16600754836120549190612b20565b61205e91906133d0565b600f81905550612168565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120c857506000600c54115b1561216757601060009054906101000a900461ffff1661ffff16600954836120f09190612b20565b6120fa91906133d0565b600d81905550601060009054906101000a900461ffff1661ffff16600a54836121239190612b20565b61212d91906133d0565b600e81905550601060009054906101000a900461ffff1661ffff16600b54836121569190612b20565b61216091906133d0565b600f819055505b5b600d5460016000601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121db9190613050565b92505081905550601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051612263919061264b565b60405180910390a3600e546001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122be9190613050565b92505081905550600e546013546122d59190612896565b6013819055506122e3610850565b60138190555061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e5460405161234a919061264b565b60405180910390a3600f54600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123a39190613050565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f54604051612409919061264b565b60405180910390a36000600f54600e54600d546124269190613050565b6124309190613050565b9050808361243e9190612896565b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061247382612448565b9050919050565b61248381612468565b82525050565b600060208201905061249e600083018461247a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124de5780820151818401526020810190506124c3565b838111156124ed576000848401525b50505050565b6000601f19601f8301169050919050565b600061250f826124a4565b61251981856124af565b93506125298185602086016124c0565b612532816124f3565b840191505092915050565b600060208201905081810360008301526125578184612504565b905092915050565b600080fd5b61256d81612468565b811461257857600080fd5b50565b60008135905061258a81612564565b92915050565b6000819050919050565b6125a381612590565b81146125ae57600080fd5b50565b6000813590506125c08161259a565b92915050565b600080604083850312156125dd576125dc61255f565b5b60006125eb8582860161257b565b92505060206125fc858286016125b1565b9150509250929050565b60008115159050919050565b61261b81612606565b82525050565b60006020820190506126366000830184612612565b92915050565b61264581612590565b82525050565b6000602082019050612660600083018461263c565b92915050565b600061ffff82169050919050565b61267d81612666565b82525050565b60006020820190506126986000830184612674565b92915050565b6000806000606084860312156126b7576126b661255f565b5b60006126c58682870161257b565b93505060206126d68682870161257b565b92505060406126e7868287016125b1565b9150509250925092565b600060ff82169050919050565b612707816126f1565b82525050565b600060208201905061272260008301846126fe565b92915050565b60006020828403121561273e5761273d61255f565b5b600061274c8482850161257b565b91505092915050565b6000806040838503121561276c5761276b61255f565b5b600061277a8582860161257b565b925050602061278b8582860161257b565b9150509250929050565b600080604083850312156127ac576127ab61255f565b5b60006127ba858286016125b1565b92505060206127cb858286016125b1565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006128316028836124af565b915061283c826127d5565b604082019050919050565b6000602082019050818103600083015261286081612824565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128a182612590565b91506128ac83612590565b9250828210156128bf576128be612867565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129006020836124af565b915061290b826128ca565b602082019050919050565b6000602082019050818103600083015261292f816128f3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061296c6017836124af565b915061297782612936565b602082019050919050565b6000602082019050818103600083015261299b8161295f565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156129f9578086048111156129d5576129d4612867565b5b60018516156129e45780820291505b80810290506129f2856129a2565b94506129b9565b94509492505050565b600082612a125760019050612ace565b81612a205760009050612ace565b8160018114612a365760028114612a4057612a6f565b6001915050612ace565b60ff841115612a5257612a51612867565b5b8360020a915084821115612a6957612a68612867565b5b50612ace565b5060208310610133831016604e8410600b8410161715612aa45782820a905083811115612a9f57612a9e612867565b5b612ace565b612ab184848460016129af565b92509050818404811115612ac857612ac7612867565b5b81810290505b9392505050565b6000612ae082612590565b9150612aeb836126f1565b9250612b187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a02565b905092915050565b6000612b2b82612590565b9150612b3683612590565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b6f57612b6e612867565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bd66026836124af565b9150612be182612b7a565b604082019050919050565b60006020820190508181036000830152612c0581612bc9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c686024836124af565b9150612c7382612c0c565b604082019050919050565b60006020820190508181036000830152612c9781612c5b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfa6022836124af565b9150612d0582612c9e565b604082019050919050565b60006020820190508181036000830152612d2981612ced565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d8c6025836124af565b9150612d9782612d30565b604082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1e6023836124af565b9150612e2982612dc2565b604082019050919050565b60006020820190508181036000830152612e4d81612e11565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612eb06029836124af565b9150612ebb82612e54565b604082019050919050565b60006020820190508181036000830152612edf81612ea3565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612f426031836124af565b9150612f4d82612ee6565b604082019050919050565b60006020820190508181036000830152612f7181612f35565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612fae6017836124af565b9150612fb982612f78565b602082019050919050565b60006020820190508181036000830152612fdd81612fa1565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061301a6019836124af565b915061302582612fe4565b602082019050919050565b600060208201905081810360008301526130498161300d565b9050919050565b600061305b82612590565b915061306683612590565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561309b5761309a612867565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006130dc601a836124af565b91506130e7826130a6565b602082019050919050565b6000602082019050818103600083015261310b816130cf565b9050919050565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061316e6022836124af565b915061317982613112565b604082019050919050565b6000602082019050818103600083015261319d81613161565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061321181612564565b92915050565b60006020828403121561322d5761322c61255f565b5b600061323b84828501613202565b91505092915050565b6000819050919050565b6000819050919050565b600061327361326e61326984613244565b61324e565b612590565b9050919050565b61328381613258565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132be81612468565b82525050565b60006132d083836132b5565b60208301905092915050565b6000602082019050919050565b60006132f482613289565b6132fe8185613294565b9350613309836132a5565b8060005b8381101561333a57815161332188826132c4565b975061332c836132dc565b92505060018101905061330d565b5085935050505092915050565b600060a08201905061335c600083018861263c565b613369602083018761327a565b818103604083015261337b81866132e9565b905061338a606083018561247a565b613397608083018461263c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133db82612590565b91506133e683612590565b9250826133f6576133f56133a1565b5b82820490509291505056fea264697066735822122055e5d3ae0dc3acc2e958f8ad7081c15239c71db908675d3b44e485626b2e3c5464736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063c9567bf9116100a0578063dd62ed3e1161006f578063dd62ed3e14610702578063ea2f0b371461073f578063ebece9c914610768578063f239eab814610791578063f2fde38b146107bc57610204565b8063c9567bf91461066a578063c99f2fed14610681578063cc70acee146106ac578063d0a39814146106d757610204565b80639f71146d116100dc5780639f71146d146105ae578063a8b08982146105d7578063a9059cbb14610602578063b9e937001461063f57610204565b80638da5cb5b14610502578063921369131461052d57806395d89b41146105585780639740a9461461058357610204565b8063313ce567116101905780636cce46fc1161015f5780636cce46fc1461042d57806370a0823114610458578063715018a6146104955780637bce5a04146104ac57806384d6c8c6146104d757610204565b8063313ce567146103855780633722355c146103b0578063437823ec146103d957806347afcbfe1461040257610204565b806318160ddd116101cc57806318160ddd146102c75780631d6167ac146102f25780631f3fed8f1461031d57806323b872dd1461034857610204565b806303fd2a451461020957806306fdde0314610234578063095ea7b31461025f5780630fa604e41461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107e5565b60405161022b9190612489565b60405180910390f35b34801561024057600080fd5b506102496107eb565b604051610256919061253d565b60405180910390f35b34801561026b57600080fd5b50610286600480360381019061028191906125c6565b610828565b6040516102939190612621565b60405180910390f35b3480156102a857600080fd5b506102b1610846565b6040516102be919061264b565b60405180910390f35b3480156102d357600080fd5b506102dc610850565b6040516102e9919061264b565b60405180910390f35b3480156102fe57600080fd5b5061030761085a565b6040516103149190612683565b60405180910390f35b34801561032957600080fd5b5061033261086e565b60405161033f919061264b565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a919061269e565b610874565b60405161037c9190612621565b60405180910390f35b34801561039157600080fd5b5061039a610975565b6040516103a7919061270d565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190612728565b61097e565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190612728565b610a55565b005b34801561040e57600080fd5b50610417610b2c565b604051610424919061264b565b60405180910390f35b34801561043957600080fd5b50610442610b32565b60405161044f919061264b565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612728565b610b38565b60405161048c919061264b565b60405180910390f35b3480156104a157600080fd5b506104aa610b81565b005b3480156104b857600080fd5b506104c1610c09565b6040516104ce919061264b565b60405180910390f35b3480156104e357600080fd5b506104ec610c0f565b6040516104f9919061264b565b60405180910390f35b34801561050e57600080fd5b50610517610c19565b6040516105249190612489565b60405180910390f35b34801561053957600080fd5b50610542610c42565b60405161054f919061264b565b60405180910390f35b34801561056457600080fd5b5061056d610c48565b60405161057a919061253d565b60405180910390f35b34801561058f57600080fd5b50610598610c85565b6040516105a5919061264b565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612728565b610c8b565b005b3480156105e357600080fd5b506105ec610d62565b6040516105f99190612489565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906125c6565b610d88565b6040516106369190612621565b60405180910390f35b34801561064b57600080fd5b50610654610da6565b604051610661919061264b565b60405180910390f35b34801561067657600080fd5b5061067f610dac565b005b34801561068d57600080fd5b50610696610eb0565b6040516106a3919061264b565b60405180910390f35b3480156106b857600080fd5b506106c1610eb6565b6040516106ce919061264b565b60405180910390f35b3480156106e357600080fd5b506106ec610ebc565b6040516106f9919061264b565b60405180910390f35b34801561070e57600080fd5b5061072960048036038101906107249190612755565b610ec2565b604051610736919061264b565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190612728565b610f49565b005b34801561077457600080fd5b5061078f600480360381019061078a9190612795565b611020565b005b34801561079d57600080fd5b506107a66110de565b6040516107b3919061264b565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612728565b6110e4565b005b61dead81565b60606040518060400160405280601281526020017f546865204861756e74696e6720416e67656c0000000000000000000000000000815250905090565b600061083c6108356111db565b84846111e3565b6001905092915050565b6000601454905090565b6000601354905090565b601060009054906101000a900461ffff1681565b600f5481565b60006108818484846113ac565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108cc6111db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094390612847565b60405180910390fd5b610969856109586111db565b85846109649190612896565b6111e3565b60019150509392505050565b60006009905090565b6109866111db565b73ffffffffffffffffffffffffffffffffffffffff166109a4610c19565b73ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190612916565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a5d6111db565b73ffffffffffffffffffffffffffffffffffffffff16610a7b610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac890612916565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60095481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b896111db565b73ffffffffffffffffffffffffffffffffffffffff16610ba7610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612916565b60405180910390fd5b610c076000611a89565b565b60075481565b6000601554905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60606040518060400160405280600781526020017f42616e7368656500000000000000000000000000000000000000000000000000815250905090565b600d5481565b610c936111db565b73ffffffffffffffffffffffffffffffffffffffff16610cb1610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe90612916565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d9c610d956111db565b84846113ac565b6001905092915050565b60085481565b610db46111db565b73ffffffffffffffffffffffffffffffffffffffff16610dd2610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f90612916565b60405180910390fd5b601260149054906101000a900460ff1615610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612982565b60405180910390fd5b6001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff021916908315150217905550565b60065481565b600e5481565b600c5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f516111db565b73ffffffffffffffffffffffffffffffffffffffff16610f6f610c19565b73ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc90612916565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6110286111db565b73ffffffffffffffffffffffffffffffffffffffff16611046610c19565b73ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612916565b60405180910390fd5b6009600a6110aa9190612ad5565b826110b59190612b20565b6015819055506009600a6110c99190612ad5565b816110d49190612b20565b6014819055505050565b60055481565b6110ec6111db565b73ffffffffffffffffffffffffffffffffffffffff1661110a610c19565b73ffffffffffffffffffffffffffffffffffffffff1614611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115790612916565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690612bec565b60405180910390fd5b6111d881611a89565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612c7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890612d10565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139f919061264b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290612da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190612e34565b60405180910390fd5b600081116114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612ec6565b60405180910390fd5b6114d683610b38565b811115611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90612f58565b60405180910390fd5b601260149054906101000a900460ff168061157c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115d05750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690612fc4565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116ba5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117105750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b35760155481111561175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190613030565b60405180910390fd5b6014548161176784610b38565b6117719190613050565b11156117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906130f2565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561185e5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118b45750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611912576014546118c583610b38565b826118d09190613050565b1115611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890613184565b60405180910390fd5b5b600061191d30610b38565b9050601260159054906101000a900460ff1615801561198a5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a25750601260169054906101000a900460ff165b80156119ae5750600081115b156119d6576119bc81611b4d565b600047905060008111156119d4576119d347611dc6565b5b505b611a83848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a7d5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e32565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b8557611b846131a4565b5b604051908082528060200260200182016040528015611bb35781602001602082028036833780820191505090505b5090503081600081518110611bcb57611bca6131d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190613217565b81600181518110611caa57611ca96131d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d1130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e3565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d75959493929190613347565b600060405180830381600087803b158015611d8f57600080fd5b505af1158015611da3573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e2e573d6000803e3d6000fd5b5050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e819190612896565b92505081905550600081611e955782611ea1565b611ea0858585611f65565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ef29190613050565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f56919061264b565b60405180910390a35050505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fc657506000600854115b1561206957601060009054906101000a900461ffff1661ffff1660055483611fee9190612b20565b611ff891906133d0565b600d81905550601060009054906101000a900461ffff1661ffff16600654836120219190612b20565b61202b91906133d0565b600e81905550601060009054906101000a900461ffff1661ffff16600754836120549190612b20565b61205e91906133d0565b600f81905550612168565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120c857506000600c54115b1561216757601060009054906101000a900461ffff1661ffff16600954836120f09190612b20565b6120fa91906133d0565b600d81905550601060009054906101000a900461ffff1661ffff16600a54836121239190612b20565b61212d91906133d0565b600e81905550601060009054906101000a900461ffff1661ffff16600b54836121569190612b20565b61216091906133d0565b600f819055505b5b600d5460016000601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121db9190613050565b92505081905550601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051612263919061264b565b60405180910390a3600e546001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122be9190613050565b92505081905550600e546013546122d59190612896565b6013819055506122e3610850565b60138190555061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e5460405161234a919061264b565b60405180910390a3600f54600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123a39190613050565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f54604051612409919061264b565b60405180910390a36000600f54600e54600d546124269190613050565b6124309190613050565b9050808361243e9190612896565b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061247382612448565b9050919050565b61248381612468565b82525050565b600060208201905061249e600083018461247a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124de5780820151818401526020810190506124c3565b838111156124ed576000848401525b50505050565b6000601f19601f8301169050919050565b600061250f826124a4565b61251981856124af565b93506125298185602086016124c0565b612532816124f3565b840191505092915050565b600060208201905081810360008301526125578184612504565b905092915050565b600080fd5b61256d81612468565b811461257857600080fd5b50565b60008135905061258a81612564565b92915050565b6000819050919050565b6125a381612590565b81146125ae57600080fd5b50565b6000813590506125c08161259a565b92915050565b600080604083850312156125dd576125dc61255f565b5b60006125eb8582860161257b565b92505060206125fc858286016125b1565b9150509250929050565b60008115159050919050565b61261b81612606565b82525050565b60006020820190506126366000830184612612565b92915050565b61264581612590565b82525050565b6000602082019050612660600083018461263c565b92915050565b600061ffff82169050919050565b61267d81612666565b82525050565b60006020820190506126986000830184612674565b92915050565b6000806000606084860312156126b7576126b661255f565b5b60006126c58682870161257b565b93505060206126d68682870161257b565b92505060406126e7868287016125b1565b9150509250925092565b600060ff82169050919050565b612707816126f1565b82525050565b600060208201905061272260008301846126fe565b92915050565b60006020828403121561273e5761273d61255f565b5b600061274c8482850161257b565b91505092915050565b6000806040838503121561276c5761276b61255f565b5b600061277a8582860161257b565b925050602061278b8582860161257b565b9150509250929050565b600080604083850312156127ac576127ab61255f565b5b60006127ba858286016125b1565b92505060206127cb858286016125b1565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006128316028836124af565b915061283c826127d5565b604082019050919050565b6000602082019050818103600083015261286081612824565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128a182612590565b91506128ac83612590565b9250828210156128bf576128be612867565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129006020836124af565b915061290b826128ca565b602082019050919050565b6000602082019050818103600083015261292f816128f3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061296c6017836124af565b915061297782612936565b602082019050919050565b6000602082019050818103600083015261299b8161295f565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156129f9578086048111156129d5576129d4612867565b5b60018516156129e45780820291505b80810290506129f2856129a2565b94506129b9565b94509492505050565b600082612a125760019050612ace565b81612a205760009050612ace565b8160018114612a365760028114612a4057612a6f565b6001915050612ace565b60ff841115612a5257612a51612867565b5b8360020a915084821115612a6957612a68612867565b5b50612ace565b5060208310610133831016604e8410600b8410161715612aa45782820a905083811115612a9f57612a9e612867565b5b612ace565b612ab184848460016129af565b92509050818404811115612ac857612ac7612867565b5b81810290505b9392505050565b6000612ae082612590565b9150612aeb836126f1565b9250612b187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a02565b905092915050565b6000612b2b82612590565b9150612b3683612590565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b6f57612b6e612867565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bd66026836124af565b9150612be182612b7a565b604082019050919050565b60006020820190508181036000830152612c0581612bc9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c686024836124af565b9150612c7382612c0c565b604082019050919050565b60006020820190508181036000830152612c9781612c5b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfa6022836124af565b9150612d0582612c9e565b604082019050919050565b60006020820190508181036000830152612d2981612ced565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d8c6025836124af565b9150612d9782612d30565b604082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1e6023836124af565b9150612e2982612dc2565b604082019050919050565b60006020820190508181036000830152612e4d81612e11565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612eb06029836124af565b9150612ebb82612e54565b604082019050919050565b60006020820190508181036000830152612edf81612ea3565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612f426031836124af565b9150612f4d82612ee6565b604082019050919050565b60006020820190508181036000830152612f7181612f35565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612fae6017836124af565b9150612fb982612f78565b602082019050919050565b60006020820190508181036000830152612fdd81612fa1565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061301a6019836124af565b915061302582612fe4565b602082019050919050565b600060208201905081810360008301526130498161300d565b9050919050565b600061305b82612590565b915061306683612590565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561309b5761309a612867565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006130dc601a836124af565b91506130e7826130a6565b602082019050919050565b6000602082019050818103600083015261310b816130cf565b9050919050565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061316e6022836124af565b915061317982613112565b604082019050919050565b6000602082019050818103600083015261319d81613161565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061321181612564565b92915050565b60006020828403121561322d5761322c61255f565b5b600061323b84828501613202565b91505092915050565b6000819050919050565b6000819050919050565b600061327361326e61326984613244565b61324e565b612590565b9050919050565b61328381613258565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132be81612468565b82525050565b60006132d083836132b5565b60208301905092915050565b6000602082019050919050565b60006132f482613289565b6132fe8185613294565b9350613309836132a5565b8060005b8381101561333a57815161332188826132c4565b975061332c836132dc565b92505060018101905061330d565b5085935050505092915050565b600060a08201905061335c600083018861263c565b613369602083018761327a565b818103604083015261337b81866132e9565b905061338a606083018561247a565b613397608083018461263c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133db82612590565b91506133e683612590565b9250826133f6576133f56133a1565b5b82820490509291505056fea264697066735822122055e5d3ae0dc3acc2e958f8ad7081c15239c71db908675d3b44e485626b2e3c5464736f6c634300080f0033

Deployed Bytecode Sourcemap

4229:10302:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5336:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8100:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8973:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8254:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8492:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5289:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5249:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9119:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8417:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13900:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13662:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4991:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4949:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8579:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2892:94;;;;;;;;;;;;;:::i;:::-;;4819:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8175:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2669:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5028:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8338:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5164:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14031:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5416:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8688:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4856:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7914:178;;;;;;;;;;;;;:::i;:::-;;4783:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5208:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5066:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8838:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13781:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14161:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4742:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2994:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5336:73;5367:42;5336:73;:::o;8100:69::-;8137:13;8161:5;;;;;;;;;;;;;;;;;8154:12;;8100:69;:::o;8973:138::-;9048:4;9056:39;9065:12;:10;:12::i;:::-;9079:7;9088:6;9056:8;:39::i;:::-;9104:4;9097:11;;8973:138;;;;:::o;8254:78::-;8298:7;8315:15;;8308:22;;8254:78;:::o;8492:81::-;8545:7;8563;;8556:14;;8492:81;:::o;5289:38::-;;;;;;;;;;;;;:::o;5249:33::-;;;;:::o;9119:420::-;9225:4;9242:36;9252:6;9260:9;9271:6;9242:9;:36::i;:::-;9291:24;9318:11;:19;9330:6;9318:19;;;;;;;;;;;;;;;:33;9338:12;:10;:12::i;:::-;9318:33;;;;;;;;;;;;;;;;9291:60;;9390:6;9370:16;:26;;9362:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9452:57;9461:6;9469:12;:10;:12::i;:::-;9502:6;9483:16;:25;;;;:::i;:::-;9452:8;:57::i;:::-;9527:4;9520:11;;;9119:420;;;;;:::o;8417:69::-;8458:5;4732:1;8467:16;;8417:69;:::o;13900:123::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14014:4:::1;13974:28;:37;14003:7;13974:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13900:123:::0;:::o;13662:111::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13761:4:::1;13731:18;:27;13750:7;13731:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13662:111:::0;:::o;4991:30::-;;;;:::o;4949:35::-;;;;:::o;8579:103::-;8645:7;8663;:16;8671:7;8663:16;;;;;;;;;;;;;;;;8656:23;;8579:103;;;:::o;2892:94::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:21:::1;2975:1;2957:9;:21::i;:::-;2892:94::o:0;4819:30::-;;;;:::o;8175:73::-;8218:7;8235:11;;8228:18;;8175:73;:::o;2669:87::-;2715:7;2742:6;;;;;;;;;;;2735:13;;2669:87;:::o;5028:31::-;;;;:::o;8338:73::-;8377:13;8401:7;;;;;;;;;;;;;;;;;8394:14;;8338:73;:::o;5164:37::-;;;;:::o;14031:122::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14143:5:::1;14103:28;:37;14132:7;14103:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;14031:122:::0;:::o;5416:26::-;;;;;;;;;;;;;:::o;8688:144::-;8766:4;8774:42;8784:12;:10;:12::i;:::-;8798:9;8809:6;8774:9;:42::i;:::-;8825:4;8818:11;;8688:144;;;;:::o;4856:84::-;;;;:::o;7914:178::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:11:::1;;;;;;;;;;;7977:12;7969:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8041:4;8027:11;;:18;;;;;;;;;;;;;;;;;;8070:4;8056:11;;:18;;;;;;;;;;;;;;;;;;7914:178::o:0;4783:29::-;;;;:::o;5208:32::-;;;;:::o;5066:89::-;;;;:::o;8838:129::-;8919:7;8937:11;:18;8949:5;8937:18;;;;;;;;;;;;;;;:27;8956:7;8937:27;;;;;;;;;;;;;;;;8930:34;;8838:129;;;;:::o;13781:110::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13878:5:::1;13848:18;:27;13867:7;13848:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13781:110:::0;:::o;14161:217::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4732:1:::1;14296:2;:14;;;;:::i;:::-;14281:12;:29;;;;:::i;:::-;14267:11;:43;;;;4732:1;14356:2;:14;;;;:::i;:::-;14339;:31;;;;:::i;:::-;14321:15;:49;;;;14161:217:::0;;:::o;4742:34::-;;;;:::o;2994:192::-;2815:12;:10;:12::i;:::-;2804:23;;:7;:5;:7::i;:::-;:23;;;2796:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3103:1:::1;3083:22;;:8;:22;;::::0;3075:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3159:19;3169:8;3159:9;:19::i;:::-;2994:192:::0;:::o;2090:98::-;2143:7;2170:10;2163:17;;2090:98;:::o;9547:335::-;9657:1;9640:19;;:5;:19;;;9632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9738:1;9719:21;;:7;:21;;;9711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9820:6;9790:11;:18;9802:5;9790:18;;;;;;;;;;;;;;;:27;9809:7;9790:27;;;;;;;;;;;;;;;:36;;;;9858:7;9842:32;;9851:5;9842:32;;;9867:6;9842:32;;;;;;:::i;:::-;;;;;;;;9547:335;;;:::o;9890:1576::-;9994:1;9978:18;;:4;:18;;;9970:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10071:1;10057:16;;:2;:16;;;10049:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10141:1;10132:6;:10;10124:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10217:15;10227:4;10217:9;:15::i;:::-;10207:6;:25;;10199:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10308:11;;;;;;;;;;;:39;;;;10323:18;:24;10342:4;10323:24;;;;;;;;;;;;;;;;;;;;;;;;;10308:39;:65;;;;10351:18;:22;10370:2;10351:22;;;;;;;;;;;;;;;;;;;;;;;;;10308:65;10300:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;10426:13;;;;;;;;;;;10418:21;;:4;:21;;;:55;;;;;10457:15;;;;;;;;;;;10443:30;;:2;:30;;;;10418:55;:83;;;;;10479:18;:22;10498:2;10479:22;;;;;;;;;;;;;;;;;;;;;;;;;10477:24;10418:83;10414:278;;;10540:11;;10530:6;:21;;10522:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10634:15;;10624:6;10608:13;10618:2;10608:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;10600:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;10414:278;10714:13;;;;;;;;;;;10706:21;;:4;:21;;;:55;;;;;10745:15;;;;;;;;;;;10731:30;;:2;:30;;;;10706:55;:93;;;;;10767:28;:32;10796:2;10767:32;;;;;;;;;;;;;;;;;;;;;;;;;10765:34;10706:93;10702:231;;;10867:15;;10850:13;10860:2;10850:9;:13::i;:::-;10841:6;:22;;;;:::i;:::-;:41;;10833:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;10702:231;10945:28;10976:24;10994:4;10976:9;:24::i;:::-;10945:55;;11020:6;;;;;;;;;;;11019:7;:32;;;;;11038:13;;;;;;;;;;;11030:21;;:4;:21;;;;11019:32;:47;;;;;11055:11;;;;;;;;;;;11019:47;:73;;;;;11091:1;11070:20;:22;11019:73;11015:344;;;11113:38;11130:20;11113:16;:38::i;:::-;11170:26;11199:21;11170:50;;11263:1;11242:18;:22;11239:105;;;11289:35;11302:21;11289:12;:35::i;:::-;11239:105;11094:265;11015:344;11371:87;11386:4;11392:2;11396:6;11406:18;:24;11425:4;11406:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11434:18;:22;11453:2;11434:22;;;;;;;;;;;;;;;;;;;;;;;;;11406:50;11404:53;11371:14;:87::i;:::-;9959:1507;9890:1576;;;:::o;3194:173::-;3250:16;3269:6;;;;;;;;;;;3250:25;;3295:8;3286:6;;:17;;;;;;;;;;;;;;;;;;3350:8;3319:40;;3340:8;3319:40;;;;;;;;;;;;3239:128;3194:173;:::o;11474:483::-;6000:4;5991:6;;:13;;;;;;;;;;;;;;;;;;11552:21:::1;11590:1;11576:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11552:40;;11621:4;11603;11608:1;11603:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11647:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11637:4;11642:1;11637:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11680:62;11697:4;11712:15;;;;;;;;;;;11730:11;11680:8;:62::i;:::-;11753:15;;;;;;;;;;;:66;;;11834:11;11860:1;11876:4;11903;11923:15;11753:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11541:416;6036:5:::0;6027:6;;:14;;;;;;;;;;;;;;;;;;11474:483;:::o;14390:95::-;14447:13;;;;;;;;;;;:22;;:30;14470:6;14447:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14390:95;:::o;11965:340::-;12092:6;12073:7;:15;12081:6;12073:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;12109:22;12135:7;12134:57;;12185:6;12134:57;;;12146:36;12156:6;12164:9;12175:6;12146:9;:36::i;:::-;12134:57;12109:82;;12224:14;12202:7;:18;12210:9;12202:18;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;12271:9;12254:43;;12263:6;12254:43;;;12282:14;12254:43;;;;;;:::i;:::-;;;;;;;;12062:243;11965:340;;;;:::o;12313:1341::-;12392:7;12423:13;;;;;;;;;;;12415:21;;:4;:21;;;:41;;;;;12455:1;12440:12;;:16;12415:41;12412:649;;;12533:16;;;;;;;;;;;12500:49;;12510:19;;12501:6;:28;;;;:::i;:::-;12500:49;;;;:::i;:::-;12475:22;:74;;;;12612:16;;;;;;;;;;;12584:44;;12594:14;;12585:6;:23;;;;:::i;:::-;12584:44;;;;:::i;:::-;12564:17;:64;;;;12702:16;;;;;;;;;;;12673:45;;12683:15;;12674:6;:24;;;;:::i;:::-;12673:45;;;;:::i;:::-;12652:18;:66;;;;12412:649;;;12750:13;;;;;;;;;;;12744:19;;:2;:19;;;:41;;;;;12784:1;12768:13;;:17;12744:41;12740:321;;;12863:16;;;;;;;;;;;12829:50;;12839:20;;12830:6;:29;;;;:::i;:::-;12829:50;;;;:::i;:::-;12804:22;:75;;;;12943:16;;;;;;;;;;;12914:45;;12924:15;;12915:6;:24;;;;:::i;:::-;12914:45;;;;:::i;:::-;12894:17;:65;;;;13025:16;;;;;;;;;;;12995:46;;13005:16;;12996:6;:25;;;;:::i;:::-;12995:46;;;;:::i;:::-;12974:18;:67;;;;12740:321;12412:649;13095:22;;13071:7;:20;13079:11;;;;;;;;;;;13071:20;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;13148:11;;;;;;;;;;;13133:51;;13142:4;13133:51;;;13161:22;;13133:51;;;;;;:::i;:::-;;;;;;;;13222:17;;13205:7;:13;5367:42;13205:13;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;13270:17;;13260:7;;:27;;;;:::i;:::-;13250:7;:37;;;;13308:13;:11;:13::i;:::-;13298:7;:23;;;;5367:42;13337:39;;13346:4;13337:39;;;13358:17;;13337:39;;;;;;:::i;:::-;;;;;;;;13431:18;;13405:7;:22;13421:4;13405:22;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;13488:4;13465:49;;13474:4;13465:49;;;13495:18;;13465:49;;;;;;:::i;:::-;;;;;;;;13527:17;13592:18;;13572:17;;13547:22;;:42;;;;:::i;:::-;:63;;;;:::i;:::-;13527:83;;13637:9;13628:6;:18;;;;:::i;:::-;13621:25;;;12313:1341;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:118::-;3933:24;3951:5;3933:24;:::i;:::-;3928:3;3921:37;3846:118;;:::o;3970:222::-;4063:4;4101:2;4090:9;4086:18;4078:26;;4114:71;4182:1;4171:9;4167:17;4158:6;4114:71;:::i;:::-;3970:222;;;;:::o;4198:89::-;4234:7;4274:6;4267:5;4263:18;4252:29;;4198:89;;;:::o;4293:115::-;4378:23;4395:5;4378:23;:::i;:::-;4373:3;4366:36;4293:115;;:::o;4414:218::-;4505:4;4543:2;4532:9;4528:18;4520:26;;4556:69;4622:1;4611:9;4607:17;4598:6;4556:69;:::i;:::-;4414:218;;;;:::o;4638:619::-;4715:6;4723;4731;4780:2;4768:9;4759:7;4755:23;4751:32;4748:119;;;4786:79;;:::i;:::-;4748:119;4906:1;4931:53;4976:7;4967:6;4956:9;4952:22;4931:53;:::i;:::-;4921:63;;4877:117;5033:2;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5004:118;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;4638:619;;;;;:::o;5263:86::-;5298:7;5338:4;5331:5;5327:16;5316:27;;5263:86;;;:::o;5355:112::-;5438:22;5454:5;5438:22;:::i;:::-;5433:3;5426:35;5355:112;;:::o;5473:214::-;5562:4;5600:2;5589:9;5585:18;5577:26;;5613:67;5677:1;5666:9;5662:17;5653:6;5613:67;:::i;:::-;5473:214;;;;:::o;5693:329::-;5752:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5693:329;;;;:::o;6028:474::-;6096:6;6104;6153:2;6141:9;6132:7;6128:23;6124:32;6121:119;;;6159:79;;:::i;:::-;6121:119;6279:1;6304:53;6349:7;6340:6;6329:9;6325:22;6304:53;:::i;:::-;6294:63;;6250:117;6406:2;6432:53;6477:7;6468:6;6457:9;6453:22;6432:53;:::i;:::-;6422:63;;6377:118;6028:474;;;;;:::o;6508:::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:53;6957:7;6948:6;6937:9;6933:22;6912:53;:::i;:::-;6902:63;;6857:118;6508:474;;;;;:::o;6988:227::-;7128:34;7124:1;7116:6;7112:14;7105:58;7197:10;7192:2;7184:6;7180:15;7173:35;6988:227;:::o;7221:366::-;7363:3;7384:67;7448:2;7443:3;7384:67;:::i;:::-;7377:74;;7460:93;7549:3;7460:93;:::i;:::-;7578:2;7573:3;7569:12;7562:19;;7221:366;;;:::o;7593:419::-;7759:4;7797:2;7786:9;7782:18;7774:26;;7846:9;7840:4;7836:20;7832:1;7821:9;7817:17;7810:47;7874:131;8000:4;7874:131;:::i;:::-;7866:139;;7593:419;;;:::o;8018:180::-;8066:77;8063:1;8056:88;8163:4;8160:1;8153:15;8187:4;8184:1;8177:15;8204:191;8244:4;8264:20;8282:1;8264:20;:::i;:::-;8259:25;;8298:20;8316:1;8298:20;:::i;:::-;8293:25;;8337:1;8334;8331:8;8328:34;;;8342:18;;:::i;:::-;8328:34;8387:1;8384;8380:9;8372:17;;8204:191;;;;:::o;8401:182::-;8541:34;8537:1;8529:6;8525:14;8518:58;8401:182;:::o;8589:366::-;8731:3;8752:67;8816:2;8811:3;8752:67;:::i;:::-;8745:74;;8828:93;8917:3;8828:93;:::i;:::-;8946:2;8941:3;8937:12;8930:19;;8589:366;;;:::o;8961:419::-;9127:4;9165:2;9154:9;9150:18;9142:26;;9214:9;9208:4;9204:20;9200:1;9189:9;9185:17;9178:47;9242:131;9368:4;9242:131;:::i;:::-;9234:139;;8961:419;;;:::o;9386:173::-;9526:25;9522:1;9514:6;9510:14;9503:49;9386:173;:::o;9565:366::-;9707:3;9728:67;9792:2;9787:3;9728:67;:::i;:::-;9721:74;;9804:93;9893:3;9804:93;:::i;:::-;9922:2;9917:3;9913:12;9906:19;;9565:366;;;:::o;9937:419::-;10103:4;10141:2;10130:9;10126:18;10118:26;;10190:9;10184:4;10180:20;10176:1;10165:9;10161:17;10154:47;10218:131;10344:4;10218:131;:::i;:::-;10210:139;;9937:419;;;:::o;10362:102::-;10404:8;10451:5;10448:1;10444:13;10423:34;;10362:102;;;:::o;10470:848::-;10531:5;10538:4;10562:6;10553:15;;10586:5;10577:14;;10600:712;10621:1;10611:8;10608:15;10600:712;;;10716:4;10711:3;10707:14;10701:4;10698:24;10695:50;;;10725:18;;:::i;:::-;10695:50;10775:1;10765:8;10761:16;10758:451;;;11190:4;11183:5;11179:16;11170:25;;10758:451;11240:4;11234;11230:15;11222:23;;11270:32;11293:8;11270:32;:::i;:::-;11258:44;;10600:712;;;10470:848;;;;;;;:::o;11324:1073::-;11378:5;11569:8;11559:40;;11590:1;11581:10;;11592:5;;11559:40;11618:4;11608:36;;11635:1;11626:10;;11637:5;;11608:36;11704:4;11752:1;11747:27;;;;11788:1;11783:191;;;;11697:277;;11747:27;11765:1;11756:10;;11767:5;;;11783:191;11828:3;11818:8;11815:17;11812:43;;;11835:18;;:::i;:::-;11812:43;11884:8;11881:1;11877:16;11868:25;;11919:3;11912:5;11909:14;11906:40;;;11926:18;;:::i;:::-;11906:40;11959:5;;;11697:277;;12083:2;12073:8;12070:16;12064:3;12058:4;12055:13;12051:36;12033:2;12023:8;12020:16;12015:2;12009:4;12006:12;12002:35;11986:111;11983:246;;;12139:8;12133:4;12129:19;12120:28;;12174:3;12167:5;12164:14;12161:40;;;12181:18;;:::i;:::-;12161:40;12214:5;;11983:246;12254:42;12292:3;12282:8;12276:4;12273:1;12254:42;:::i;:::-;12239:57;;;;12328:4;12323:3;12319:14;12312:5;12309:25;12306:51;;;12337:18;;:::i;:::-;12306:51;12386:4;12379:5;12375:16;12366:25;;11324:1073;;;;;;:::o;12403:281::-;12461:5;12485:23;12503:4;12485:23;:::i;:::-;12477:31;;12529:25;12545:8;12529:25;:::i;:::-;12517:37;;12573:104;12610:66;12600:8;12594:4;12573:104;:::i;:::-;12564:113;;12403:281;;;;:::o;12690:348::-;12730:7;12753:20;12771:1;12753:20;:::i;:::-;12748:25;;12787:20;12805:1;12787:20;:::i;:::-;12782:25;;12975:1;12907:66;12903:74;12900:1;12897:81;12892:1;12885:9;12878:17;12874:105;12871:131;;;12982:18;;:::i;:::-;12871:131;13030:1;13027;13023:9;13012:20;;12690:348;;;;:::o;13044:225::-;13184:34;13180:1;13172:6;13168:14;13161:58;13253:8;13248:2;13240:6;13236:15;13229:33;13044:225;:::o;13275:366::-;13417:3;13438:67;13502:2;13497:3;13438:67;:::i;:::-;13431:74;;13514:93;13603:3;13514:93;:::i;:::-;13632:2;13627:3;13623:12;13616:19;;13275:366;;;:::o;13647:419::-;13813:4;13851:2;13840:9;13836:18;13828:26;;13900:9;13894:4;13890:20;13886:1;13875:9;13871:17;13864:47;13928:131;14054:4;13928:131;:::i;:::-;13920:139;;13647:419;;;:::o;14072:223::-;14212:34;14208:1;14200:6;14196:14;14189:58;14281:6;14276:2;14268:6;14264:15;14257:31;14072:223;:::o;14301:366::-;14443:3;14464:67;14528:2;14523:3;14464:67;:::i;:::-;14457:74;;14540:93;14629:3;14540:93;:::i;:::-;14658:2;14653:3;14649:12;14642:19;;14301:366;;;:::o;14673:419::-;14839:4;14877:2;14866:9;14862:18;14854:26;;14926:9;14920:4;14916:20;14912:1;14901:9;14897:17;14890:47;14954:131;15080:4;14954:131;:::i;:::-;14946:139;;14673:419;;;:::o;15098:221::-;15238:34;15234:1;15226:6;15222:14;15215:58;15307:4;15302:2;15294:6;15290:15;15283:29;15098:221;:::o;15325:366::-;15467:3;15488:67;15552:2;15547:3;15488:67;:::i;:::-;15481:74;;15564:93;15653:3;15564:93;:::i;:::-;15682:2;15677:3;15673:12;15666:19;;15325:366;;;:::o;15697:419::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15950:9;15944:4;15940:20;15936:1;15925:9;15921:17;15914:47;15978:131;16104:4;15978:131;:::i;:::-;15970:139;;15697:419;;;:::o;16122:224::-;16262:34;16258:1;16250:6;16246:14;16239:58;16331:7;16326:2;16318:6;16314:15;16307:32;16122:224;:::o;16352:366::-;16494:3;16515:67;16579:2;16574:3;16515:67;:::i;:::-;16508:74;;16591:93;16680:3;16591:93;:::i;:::-;16709:2;16704:3;16700:12;16693:19;;16352:366;;;:::o;16724:419::-;16890:4;16928:2;16917:9;16913:18;16905:26;;16977:9;16971:4;16967:20;16963:1;16952:9;16948:17;16941:47;17005:131;17131:4;17005:131;:::i;:::-;16997:139;;16724:419;;;:::o;17149:222::-;17289:34;17285:1;17277:6;17273:14;17266:58;17358:5;17353:2;17345:6;17341:15;17334:30;17149:222;:::o;17377:366::-;17519:3;17540:67;17604:2;17599:3;17540:67;:::i;:::-;17533:74;;17616:93;17705:3;17616:93;:::i;:::-;17734:2;17729:3;17725:12;17718:19;;17377:366;;;:::o;17749:419::-;17915:4;17953:2;17942:9;17938:18;17930:26;;18002:9;17996:4;17992:20;17988:1;17977:9;17973:17;17966:47;18030:131;18156:4;18030:131;:::i;:::-;18022:139;;17749:419;;;:::o;18174:228::-;18314:34;18310:1;18302:6;18298:14;18291:58;18383:11;18378:2;18370:6;18366:15;18359:36;18174:228;:::o;18408:366::-;18550:3;18571:67;18635:2;18630:3;18571:67;:::i;:::-;18564:74;;18647:93;18736:3;18647:93;:::i;:::-;18765:2;18760:3;18756:12;18749:19;;18408:366;;;:::o;18780:419::-;18946:4;18984:2;18973:9;18969:18;18961:26;;19033:9;19027:4;19023:20;19019:1;19008:9;19004:17;18997:47;19061:131;19187:4;19061:131;:::i;:::-;19053:139;;18780:419;;;:::o;19205:236::-;19345:34;19341:1;19333:6;19329:14;19322:58;19414:19;19409:2;19401:6;19397:15;19390:44;19205:236;:::o;19447:366::-;19589:3;19610:67;19674:2;19669:3;19610:67;:::i;:::-;19603:74;;19686:93;19775:3;19686:93;:::i;:::-;19804:2;19799:3;19795:12;19788:19;;19447:366;;;:::o;19819:419::-;19985:4;20023:2;20012:9;20008:18;20000:26;;20072:9;20066:4;20062:20;20058:1;20047:9;20043:17;20036:47;20100:131;20226:4;20100:131;:::i;:::-;20092:139;;19819:419;;;:::o;20244:173::-;20384:25;20380:1;20372:6;20368:14;20361:49;20244:173;:::o;20423:366::-;20565:3;20586:67;20650:2;20645:3;20586:67;:::i;:::-;20579:74;;20662:93;20751:3;20662:93;:::i;:::-;20780:2;20775:3;20771:12;20764:19;;20423:366;;;:::o;20795:419::-;20961:4;20999:2;20988:9;20984:18;20976:26;;21048:9;21042:4;21038:20;21034:1;21023:9;21019:17;21012:47;21076:131;21202:4;21076:131;:::i;:::-;21068:139;;20795:419;;;:::o;21220:175::-;21360:27;21356:1;21348:6;21344:14;21337:51;21220:175;:::o;21401:366::-;21543:3;21564:67;21628:2;21623:3;21564:67;:::i;:::-;21557:74;;21640:93;21729:3;21640:93;:::i;:::-;21758:2;21753:3;21749:12;21742:19;;21401:366;;;:::o;21773:419::-;21939:4;21977:2;21966:9;21962:18;21954:26;;22026:9;22020:4;22016:20;22012:1;22001:9;21997:17;21990:47;22054:131;22180:4;22054:131;:::i;:::-;22046:139;;21773:419;;;:::o;22198:305::-;22238:3;22257:20;22275:1;22257:20;:::i;:::-;22252:25;;22291:20;22309:1;22291:20;:::i;:::-;22286:25;;22445:1;22377:66;22373:74;22370:1;22367:81;22364:107;;;22451:18;;:::i;:::-;22364:107;22495:1;22492;22488:9;22481:16;;22198:305;;;;:::o;22509:176::-;22649:28;22645:1;22637:6;22633:14;22626:52;22509:176;:::o;22691:366::-;22833:3;22854:67;22918:2;22913:3;22854:67;:::i;:::-;22847:74;;22930:93;23019:3;22930:93;:::i;:::-;23048:2;23043:3;23039:12;23032:19;;22691:366;;;:::o;23063:419::-;23229:4;23267:2;23256:9;23252:18;23244:26;;23316:9;23310:4;23306:20;23302:1;23291:9;23287:17;23280:47;23344:131;23470:4;23344:131;:::i;:::-;23336:139;;23063:419;;;:::o;23488:221::-;23628:34;23624:1;23616:6;23612:14;23605:58;23697:4;23692:2;23684:6;23680:15;23673:29;23488:221;:::o;23715:366::-;23857:3;23878:67;23942:2;23937:3;23878:67;:::i;:::-;23871:74;;23954:93;24043:3;23954:93;:::i;:::-;24072:2;24067:3;24063:12;24056:19;;23715:366;;;:::o;24087:419::-;24253:4;24291:2;24280:9;24276:18;24268:26;;24340:9;24334:4;24330:20;24326:1;24315:9;24311:17;24304:47;24368:131;24494:4;24368:131;:::i;:::-;24360:139;;24087:419;;;:::o;24512:180::-;24560:77;24557:1;24550:88;24657:4;24654:1;24647:15;24681:4;24678:1;24671:15;24698:180;24746:77;24743:1;24736:88;24843:4;24840:1;24833:15;24867:4;24864:1;24857:15;24884:143;24941:5;24972:6;24966:13;24957:22;;24988:33;25015:5;24988:33;:::i;:::-;24884:143;;;;:::o;25033:351::-;25103:6;25152:2;25140:9;25131:7;25127:23;25123:32;25120:119;;;25158:79;;:::i;:::-;25120:119;25278:1;25303:64;25359:7;25350:6;25339:9;25335:22;25303:64;:::i;:::-;25293:74;;25249:128;25033:351;;;;:::o;25390:85::-;25435:7;25464:5;25453:16;;25390:85;;;:::o;25481:60::-;25509:3;25530:5;25523:12;;25481:60;;;:::o;25547:158::-;25605:9;25638:61;25656:42;25665:32;25691:5;25665:32;:::i;:::-;25656:42;:::i;:::-;25638:61;:::i;:::-;25625:74;;25547:158;;;:::o;25711:147::-;25806:45;25845:5;25806:45;:::i;:::-;25801:3;25794:58;25711:147;;:::o;25864:114::-;25931:6;25965:5;25959:12;25949:22;;25864:114;;;:::o;25984:184::-;26083:11;26117:6;26112:3;26105:19;26157:4;26152:3;26148:14;26133:29;;25984:184;;;;:::o;26174:132::-;26241:4;26264:3;26256:11;;26294:4;26289:3;26285:14;26277:22;;26174:132;;;:::o;26312:108::-;26389:24;26407:5;26389:24;:::i;:::-;26384:3;26377:37;26312:108;;:::o;26426:179::-;26495:10;26516:46;26558:3;26550:6;26516:46;:::i;:::-;26594:4;26589:3;26585:14;26571:28;;26426:179;;;;:::o;26611:113::-;26681:4;26713;26708:3;26704:14;26696:22;;26611:113;;;:::o;26760:732::-;26879:3;26908:54;26956:5;26908:54;:::i;:::-;26978:86;27057:6;27052:3;26978:86;:::i;:::-;26971:93;;27088:56;27138:5;27088:56;:::i;:::-;27167:7;27198:1;27183:284;27208:6;27205:1;27202:13;27183:284;;;27284:6;27278:13;27311:63;27370:3;27355:13;27311:63;:::i;:::-;27304:70;;27397:60;27450:6;27397:60;:::i;:::-;27387:70;;27243:224;27230:1;27227;27223:9;27218:14;;27183:284;;;27187:14;27483:3;27476:10;;26884:608;;;26760:732;;;;:::o;27498:831::-;27761:4;27799:3;27788:9;27784:19;27776:27;;27813:71;27881:1;27870:9;27866:17;27857:6;27813:71;:::i;:::-;27894:80;27970:2;27959:9;27955:18;27946:6;27894:80;:::i;:::-;28021:9;28015:4;28011:20;28006:2;27995:9;27991:18;27984:48;28049:108;28152:4;28143:6;28049:108;:::i;:::-;28041:116;;28167:72;28235:2;28224:9;28220:18;28211:6;28167:72;:::i;:::-;28249:73;28317:3;28306:9;28302:19;28293:6;28249:73;:::i;:::-;27498:831;;;;;;;;:::o;28335:180::-;28383:77;28380:1;28373:88;28480:4;28477:1;28470:15;28504:4;28501:1;28494:15;28521:185;28561:1;28578:20;28596:1;28578:20;:::i;:::-;28573:25;;28612:20;28630:1;28612:20;:::i;:::-;28607:25;;28651:1;28641:35;;28656:18;;:::i;:::-;28641:35;28698:1;28695;28691:9;28686:14;;28521:185;;;;:::o

Swarm Source

ipfs://55e5d3ae0dc3acc2e958f8ad7081c15239c71db908675d3b44e485626b2e3c54

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.