ETH Price: $3,392.64 (+1.24%)

Token

GYOZA (GYOZA)
 

Overview

Max Total Supply

1,000,000,000 GYOZA

Holders

422 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (-1.90%)

Onchain Market Cap

$1,134,620.00

Circulating Supply Market Cap

$1,119,711.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,361,396.37337567 GYOZA

Value
$11,756.25 ( ~3.4652 Eth) [1.0361%]
0xaadba8bc6f4a7fa0d8dbea1bd2a5671e6ab37497
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

GYOZA is a multipurpose tool that allows its users to get access to various data from ETH blockchain collected by our algorithms and provide to the holders of GYOZA token via number of telegram bots.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GYOZA

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-02
*/

//Telegram: https://t.me/gyozatoken
//Website:  https://gyoza.wtf
//Twitter:  https://twitter.com/Gyoza_erc20

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract GYOZA is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "GYOZA";
    string private constant _symbol = "GYOZA";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 public _taxFeeOnBuy = 2;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 public _taxFeeOnSell = 5;
    uint256 private _feeRate = 3;
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _deployerAddress = payable(0xf3CaC4B2e41b40d00B6D4787b09587940d825fED); 
    address payable private _operationsAddress = payable(0x8EB18C7dA05A62b527D15c3c31Eb722A99840887);
    address payable private _devAddress = payable(0x5198bf4f833FDfe43eD8Fc31Bf265e0684D6351c);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _swapTokensAtAmount = 200000 * 10**9;
 
   
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_deployerAddress] = true;
        _isExcludedFromFee[_operationsAddress] = true;
        _isExcludedFromFee[_devAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                    if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                        contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
                    }
                    swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _deployerAddress.transfer(amount.mul(1).div(10));  
        _operationsAddress.transfer(amount.mul(6).div(10));
        _devAddress.transfer(amount.mul(3).div(10));
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _operationsAddress || _msgSender() == _deployerAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _operationsAddress || _msgSender() == _deployerAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function blacklist(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function removeBlacklist(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 20, "Buy tax must be between 0% and 20%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 20, "Sell tax must be between 0% and 20%");
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    //Toggle contract sells
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    function manageExcludedFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function setFeeRate(uint256 rate) public onlyOwner {
         require(rate < 30, "Rate can't exceed 30%");
        _feeRate = rate;
        
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"manageExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c9190620007fd565b6000196200002b919062000864565b600655600060085560026009556000600a556005600b556003600c55600a54600d55600b54600e55600d54600f55600e5460105573f3cac4b2e41b40d00b6d4787b09587940d825fed601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738eb18c7da05a62b527d15c3c31eb722a99840887601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735198bf4f833fdfe43ed8fc31bf265e0684d6351c601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff02191690831515021790555065b5e620f48000601855348015620001ab57600080fd5b506000620001be6200079360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002736200079360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035257600080fd5b505afa15801562000367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038d919062000909565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f057600080fd5b505afa15801562000405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042b919062000909565b6040518363ffffffff1660e01b81526004016200044a9291906200094c565b602060405180830381600087803b1580156200046557600080fd5b505af11580156200047a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a0919062000909565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004f66200079b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200071d6200079360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200078491906200098a565b60405180910390a350620009a7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200080a82620007c4565b91506200081783620007c4565b9250826200082a5762000829620007ce565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200087182620007c4565b91506200087e83620007c4565b92508282101562000894576200089362000835565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008d182620008a4565b9050919050565b620008e381620008c4565b8114620008ef57600080fd5b50565b6000815190506200090381620008d8565b92915050565b6000602082840312156200092257620009216200089f565b5b60006200093284828501620008f2565b91505092915050565b6200094681620008c4565b82525050565b60006040820190506200096360008301856200093b565b6200097260208301846200093b565b9392505050565b6200098481620007c4565b82525050565b6000602082019050620009a1600083018462000979565b92915050565b613dce80620009b76000396000f3fe6080604052600436106101bb5760003560e01c80637d81b205116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd8014610619578063dd62ed3e14610630578063eb91e6511461066d578063f2fde38b14610696576101c2565b8063a9059cbb14610574578063bf5976d3146105b1578063bfd79284146105dc576101c2565b80638da5cb5b116100c65780638da5cb5b146104cc5780638f70ccf7146104f757806395d89b411461052057806398a5c3151461054b576101c2565b80637d81b2051461043b5780637f2feddc146104645780638199040e146104a1576101c2565b8063313ce5671161015957806352f7c9881161013357806352f7c988146103955780636d8aa8f8146103be5780636fc3eaec146103e757806370a08231146103fe576101c2565b8063313ce5671461031657806345596e2e1461034157806349bd5a5e1461036a576101c2565b80631694505e116101955780631694505e1461025857806318160ddd1461028357806323b872dd146102ae5780632fd689e3146102eb576101c2565b8063041f173f146101c757806306fdde03146101f0578063095ea7b31461021b576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612cef565b6106bf565b005b3480156101fc57600080fd5b506102056107e9565b6040516102129190612dc0565b60405180910390f35b34801561022757600080fd5b50610242600480360381019061023d9190612e18565b610826565b60405161024f9190612e73565b60405180910390f35b34801561026457600080fd5b5061026d610844565b60405161027a9190612eed565b60405180910390f35b34801561028f57600080fd5b5061029861086a565b6040516102a59190612f17565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190612f32565b61087a565b6040516102e29190612e73565b60405180910390f35b3480156102f757600080fd5b50610300610953565b60405161030d9190612f17565b60405180910390f35b34801561032257600080fd5b5061032b610959565b6040516103389190612fa1565b60405180910390f35b34801561034d57600080fd5b5061036860048036038101906103639190612fbc565b610962565b005b34801561037657600080fd5b5061037f610a44565b60405161038c9190612ff8565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190613013565b610a6a565b005b3480156103ca57600080fd5b506103e560048036038101906103e0919061307f565b610bb3565b005b3480156103f357600080fd5b506103fc610c65565b005b34801561040a57600080fd5b50610425600480360381019061042091906130ac565b610d36565b6040516104329190612f17565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613134565b610d87565b005b34801561047057600080fd5b5061048b600480360381019061048691906130ac565b610ec1565b6040516104989190612f17565b60405180910390f35b3480156104ad57600080fd5b506104b6610ed9565b6040516104c39190612f17565b60405180910390f35b3480156104d857600080fd5b506104e1610edf565b6040516104ee9190612ff8565b60405180910390f35b34801561050357600080fd5b5061051e6004803603810190610519919061307f565b610f08565b005b34801561052c57600080fd5b50610535610fba565b6040516105429190612dc0565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612fbc565b610ff7565b005b34801561058057600080fd5b5061059b60048036038101906105969190612e18565b611096565b6040516105a89190612e73565b60405180910390f35b3480156105bd57600080fd5b506105c66110b4565b6040516105d39190612f17565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906130ac565b6110ba565b6040516106109190612e73565b60405180910390f35b34801561062557600080fd5b5061062e6110da565b005b34801561063c57600080fd5b5061065760048036038101906106529190613194565b6111b3565b6040516106649190612f17565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f91906130ac565b61123a565b005b3480156106a257600080fd5b506106bd60048036038101906106b891906130ac565b61132a565b005b6106c76114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074b90613220565b60405180910390fd5b60005b81518110156107e55760016011600084848151811061077957610778613240565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dd9061329e565b915050610757565b5050565b60606040518060400160405280600581526020017f47594f5a41000000000000000000000000000000000000000000000000000000815250905090565b600061083a6108336114ec565b84846114f4565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108878484846116bf565b610948846108936114ec565b61094385604051806060016040528060288152602001613d7160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f96114ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef39092919063ffffffff16565b6114f4565b600190509392505050565b60185481565b60006009905090565b61096a6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90613220565b60405180910390fd5b601e8110610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190613333565b60405180910390fd5b80600c8190555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a726114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af690613220565b60405180910390fd5b60008210158015610b11575060148211155b610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b47906133c5565b60405180910390fd5b60008110158015610b62575060148111155b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890613457565b60405180910390fd5b8160098190555080600b819055505050565b610bbb6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f90613220565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ca66114ec565b73ffffffffffffffffffffffffffffffffffffffff161480610d1c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d046114ec565b73ffffffffffffffffffffffffffffffffffffffff16145b610d2557600080fd5b6000479050610d3381611f57565b50565b6000610d80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612107565b9050919050565b610d8f6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390613220565b60405180910390fd5b60005b83839050811015610ebb578160056000868685818110610e4257610e41613240565b5b9050602002016020810190610e5791906130ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610eb39061329e565b915050610e1f565b50505050565b60126020528060005260406000206000915090505481565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f106114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490613220565b60405180910390fd5b80601760146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600581526020017f47594f5a41000000000000000000000000000000000000000000000000000000815250905090565b610fff6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108390613220565b60405180910390fd5b8060188190555050565b60006110aa6110a36114ec565b84846116bf565b6001905092915050565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661111b6114ec565b73ffffffffffffffffffffffffffffffffffffffff1614806111915750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111796114ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61119a57600080fd5b60006111a530610d36565b90506111b081612175565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112426114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613220565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6113326114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b690613220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561142f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611426906134e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061357b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb9061360d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116b29190612f17565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117269061369f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613731565b60405180910390fd5b600081116117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d9906137c3565b60405180910390fd5b6117ea610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118585750611828610edf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf257601760149054906101000a900460ff166118e757611879610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613855565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c1906138e7565b60405180910390fd5b60006119d530610d36565b9050600060185482101590508080156119fb5750601760159054906101000a900460ff16155b8015611a555750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a6d5750601760169054906101000a900460ff165b8015611ac35750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b195750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bef57611b706064611b62600c54611b54601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d36565b6123fd90919063ffffffff16565b61247890919063ffffffff16565b821115611bcc57611bc96064611bbb600c54611bad601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d36565b6123fd90919063ffffffff16565b61247890919063ffffffff16565b91505b611bd582612175565b60004790506000811115611bed57611bec47611f57565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c995750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d4c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d4b5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d5a5760009050611ee1565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e055750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e1d57600854600d81905550600954600e819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ec85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee057600a54600d81905550600b54600e819055505b5b611eed848484846124c2565b50505050565b6000838311158290611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f329190612dc0565b60405180910390fd5b5060008385611f4a9190613907565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fba600a611fac6001866123fd90919063ffffffff16565b61247890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fe5573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612049600a61203b6006866123fd90919063ffffffff16565b61247890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612074573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120d8600a6120ca6003866123fd90919063ffffffff16565b61247890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612103573d6000803e3d6000fd5b5050565b600060065482111561214e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612145906139ad565b60405180910390fd5b60006121586124ef565b905061216d818461247890919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ad576121ac612b4e565b5b6040519080825280602002602001820160405280156121db5781602001602082028036833780820191505090505b50905030816000815181106121f3576121f2613240565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561229557600080fd5b505afa1580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd91906139e2565b816001815181106122e1576122e0613240565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061234830601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114f4565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123ac959493929190613b08565b600060405180830381600087803b1580156123c657600080fd5b505af11580156123da573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b6000808314156124105760009050612472565b6000828461241e9190613b62565b905082848261242d9190613beb565b1461246d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246490613c8e565b60405180910390fd5b809150505b92915050565b60006124ba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061251a565b905092915050565b806124d0576124cf61257d565b5b6124db8484846125c0565b806124e9576124e861278b565b5b50505050565b60008060006124fc61279f565b91509150612513818361247890919063ffffffff16565b9250505090565b60008083118290612561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125589190612dc0565b60405180910390fd5b50600083856125709190613beb565b9050809150509392505050565b6000600d5414801561259157506000600e54145b1561259b576125be565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806125d2876127fe565b95509550955095509550955061263086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127118161290e565b61271b84836129cb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127789190612f17565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060065490506000670de0b6b3a764000090506127d3670de0b6b3a764000060065461247890919063ffffffff16565b8210156127f157600654670de0b6b3a76400009350935050506127fa565b81819350935050505b9091565b600080600080600080600080600061281b8a600d54600e54612a05565b925092509250600061282b6124ef565b9050600080600061283e8e878787612a9b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef3565b905092915050565b60008082846128bf9190613cae565b905083811015612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb90613d50565b60405180910390fd5b8091505092915050565b60006129186124ef565b9050600061292f82846123fd90919063ffffffff16565b905061298381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129e08260065461286690919063ffffffff16565b6006819055506129fb816007546128b090919063ffffffff16565b6007819055505050565b600080600080612a316064612a23888a6123fd90919063ffffffff16565b61247890919063ffffffff16565b90506000612a5b6064612a4d888b6123fd90919063ffffffff16565b61247890919063ffffffff16565b90506000612a8482612a76858c61286690919063ffffffff16565b61286690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ab485896123fd90919063ffffffff16565b90506000612acb86896123fd90919063ffffffff16565b90506000612ae287896123fd90919063ffffffff16565b90506000612b0b82612afd858761286690919063ffffffff16565b61286690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b8682612b3d565b810181811067ffffffffffffffff82111715612ba557612ba4612b4e565b5b80604052505050565b6000612bb8612b24565b9050612bc48282612b7d565b919050565b600067ffffffffffffffff821115612be457612be3612b4e565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2582612bfa565b9050919050565b612c3581612c1a565b8114612c4057600080fd5b50565b600081359050612c5281612c2c565b92915050565b6000612c6b612c6684612bc9565b612bae565b90508083825260208201905060208402830185811115612c8e57612c8d612bf5565b5b835b81811015612cb75780612ca38882612c43565b845260208401935050602081019050612c90565b5050509392505050565b600082601f830112612cd657612cd5612b38565b5b8135612ce6848260208601612c58565b91505092915050565b600060208284031215612d0557612d04612b2e565b5b600082013567ffffffffffffffff811115612d2357612d22612b33565b5b612d2f84828501612cc1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d72578082015181840152602081019050612d57565b83811115612d81576000848401525b50505050565b6000612d9282612d38565b612d9c8185612d43565b9350612dac818560208601612d54565b612db581612b3d565b840191505092915050565b60006020820190508181036000830152612dda8184612d87565b905092915050565b6000819050919050565b612df581612de2565b8114612e0057600080fd5b50565b600081359050612e1281612dec565b92915050565b60008060408385031215612e2f57612e2e612b2e565b5b6000612e3d85828601612c43565b9250506020612e4e85828601612e03565b9150509250929050565b60008115159050919050565b612e6d81612e58565b82525050565b6000602082019050612e886000830184612e64565b92915050565b6000819050919050565b6000612eb3612eae612ea984612bfa565b612e8e565b612bfa565b9050919050565b6000612ec582612e98565b9050919050565b6000612ed782612eba565b9050919050565b612ee781612ecc565b82525050565b6000602082019050612f026000830184612ede565b92915050565b612f1181612de2565b82525050565b6000602082019050612f2c6000830184612f08565b92915050565b600080600060608486031215612f4b57612f4a612b2e565b5b6000612f5986828701612c43565b9350506020612f6a86828701612c43565b9250506040612f7b86828701612e03565b9150509250925092565b600060ff82169050919050565b612f9b81612f85565b82525050565b6000602082019050612fb66000830184612f92565b92915050565b600060208284031215612fd257612fd1612b2e565b5b6000612fe084828501612e03565b91505092915050565b612ff281612c1a565b82525050565b600060208201905061300d6000830184612fe9565b92915050565b6000806040838503121561302a57613029612b2e565b5b600061303885828601612e03565b925050602061304985828601612e03565b9150509250929050565b61305c81612e58565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b60006020828403121561309557613094612b2e565b5b60006130a38482850161306a565b91505092915050565b6000602082840312156130c2576130c1612b2e565b5b60006130d084828501612c43565b91505092915050565b600080fd5b60008083601f8401126130f4576130f3612b38565b5b8235905067ffffffffffffffff811115613111576131106130d9565b5b60208301915083602082028301111561312d5761312c612bf5565b5b9250929050565b60008060006040848603121561314d5761314c612b2e565b5b600084013567ffffffffffffffff81111561316b5761316a612b33565b5b613177868287016130de565b9350935050602061318a8682870161306a565b9150509250925092565b600080604083850312156131ab576131aa612b2e565b5b60006131b985828601612c43565b92505060206131ca85828601612c43565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320a602083612d43565b9150613215826131d4565b602082019050919050565b60006020820190508181036000830152613239816131fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a982612de2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132dc576132db61326f565b5b600182019050919050565b7f526174652063616e277420657863656564203330250000000000000000000000600082015250565b600061331d601583612d43565b9150613328826132e7565b602082019050919050565b6000602082019050818103600083015261334c81613310565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203260008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b60006133af602283612d43565b91506133ba82613353565b604082019050919050565b600060208201905081810360008301526133de816133a2565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3230250000000000000000000000000000000000000000000000000000000000602082015250565b6000613441602383612d43565b915061344c826133e5565b604082019050919050565b6000602082019050818103600083015261347081613434565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134d3602683612d43565b91506134de82613477565b604082019050919050565b60006020820190508181036000830152613502816134c6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613565602483612d43565b915061357082613509565b604082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135f7602283612d43565b91506136028261359b565b604082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613689602583612d43565b91506136948261362d565b604082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371b602383612d43565b9150613726826136bf565b604082019050919050565b6000602082019050818103600083015261374a8161370e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137ad602983612d43565b91506137b882613751565b604082019050919050565b600060208201905081810360008301526137dc816137a0565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061383f603f83612d43565b915061384a826137e3565b604082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138d1602383612d43565b91506138dc82613875565b604082019050919050565b60006020820190508181036000830152613900816138c4565b9050919050565b600061391282612de2565b915061391d83612de2565b9250828210156139305761392f61326f565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613997602a83612d43565b91506139a28261393b565b604082019050919050565b600060208201905081810360008301526139c68161398a565b9050919050565b6000815190506139dc81612c2c565b92915050565b6000602082840312156139f8576139f7612b2e565b5b6000613a06848285016139cd565b91505092915050565b6000819050919050565b6000613a34613a2f613a2a84613a0f565b612e8e565b612de2565b9050919050565b613a4481613a19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a7f81612c1a565b82525050565b6000613a918383613a76565b60208301905092915050565b6000602082019050919050565b6000613ab582613a4a565b613abf8185613a55565b9350613aca83613a66565b8060005b83811015613afb578151613ae28882613a85565b9750613aed83613a9d565b925050600181019050613ace565b5085935050505092915050565b600060a082019050613b1d6000830188612f08565b613b2a6020830187613a3b565b8181036040830152613b3c8186613aaa565b9050613b4b6060830185612fe9565b613b586080830184612f08565b9695505050505050565b6000613b6d82612de2565b9150613b7883612de2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bb157613bb061326f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf682612de2565b9150613c0183612de2565b925082613c1157613c10613bbc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c78602183612d43565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b6000613cb982612de2565b9150613cc483612de2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cf957613cf861326f565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d3a601b83612d43565b9150613d4582613d04565b602082019050919050565b60006020820190508181036000830152613d6981613d2d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220279abe27ffc68f8a55296f76d019454b9693ed21961be11405d1ac9041bad85c64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637d81b205116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd8014610619578063dd62ed3e14610630578063eb91e6511461066d578063f2fde38b14610696576101c2565b8063a9059cbb14610574578063bf5976d3146105b1578063bfd79284146105dc576101c2565b80638da5cb5b116100c65780638da5cb5b146104cc5780638f70ccf7146104f757806395d89b411461052057806398a5c3151461054b576101c2565b80637d81b2051461043b5780637f2feddc146104645780638199040e146104a1576101c2565b8063313ce5671161015957806352f7c9881161013357806352f7c988146103955780636d8aa8f8146103be5780636fc3eaec146103e757806370a08231146103fe576101c2565b8063313ce5671461031657806345596e2e1461034157806349bd5a5e1461036a576101c2565b80631694505e116101955780631694505e1461025857806318160ddd1461028357806323b872dd146102ae5780632fd689e3146102eb576101c2565b8063041f173f146101c757806306fdde03146101f0578063095ea7b31461021b576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612cef565b6106bf565b005b3480156101fc57600080fd5b506102056107e9565b6040516102129190612dc0565b60405180910390f35b34801561022757600080fd5b50610242600480360381019061023d9190612e18565b610826565b60405161024f9190612e73565b60405180910390f35b34801561026457600080fd5b5061026d610844565b60405161027a9190612eed565b60405180910390f35b34801561028f57600080fd5b5061029861086a565b6040516102a59190612f17565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190612f32565b61087a565b6040516102e29190612e73565b60405180910390f35b3480156102f757600080fd5b50610300610953565b60405161030d9190612f17565b60405180910390f35b34801561032257600080fd5b5061032b610959565b6040516103389190612fa1565b60405180910390f35b34801561034d57600080fd5b5061036860048036038101906103639190612fbc565b610962565b005b34801561037657600080fd5b5061037f610a44565b60405161038c9190612ff8565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190613013565b610a6a565b005b3480156103ca57600080fd5b506103e560048036038101906103e0919061307f565b610bb3565b005b3480156103f357600080fd5b506103fc610c65565b005b34801561040a57600080fd5b50610425600480360381019061042091906130ac565b610d36565b6040516104329190612f17565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613134565b610d87565b005b34801561047057600080fd5b5061048b600480360381019061048691906130ac565b610ec1565b6040516104989190612f17565b60405180910390f35b3480156104ad57600080fd5b506104b6610ed9565b6040516104c39190612f17565b60405180910390f35b3480156104d857600080fd5b506104e1610edf565b6040516104ee9190612ff8565b60405180910390f35b34801561050357600080fd5b5061051e6004803603810190610519919061307f565b610f08565b005b34801561052c57600080fd5b50610535610fba565b6040516105429190612dc0565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612fbc565b610ff7565b005b34801561058057600080fd5b5061059b60048036038101906105969190612e18565b611096565b6040516105a89190612e73565b60405180910390f35b3480156105bd57600080fd5b506105c66110b4565b6040516105d39190612f17565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906130ac565b6110ba565b6040516106109190612e73565b60405180910390f35b34801561062557600080fd5b5061062e6110da565b005b34801561063c57600080fd5b5061065760048036038101906106529190613194565b6111b3565b6040516106649190612f17565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f91906130ac565b61123a565b005b3480156106a257600080fd5b506106bd60048036038101906106b891906130ac565b61132a565b005b6106c76114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074b90613220565b60405180910390fd5b60005b81518110156107e55760016011600084848151811061077957610778613240565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dd9061329e565b915050610757565b5050565b60606040518060400160405280600581526020017f47594f5a41000000000000000000000000000000000000000000000000000000815250905090565b600061083a6108336114ec565b84846114f4565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108878484846116bf565b610948846108936114ec565b61094385604051806060016040528060288152602001613d7160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f96114ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef39092919063ffffffff16565b6114f4565b600190509392505050565b60185481565b60006009905090565b61096a6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90613220565b60405180910390fd5b601e8110610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190613333565b60405180910390fd5b80600c8190555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a726114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af690613220565b60405180910390fd5b60008210158015610b11575060148211155b610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b47906133c5565b60405180910390fd5b60008110158015610b62575060148111155b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890613457565b60405180910390fd5b8160098190555080600b819055505050565b610bbb6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f90613220565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ca66114ec565b73ffffffffffffffffffffffffffffffffffffffff161480610d1c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d046114ec565b73ffffffffffffffffffffffffffffffffffffffff16145b610d2557600080fd5b6000479050610d3381611f57565b50565b6000610d80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612107565b9050919050565b610d8f6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390613220565b60405180910390fd5b60005b83839050811015610ebb578160056000868685818110610e4257610e41613240565b5b9050602002016020810190610e5791906130ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610eb39061329e565b915050610e1f565b50505050565b60126020528060005260406000206000915090505481565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f106114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490613220565b60405180910390fd5b80601760146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600581526020017f47594f5a41000000000000000000000000000000000000000000000000000000815250905090565b610fff6114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108390613220565b60405180910390fd5b8060188190555050565b60006110aa6110a36114ec565b84846116bf565b6001905092915050565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661111b6114ec565b73ffffffffffffffffffffffffffffffffffffffff1614806111915750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111796114ec565b73ffffffffffffffffffffffffffffffffffffffff16145b61119a57600080fd5b60006111a530610d36565b90506111b081612175565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112426114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613220565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6113326114ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b690613220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561142f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611426906134e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061357b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb9061360d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116b29190612f17565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117269061369f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613731565b60405180910390fd5b600081116117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d9906137c3565b60405180910390fd5b6117ea610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118585750611828610edf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf257601760149054906101000a900460ff166118e757611879610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613855565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c1906138e7565b60405180910390fd5b60006119d530610d36565b9050600060185482101590508080156119fb5750601760159054906101000a900460ff16155b8015611a555750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a6d5750601760169054906101000a900460ff165b8015611ac35750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b195750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bef57611b706064611b62600c54611b54601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d36565b6123fd90919063ffffffff16565b61247890919063ffffffff16565b821115611bcc57611bc96064611bbb600c54611bad601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d36565b6123fd90919063ffffffff16565b61247890919063ffffffff16565b91505b611bd582612175565b60004790506000811115611bed57611bec47611f57565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c995750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d4c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d4b5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d5a5760009050611ee1565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e055750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e1d57600854600d81905550600954600e819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ec85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee057600a54600d81905550600b54600e819055505b5b611eed848484846124c2565b50505050565b6000838311158290611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f329190612dc0565b60405180910390fd5b5060008385611f4a9190613907565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fba600a611fac6001866123fd90919063ffffffff16565b61247890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fe5573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612049600a61203b6006866123fd90919063ffffffff16565b61247890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612074573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120d8600a6120ca6003866123fd90919063ffffffff16565b61247890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612103573d6000803e3d6000fd5b5050565b600060065482111561214e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612145906139ad565b60405180910390fd5b60006121586124ef565b905061216d818461247890919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ad576121ac612b4e565b5b6040519080825280602002602001820160405280156121db5781602001602082028036833780820191505090505b50905030816000815181106121f3576121f2613240565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561229557600080fd5b505afa1580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd91906139e2565b816001815181106122e1576122e0613240565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061234830601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114f4565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123ac959493929190613b08565b600060405180830381600087803b1580156123c657600080fd5b505af11580156123da573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b6000808314156124105760009050612472565b6000828461241e9190613b62565b905082848261242d9190613beb565b1461246d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246490613c8e565b60405180910390fd5b809150505b92915050565b60006124ba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061251a565b905092915050565b806124d0576124cf61257d565b5b6124db8484846125c0565b806124e9576124e861278b565b5b50505050565b60008060006124fc61279f565b91509150612513818361247890919063ffffffff16565b9250505090565b60008083118290612561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125589190612dc0565b60405180910390fd5b50600083856125709190613beb565b9050809150509392505050565b6000600d5414801561259157506000600e54145b1561259b576125be565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806125d2876127fe565b95509550955095509550955061263086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127118161290e565b61271b84836129cb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127789190612f17565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060065490506000670de0b6b3a764000090506127d3670de0b6b3a764000060065461247890919063ffffffff16565b8210156127f157600654670de0b6b3a76400009350935050506127fa565b81819350935050505b9091565b600080600080600080600080600061281b8a600d54600e54612a05565b925092509250600061282b6124ef565b9050600080600061283e8e878787612a9b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef3565b905092915050565b60008082846128bf9190613cae565b905083811015612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb90613d50565b60405180910390fd5b8091505092915050565b60006129186124ef565b9050600061292f82846123fd90919063ffffffff16565b905061298381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129e08260065461286690919063ffffffff16565b6006819055506129fb816007546128b090919063ffffffff16565b6007819055505050565b600080600080612a316064612a23888a6123fd90919063ffffffff16565b61247890919063ffffffff16565b90506000612a5b6064612a4d888b6123fd90919063ffffffff16565b61247890919063ffffffff16565b90506000612a8482612a76858c61286690919063ffffffff16565b61286690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ab485896123fd90919063ffffffff16565b90506000612acb86896123fd90919063ffffffff16565b90506000612ae287896123fd90919063ffffffff16565b90506000612b0b82612afd858761286690919063ffffffff16565b61286690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b8682612b3d565b810181811067ffffffffffffffff82111715612ba557612ba4612b4e565b5b80604052505050565b6000612bb8612b24565b9050612bc48282612b7d565b919050565b600067ffffffffffffffff821115612be457612be3612b4e565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2582612bfa565b9050919050565b612c3581612c1a565b8114612c4057600080fd5b50565b600081359050612c5281612c2c565b92915050565b6000612c6b612c6684612bc9565b612bae565b90508083825260208201905060208402830185811115612c8e57612c8d612bf5565b5b835b81811015612cb75780612ca38882612c43565b845260208401935050602081019050612c90565b5050509392505050565b600082601f830112612cd657612cd5612b38565b5b8135612ce6848260208601612c58565b91505092915050565b600060208284031215612d0557612d04612b2e565b5b600082013567ffffffffffffffff811115612d2357612d22612b33565b5b612d2f84828501612cc1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d72578082015181840152602081019050612d57565b83811115612d81576000848401525b50505050565b6000612d9282612d38565b612d9c8185612d43565b9350612dac818560208601612d54565b612db581612b3d565b840191505092915050565b60006020820190508181036000830152612dda8184612d87565b905092915050565b6000819050919050565b612df581612de2565b8114612e0057600080fd5b50565b600081359050612e1281612dec565b92915050565b60008060408385031215612e2f57612e2e612b2e565b5b6000612e3d85828601612c43565b9250506020612e4e85828601612e03565b9150509250929050565b60008115159050919050565b612e6d81612e58565b82525050565b6000602082019050612e886000830184612e64565b92915050565b6000819050919050565b6000612eb3612eae612ea984612bfa565b612e8e565b612bfa565b9050919050565b6000612ec582612e98565b9050919050565b6000612ed782612eba565b9050919050565b612ee781612ecc565b82525050565b6000602082019050612f026000830184612ede565b92915050565b612f1181612de2565b82525050565b6000602082019050612f2c6000830184612f08565b92915050565b600080600060608486031215612f4b57612f4a612b2e565b5b6000612f5986828701612c43565b9350506020612f6a86828701612c43565b9250506040612f7b86828701612e03565b9150509250925092565b600060ff82169050919050565b612f9b81612f85565b82525050565b6000602082019050612fb66000830184612f92565b92915050565b600060208284031215612fd257612fd1612b2e565b5b6000612fe084828501612e03565b91505092915050565b612ff281612c1a565b82525050565b600060208201905061300d6000830184612fe9565b92915050565b6000806040838503121561302a57613029612b2e565b5b600061303885828601612e03565b925050602061304985828601612e03565b9150509250929050565b61305c81612e58565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b60006020828403121561309557613094612b2e565b5b60006130a38482850161306a565b91505092915050565b6000602082840312156130c2576130c1612b2e565b5b60006130d084828501612c43565b91505092915050565b600080fd5b60008083601f8401126130f4576130f3612b38565b5b8235905067ffffffffffffffff811115613111576131106130d9565b5b60208301915083602082028301111561312d5761312c612bf5565b5b9250929050565b60008060006040848603121561314d5761314c612b2e565b5b600084013567ffffffffffffffff81111561316b5761316a612b33565b5b613177868287016130de565b9350935050602061318a8682870161306a565b9150509250925092565b600080604083850312156131ab576131aa612b2e565b5b60006131b985828601612c43565b92505060206131ca85828601612c43565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320a602083612d43565b9150613215826131d4565b602082019050919050565b60006020820190508181036000830152613239816131fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a982612de2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132dc576132db61326f565b5b600182019050919050565b7f526174652063616e277420657863656564203330250000000000000000000000600082015250565b600061331d601583612d43565b9150613328826132e7565b602082019050919050565b6000602082019050818103600083015261334c81613310565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203260008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b60006133af602283612d43565b91506133ba82613353565b604082019050919050565b600060208201905081810360008301526133de816133a2565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3230250000000000000000000000000000000000000000000000000000000000602082015250565b6000613441602383612d43565b915061344c826133e5565b604082019050919050565b6000602082019050818103600083015261347081613434565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134d3602683612d43565b91506134de82613477565b604082019050919050565b60006020820190508181036000830152613502816134c6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613565602483612d43565b915061357082613509565b604082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135f7602283612d43565b91506136028261359b565b604082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613689602583612d43565b91506136948261362d565b604082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371b602383612d43565b9150613726826136bf565b604082019050919050565b6000602082019050818103600083015261374a8161370e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137ad602983612d43565b91506137b882613751565b604082019050919050565b600060208201905081810360008301526137dc816137a0565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061383f603f83612d43565b915061384a826137e3565b604082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138d1602383612d43565b91506138dc82613875565b604082019050919050565b60006020820190508181036000830152613900816138c4565b9050919050565b600061391282612de2565b915061391d83612de2565b9250828210156139305761392f61326f565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613997602a83612d43565b91506139a28261393b565b604082019050919050565b600060208201905081810360008301526139c68161398a565b9050919050565b6000815190506139dc81612c2c565b92915050565b6000602082840312156139f8576139f7612b2e565b5b6000613a06848285016139cd565b91505092915050565b6000819050919050565b6000613a34613a2f613a2a84613a0f565b612e8e565b612de2565b9050919050565b613a4481613a19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a7f81612c1a565b82525050565b6000613a918383613a76565b60208301905092915050565b6000602082019050919050565b6000613ab582613a4a565b613abf8185613a55565b9350613aca83613a66565b8060005b83811015613afb578151613ae28882613a85565b9750613aed83613a9d565b925050600181019050613ace565b5085935050505092915050565b600060a082019050613b1d6000830188612f08565b613b2a6020830187613a3b565b8181036040830152613b3c8186613aaa565b9050613b4b6060830185612fe9565b613b586080830184612f08565b9695505050505050565b6000613b6d82612de2565b9150613b7883612de2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bb157613bb061326f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf682612de2565b9150613c0183612de2565b925082613c1157613c10613bbc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c78602183612d43565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b6000613cb982612de2565b9150613cc483612de2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cf957613cf861326f565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d3a601b83612d43565b9150613d4582613d04565b602082019050919050565b60006020820190508181036000830152613d6981613d2d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220279abe27ffc68f8a55296f76d019454b9693ed21961be11405d1ac9041bad85c64736f6c63430008090033

Deployed Bytecode Sourcemap

4053:13519:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12800:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6578:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7510:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5527:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6858:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7712:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5719:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6766:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17417:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5575:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16492:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17074:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12558:233;;;;;;;;;;;;;:::i;:::-;;6962:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17184:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5173:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4839:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1467:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12205:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6670:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16900:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7109:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4755:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5135:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12315:234;;;;;;;;;;;;;:::i;:::-;;7317:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12978:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1683:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12800:169;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12876:9:::1;12871:91;12895:5;:12;12891:1;:16;12871:91;;;12946:4;12929;:14;12934:5;12940:1;12934:8;;;;;;;;:::i;:::-;;;;;;;;12929:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12909:3;;;;;:::i;:::-;;;;12871:91;;;;12800:169:::0;:::o;6578:83::-;6615:13;6648:5;;;;;;;;;;;;;;;;;6641:12;;6578:83;:::o;7510:193::-;7612:4;7634:39;7643:12;:10;:12::i;:::-;7657:7;7666:6;7634:8;:39::i;:::-;7691:4;7684:11;;7510:193;;;;:::o;5527:41::-;;;;;;;;;;;;;:::o;6858:95::-;6911:7;4598:18;6931:14;;6858:95;:::o;7712:446::-;7844:4;7861:36;7871:6;7879:9;7890:6;7861:9;:36::i;:::-;7908:220;7931:6;7952:12;:10;:12::i;:::-;7979:138;8035:6;7979:138;;;;;;;;;;;;;;;;;:11;:19;7991:6;7979:19;;;;;;;;;;;;;;;:33;7999:12;:10;:12::i;:::-;7979:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7908:8;:220::i;:::-;8146:4;8139:11;;7712:446;;;;;:::o;5719:51::-;;;;:::o;6766:83::-;6807:5;4271:1;6825:16;;6766:83;:::o;17417:150::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17495:2:::1;17488:4;:9;17480:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17545:4;17534:8;:15;;;;17417:150:::0;:::o;5575:28::-;;;;;;;;;;;;;:::o;16492:355::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16602:1:::1;16587:11;:16;;:37;;;;;16622:2;16607:11;:17;;16587:37;16579:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16698:1;16682:12;:17;;:39;;;;;16719:2;16703:12;:18;;16682:39;16674:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16787:11;16772:12;:26;;;;16825:12;16809:13;:28;;;;16492:355:::0;;:::o;17074:101::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17155:12:::1;17141:11;;:26;;;;;;;;;;;;;;;;;;17074:101:::0;:::o;12558:233::-;12624:18;;;;;;;;;;;12608:34;;:12;:10;:12::i;:::-;:34;;;:70;;;;12662:16;;;;;;;;;;;12646:32;;:12;:10;:12::i;:::-;:32;;;12608:70;12600:79;;;;;;12690:26;12719:21;12690:50;;12751:32;12764:18;12751:12;:32::i;:::-;12589:202;12558:233::o;6962:138::-;7028:7;7055:37;7075:7;:16;7083:7;7075:16;;;;;;;;;;;;;;;;7055:19;:37::i;:::-;7048:44;;6962:138;;;:::o;17184:225::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17292:9:::1;17288:114;17311:8;;:15;;17307:1;:19;17288:114;;;17382:8;17348:18;:31;17367:8;;17376:1;17367:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17348:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17328:3;;;;;:::i;:::-;;;;17288:114;;;;17184:225:::0;;;:::o;5173:43::-;;;;;;;;;;;;;;;;;:::o;4839:32::-;;;;:::o;1467:79::-;1505:7;1532:6;;;;;;;;;;;1525:13;;1467:79;:::o;12205:101::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12286:12:::1;12272:11;;:26;;;;;;;;;;;;;;;;;;12205:101:::0;:::o;6670:87::-;6709:13;6742:7;;;;;;;;;;;;;;;;;6735:14;;6670:87;:::o;16900:139::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17013:18:::1;16991:19;:40;;;;16900:139:::0;:::o;7109:199::-;7214:4;7236:42;7246:12;:10;:12::i;:::-;7260:9;7271:6;7236:9;:42::i;:::-;7296:4;7289:11;;7109:199;;;;:::o;4755:31::-;;;;:::o;5135:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12315:234::-;12381:18;;;;;;;;;;;12365:34;;:12;:10;:12::i;:::-;:34;;;:70;;;;12419:16;;;;;;;;;;;12403:32;;:12;:10;:12::i;:::-;:32;;;12365:70;12357:79;;;;;;12447:23;12473:24;12491:4;12473:9;:24::i;:::-;12447:50;;12508:33;12525:15;12508:16;:33::i;:::-;12346:203;12315:234::o;7317:184::-;7434:7;7466:11;:18;7478:5;7466:18;;;;;;;;;;;;;;;:27;7485:7;7466:27;;;;;;;;;;;;;;;;7459:34;;7317:184;;;;:::o;12978:97::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13062:5:::1;13047:4;:12;13052:6;13047:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12978:97:::0;:::o;1683:244::-;1605:12;:10;:12::i;:::-;1595:22;;:6;;;;;;;;;;:22;;;1587:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1792:1:::1;1772:22;;:8;:22;;;;1764:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1882:8;1853:38;;1874:6;::::0;::::1;;;;;;;;1853:38;;;;;;;;;;;;1911:8;1902:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1683:244:::0;:::o;216:98::-;269:7;296:10;289:17;;216:98;:::o;8855:369::-;8999:1;8982:19;;:5;:19;;;;8974:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9080:1;9061:21;;:7;:21;;;;9053:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9162:6;9132:11;:18;9144:5;9132:18;;;;;;;;;;;;;;;:27;9151:7;9132:27;;;;;;;;;;;;;;;:36;;;;9200:7;9184:32;;9193:5;9184:32;;;9209:6;9184:32;;;;;;:::i;:::-;;;;;;;;8855:369;;;:::o;9233:2232::-;9371:1;9355:18;;:4;:18;;;;9347:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9448:1;9434:16;;:2;:16;;;;9426:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9518:1;9509:6;:10;9501:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9591:7;:5;:7::i;:::-;9583:15;;:4;:15;;;;:32;;;;;9608:7;:5;:7::i;:::-;9602:13;;:2;:13;;;;9583:32;9579:1154;;;9673:11;;;;;;;;;;;9668:144;;9721:7;:5;:7::i;:::-;9713:15;;:4;:15;;;9705:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9668:144;9852:4;:10;9857:4;9852:10;;;;;;;;;;;;;;;;;;;;;;;;;9851:11;:24;;;;;9867:4;:8;9872:2;9867:8;;;;;;;;;;;;;;;;;;;;;;;;;9866:9;9851:24;9843:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9933:28;9964:24;9982:4;9964:9;:24::i;:::-;9933:55;;10003:12;10042:19;;10018:20;:43;;10003:58;;10100:7;:18;;;;;10112:6;;;;;;;;;;;10111:7;10100:18;:43;;;;;10130:13;;;;;;;;;;;10122:21;;:4;:21;;;;10100:43;:58;;;;;10147:11;;;;;;;;;;;10100:58;:87;;;;;10163:18;:24;10182:4;10163:24;;;;;;;;;;;;;;;;;;;;;;;;;10162:25;10100:87;:114;;;;;10192:18;:22;10211:2;10192:22;;;;;;;;;;;;;;;;;;;;;;;;;10191:23;10100:114;10096:626;;;10265:47;10308:3;10265:38;10294:8;;10265:24;10275:13;;;;;;;;;;;10265:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10242:20;:70;10239:196;;;10364:47;10407:3;10364:38;10393:8;;10364:24;10374:13;;;;;;;;;;;10364:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10341:70;;10239:196;10457:38;10474:20;10457:16;:38::i;:::-;10532:26;10561:21;10532:50;;10626:1;10605:18;:22;10601:106;;;10652:35;10665:21;10652:12;:35::i;:::-;10601:106;10216:506;10096:626;9617:1116;;9579:1154;10746:12;10761:4;10746:19;;10811:18;:24;10830:4;10811:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10839:18;:22;10858:2;10839:22;;;;;;;;;;;;;;;;;;;;;;;;;10811:50;10810:102;;;;10875:13;;;;;;;;;;;10867:21;;:4;:21;;;;:44;;;;;10898:13;;;;;;;;;;;10892:19;;:2;:19;;;;10867:44;10810:102;10806:597;;;10939:5;10929:15;;10806:597;;;11023:13;;;;;;;;;;;11015:21;;:4;:21;;;:55;;;;;11054:15;;;;;;;;;;;11040:30;;:2;:30;;;;11015:55;11012:162;;;11103:14;;11091:9;:26;;;;11146:12;;11136:7;:22;;;;11012:162;11234:13;;;;;;;;;;;11228:19;;:2;:19;;;:55;;;;;11267:15;;;;;;;;;;;11251:32;;:4;:32;;;;11228:55;11224:165;;;11316:15;;11304:9;:27;;;;11360:13;;11350:7;:23;;;;11224:165;10806:597;11416:41;11431:4;11437:2;11441:6;11449:7;11416:14;:41::i;:::-;9336:2129;9233:2232;;;:::o;2295:224::-;2415:7;2448:1;2443;:6;;2451:12;2435:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2475:9;2491:1;2487;:5;;;;:::i;:::-;2475:17;;2510:1;2503:8;;;2295:224;;;;;:::o;11966:230::-;12023:16;;;;;;;;;;;:25;;:48;12049:21;12067:2;12049:13;12060:1;12049:6;:10;;:13;;;;:::i;:::-;:17;;:21;;;;:::i;:::-;12023:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12084:18;;;;;;;;;;;:27;;:50;12112:21;12130:2;12112:13;12123:1;12112:6;:10;;:13;;;;:::i;:::-;:17;;:21;;;;:::i;:::-;12084:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12145:11;;;;;;;;;;;:20;;:43;12166:21;12184:2;12166:13;12177:1;12166:6;:10;;:13;;;;:::i;:::-;:17;;:21;;;;:::i;:::-;12145:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11966:230;:::o;8167:323::-;8262:7;8320;;8309;:18;;8287:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8408:19;8430:10;:8;:10::i;:::-;8408:32;;8458:24;8470:11;8458:7;:11;;:24;;;;:::i;:::-;8451:31;;;8167:323;;;:::o;11474:483::-;5826:4;5817: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;;;;;;;;;;;;::::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;5862:5:::0;5853:6;;:14;;;;;;;;;;;;;;;;;;11474:483;:::o;2528:246::-;2586:7;2615:1;2610;:6;2606:47;;;2640:1;2633:8;;;;2606:47;2663:9;2679:1;2675;:5;;;;:::i;:::-;2663:17;;2708:1;2703;2699;:5;;;;:::i;:::-;:10;2691:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2765:1;2758:8;;;2528:246;;;;;:::o;2783:132::-;2841:7;2868:39;2872:1;2875;2868:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2861:46;;2783:132;;;;:::o;13084:282::-;13240:7;13235:28;;13249:14;:12;:14::i;:::-;13235:28;13274:44;13292:6;13300:9;13311:6;13274:17;:44::i;:::-;13334:7;13329:29;;13343:15;:13;:15::i;:::-;13329:29;13084:282;;;;:::o;16053:164::-;16095:7;16116:15;16133;16152:19;:17;:19::i;:::-;16115:56;;;;16189:20;16201:7;16189;:11;;:20;;;;:::i;:::-;16182:27;;;;16053:164;:::o;2924:223::-;3044:7;3076:1;3072;:5;3079:12;3064:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3103:9;3119:1;3115;:5;;;;:::i;:::-;3103:17;;3138:1;3131:8;;;2924:223;;;;;:::o;8499:221::-;8559:1;8546:9;;:14;:30;;;;;8575:1;8564:7;;:12;8546:30;8542:43;;;8578:7;;8542:43;8618:9;;8598:17;:29;;;;8656:7;;8638:15;:25;;;;8689:1;8677:9;:13;;;;8711:1;8701:7;:11;;;;8499:221;:::o;13375:610::-;13522:15;13552:23;13590:12;13617:23;13655:12;13682:13;13709:19;13720:7;13709:10;:19::i;:::-;13507:221;;;;;;;;;;;;13757:28;13777:7;13757;:15;13765:6;13757:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13739:7;:15;13747:6;13739:15;;;;;;;;;;;;;;;:46;;;;13817:39;13840:15;13817:7;:18;13825:9;13817:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13796:7;:18;13804:9;13796:18;;;;;;;;;;;;;;;:60;;;;13867:16;13877:5;13867:9;:16::i;:::-;13894:23;13906:4;13912;13894:11;:23::i;:::-;13950:9;13933:44;;13942:6;13933:44;;;13961:15;13933:44;;;;;;:::i;:::-;;;;;;;;13496:489;;;;;;13375:610;;;:::o;8729:117::-;8785:17;;8773:9;:29;;;;8823:15;;8813:7;:25;;;;8729:117::o;16226:257::-;16277:7;16286;16306:15;16324:7;;16306:25;;16342:15;4598:18;16342:25;;16392:20;4598:18;16392:7;;:11;;:20;;;;:::i;:::-;16382:7;:30;16378:61;;;16422:7;;4598:18;16414:25;;;;;;;;16378:61;16458:7;16467;16450:25;;;;;;16226:257;;;:::o;14408:615::-;14508:7;14530;14552;14574;14596;14618;14654:23;14679:12;14693:13;14723:40;14735:7;14744:9;;14755:7;;14723:11;:40::i;:::-;14653:110;;;;;;14774:19;14796:10;:8;:10::i;:::-;14774:32;;14818:15;14835:23;14860:12;14889:46;14901:7;14910:4;14916:5;14923:11;14889;:46::i;:::-;14817:118;;;;;;14954:7;14963:15;14980:4;14986:15;15003:4;15009:5;14946:69;;;;;;;;;;;;;;;;;;;14408:615;;;;;;;:::o;2150:136::-;2208:7;2235:43;2239:1;2242;2235:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2228:50;;2150:136;;;;:::o;1962:179::-;2020:7;2040:9;2056:1;2052;:5;;;;:::i;:::-;2040:17;;2081:1;2076;:6;;2068:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2132:1;2125:8;;;1962:179;;;;:::o;13994:211::-;14047:19;14069:10;:8;:10::i;:::-;14047:32;;14090:13;14106:22;14116:11;14106:5;:9;;:22;;;;:::i;:::-;14090:38;;14164:33;14191:5;14164:7;:22;14180:4;14164:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14139:7;:22;14155:4;14139:22;;;;;;;;;;;;;;;:58;;;;14036:169;;13994:211;:::o;14214:147::-;14292:17;14304:4;14292:7;;:11;;:17;;;;:::i;:::-;14282:7;:27;;;;14333:20;14348:4;14333:10;;:14;;:20;;;;:::i;:::-;14320:10;:33;;;;14214:147;;:::o;15032:469::-;15201:7;15223;15245;15280:12;15295:30;15321:3;15295:21;15307:8;15295:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15280:45;;15336:13;15352:28;15376:3;15352:19;15364:6;15352:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15336:44;;15391:23;15417:28;15439:5;15417:17;15429:4;15417:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15391:54;;15464:15;15481:4;15487:5;15456:37;;;;;;;;;15032:469;;;;;;;:::o;15510:534::-;15704:7;15726;15748;15783:15;15801:24;15813:11;15801:7;:11;;:24;;;;:::i;:::-;15783:42;;15836:12;15851:21;15860:11;15851:4;:8;;:21;;;;:::i;:::-;15836:36;;15883:13;15899:22;15909:11;15899:5;:9;;:22;;;;:::i;:::-;15883:38;;15932:23;15958:28;15980:5;15958:17;15970:4;15958:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15932:54;;16005:7;16014:15;16031:4;15997:39;;;;;;;;;;15510:534;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:329::-;8775:6;8824:2;8812:9;8803:7;8799:23;8795:32;8792:119;;;8830:79;;:::i;:::-;8792:119;8950:1;8975:53;9020:7;9011:6;9000:9;8996:22;8975:53;:::i;:::-;8965:63;;8921:117;8716:329;;;;:::o;9051:118::-;9138:24;9156:5;9138:24;:::i;:::-;9133:3;9126:37;9051:118;;:::o;9175:222::-;9268:4;9306:2;9295:9;9291:18;9283:26;;9319:71;9387:1;9376:9;9372:17;9363:6;9319:71;:::i;:::-;9175:222;;;;:::o;9403:474::-;9471:6;9479;9528:2;9516:9;9507:7;9503:23;9499:32;9496:119;;;9534:79;;:::i;:::-;9496:119;9654:1;9679:53;9724:7;9715:6;9704:9;9700:22;9679:53;:::i;:::-;9669:63;;9625:117;9781:2;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9752:118;9403:474;;;;;:::o;9883:116::-;9953:21;9968:5;9953:21;:::i;:::-;9946:5;9943:32;9933:60;;9989:1;9986;9979:12;9933:60;9883:116;:::o;10005:133::-;10048:5;10086:6;10073:20;10064:29;;10102:30;10126:5;10102:30;:::i;:::-;10005:133;;;;:::o;10144:323::-;10200:6;10249:2;10237:9;10228:7;10224:23;10220:32;10217:119;;;10255:79;;:::i;:::-;10217:119;10375:1;10400:50;10442:7;10433:6;10422:9;10418:22;10400:50;:::i;:::-;10390:60;;10346:114;10144:323;;;;:::o;10473:329::-;10532:6;10581:2;10569:9;10560:7;10556:23;10552:32;10549:119;;;10587:79;;:::i;:::-;10549:119;10707:1;10732:53;10777:7;10768:6;10757:9;10753:22;10732:53;:::i;:::-;10722:63;;10678:117;10473:329;;;;:::o;10808:117::-;10917:1;10914;10907:12;10948:568;11021:8;11031:6;11081:3;11074:4;11066:6;11062:17;11058:27;11048:122;;11089:79;;:::i;:::-;11048:122;11202:6;11189:20;11179:30;;11232:18;11224:6;11221:30;11218:117;;;11254:79;;:::i;:::-;11218:117;11368:4;11360:6;11356:17;11344:29;;11422:3;11414:4;11406:6;11402:17;11392:8;11388:32;11385:41;11382:128;;;11429:79;;:::i;:::-;11382:128;10948:568;;;;;:::o;11522:698::-;11614:6;11622;11630;11679:2;11667:9;11658:7;11654:23;11650:32;11647:119;;;11685:79;;:::i;:::-;11647:119;11833:1;11822:9;11818:17;11805:31;11863:18;11855:6;11852:30;11849:117;;;11885:79;;:::i;:::-;11849:117;11998:80;12070:7;12061:6;12050:9;12046:22;11998:80;:::i;:::-;11980:98;;;;11776:312;12127:2;12153:50;12195:7;12186:6;12175:9;12171:22;12153:50;:::i;:::-;12143:60;;12098:115;11522:698;;;;;:::o;12226:474::-;12294:6;12302;12351:2;12339:9;12330:7;12326:23;12322:32;12319:119;;;12357:79;;:::i;:::-;12319:119;12477:1;12502:53;12547:7;12538:6;12527:9;12523:22;12502:53;:::i;:::-;12492:63;;12448:117;12604:2;12630:53;12675:7;12666:6;12655:9;12651:22;12630:53;:::i;:::-;12620:63;;12575:118;12226:474;;;;;:::o;12706:182::-;12846:34;12842:1;12834:6;12830:14;12823:58;12706:182;:::o;12894:366::-;13036:3;13057:67;13121:2;13116:3;13057:67;:::i;:::-;13050:74;;13133:93;13222:3;13133:93;:::i;:::-;13251:2;13246:3;13242:12;13235:19;;12894:366;;;:::o;13266:419::-;13432:4;13470:2;13459:9;13455:18;13447:26;;13519:9;13513:4;13509:20;13505:1;13494:9;13490:17;13483:47;13547:131;13673:4;13547:131;:::i;:::-;13539:139;;13266:419;;;:::o;13691:180::-;13739:77;13736:1;13729:88;13836:4;13833:1;13826:15;13860:4;13857:1;13850:15;13877:180;13925:77;13922:1;13915:88;14022:4;14019:1;14012:15;14046:4;14043:1;14036:15;14063:233;14102:3;14125:24;14143:5;14125:24;:::i;:::-;14116:33;;14171:66;14164:5;14161:77;14158:103;;;14241:18;;:::i;:::-;14158:103;14288:1;14281:5;14277:13;14270:20;;14063:233;;;:::o;14302:171::-;14442:23;14438:1;14430:6;14426:14;14419:47;14302:171;:::o;14479:366::-;14621:3;14642:67;14706:2;14701:3;14642:67;:::i;:::-;14635:74;;14718:93;14807:3;14718:93;:::i;:::-;14836:2;14831:3;14827:12;14820:19;;14479:366;;;:::o;14851:419::-;15017:4;15055:2;15044:9;15040:18;15032:26;;15104:9;15098:4;15094:20;15090:1;15079:9;15075:17;15068:47;15132:131;15258:4;15132:131;:::i;:::-;15124:139;;14851:419;;;:::o;15276:221::-;15416:34;15412:1;15404:6;15400:14;15393:58;15485:4;15480:2;15472:6;15468:15;15461:29;15276:221;:::o;15503:366::-;15645:3;15666:67;15730:2;15725:3;15666:67;:::i;:::-;15659:74;;15742:93;15831:3;15742:93;:::i;:::-;15860:2;15855:3;15851:12;15844:19;;15503:366;;;:::o;15875:419::-;16041:4;16079:2;16068:9;16064:18;16056:26;;16128:9;16122:4;16118:20;16114:1;16103:9;16099:17;16092:47;16156:131;16282:4;16156:131;:::i;:::-;16148:139;;15875:419;;;:::o;16300:222::-;16440:34;16436:1;16428:6;16424:14;16417:58;16509:5;16504:2;16496:6;16492:15;16485:30;16300:222;:::o;16528:366::-;16670:3;16691:67;16755:2;16750:3;16691:67;:::i;:::-;16684:74;;16767:93;16856:3;16767:93;:::i;:::-;16885:2;16880:3;16876:12;16869:19;;16528:366;;;:::o;16900:419::-;17066:4;17104:2;17093:9;17089:18;17081:26;;17153:9;17147:4;17143:20;17139:1;17128:9;17124:17;17117:47;17181:131;17307:4;17181:131;:::i;:::-;17173:139;;16900:419;;;:::o;17325:225::-;17465:34;17461:1;17453:6;17449:14;17442:58;17534:8;17529:2;17521:6;17517:15;17510:33;17325:225;:::o;17556:366::-;17698:3;17719:67;17783:2;17778:3;17719:67;:::i;:::-;17712:74;;17795:93;17884:3;17795:93;:::i;:::-;17913:2;17908:3;17904:12;17897:19;;17556:366;;;:::o;17928:419::-;18094:4;18132:2;18121:9;18117:18;18109:26;;18181:9;18175:4;18171:20;18167:1;18156:9;18152:17;18145:47;18209:131;18335:4;18209:131;:::i;:::-;18201:139;;17928:419;;;:::o;18353:223::-;18493:34;18489:1;18481:6;18477:14;18470:58;18562:6;18557:2;18549:6;18545:15;18538:31;18353:223;:::o;18582:366::-;18724:3;18745:67;18809:2;18804:3;18745:67;:::i;:::-;18738:74;;18821:93;18910:3;18821:93;:::i;:::-;18939:2;18934:3;18930:12;18923:19;;18582:366;;;:::o;18954:419::-;19120:4;19158:2;19147:9;19143:18;19135:26;;19207:9;19201:4;19197:20;19193:1;19182:9;19178:17;19171:47;19235:131;19361:4;19235:131;:::i;:::-;19227:139;;18954:419;;;:::o;19379:221::-;19519:34;19515:1;19507:6;19503:14;19496:58;19588:4;19583:2;19575:6;19571:15;19564:29;19379:221;:::o;19606:366::-;19748:3;19769:67;19833:2;19828:3;19769:67;:::i;:::-;19762:74;;19845:93;19934:3;19845:93;:::i;:::-;19963:2;19958:3;19954:12;19947:19;;19606:366;;;:::o;19978:419::-;20144:4;20182:2;20171:9;20167:18;20159:26;;20231:9;20225:4;20221:20;20217:1;20206:9;20202:17;20195:47;20259:131;20385:4;20259:131;:::i;:::-;20251:139;;19978:419;;;:::o;20403:224::-;20543:34;20539:1;20531:6;20527:14;20520:58;20612:7;20607:2;20599:6;20595:15;20588:32;20403:224;:::o;20633:366::-;20775:3;20796:67;20860:2;20855:3;20796:67;:::i;:::-;20789:74;;20872:93;20961:3;20872:93;:::i;:::-;20990:2;20985:3;20981:12;20974:19;;20633:366;;;:::o;21005:419::-;21171:4;21209:2;21198:9;21194:18;21186:26;;21258:9;21252:4;21248:20;21244:1;21233:9;21229:17;21222:47;21286:131;21412:4;21286:131;:::i;:::-;21278:139;;21005:419;;;:::o;21430:222::-;21570:34;21566:1;21558:6;21554:14;21547:58;21639:5;21634:2;21626:6;21622:15;21615:30;21430:222;:::o;21658:366::-;21800:3;21821:67;21885:2;21880:3;21821:67;:::i;:::-;21814:74;;21897:93;21986:3;21897:93;:::i;:::-;22015:2;22010:3;22006:12;21999:19;;21658:366;;;:::o;22030:419::-;22196:4;22234:2;22223:9;22219:18;22211:26;;22283:9;22277:4;22273:20;22269:1;22258:9;22254:17;22247:47;22311:131;22437:4;22311:131;:::i;:::-;22303:139;;22030:419;;;:::o;22455:228::-;22595:34;22591:1;22583:6;22579:14;22572:58;22664:11;22659:2;22651:6;22647:15;22640:36;22455:228;:::o;22689:366::-;22831:3;22852:67;22916:2;22911:3;22852:67;:::i;:::-;22845:74;;22928:93;23017:3;22928:93;:::i;:::-;23046:2;23041:3;23037:12;23030:19;;22689:366;;;:::o;23061:419::-;23227:4;23265:2;23254:9;23250:18;23242:26;;23314:9;23308:4;23304:20;23300:1;23289:9;23285:17;23278:47;23342:131;23468:4;23342:131;:::i;:::-;23334:139;;23061:419;;;:::o;23486:250::-;23626:34;23622:1;23614:6;23610:14;23603:58;23695:33;23690:2;23682:6;23678:15;23671:58;23486:250;:::o;23742:366::-;23884:3;23905:67;23969:2;23964:3;23905:67;:::i;:::-;23898:74;;23981:93;24070:3;23981:93;:::i;:::-;24099:2;24094:3;24090:12;24083:19;;23742:366;;;:::o;24114:419::-;24280:4;24318:2;24307:9;24303:18;24295:26;;24367:9;24361:4;24357:20;24353:1;24342:9;24338:17;24331:47;24395:131;24521:4;24395:131;:::i;:::-;24387:139;;24114:419;;;:::o;24539:222::-;24679:34;24675:1;24667:6;24663:14;24656:58;24748:5;24743:2;24735:6;24731:15;24724:30;24539:222;:::o;24767:366::-;24909:3;24930:67;24994:2;24989:3;24930:67;:::i;:::-;24923:74;;25006:93;25095:3;25006:93;:::i;:::-;25124:2;25119:3;25115:12;25108:19;;24767:366;;;:::o;25139:419::-;25305:4;25343:2;25332:9;25328:18;25320:26;;25392:9;25386:4;25382:20;25378:1;25367:9;25363:17;25356:47;25420:131;25546:4;25420:131;:::i;:::-;25412:139;;25139:419;;;:::o;25564:191::-;25604:4;25624:20;25642:1;25624:20;:::i;:::-;25619:25;;25658:20;25676:1;25658:20;:::i;:::-;25653:25;;25697:1;25694;25691:8;25688:34;;;25702:18;;:::i;:::-;25688:34;25747:1;25744;25740:9;25732:17;;25564:191;;;;:::o;25761:229::-;25901:34;25897:1;25889:6;25885:14;25878:58;25970:12;25965:2;25957:6;25953:15;25946:37;25761:229;:::o;25996:366::-;26138:3;26159:67;26223:2;26218:3;26159:67;:::i;:::-;26152:74;;26235:93;26324:3;26235:93;:::i;:::-;26353:2;26348:3;26344:12;26337:19;;25996:366;;;:::o;26368:419::-;26534:4;26572:2;26561:9;26557:18;26549:26;;26621:9;26615:4;26611:20;26607:1;26596:9;26592:17;26585:47;26649:131;26775:4;26649:131;:::i;:::-;26641:139;;26368:419;;;:::o;26793:143::-;26850:5;26881:6;26875:13;26866:22;;26897:33;26924:5;26897:33;:::i;:::-;26793:143;;;;:::o;26942:351::-;27012:6;27061:2;27049:9;27040:7;27036:23;27032:32;27029:119;;;27067:79;;:::i;:::-;27029:119;27187:1;27212:64;27268:7;27259:6;27248:9;27244:22;27212:64;:::i;:::-;27202:74;;27158:128;26942:351;;;;:::o;27299:85::-;27344:7;27373:5;27362:16;;27299:85;;;:::o;27390:158::-;27448:9;27481:61;27499:42;27508:32;27534:5;27508:32;:::i;:::-;27499:42;:::i;:::-;27481:61;:::i;:::-;27468:74;;27390:158;;;:::o;27554:147::-;27649:45;27688:5;27649:45;:::i;:::-;27644:3;27637:58;27554:147;;:::o;27707:114::-;27774:6;27808:5;27802:12;27792:22;;27707:114;;;:::o;27827:184::-;27926:11;27960:6;27955:3;27948:19;28000:4;27995:3;27991:14;27976:29;;27827:184;;;;:::o;28017:132::-;28084:4;28107:3;28099:11;;28137:4;28132:3;28128:14;28120:22;;28017:132;;;:::o;28155:108::-;28232:24;28250:5;28232:24;:::i;:::-;28227:3;28220:37;28155:108;;:::o;28269:179::-;28338:10;28359:46;28401:3;28393:6;28359:46;:::i;:::-;28437:4;28432:3;28428:14;28414:28;;28269:179;;;;:::o;28454:113::-;28524:4;28556;28551:3;28547:14;28539:22;;28454:113;;;:::o;28603:732::-;28722:3;28751:54;28799:5;28751:54;:::i;:::-;28821:86;28900:6;28895:3;28821:86;:::i;:::-;28814:93;;28931:56;28981:5;28931:56;:::i;:::-;29010:7;29041:1;29026:284;29051:6;29048:1;29045:13;29026:284;;;29127:6;29121:13;29154:63;29213:3;29198:13;29154:63;:::i;:::-;29147:70;;29240:60;29293:6;29240:60;:::i;:::-;29230:70;;29086:224;29073:1;29070;29066:9;29061:14;;29026:284;;;29030:14;29326:3;29319:10;;28727:608;;;28603:732;;;;:::o;29341:831::-;29604:4;29642:3;29631:9;29627:19;29619:27;;29656:71;29724:1;29713:9;29709:17;29700:6;29656:71;:::i;:::-;29737:80;29813:2;29802:9;29798:18;29789:6;29737:80;:::i;:::-;29864:9;29858:4;29854:20;29849:2;29838:9;29834:18;29827:48;29892:108;29995:4;29986:6;29892:108;:::i;:::-;29884:116;;30010:72;30078:2;30067:9;30063:18;30054:6;30010:72;:::i;:::-;30092:73;30160:3;30149:9;30145:19;30136:6;30092:73;:::i;:::-;29341:831;;;;;;;;:::o;30178:348::-;30218:7;30241:20;30259:1;30241:20;:::i;:::-;30236:25;;30275:20;30293:1;30275:20;:::i;:::-;30270:25;;30463:1;30395:66;30391:74;30388:1;30385:81;30380:1;30373:9;30366:17;30362:105;30359:131;;;30470:18;;:::i;:::-;30359:131;30518:1;30515;30511:9;30500:20;;30178:348;;;;:::o;30532:180::-;30580:77;30577:1;30570:88;30677:4;30674:1;30667:15;30701:4;30698:1;30691:15;30718:185;30758:1;30775:20;30793:1;30775:20;:::i;:::-;30770:25;;30809:20;30827:1;30809:20;:::i;:::-;30804:25;;30848:1;30838:35;;30853:18;;:::i;:::-;30838:35;30895:1;30892;30888:9;30883:14;;30718:185;;;;:::o;30909:220::-;31049:34;31045:1;31037:6;31033:14;31026:58;31118:3;31113:2;31105:6;31101:15;31094:28;30909:220;:::o;31135:366::-;31277:3;31298:67;31362:2;31357:3;31298:67;:::i;:::-;31291:74;;31374:93;31463:3;31374:93;:::i;:::-;31492:2;31487:3;31483:12;31476:19;;31135:366;;;:::o;31507:419::-;31673:4;31711:2;31700:9;31696:18;31688:26;;31760:9;31754:4;31750:20;31746:1;31735:9;31731:17;31724:47;31788:131;31914:4;31788:131;:::i;:::-;31780:139;;31507:419;;;:::o;31932:305::-;31972:3;31991:20;32009:1;31991:20;:::i;:::-;31986:25;;32025:20;32043:1;32025:20;:::i;:::-;32020:25;;32179:1;32111:66;32107:74;32104:1;32101:81;32098:107;;;32185:18;;:::i;:::-;32098:107;32229:1;32226;32222:9;32215:16;;31932:305;;;;:::o;32243:177::-;32383:29;32379:1;32371:6;32367:14;32360:53;32243:177;:::o;32426:366::-;32568:3;32589:67;32653:2;32648:3;32589:67;:::i;:::-;32582:74;;32665:93;32754:3;32665:93;:::i;:::-;32783:2;32778:3;32774:12;32767:19;;32426:366;;;:::o;32798:419::-;32964:4;33002:2;32991:9;32987:18;32979:26;;33051:9;33045:4;33041:20;33037:1;33026:9;33022:17;33015:47;33079:131;33205:4;33079:131;:::i;:::-;33071:139;;32798:419;;;:::o

Swarm Source

ipfs://279abe27ffc68f8a55296f76d019454b9693ed21961be11405d1ac9041bad85c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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