ETH Price: $2,442.98 (+1.24%)

Token

Royal Corgi (ROYALC)
 

Overview

Max Total Supply

1,000,000,000,000,000 ROYALC

Holders

313

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
895,067,000,000.09435 ROYALC

Value
$0.00
0x98e3252a428bf5c6e7a3bedcaeba877b4b38fd48
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

ROYAL CORGI is a meme-coin. ETH Reflection of 8% rewards per transaction are reflected to holders in ETH and transaction fee of 8% to holders in ETH, 5.0% to Dev/Marketing fund, 2% to Royal Charity.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RoyalCorgi

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-28
*/

/*
 * ROYAL CORGI
 * Telegram:https://t.me/royalc95
 * Website:https://royalcorgi.net
 * Withdraw Dividends at https://app.fairtokenproject.com

 * Using FTPEthReflect
    - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH
 * Using FTPAntiBot
    - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically.
    - Learn more at https://antibot.fairtokenproject.com
 */
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
contract Ownable is Context {
    address private m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 1000;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
interface IUniswapV2Factory {                                                         
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}
interface FTPEthReflect {
    function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external;
    function getAlloc() external view returns (uint256);
    function trackSell(address _holder, uint256 _newEth) external;
    function trackPurchase(address _holder) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract RoyalCorgi is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 1000000000000000 * 10**9;
    string private m_Name = "Royal Corgi";
    string private m_Symbol = "ROYALC";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_TxLimit  = TOTAL_SUPPLY.div(400);
    uint256 private m_WalletLimit = m_TxLimit.mul(10);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
    // ETH REFLECT
    FTPEthReflect private EthReflect;
    address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB);
    uint256 m_EthReflectAlloc;
    uint256 m_EthReflectAmount;
    // ANTIBOT
    FTPAntiBot private AntiBot;
    address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3;
    uint256 private m_BanCount = 0;
    // MISC
    address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    uint256 private m_Launched = 1753633194;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
        EthReflect = FTPEthReflect(m_EthReflectSvcAddress);
        AntiBot = FTPAntiBot(m_AntibotSvcAddress);
        initTax();

        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_Balances[_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 m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && block.timestamp <= m_Launched.add(24 hours);
    }
    function _checkTX() private view returns (uint256){
        if(block.timestamp <= m_Launched.add(3 minutes))
            return TOTAL_SUPPLY.div(400);
        else
            return TOTAL_SUPPLY;
    }
    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");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
        if(_isExchangeTransfer(_sender, _recipient) && block.timestamp >= m_Launched) {
            require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");                                          
            require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin),  "Beep Beep Boop, You're a piece of poop");
            AntiBot.registerBlock(_sender, _recipient, tx.origin);
        }
         
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(block.timestamp >= m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= _checkTX());
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
        _trackEthReflection(_sender, _recipient);
	}
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _trackEthReflection(address _sender, address _recipient) private {
        if (_trader(_sender, _recipient)) {
            if (_isBuy(_sender))
                EthReflect.trackPurchase(_recipient);
            else if (m_EthReflectAmount > 0) {
                EthReflect.trackSell(_sender, m_EthReflectAmount);
                m_EthReflectAmount = 0;
            }
        }
    }
	function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        m_EthReflectAlloc = EthReflect.getAlloc();
        _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        _ret = _ret.add(m_EthReflectAlloc);
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d);
        m_EthReflectSvcAddress.transfer(m_EthReflectAmount);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
        EthReflect.init(address(this), 8000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY);
        m_Liquidity = true;
    }
    function launch(uint256 _timer) external onlyOwner() {
        m_Launched = block.timestamp.add(_timer);
    }
    function setTxLimit(uint256 _amount) external onlyOwner() {                                            
        m_TxLimit = _amount.mul(10**9);
        emit SetTxLimit(m_TxLimit);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = true;
    }
    function rmBlacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

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":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86004556040518060400160405280600b81526020017f526f79616c20436f72676900000000000000000000000000000000000000000081525060099080519060200190620000ac92919062000e32565b506040518060400160405280600681526020017f524f59414c430000000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000e32565b506009600b60006101000a81548160ff021916908360ff1602179055506200013d61019069d3c21bcecceda1000000620005c760201b6200195c1790919060201c565b600d556200015d600a600d546200061960201b620019a61790919060201c565b600e556000600f60006101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601555731011f61df0e2ad67e269f4108098c79e71868e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b5563688651aa601c556000601d60006101000a81548160ff021916908315150217905550620186a0601e55348015620002bb57600080fd5b506000620002ce6200069d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000442620006a560201b60201c565b69d3c21bcecceda1000000601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000620004a66200094560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda1000000604051620005b991906200111b565b60405180910390a36200143a565b60006200061183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200096e60201b60201c565b905092915050565b6000808314156200062e576000905062000697565b600082846200063e9190620011e9565b90508284826200064f9190620011b1565b1462000692576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068990620010d7565b60405180910390fd5b809150505b92915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620007ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007dc5781602001602082028036833780820191505090505b5060059080519060200190620007f492919062000ec3565b50600067ffffffffffffffff81111562000837577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620008665781602001602082028036833780820191505090505b50600690805190602001906200087e92919062000f1c565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000943600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454620009d660201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620009b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009af919062001091565b60405180910390fd5b5060008385620009c99190620011b1565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000a1d6200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6d90620010f9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000bfa5761290462000ae38360085462000d1460201b62001a211790919060201c565b111562000aef57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000b8f91906200124a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000bee8260085462000d1460201b62001a211790919060201c565b60088190555062000d0f565b60006005828154811062000c37577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000c7c8262000c688660085462000d1460201b62001a211790919060201c565b62000d7760201b62001a7f1790919060201c565b111562000c8857600080fd5b826005838154811062000cc4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000d078162000cf38560085462000d1460201b62001a211790919060201c565b62000d7760201b62001a7f1790919060201c565b600881905550505b505050565b600080828462000d25919062001154565b90508381101562000d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d6490620010b5565b60405180910390fd5b8091505092915050565b600062000dc183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000dc960201b60201c565b905092915050565b600083831115829062000e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e0b919062001091565b60405180910390fd5b506000838562000e2591906200124a565b9050809150509392505050565b82805462000e4090620012c5565b90600052602060002090601f01602090048101928262000e64576000855562000eb0565b82601f1062000e7f57805160ff191683800117855562000eb0565b8280016001018555821562000eb0579182015b8281111562000eaf57825182559160200191906001019062000e92565b5b50905062000ebf919062000fab565b5090565b82805482825590600052602060002090810192821562000f09579160200282015b8281111562000f08578251829062ffffff1690559160200191906001019062000ee4565b5b50905062000f18919062000fab565b5090565b82805482825590600052602060002090810192821562000f98579160200282015b8281111562000f975782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000f3d565b5b50905062000fa7919062000fab565b5090565b5b8082111562000fc657600081600090555060010162000fac565b5090565b600062000fd78262001138565b62000fe3818562001143565b935062000ff58185602086016200128f565b620010008162001388565b840191505092915050565b60006200101a601b8362001143565b9150620010278262001399565b602082019050919050565b60006200104160218362001143565b91506200104e82620013c2565b604082019050919050565b60006200106860208362001143565b9150620010758262001411565b602082019050919050565b6200108b8162001285565b82525050565b60006020820190508181036000830152620010ad818462000fca565b905092915050565b60006020820190508181036000830152620010d0816200100b565b9050919050565b60006020820190508181036000830152620010f28162001032565b9050919050565b60006020820190508181036000830152620011148162001059565b9050919050565b600060208201905062001132600083018462001080565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620011618262001285565b91506200116e8362001285565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011a657620011a5620012fb565b5b828201905092915050565b6000620011be8262001285565b9150620011cb8362001285565b925082620011de57620011dd6200132a565b5b828204905092915050565b6000620011f68262001285565b9150620012038362001285565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200123f576200123e620012fb565b5b828202905092915050565b6000620012578262001285565b9150620012648362001285565b9250828210156200127a5762001279620012fb565b5b828203905092915050565b6000819050919050565b60005b83811015620012af57808201518184015260208101905062001292565b83811115620012bf576000848401525b50505050565b60006002820490506001821680620012de57607f821691505b60208210811415620012f557620012f462001359565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61464b806200144a6000396000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610445578063dd62ed3e14610482578063e8078d94146104bf578063f2fde38b146104d6578063f37c4bce146104ff578063f9f92be41461052857610140565b80638da5cb5b1461036057806395d89b411461038b57806398d5a5cb146103b6578063a9059cbb146103df578063ab9562fe1461041c57610140565b8063313ce567116100fd578063313ce5671461023e57806354486ac3146102695780635c85974f1461029457806370a08231146102bd57806385b12c7c146102fa5780638a13792e1461032357610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631c815b49146101d857806323b872dd1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610551565b6040516101679190613d71565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190613851565b6105e3565b6040516101a49190613d56565b60405180910390f35b3480156101b957600080fd5b506101c2610601565b6040516101cf9190613ef3565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa919061378a565b610613565b005b34801561020d57600080fd5b5061022860048036038101906102239190613802565b610718565b6040516102359190613d56565b60405180910390f35b34801561024a57600080fd5b506102536107f1565b6040516102609190613f68565b60405180910390f35b34801561027557600080fd5b5061027e610808565b60405161028b9190613ef3565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b691906138b6565b61080e565b005b3480156102c957600080fd5b506102e460048036038101906102df919061370f565b6108fc565b6040516102f19190613ef3565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906138b6565b610945565b005b34801561032f57600080fd5b5061034a60048036038101906103459190613761565b6109f6565b6040516103579190613ef3565b60405180910390f35b34801561036c57600080fd5b50610375610b1f565b6040516103829190613bf0565b60405180910390f35b34801561039757600080fd5b506103a0610b48565b6040516103ad9190613d71565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d8919061370f565b610bda565b005b3480156103eb57600080fd5b5061040660048036038101906104019190613851565b610cca565b6040516104139190613d56565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e919061378a565b610ce8565b005b34801561045157600080fd5b5061046c6004803603810190610467919061370f565b610e24565b6040516104799190613d56565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a491906137c6565b610e7a565b6040516104b69190613ef3565b60405180910390f35b3480156104cb57600080fd5b506104d4610f01565b005b3480156104e257600080fd5b506104fd60048036038101906104f8919061370f565b611561565b005b34801561050b57600080fd5b506105266004803603810190610521919061370f565b6116b3565b005b34801561053457600080fd5b5061054f600480360381019061054a919061370f565b61186c565b005b606060098054610560906141ab565b80601f016020809104026020016040519081016040528092919081815260200182805461058c906141ab565b80156105d95780601f106105ae576101008083540402835291602001916105d9565b820191906000526020600020905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b60006105f76105f0611ac9565b8484611ad1565b6001905092915050565b600069d3c21bcecceda1000000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610652611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90613e53565b60405180910390fd5b6106b28282611c9c565b6000811115610714576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000610725848484611f9d565b6107e684610731611ac9565b6107e1856040518060600160405280602881526020016145ee60289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610797611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125349092919063ffffffff16565b611ad1565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084d611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90613e53565b60405180910390fd5b6108ba633b9aca00826119a690919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516108f19190613ef3565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610984611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190613e53565b60405180910390fd5b6109ed8142611a2190919063ffffffff16565b601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a38611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590613e53565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610b0c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b57906141ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610b83906141ab565b8015610bd05780601f10610ba557610100808354040283529160200191610bd0565b820191906000526020600020905b815481529060010190602001808311610bb357829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c19611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6690613e53565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cde610cd7611ac9565b8484611f9d565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d27611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490613e53565b60405180910390fd5b610daa600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e20600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c9c565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f40611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d90613e53565b60405180910390fd5b600f60009054906101000a900460ff1615610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90613db3565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061107c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000611ad1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190613738565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561115c57600080fd5b505afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190613738565b6040518363ffffffff1660e01b81526004016111b1929190613c0b565b602060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190613738565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061128c306108fc565b600080611297610b1f565b426040518863ffffffff1660e01b81526004016112b996959493929190613cf5565b6060604051808303818588803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130b9190613908565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113ad929190613ccc565b602060405180830381600087803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff919061388d565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ab57600080fd5b505afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e39190613738565b8769d3c21bcecceda10000006040518763ffffffff1660e01b815260040161151096959493929190613c6b565b600060405180830381600087803b15801561152a57600080fd5b505af115801561153e573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115a0611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed90613e53565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190613738565b73ffffffffffffffffffffffffffffffffffffffff16611773611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614806117e95750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117d1611ac9565b73ffffffffffffffffffffffffffffffffffffffff16145b611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613dd3565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890613e53565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061199e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612598565b905092915050565b6000808314156119b95760009050611a1b565b600082846119c7919061405f565b90508284826119d6919061402e565b14611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613e33565b60405180910390fd5b809150505b92915050565b6000808284611a309190613fd8565b905083811015611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613e13565b60405180910390fd5b8091505092915050565b6000611ac183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612534565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613eb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613df3565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c8f9190613ef3565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cdb611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2890613e53565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611ea257612904611d9683600854611a2190919063ffffffff16565b1115611da157600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611e3f91906140b9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9782600854611a2190919063ffffffff16565b600881905550611f98565b600060058281548110611ede577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611f1582611f0786600854611a2190919063ffffffff16565b611a7f90919063ffffffff16565b1115611f2057600080fd5b8260058381548110611f5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f9081611f8285600854611a2190919063ffffffff16565b611a7f90919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490613e93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490613d93565b60405180910390fd5b600081116120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613e73565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121645750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121ba5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121c357600080fd5b6121cd83836125fb565b80156121db5750601c544210155b1561249857601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161226193929190613c34565b602060405180830381600087803b15801561227b57600080fd5b505af115801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b3919061388d565b156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90613ed3565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161237493929190613c34565b602060405180830381600087803b15801561238e57600080fd5b505af11580156123a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c6919061388d565b15612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd90613ed3565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161246593929190613c34565b600060405180830381600087803b15801561247f57600080fd5b505af1158015612493573d6000803e3d6000fd5b505050505b6124a1826126ae565b156124bd57600e546124b2836108fc565b106124bc57600080fd5b5b60006124c98484612786565b1561251857601c544210156124dd57600080fd5b6124e78484612832565b15612501576124f461293d565b82111561250057600080fd5b5b61250c848484612992565b905061251784612b79565b5b61252484848484612baa565b61252e8484612dec565b50505050565b600083831115829061257c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125739190613d71565b60405180910390fd5b506000838561258b91906140b9565b9050809150509392505050565b600080831182906125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d69190613d71565b60405180910390fd5b50600083856125ee919061402e565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126a65750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561275c5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561277f575061277b62015180601c54611a2190919063ffffffff16565b4211155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128295750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128df5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129355750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061295560b4601c54611a2190919063ffffffff16565b42116129815761297a61019069d3c21bcecceda100000061195c90919063ffffffff16565b905061298f565b69d3c21bcecceda100000090505b90565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a3a5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a485780915050612b72565b612a88612a79612a56612f46565b612a6b601e548761195c90919063ffffffff16565b6119a690919063ffffffff16565b82611a2190919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af257600080fd5b505afa158015612b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2a91906138df565b601181905550612b6b612b5c601e54612b4e601154876119a690919063ffffffff16565b61195c90919063ffffffff16565b82611a2190919063ffffffff16565b9050809150505b9392505050565b612b8281612f50565b15612ba7576000612b92306108fc565b9050612b9d81612fc4565b612ba56132be565b505b50565b6000612bbf8284611a7f90919063ffffffff16565b9050612c1383601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7f90919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ca881601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3d82601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ddd9190613ef3565b60405180910390a35050505050565b612df68282612786565b15612f4257612e04826133b7565b15612e9b57600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612e649190613bf0565b600060405180830381600087803b158015612e7e57600080fd5b505af1158015612e92573d6000803e3d6000fd5b50505050612f41565b60006012541115612f4057600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612f05929190613ccc565b600060405180830381600087803b158015612f1f57600080fd5b505af1158015612f33573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000601d60009054906101000a900460ff16158015612fbd5750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613022577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130505781602001602082028036833780820191505090505b509050308160008151811061308e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561313057600080fd5b505afa158015613144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131689190613738565b816001815181106131a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061320930600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ad1565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161326d959493929190613f0e565b600060405180830381600087803b15801561328757600080fd5b505af115801561329b573d6000803e3d6000fd5b50505050506000601d60006101000a81548160ff02191690831515021790555050565b6000479050601b5481116132d257506133b5565b60006132e9601b5483611a7f90919063ffffffff16565b905060006132f5613411565b90506001811015613308575050506133b5565b6133128282613452565b6133398161332b601154856119a690919063ffffffff16565b61195c90919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156133a9573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009050613432613423612f46565b82611a2190919063ffffffff16565b905061344960115482611a2190919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561368c576000600582815481106134a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506000600683815481106134eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061353f8561353185896119a690919063ffffffff16565b61195c90919063ffffffff16565b90506001811115613676578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613590573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561367557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136429190613ef3565b600060405180830381600087803b15801561365c57600080fd5b505af1158015613670573d6000803e3d6000fd5b505050505b5b5050508080613684906141dd565b915050613459565b505050565b6000813590506136a081614591565b92915050565b6000815190506136b581614591565b92915050565b6000813590506136ca816145a8565b92915050565b6000815190506136df816145bf565b92915050565b6000813590506136f4816145d6565b92915050565b600081519050613709816145d6565b92915050565b60006020828403121561372157600080fd5b600061372f84828501613691565b91505092915050565b60006020828403121561374a57600080fd5b6000613758848285016136a6565b91505092915050565b60006020828403121561377357600080fd5b6000613781848285016136bb565b91505092915050565b6000806040838503121561379d57600080fd5b60006137ab858286016136bb565b92505060206137bc858286016136e5565b9150509250929050565b600080604083850312156137d957600080fd5b60006137e785828601613691565b92505060206137f885828601613691565b9150509250929050565b60008060006060848603121561381757600080fd5b600061382586828701613691565b935050602061383686828701613691565b9250506040613847868287016136e5565b9150509250925092565b6000806040838503121561386457600080fd5b600061387285828601613691565b9250506020613883858286016136e5565b9150509250929050565b60006020828403121561389f57600080fd5b60006138ad848285016136d0565b91505092915050565b6000602082840312156138c857600080fd5b60006138d6848285016136e5565b91505092915050565b6000602082840312156138f157600080fd5b60006138ff848285016136fa565b91505092915050565b60008060006060848603121561391d57600080fd5b600061392b868287016136fa565b935050602061393c868287016136fa565b925050604061394d868287016136fa565b9150509250925092565b6000613963838361396f565b60208301905092915050565b613978816140ed565b82525050565b613987816140ed565b82525050565b600061399882613f93565b6139a28185613fb6565b93506139ad83613f83565b8060005b838110156139de5781516139c58882613957565b97506139d083613fa9565b9250506001810190506139b1565b5085935050505092915050565b6139f481614111565b82525050565b613a0381614154565b82525050565b613a1281614166565b82525050565b6000613a2382613f9e565b613a2d8185613fc7565b9350613a3d818560208601614178565b613a46816142b3565b840191505092915050565b6000613a5e602383613fc7565b9150613a69826142c4565b604082019050919050565b6000613a81601883613fc7565b9150613a8c82614313565b602082019050919050565b6000613aa4600c83613fc7565b9150613aaf8261433c565b602082019050919050565b6000613ac7602283613fc7565b9150613ad282614365565b604082019050919050565b6000613aea601b83613fc7565b9150613af5826143b4565b602082019050919050565b6000613b0d602183613fc7565b9150613b18826143dd565b604082019050919050565b6000613b30602083613fc7565b9150613b3b8261442c565b602082019050919050565b6000613b53602983613fc7565b9150613b5e82614455565b604082019050919050565b6000613b76602583613fc7565b9150613b81826144a4565b604082019050919050565b6000613b99602483613fc7565b9150613ba4826144f3565b604082019050919050565b6000613bbc602683613fc7565b9150613bc782614542565b604082019050919050565b613bdb8161413d565b82525050565b613bea81614147565b82525050565b6000602082019050613c05600083018461397e565b92915050565b6000604082019050613c20600083018561397e565b613c2d602083018461397e565b9392505050565b6000606082019050613c49600083018661397e565b613c56602083018561397e565b613c63604083018461397e565b949350505050565b600060c082019050613c80600083018961397e565b613c8d6020830188613a09565b613c9a604083018761397e565b613ca7606083018661397e565b613cb46080830185613bd2565b613cc160a0830184613bd2565b979650505050505050565b6000604082019050613ce1600083018561397e565b613cee6020830184613bd2565b9392505050565b600060c082019050613d0a600083018961397e565b613d176020830188613bd2565b613d2460408301876139fa565b613d3160608301866139fa565b613d3e608083018561397e565b613d4b60a0830184613bd2565b979650505050505050565b6000602082019050613d6b60008301846139eb565b92915050565b60006020820190508181036000830152613d8b8184613a18565b905092915050565b60006020820190508181036000830152613dac81613a51565b9050919050565b60006020820190508181036000830152613dcc81613a74565b9050919050565b60006020820190508181036000830152613dec81613a97565b9050919050565b60006020820190508181036000830152613e0c81613aba565b9050919050565b60006020820190508181036000830152613e2c81613add565b9050919050565b60006020820190508181036000830152613e4c81613b00565b9050919050565b60006020820190508181036000830152613e6c81613b23565b9050919050565b60006020820190508181036000830152613e8c81613b46565b9050919050565b60006020820190508181036000830152613eac81613b69565b9050919050565b60006020820190508181036000830152613ecc81613b8c565b9050919050565b60006020820190508181036000830152613eec81613baf565b9050919050565b6000602082019050613f086000830184613bd2565b92915050565b600060a082019050613f236000830188613bd2565b613f3060208301876139fa565b8181036040830152613f42818661398d565b9050613f51606083018561397e565b613f5e6080830184613bd2565b9695505050505050565b6000602082019050613f7d6000830184613be1565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613fe38261413d565b9150613fee8361413d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561402357614022614226565b5b828201905092915050565b60006140398261413d565b91506140448361413d565b92508261405457614053614255565b5b828204905092915050565b600061406a8261413d565b91506140758361413d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140ae576140ad614226565b5b828202905092915050565b60006140c48261413d565b91506140cf8361413d565b9250828210156140e2576140e1614226565b5b828203905092915050565b60006140f88261411d565b9050919050565b600061410a8261411d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061415f8261413d565b9050919050565b60006141718261413d565b9050919050565b60005b8381101561419657808201518184015260208101905061417b565b838111156141a5576000848401525b50505050565b600060028204905060018216806141c357607f821691505b602082108114156141d7576141d6614284565b5b50919050565b60006141e88261413d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561421b5761421a614226565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61459a816140ed565b81146145a557600080fd5b50565b6145b1816140ff565b81146145bc57600080fd5b50565b6145c881614111565b81146145d357600080fd5b50565b6145df8161413d565b81146145ea57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209ae0c0e3933f09203302a8e90ea890f098dde582f46f1a9496cf341044300fcf64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610445578063dd62ed3e14610482578063e8078d94146104bf578063f2fde38b146104d6578063f37c4bce146104ff578063f9f92be41461052857610140565b80638da5cb5b1461036057806395d89b411461038b57806398d5a5cb146103b6578063a9059cbb146103df578063ab9562fe1461041c57610140565b8063313ce567116100fd578063313ce5671461023e57806354486ac3146102695780635c85974f1461029457806370a08231146102bd57806385b12c7c146102fa5780638a13792e1461032357610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631c815b49146101d857806323b872dd1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610551565b6040516101679190613d71565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190613851565b6105e3565b6040516101a49190613d56565b60405180910390f35b3480156101b957600080fd5b506101c2610601565b6040516101cf9190613ef3565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa919061378a565b610613565b005b34801561020d57600080fd5b5061022860048036038101906102239190613802565b610718565b6040516102359190613d56565b60405180910390f35b34801561024a57600080fd5b506102536107f1565b6040516102609190613f68565b60405180910390f35b34801561027557600080fd5b5061027e610808565b60405161028b9190613ef3565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b691906138b6565b61080e565b005b3480156102c957600080fd5b506102e460048036038101906102df919061370f565b6108fc565b6040516102f19190613ef3565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906138b6565b610945565b005b34801561032f57600080fd5b5061034a60048036038101906103459190613761565b6109f6565b6040516103579190613ef3565b60405180910390f35b34801561036c57600080fd5b50610375610b1f565b6040516103829190613bf0565b60405180910390f35b34801561039757600080fd5b506103a0610b48565b6040516103ad9190613d71565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d8919061370f565b610bda565b005b3480156103eb57600080fd5b5061040660048036038101906104019190613851565b610cca565b6040516104139190613d56565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e919061378a565b610ce8565b005b34801561045157600080fd5b5061046c6004803603810190610467919061370f565b610e24565b6040516104799190613d56565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a491906137c6565b610e7a565b6040516104b69190613ef3565b60405180910390f35b3480156104cb57600080fd5b506104d4610f01565b005b3480156104e257600080fd5b506104fd60048036038101906104f8919061370f565b611561565b005b34801561050b57600080fd5b506105266004803603810190610521919061370f565b6116b3565b005b34801561053457600080fd5b5061054f600480360381019061054a919061370f565b61186c565b005b606060098054610560906141ab565b80601f016020809104026020016040519081016040528092919081815260200182805461058c906141ab565b80156105d95780601f106105ae576101008083540402835291602001916105d9565b820191906000526020600020905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b60006105f76105f0611ac9565b8484611ad1565b6001905092915050565b600069d3c21bcecceda1000000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610652611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90613e53565b60405180910390fd5b6106b28282611c9c565b6000811115610714576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000610725848484611f9d565b6107e684610731611ac9565b6107e1856040518060600160405280602881526020016145ee60289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610797611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125349092919063ffffffff16565b611ad1565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084d611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90613e53565b60405180910390fd5b6108ba633b9aca00826119a690919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516108f19190613ef3565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610984611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190613e53565b60405180910390fd5b6109ed8142611a2190919063ffffffff16565b601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a38611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590613e53565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610b0c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b57906141ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610b83906141ab565b8015610bd05780601f10610ba557610100808354040283529160200191610bd0565b820191906000526020600020905b815481529060010190602001808311610bb357829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c19611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6690613e53565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cde610cd7611ac9565b8484611f9d565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d27611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490613e53565b60405180910390fd5b610daa600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e20600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c9c565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f40611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d90613e53565b60405180910390fd5b600f60009054906101000a900460ff1615610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90613db3565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061107c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000611ad1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190613738565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561115c57600080fd5b505afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190613738565b6040518363ffffffff1660e01b81526004016111b1929190613c0b565b602060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190613738565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061128c306108fc565b600080611297610b1f565b426040518863ffffffff1660e01b81526004016112b996959493929190613cf5565b6060604051808303818588803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130b9190613908565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113ad929190613ccc565b602060405180830381600087803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff919061388d565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ab57600080fd5b505afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e39190613738565b8769d3c21bcecceda10000006040518763ffffffff1660e01b815260040161151096959493929190613c6b565b600060405180830381600087803b15801561152a57600080fd5b505af115801561153e573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115a0611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed90613e53565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190613738565b73ffffffffffffffffffffffffffffffffffffffff16611773611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614806117e95750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117d1611ac9565b73ffffffffffffffffffffffffffffffffffffffff16145b611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613dd3565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890613e53565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061199e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612598565b905092915050565b6000808314156119b95760009050611a1b565b600082846119c7919061405f565b90508284826119d6919061402e565b14611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613e33565b60405180910390fd5b809150505b92915050565b6000808284611a309190613fd8565b905083811015611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613e13565b60405180910390fd5b8091505092915050565b6000611ac183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612534565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613eb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613df3565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c8f9190613ef3565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cdb611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2890613e53565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611ea257612904611d9683600854611a2190919063ffffffff16565b1115611da157600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611e3f91906140b9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9782600854611a2190919063ffffffff16565b600881905550611f98565b600060058281548110611ede577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611f1582611f0786600854611a2190919063ffffffff16565b611a7f90919063ffffffff16565b1115611f2057600080fd5b8260058381548110611f5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f9081611f8285600854611a2190919063ffffffff16565b611a7f90919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490613e93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490613d93565b60405180910390fd5b600081116120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613e73565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121645750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121ba5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121c357600080fd5b6121cd83836125fb565b80156121db5750601c544210155b1561249857601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161226193929190613c34565b602060405180830381600087803b15801561227b57600080fd5b505af115801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b3919061388d565b156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90613ed3565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161237493929190613c34565b602060405180830381600087803b15801561238e57600080fd5b505af11580156123a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c6919061388d565b15612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd90613ed3565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161246593929190613c34565b600060405180830381600087803b15801561247f57600080fd5b505af1158015612493573d6000803e3d6000fd5b505050505b6124a1826126ae565b156124bd57600e546124b2836108fc565b106124bc57600080fd5b5b60006124c98484612786565b1561251857601c544210156124dd57600080fd5b6124e78484612832565b15612501576124f461293d565b82111561250057600080fd5b5b61250c848484612992565b905061251784612b79565b5b61252484848484612baa565b61252e8484612dec565b50505050565b600083831115829061257c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125739190613d71565b60405180910390fd5b506000838561258b91906140b9565b9050809150509392505050565b600080831182906125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d69190613d71565b60405180910390fd5b50600083856125ee919061402e565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126a65750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561275c5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561277f575061277b62015180601c54611a2190919063ffffffff16565b4211155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128295750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128df5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129355750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061295560b4601c54611a2190919063ffffffff16565b42116129815761297a61019069d3c21bcecceda100000061195c90919063ffffffff16565b905061298f565b69d3c21bcecceda100000090505b90565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a3a5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a485780915050612b72565b612a88612a79612a56612f46565b612a6b601e548761195c90919063ffffffff16565b6119a690919063ffffffff16565b82611a2190919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af257600080fd5b505afa158015612b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2a91906138df565b601181905550612b6b612b5c601e54612b4e601154876119a690919063ffffffff16565b61195c90919063ffffffff16565b82611a2190919063ffffffff16565b9050809150505b9392505050565b612b8281612f50565b15612ba7576000612b92306108fc565b9050612b9d81612fc4565b612ba56132be565b505b50565b6000612bbf8284611a7f90919063ffffffff16565b9050612c1383601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7f90919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ca881601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3d82601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ddd9190613ef3565b60405180910390a35050505050565b612df68282612786565b15612f4257612e04826133b7565b15612e9b57600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612e649190613bf0565b600060405180830381600087803b158015612e7e57600080fd5b505af1158015612e92573d6000803e3d6000fd5b50505050612f41565b60006012541115612f4057600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612f05929190613ccc565b600060405180830381600087803b158015612f1f57600080fd5b505af1158015612f33573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000601d60009054906101000a900460ff16158015612fbd5750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613022577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130505781602001602082028036833780820191505090505b509050308160008151811061308e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561313057600080fd5b505afa158015613144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131689190613738565b816001815181106131a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061320930600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ad1565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161326d959493929190613f0e565b600060405180830381600087803b15801561328757600080fd5b505af115801561329b573d6000803e3d6000fd5b50505050506000601d60006101000a81548160ff02191690831515021790555050565b6000479050601b5481116132d257506133b5565b60006132e9601b5483611a7f90919063ffffffff16565b905060006132f5613411565b90506001811015613308575050506133b5565b6133128282613452565b6133398161332b601154856119a690919063ffffffff16565b61195c90919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156133a9573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009050613432613423612f46565b82611a2190919063ffffffff16565b905061344960115482611a2190919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561368c576000600582815481106134a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506000600683815481106134eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061353f8561353185896119a690919063ffffffff16565b61195c90919063ffffffff16565b90506001811115613676578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613590573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561367557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136429190613ef3565b600060405180830381600087803b15801561365c57600080fd5b505af1158015613670573d6000803e3d6000fd5b505050505b5b5050508080613684906141dd565b915050613459565b505050565b6000813590506136a081614591565b92915050565b6000815190506136b581614591565b92915050565b6000813590506136ca816145a8565b92915050565b6000815190506136df816145bf565b92915050565b6000813590506136f4816145d6565b92915050565b600081519050613709816145d6565b92915050565b60006020828403121561372157600080fd5b600061372f84828501613691565b91505092915050565b60006020828403121561374a57600080fd5b6000613758848285016136a6565b91505092915050565b60006020828403121561377357600080fd5b6000613781848285016136bb565b91505092915050565b6000806040838503121561379d57600080fd5b60006137ab858286016136bb565b92505060206137bc858286016136e5565b9150509250929050565b600080604083850312156137d957600080fd5b60006137e785828601613691565b92505060206137f885828601613691565b9150509250929050565b60008060006060848603121561381757600080fd5b600061382586828701613691565b935050602061383686828701613691565b9250506040613847868287016136e5565b9150509250925092565b6000806040838503121561386457600080fd5b600061387285828601613691565b9250506020613883858286016136e5565b9150509250929050565b60006020828403121561389f57600080fd5b60006138ad848285016136d0565b91505092915050565b6000602082840312156138c857600080fd5b60006138d6848285016136e5565b91505092915050565b6000602082840312156138f157600080fd5b60006138ff848285016136fa565b91505092915050565b60008060006060848603121561391d57600080fd5b600061392b868287016136fa565b935050602061393c868287016136fa565b925050604061394d868287016136fa565b9150509250925092565b6000613963838361396f565b60208301905092915050565b613978816140ed565b82525050565b613987816140ed565b82525050565b600061399882613f93565b6139a28185613fb6565b93506139ad83613f83565b8060005b838110156139de5781516139c58882613957565b97506139d083613fa9565b9250506001810190506139b1565b5085935050505092915050565b6139f481614111565b82525050565b613a0381614154565b82525050565b613a1281614166565b82525050565b6000613a2382613f9e565b613a2d8185613fc7565b9350613a3d818560208601614178565b613a46816142b3565b840191505092915050565b6000613a5e602383613fc7565b9150613a69826142c4565b604082019050919050565b6000613a81601883613fc7565b9150613a8c82614313565b602082019050919050565b6000613aa4600c83613fc7565b9150613aaf8261433c565b602082019050919050565b6000613ac7602283613fc7565b9150613ad282614365565b604082019050919050565b6000613aea601b83613fc7565b9150613af5826143b4565b602082019050919050565b6000613b0d602183613fc7565b9150613b18826143dd565b604082019050919050565b6000613b30602083613fc7565b9150613b3b8261442c565b602082019050919050565b6000613b53602983613fc7565b9150613b5e82614455565b604082019050919050565b6000613b76602583613fc7565b9150613b81826144a4565b604082019050919050565b6000613b99602483613fc7565b9150613ba4826144f3565b604082019050919050565b6000613bbc602683613fc7565b9150613bc782614542565b604082019050919050565b613bdb8161413d565b82525050565b613bea81614147565b82525050565b6000602082019050613c05600083018461397e565b92915050565b6000604082019050613c20600083018561397e565b613c2d602083018461397e565b9392505050565b6000606082019050613c49600083018661397e565b613c56602083018561397e565b613c63604083018461397e565b949350505050565b600060c082019050613c80600083018961397e565b613c8d6020830188613a09565b613c9a604083018761397e565b613ca7606083018661397e565b613cb46080830185613bd2565b613cc160a0830184613bd2565b979650505050505050565b6000604082019050613ce1600083018561397e565b613cee6020830184613bd2565b9392505050565b600060c082019050613d0a600083018961397e565b613d176020830188613bd2565b613d2460408301876139fa565b613d3160608301866139fa565b613d3e608083018561397e565b613d4b60a0830184613bd2565b979650505050505050565b6000602082019050613d6b60008301846139eb565b92915050565b60006020820190508181036000830152613d8b8184613a18565b905092915050565b60006020820190508181036000830152613dac81613a51565b9050919050565b60006020820190508181036000830152613dcc81613a74565b9050919050565b60006020820190508181036000830152613dec81613a97565b9050919050565b60006020820190508181036000830152613e0c81613aba565b9050919050565b60006020820190508181036000830152613e2c81613add565b9050919050565b60006020820190508181036000830152613e4c81613b00565b9050919050565b60006020820190508181036000830152613e6c81613b23565b9050919050565b60006020820190508181036000830152613e8c81613b46565b9050919050565b60006020820190508181036000830152613eac81613b69565b9050919050565b60006020820190508181036000830152613ecc81613b8c565b9050919050565b60006020820190508181036000830152613eec81613baf565b9050919050565b6000602082019050613f086000830184613bd2565b92915050565b600060a082019050613f236000830188613bd2565b613f3060208301876139fa565b8181036040830152613f42818661398d565b9050613f51606083018561397e565b613f5e6080830184613bd2565b9695505050505050565b6000602082019050613f7d6000830184613be1565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613fe38261413d565b9150613fee8361413d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561402357614022614226565b5b828201905092915050565b60006140398261413d565b91506140448361413d565b92508261405457614053614255565b5b828204905092915050565b600061406a8261413d565b91506140758361413d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140ae576140ad614226565b5b828202905092915050565b60006140c48261413d565b91506140cf8361413d565b9250828210156140e2576140e1614226565b5b828203905092915050565b60006140f88261411d565b9050919050565b600061410a8261411d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061415f8261413d565b9050919050565b60006141718261413d565b9050919050565b60005b8381101561419657808201518184015260208101905061417b565b838111156141a5576000848401525b50505050565b600060028204905060018216806141c357607f821691505b602082108114156141d7576141d6614284565b5b50919050565b60006141e88261413d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561421b5761421a614226565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61459a816140ed565b81146145a557600080fd5b50565b6145b1816140ff565b81146145bc57600080fd5b50565b6145c881614111565b81146145d357600080fd5b50565b6145df8161413d565b81146145ea57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209ae0c0e3933f09203302a8e90ea890f098dde582f46f1a9496cf341044300fcf64736f6c63430008040033

Deployed Bytecode Sourcemap

7419:11286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9609:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10448:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9883:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18377:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10619:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3634:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17856:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9989:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17738:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5373:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2758:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9699:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18275:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10117:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5559:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18050:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10294:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16834:898;;;;;;;;;;;;;:::i;:::-;;2844:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18604:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18176:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9609:84;9646:13;9679:6;9672:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9609:84;:::o;10448:165::-;10525:4;10542:41;10551:12;:10;:12::i;:::-;10565:8;10575:7;10542:8;:41::i;:::-;10601:4;10594:11;;10448:165;;;;:::o;9883:100::-;9936:7;7561:24;9956:19;;9883:100;:::o;18377:221::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18472:29:::1;18484:8;18494:6;18472:11;:29::i;:::-;18525:1;18516:6;:10;18512:79;;;18575:4;18543:19;:29;18563:8;18543:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18512:79;18377:221:::0;;:::o;10619:323::-;10720:4;10737:39;10747:7;10756:10;10768:7;10737:9;:39::i;:::-;10787:125;10796:7;10805:12;:10;:12::i;:::-;10819:92;10859:7;10819:92;;;;;;;;;;;;;;;;;:12;:21;10832:7;10819:21;;;;;;;;;;;;;;;:35;10841:12;:10;:12::i;:::-;10819:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10787:8;:125::i;:::-;10930:4;10923:11;;10619:323;;;;;:::o;9793:84::-;9834:5;9859:10;;;;;;;;;;;9852:17;;9793:84;:::o;3634:27::-;;;;:::o;17856:188::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17981:18:::1;17993:5;17981:7;:11;;:18;;;;:::i;:::-;17969:9;:30;;;;18015:21;18026:9;;18015:21;;;;;;:::i;:::-;;;;;;;;17856:188:::0;:::o;9989:122::-;10056:7;10083:10;:20;10094:8;10083:20;;;;;;;;;;;;;;;;10076:27;;9989:122;;;:::o;17738:112::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17815:27:::1;17835:6;17815:15;:19;;:27;;;;:::i;:::-;17802:10;:40;;;;17738:112:::0;:::o;5373:180::-;5461:7;3068;;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5481:9:::1;5493:8;:18;5502:8;5493:18;;;;;;;;;;;;;;;;5481:30;;5529:10;5540:4;5529:16;;;;;;;;;;;;;;;;;;;;;;;;5522:23;;;5373:180:::0;;;:::o;2758:80::-;2796:7;2823;;;;;;;;;;;2816:14;;2758:80;:::o;9699:88::-;9738:13;9771:8;9764:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9699:88;:::o;18275:96::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18358:5:::1;18340:11;:15;18352:2;18340:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18275:96:::0;:::o;10117:171::-;10197:4;10214:44;10224:12;:10;:12::i;:::-;10238:10;10250:7;10214:9;:44::i;:::-;10276:4;10269:11;;10117:171;;;;:::o;5559:253::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5664:28:::1;5676:12;;;;;;;;;;;5690:1;5664:11;:28::i;:::-;5718:8;5703:12;;:23;;;;;;;;;;;;;;;;;;5750:6;5737:10;:19;;;;5767:37;5779:12;;;;;;;;;;;5793:10;;5767:11;:37::i;:::-;5559:253:::0;;:::o;18050:120::-;18117:4;18141:11;:21;18153:8;18141:21;;;;;;;;;;;;;;;;;;;;;;;;;18134:28;;18050:120;;;:::o;10294:148::-;10377:7;10404:12;:20;10417:6;10404:20;;;;;;;;;;;;;;;:30;10425:8;10404:30;;;;;;;;;;;;;;;;10397:37;;10294:148;;;;:::o;16834:898::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16899:11:::1;;;;;;;;;;;16898:12;16890:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16949:19;16971:21;16949:43;;17003:35;17060:42;17003:100;;17134:16;17114:17;;:36;;;;;;;;;;;;;;;;;;17161:65;17178:4;17193:17;;;;;;;;;;;7561:24;17161:8;:65::i;:::-;17273:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17255:56;;;17320:4;17327:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17255:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17237:15;;:114;;;;;;;;;;;;;;;;;;17362:17;;;;;;;;;;;:33;;;17403:21;17434:4;17440:24;17458:4;17440:9;:24::i;:::-;17465:1;17467::::0;17469:7:::1;:5;:7::i;:::-;17477:15;17362:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17511:15;;;;;;;;;;;17504:31;;;17544:17;;;;;;;;;;;17564:14;17504:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17590:10;;;;;;;;;;;:15;;;17614:4;17621;17627:15;;;;;;;;;;;17644:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17669:11;7561:24;17590:105;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17720:4;17706:11;;:18;;;;;;;;;;;;;;;;;;3123:1;;16834:898::o:0;2844:162::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2960:8:::1;2930:39;;2951:7;::::0;::::1;;;;;;;;2930:39;;;;;;;;;;;;2990:8;2980:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;2844:162:::0;:::o;18604:98::-;9099:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9083:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9135:10;;;;;;;;;;;9119:26;;:12;:10;:12::i;:::-;:26;;;9083:62;9074:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18686:8:::1;18673:10;;:21;;;;;;;;;;;;;;;;;;18604:98:::0;:::o;18176:93::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18257:4:::1;18239:11;:15;18251:2;18239:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18176:93:::0;:::o;2110:132::-;2168:7;2195:39;2199:1;2202;2195:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2188:46;;2110:132;;;;:::o;1858:246::-;1916:7;1945:1;1940;:6;1936:47;;;1970:1;1963:8;;;;1936:47;1993:9;2009:1;2005;:5;;;;:::i;:::-;1993:17;;2038:1;2033;2029;:5;;;;:::i;:::-;:10;2021:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2095:1;2088:8;;;1858:246;;;;;:::o;1335:179::-;1393:7;1413:9;1429:1;1425;:5;;;;:::i;:::-;1413:17;;1454:1;1449;:6;;1441:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1505:1;1498:8;;;1335:179;;;;:::o;1520:136::-;1578:7;1605:43;1609:1;1612;1605:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1598:50;;1520:136;;;;:::o;533:98::-;586:7;613:10;606:17;;533:98;:::o;12231:347::-;12345:1;12327:20;;:6;:20;;;;12319:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12427:1;12407:22;;:8;:22;;;;12399:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12512:7;12479:12;:20;12492:6;12479:20;;;;;;;;;;;;;;;:30;12500:8;12479:30;;;;;;;;;;;;;;;:40;;;;12552:8;12535:35;;12544:6;12535:35;;;12562:7;12535:35;;;;;;:::i;:::-;;;;;;;;12231:347;;;:::o;4538:720::-;3068:7;;;;;;;;;;3052:23;;:12;:10;:12::i;:::-;:23;;;3044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4641:9:::1;4653:8;:18;4662:8;4653:18;;;;;;;;;;;;;;;;4641:30;;4694:1;4686:4;:9;4682:569;;;4748:5;4720:24;4737:6;4720:12;;:16;;:24;;;;:::i;:::-;:33;;4712:42;;;::::0;::::1;;4769:10;4785:6;4769:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4807:14;4827:8;4807:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4892:1;4872:10;:17;;;;:21;;;;:::i;:::-;4851:8;:18;4860:8;4851:18;;;;;;;;;;;;;;;:42;;;;4923:24;4940:6;4923:12;;:16;;:24;;;;:::i;:::-;4908:12;:39;;;;4682:569;;;5013:19;5036:10;5047:4;5036:16;;;;;;;;;;;;;;;;;;;;;;;;5013:39;;5120:5;5075:41;5104:11;5075:24;5092:6;5075:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5067:59;;;::::0;::::1;;5162:6;5143:10;5154:4;5143:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5198:41;5227:11;5198:24;5215:6;5198:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5183:12;:56;;;;4682:569;;3123:1;4538:720:::0;;:::o;12584:1489::-;12703:1;12684:21;;:7;:21;;;;12676:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12788:1;12766:24;;:10;:24;;;;12758:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12859:1;12849:7;:11;12841:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12926:11;:20;12938:7;12926:20;;;;;;;;;;;;;;;;;;;;;;;;;12925:21;:49;;;;;12951:11;:23;12963:10;12951:23;;;;;;;;;;;;;;;;;;;;;;;;;12950:24;12925:49;:76;;;;;12979:11;:22;12991:9;12979:22;;;;;;;;;;;;;;;;;;;;;;;;;12978:23;12925:76;12917:85;;;;;;13026:40;13046:7;13055:10;13026:19;:40::i;:::-;:73;;;;;13089:10;;13070:15;:29;;13026:73;13023:450;;;13125:7;;;;;;;;;;;:19;;;13145:10;13157:15;;;;;;;;;;;13174:9;13125:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13124:60;13116:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13293:7;;;;;;;;;;;:19;;;13313:7;13322:15;;;;;;;;;;;13339:9;13293:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13292:57;13284:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13408:7;;;;;;;;;;;:21;;;13430:7;13439:10;13451:9;13408:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13023:450;13497:25;13511:10;13497:13;:25::i;:::-;13494:89;;;13569:13;;13545:21;13555:10;13545:9;:21::i;:::-;:37;13537:46;;;;;;13494:89;13608:14;13641:28;13649:7;13658:10;13641:7;:28::i;:::-;13637:307;;;13713:10;;13694:15;:29;;13686:38;;;;;;13743:34;13757:7;13766:10;13743:13;:34::i;:::-;13739:88;;;13816:10;:8;:10::i;:::-;13805:7;:21;;13797:30;;;;;;13739:88;13865:39;13875:7;13884:10;13896:7;13865:9;:39::i;:::-;13856:48;;13919:13;13924:7;13919:4;:13::i;:::-;13637:307;13964:53;13980:7;13989:10;14001:7;14010:6;13964:15;:53::i;:::-;14028:40;14048:7;14057:10;14028:19;:40::i;:::-;12584:1489;;;;:::o;1662:190::-;1748:7;1781:1;1776;:6;;1784:12;1768:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1808:9;1824:1;1820;:5;;;;:::i;:::-;1808:17;;1843:1;1836:8;;;1662:190;;;;;:::o;2248:189::-;2334:7;2366:1;2362;:5;2369:12;2354:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2393:9;2409:1;2405;:5;;;;:::i;:::-;2393:17;;2428:1;2421:8;;;2248:189;;;;;:::o;11384:179::-;11472:4;11507:15;;;;;;;;;;;11496:26;;:7;:26;;;:59;;;;11540:15;;;;;;;;;;;11526:29;;:10;:29;;;11496:59;11489:66;;11384:179;;;;:::o;11795:217::-;11860:4;11898:15;;;;;;;;;;;11884:29;;:10;:29;;;;:73;;;;;11939:17;;;;;;;;;;;11917:40;;:10;:40;;;;11884:73;:120;;;;;11980:24;11995:8;11980:10;;:14;;:24;;;;:::i;:::-;11961:15;:43;;11884:120;11877:127;;11795:217;;;:::o;11204:174::-;11280:4;11306:19;:28;11326:7;11306:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11338:19;:31;11358:10;11338:31;;;;;;;;;;;;;;;;;;;;;;;;;11306:63;11304:66;11297:73;;11204:174;;;;:::o;11569:220::-;11651:4;11686:15;;;;;;;;;;;11675:26;;:7;:26;;;:70;;;;;11727:17;;;;;;;;;;;11705:40;;:10;:40;;;;11675:70;:106;;;;;11750:19;:31;11770:10;11750:31;;;;;;;;;;;;;;;;;;;;;;;;;11749:32;11675:106;11668:113;;11569:220;;;;:::o;12018:207::-;12060:7;12101:25;12116:9;12101:10;;:14;;:25;;;;:::i;:::-;12082:15;:44;12079:138;;12148:21;12165:3;7561:24;12148:16;;:21;;;;:::i;:::-;12141:28;;;;12079:138;7561:24;12198:19;;12018:207;;:::o;14921:459::-;15011:7;15031:12;15046:1;15031:16;;15062:19;:28;15082:7;15062:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15094:19;:31;15114:10;15094:31;;;;;;;;;;;;;;;;;;;;;;;;;15062:63;15058:107;;;15149:4;15142:11;;;;;15058:107;15182:48;15191:38;15213:15;:13;:15::i;:::-;15191:17;15203:4;;15191:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15182:4;:8;;:48;;;;:::i;:::-;15175:55;;15261:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15241:17;:41;;;;15300:50;15309:40;15344:4;;15309:30;15321:17;;15309:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15300:4;:8;;:50;;;;:::i;:::-;15293:57;;15368:4;15361:11;;;14921:459;;;;;;:::o;15386:234::-;15440:20;15452:7;15440:11;:20::i;:::-;15436:177;;;15477:21;15501:24;15519:4;15501:9;:24::i;:::-;15477:48;;15540:32;15558:13;15540:17;:32::i;:::-;15587:14;:12;:14::i;:::-;15436:177;;15386:234;:::o;14079:434::-;14193:18;14214:19;14226:6;14214:7;:11;;:19;;;;:::i;:::-;14193:40;;14266:32;14290:7;14266:10;:19;14277:7;14266:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14244:10;:19;14255:7;14244:19;;;;;;;;;;;;;;;:54;;;;14334:38;14361:10;14334;:22;14345:10;14334:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14309:10;:22;14320:10;14309:22;;;;;;;;;;;;;;;:63;;;;14411:37;14441:6;14411:10;:25;14430:4;14411:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14383:10;:25;14402:4;14383:25;;;;;;;;;;;;;;;:65;;;;14482:10;14464:41;;14473:7;14464:41;;;14494:10;14464:41;;;;;;:::i;:::-;;;;;;;;14079:434;;;;;:::o;14519:399::-;14608:28;14616:7;14625:10;14608:7;:28::i;:::-;14604:307;;;14657:15;14664:7;14657:6;:15::i;:::-;14653:247;;;14691:10;;;;;;;;;;;:24;;;14716:10;14691:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14653:247;;;14772:1;14751:18;;:22;14747:153;;;14794:10;;;;;;;;;;;:20;;;14815:7;14824:18;;14794:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14883:1;14862:18;:22;;;;14747:153;14653:247;14604:307;14519:399;;:::o;5264:103::-;5320:7;5347:12;;5340:19;;5264:103;:::o;10948:131::-;11008:4;11033:8;;;;;;;;;;;11032:9;:39;;;;;11056:15;;;;;;;;;;;11045:26;;:7;:26;;;;11032:39;11025:46;;10948:131;;;:::o;15626:482::-;8985:4;8974:8;;:15;;;;;;;;;;;;;;;;;;15701:22:::1;15740:1;15726:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15701:41;;15772:4;15753:5;15759:1;15753:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15799:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15788:5;15794:1;15788:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15834:60;15851:4;15866:17;;;;;;;;;;;15886:7;15834:8;:60::i;:::-;15905:17;;;;;;;;;;;:68;;;15988:7;16010:1;16026:5;16054:4;16074:15;15905:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9000:1;9023:5:::0;9012:8;;:16;;;;;;;;;;;;;;;;;;15626:482;:::o;16320:508::-;16363:12;16378:21;16363:36;;16422:12;;16414:4;:20;16410:46;;16449:7;;;16410:46;16480:15;16498:22;16507:12;;16498:4;:8;;:22;;;;:::i;:::-;16480:40;;16531:7;16541:20;:18;:20::i;:::-;16531:30;;16581:1;16576:2;:6;16572:32;;;16597:7;;;;;16572:32;16616:21;16625:7;16634:2;16616:8;:21::i;:::-;16671:38;16706:2;16671:30;16683:17;;16671:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16650:18;:59;;;;16720:22;;;;;;;;;;;:31;;:51;16752:18;;16720:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16799:21;16784:12;:36;;;;16320:508;;;;:::o;11085:113::-;11140:4;11175:15;;;;;;;;;;;11164:26;;:7;:26;;;11157:33;;11085:113;;;:::o;16114:200::-;16166:4;16183:9;16195:1;16183:13;;16214:25;16223:15;:13;:15::i;:::-;16214:4;:8;;:25;;;;:::i;:::-;16207:32;;16257:27;16266:17;;16257:4;:8;;:27;;;;:::i;:::-;16250:34;;16302:4;16295:11;;;16114:200;:::o;4050:482::-;4127:6;4136:1;4127:10;;4122:403;4143:10;:17;;;;4139:1;:21;4122:403;;;4182:14;4199:10;4210:1;4199:13;;;;;;;;;;;;;;;;;;;;;;;;4182:30;;4227:24;4254:14;4269:1;4254:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4227:44;;4286:15;4304:24;4325:2;4304:16;4313:6;4304:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4286:42;;4357:1;4347:7;:11;4343:171;;;4378:8;:17;;:26;4396:7;4378:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4438:12;;;;;;;;;;;4426:24;;:8;:24;;;4423:75;;;4473:8;;;;;;;;;;;:16;;;4490:7;4473:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:75;4343:171;4122:403;;;4162:3;;;;;:::i;:::-;;;;4122:403;;;;4050:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:262::-;3897:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:2;;;3962:1;3959;3952:12;3914:2;4005:1;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3976:117;3904:196;;;;:::o;4106:284::-;4176:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:2;;;4241:1;4238;4231:12;4193:2;4284:1;4309:64;4365:7;4356:6;4345:9;4341:22;4309:64;:::i;:::-;4299:74;;4255:128;4183:207;;;;:::o;4396:596::-;4484:6;4492;4500;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4608:1;4633:64;4689:7;4680:6;4669:9;4665:22;4633:64;:::i;:::-;4623:74;;4579:128;4746:2;4772:64;4828:7;4819:6;4808:9;4804:22;4772:64;:::i;:::-;4762:74;;4717:129;4885:2;4911:64;4967:7;4958:6;4947:9;4943:22;4911:64;:::i;:::-;4901:74;;4856:129;4507:485;;;;;:::o;4998:179::-;5067:10;5088:46;5130:3;5122:6;5088:46;:::i;:::-;5166:4;5161:3;5157:14;5143:28;;5078:99;;;;:::o;5183:108::-;5260:24;5278:5;5260:24;:::i;:::-;5255:3;5248:37;5238:53;;:::o;5297:118::-;5384:24;5402:5;5384:24;:::i;:::-;5379:3;5372:37;5362:53;;:::o;5451:732::-;5570:3;5599:54;5647:5;5599:54;:::i;:::-;5669:86;5748:6;5743:3;5669:86;:::i;:::-;5662:93;;5779:56;5829:5;5779:56;:::i;:::-;5858:7;5889:1;5874:284;5899:6;5896:1;5893:13;5874:284;;;5975:6;5969:13;6002:63;6061:3;6046:13;6002:63;:::i;:::-;5995:70;;6088:60;6141:6;6088:60;:::i;:::-;6078:70;;5934:224;5921:1;5918;5914:9;5909:14;;5874:284;;;5878:14;6174:3;6167:10;;5575:608;;;;;;;:::o;6189:109::-;6270:21;6285:5;6270:21;:::i;:::-;6265:3;6258:34;6248:50;;:::o;6304:147::-;6399:45;6438:5;6399:45;:::i;:::-;6394:3;6387:58;6377:74;;:::o;6457:153::-;6555:48;6597:5;6555:48;:::i;:::-;6550:3;6543:61;6533:77;;:::o;6616:364::-;6704:3;6732:39;6765:5;6732:39;:::i;:::-;6787:71;6851:6;6846:3;6787:71;:::i;:::-;6780:78;;6867:52;6912:6;6907:3;6900:4;6893:5;6889:16;6867:52;:::i;:::-;6944:29;6966:6;6944:29;:::i;:::-;6939:3;6935:39;6928:46;;6708:272;;;;;:::o;6986:366::-;7128:3;7149:67;7213:2;7208:3;7149:67;:::i;:::-;7142:74;;7225:93;7314:3;7225:93;:::i;:::-;7343:2;7338:3;7334:12;7327:19;;7132:220;;;:::o;7358:366::-;7500:3;7521:67;7585:2;7580:3;7521:67;:::i;:::-;7514:74;;7597:93;7686:3;7597:93;:::i;:::-;7715:2;7710:3;7706:12;7699:19;;7504:220;;;:::o;7730:366::-;7872:3;7893:67;7957:2;7952:3;7893:67;:::i;:::-;7886:74;;7969:93;8058:3;7969:93;:::i;:::-;8087:2;8082:3;8078:12;8071:19;;7876:220;;;:::o;8102:366::-;8244:3;8265:67;8329:2;8324:3;8265:67;:::i;:::-;8258:74;;8341:93;8430:3;8341:93;:::i;:::-;8459:2;8454:3;8450:12;8443:19;;8248:220;;;:::o;8474:366::-;8616:3;8637:67;8701:2;8696:3;8637:67;:::i;:::-;8630:74;;8713:93;8802:3;8713:93;:::i;:::-;8831:2;8826:3;8822:12;8815:19;;8620:220;;;:::o;8846:366::-;8988:3;9009:67;9073:2;9068:3;9009:67;:::i;:::-;9002:74;;9085:93;9174:3;9085:93;:::i;:::-;9203:2;9198:3;9194:12;9187:19;;8992:220;;;:::o;9218:366::-;9360:3;9381:67;9445:2;9440:3;9381:67;:::i;:::-;9374:74;;9457:93;9546:3;9457:93;:::i;:::-;9575:2;9570:3;9566:12;9559:19;;9364:220;;;:::o;9590:366::-;9732:3;9753:67;9817:2;9812:3;9753:67;:::i;:::-;9746:74;;9829:93;9918:3;9829:93;:::i;:::-;9947:2;9942:3;9938:12;9931:19;;9736:220;;;:::o;9962:366::-;10104:3;10125:67;10189:2;10184:3;10125:67;:::i;:::-;10118:74;;10201:93;10290:3;10201:93;:::i;:::-;10319:2;10314:3;10310:12;10303:19;;10108:220;;;:::o;10334:366::-;10476:3;10497:67;10561:2;10556:3;10497:67;:::i;:::-;10490:74;;10573:93;10662:3;10573:93;:::i;:::-;10691:2;10686:3;10682:12;10675:19;;10480:220;;;:::o;10706:366::-;10848:3;10869:67;10933:2;10928:3;10869:67;:::i;:::-;10862:74;;10945:93;11034:3;10945:93;:::i;:::-;11063:2;11058:3;11054:12;11047:19;;10852:220;;;:::o;11078:118::-;11165:24;11183:5;11165:24;:::i;:::-;11160:3;11153:37;11143:53;;:::o;11202:112::-;11285:22;11301:5;11285:22;:::i;:::-;11280:3;11273:35;11263:51;;:::o;11320:222::-;11413:4;11451:2;11440:9;11436:18;11428:26;;11464:71;11532:1;11521:9;11517:17;11508:6;11464:71;:::i;:::-;11418:124;;;;:::o;11548:332::-;11669:4;11707:2;11696:9;11692:18;11684:26;;11720:71;11788:1;11777:9;11773:17;11764:6;11720:71;:::i;:::-;11801:72;11869:2;11858:9;11854:18;11845:6;11801:72;:::i;:::-;11674:206;;;;;:::o;11886:442::-;12035:4;12073:2;12062:9;12058:18;12050:26;;12086:71;12154:1;12143:9;12139:17;12130:6;12086:71;:::i;:::-;12167:72;12235:2;12224:9;12220:18;12211:6;12167:72;:::i;:::-;12249;12317:2;12306:9;12302:18;12293:6;12249:72;:::i;:::-;12040:288;;;;;;:::o;12334:797::-;12578:4;12616:3;12605:9;12601:19;12593:27;;12630:71;12698:1;12687:9;12683:17;12674:6;12630:71;:::i;:::-;12711:83;12790:2;12779:9;12775:18;12766:6;12711:83;:::i;:::-;12804:72;12872:2;12861:9;12857:18;12848:6;12804:72;:::i;:::-;12886;12954:2;12943:9;12939:18;12930:6;12886:72;:::i;:::-;12968:73;13036:3;13025:9;13021:19;13012:6;12968:73;:::i;:::-;13051;13119:3;13108:9;13104:19;13095:6;13051:73;:::i;:::-;12583:548;;;;;;;;;:::o;13137:332::-;13258:4;13296:2;13285:9;13281:18;13273:26;;13309:71;13377:1;13366:9;13362:17;13353:6;13309:71;:::i;:::-;13390:72;13458:2;13447:9;13443:18;13434:6;13390:72;:::i;:::-;13263:206;;;;;:::o;13475:807::-;13724:4;13762:3;13751:9;13747:19;13739:27;;13776:71;13844:1;13833:9;13829:17;13820:6;13776:71;:::i;:::-;13857:72;13925:2;13914:9;13910:18;13901:6;13857:72;:::i;:::-;13939:80;14015:2;14004:9;14000:18;13991:6;13939:80;:::i;:::-;14029;14105:2;14094:9;14090:18;14081:6;14029:80;:::i;:::-;14119:73;14187:3;14176:9;14172:19;14163:6;14119:73;:::i;:::-;14202;14270:3;14259:9;14255:19;14246:6;14202:73;:::i;:::-;13729:553;;;;;;;;;:::o;14288:210::-;14375:4;14413:2;14402:9;14398:18;14390:26;;14426:65;14488:1;14477:9;14473:17;14464:6;14426:65;:::i;:::-;14380:118;;;;:::o;14504:313::-;14617:4;14655:2;14644:9;14640:18;14632:26;;14704:9;14698:4;14694:20;14690:1;14679:9;14675:17;14668:47;14732:78;14805:4;14796:6;14732:78;:::i;:::-;14724:86;;14622:195;;;;:::o;14823:419::-;14989:4;15027:2;15016:9;15012:18;15004:26;;15076:9;15070:4;15066:20;15062:1;15051:9;15047:17;15040:47;15104:131;15230:4;15104:131;:::i;:::-;15096:139;;14994:248;;;:::o;15248:419::-;15414:4;15452:2;15441:9;15437:18;15429:26;;15501:9;15495:4;15491:20;15487:1;15476:9;15472:17;15465:47;15529:131;15655:4;15529:131;:::i;:::-;15521:139;;15419:248;;;:::o;15673:419::-;15839:4;15877:2;15866:9;15862:18;15854:26;;15926:9;15920:4;15916:20;15912:1;15901:9;15897:17;15890:47;15954:131;16080:4;15954:131;:::i;:::-;15946:139;;15844:248;;;:::o;16098:419::-;16264:4;16302:2;16291:9;16287:18;16279:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16379:131;16505:4;16379:131;:::i;:::-;16371:139;;16269:248;;;:::o;16523:419::-;16689:4;16727:2;16716:9;16712:18;16704:26;;16776:9;16770:4;16766:20;16762:1;16751:9;16747:17;16740:47;16804:131;16930:4;16804:131;:::i;:::-;16796:139;;16694:248;;;:::o;16948:419::-;17114:4;17152:2;17141:9;17137:18;17129:26;;17201:9;17195:4;17191:20;17187:1;17176:9;17172:17;17165:47;17229:131;17355:4;17229:131;:::i;:::-;17221:139;;17119:248;;;:::o;17373:419::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17544:248;;;:::o;17798:419::-;17964:4;18002:2;17991:9;17987:18;17979:26;;18051:9;18045:4;18041:20;18037:1;18026:9;18022:17;18015:47;18079:131;18205:4;18079:131;:::i;:::-;18071:139;;17969:248;;;:::o;18223:419::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18394:248;;;:::o;18648:419::-;18814:4;18852:2;18841:9;18837:18;18829:26;;18901:9;18895:4;18891:20;18887:1;18876:9;18872:17;18865:47;18929:131;19055:4;18929:131;:::i;:::-;18921:139;;18819:248;;;:::o;19073:419::-;19239:4;19277:2;19266:9;19262:18;19254:26;;19326:9;19320:4;19316:20;19312:1;19301:9;19297:17;19290:47;19354:131;19480:4;19354:131;:::i;:::-;19346:139;;19244:248;;;:::o;19498:222::-;19591:4;19629:2;19618:9;19614:18;19606:26;;19642:71;19710:1;19699:9;19695:17;19686:6;19642:71;:::i;:::-;19596:124;;;;:::o;19726:831::-;19989:4;20027:3;20016:9;20012:19;20004:27;;20041:71;20109:1;20098:9;20094:17;20085:6;20041:71;:::i;:::-;20122:80;20198:2;20187:9;20183:18;20174:6;20122:80;:::i;:::-;20249:9;20243:4;20239:20;20234:2;20223:9;20219:18;20212:48;20277:108;20380:4;20371:6;20277:108;:::i;:::-;20269:116;;20395:72;20463:2;20452:9;20448:18;20439:6;20395:72;:::i;:::-;20477:73;20545:3;20534:9;20530:19;20521:6;20477:73;:::i;:::-;19994:563;;;;;;;;:::o;20563:214::-;20652:4;20690:2;20679:9;20675:18;20667:26;;20703:67;20767:1;20756:9;20752:17;20743:6;20703:67;:::i;:::-;20657:120;;;;:::o;20783:132::-;20850:4;20873:3;20865:11;;20903:4;20898:3;20894:14;20886:22;;20855:60;;;:::o;20921:114::-;20988:6;21022:5;21016:12;21006:22;;20995:40;;;:::o;21041:99::-;21093:6;21127:5;21121:12;21111:22;;21100:40;;;:::o;21146:113::-;21216:4;21248;21243:3;21239:14;21231:22;;21221:38;;;:::o;21265:184::-;21364:11;21398:6;21393:3;21386:19;21438:4;21433:3;21429:14;21414:29;;21376:73;;;;:::o;21455:169::-;21539:11;21573:6;21568:3;21561:19;21613:4;21608:3;21604:14;21589:29;;21551:73;;;;:::o;21630:305::-;21670:3;21689:20;21707:1;21689:20;:::i;:::-;21684:25;;21723:20;21741:1;21723:20;:::i;:::-;21718:25;;21877:1;21809:66;21805:74;21802:1;21799:81;21796:2;;;21883:18;;:::i;:::-;21796:2;21927:1;21924;21920:9;21913:16;;21674:261;;;;:::o;21941:185::-;21981:1;21998:20;22016:1;21998:20;:::i;:::-;21993:25;;22032:20;22050:1;22032:20;:::i;:::-;22027:25;;22071:1;22061:2;;22076:18;;:::i;:::-;22061:2;22118:1;22115;22111:9;22106:14;;21983:143;;;;:::o;22132:348::-;22172:7;22195:20;22213:1;22195:20;:::i;:::-;22190:25;;22229:20;22247:1;22229:20;:::i;:::-;22224:25;;22417:1;22349:66;22345:74;22342:1;22339:81;22334:1;22327:9;22320:17;22316:105;22313:2;;;22424:18;;:::i;:::-;22313:2;22472:1;22469;22465:9;22454:20;;22180:300;;;;:::o;22486:191::-;22526:4;22546:20;22564:1;22546:20;:::i;:::-;22541:25;;22580:20;22598:1;22580:20;:::i;:::-;22575:25;;22619:1;22616;22613:8;22610:2;;;22624:18;;:::i;:::-;22610:2;22669:1;22666;22662:9;22654:17;;22531:146;;;;:::o;22683:96::-;22720:7;22749:24;22767:5;22749:24;:::i;:::-;22738:35;;22728:51;;;:::o;22785:104::-;22830:7;22859:24;22877:5;22859:24;:::i;:::-;22848:35;;22838:51;;;:::o;22895:90::-;22929:7;22972:5;22965:13;22958:21;22947:32;;22937:48;;;:::o;22991:126::-;23028:7;23068:42;23061:5;23057:54;23046:65;;23036:81;;;:::o;23123:77::-;23160:7;23189:5;23178:16;;23168:32;;;:::o;23206:86::-;23241:7;23281:4;23274:5;23270:16;23259:27;;23249:43;;;:::o;23298:121::-;23356:9;23389:24;23407:5;23389:24;:::i;:::-;23376:37;;23366:53;;;:::o;23425:124::-;23486:9;23519:24;23537:5;23519:24;:::i;:::-;23506:37;;23496:53;;;:::o;23555:307::-;23623:1;23633:113;23647:6;23644:1;23641:13;23633:113;;;23732:1;23727:3;23723:11;23717:18;23713:1;23708:3;23704:11;23697:39;23669:2;23666:1;23662:10;23657:15;;23633:113;;;23764:6;23761:1;23758:13;23755:2;;;23844:1;23835:6;23830:3;23826:16;23819:27;23755:2;23604:258;;;;:::o;23868:320::-;23912:6;23949:1;23943:4;23939:12;23929:22;;23996:1;23990:4;23986:12;24017:18;24007:2;;24073:4;24065:6;24061:17;24051:27;;24007:2;24135;24127:6;24124:14;24104:18;24101:38;24098:2;;;24154:18;;:::i;:::-;24098:2;23919:269;;;;:::o;24194:233::-;24233:3;24256:24;24274:5;24256:24;:::i;:::-;24247:33;;24302:66;24295:5;24292:77;24289:2;;;24372:18;;:::i;:::-;24289:2;24419:1;24412:5;24408:13;24401:20;;24237:190;;;:::o;24433:180::-;24481:77;24478:1;24471:88;24578:4;24575:1;24568:15;24602:4;24599:1;24592:15;24619:180;24667:77;24664:1;24657:88;24764:4;24761:1;24754:15;24788:4;24785:1;24778:15;24805:180;24853:77;24850:1;24843:88;24950:4;24947:1;24940:15;24974:4;24971:1;24964:15;24991:102;25032:6;25083:2;25079:7;25074:2;25067:5;25063:14;25059:28;25049:38;;25039:54;;;:::o;25099:222::-;25239:34;25235:1;25227:6;25223:14;25216:58;25308:5;25303:2;25295:6;25291:15;25284:30;25205:116;:::o;25327:174::-;25467:26;25463:1;25455:6;25451:14;25444:50;25433:68;:::o;25507:162::-;25647:14;25643:1;25635:6;25631:14;25624:38;25613:56;:::o;25675:221::-;25815:34;25811:1;25803:6;25799:14;25792:58;25884:4;25879:2;25871:6;25867:15;25860:29;25781:115;:::o;25902:177::-;26042:29;26038:1;26030:6;26026:14;26019:53;26008:71;:::o;26085:220::-;26225:34;26221:1;26213:6;26209:14;26202:58;26294:3;26289:2;26281:6;26277:15;26270:28;26191:114;:::o;26311:182::-;26451:34;26447:1;26439:6;26435:14;26428:58;26417:76;:::o;26499:228::-;26639:34;26635:1;26627:6;26623:14;26616:58;26708:11;26703:2;26695:6;26691:15;26684:36;26605:122;:::o;26733:224::-;26873:34;26869:1;26861:6;26857:14;26850:58;26942:7;26937:2;26929:6;26925:15;26918:32;26839:118;:::o;26963:223::-;27103:34;27099:1;27091:6;27087:14;27080:58;27172:6;27167:2;27159:6;27155:15;27148:31;27069:117;:::o;27192:225::-;27332:34;27328:1;27320:6;27316:14;27309:58;27401:8;27396:2;27388:6;27384:15;27377:33;27298:119;:::o;27423:122::-;27496:24;27514:5;27496:24;:::i;:::-;27489:5;27486:35;27476:2;;27535:1;27532;27525:12;27476:2;27466:79;:::o;27551:138::-;27632:32;27658:5;27632:32;:::i;:::-;27625:5;27622:43;27612:2;;27679:1;27676;27669:12;27612:2;27602:87;:::o;27695:116::-;27765:21;27780:5;27765:21;:::i;:::-;27758:5;27755:32;27745:2;;27801:1;27798;27791:12;27745:2;27735:76;:::o;27817:122::-;27890:24;27908:5;27890:24;:::i;:::-;27883:5;27880:35;27870:2;;27929:1;27926;27919:12;27870:2;27860:79;:::o

Swarm Source

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