ETH Price: $3,094.40 (-1.27%)

Token

Coin Merge (CMERGE)
 

Overview

Max Total Supply

5,000,000,000 CMERGE

Holders

1,185

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.02918 CMERGE

Value
$0.00
0x85f04e95caaca09c2923b967eee607dd55c0c331
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Coin Merge token contract has migrated to 0xC48b4814fAEd1CCc885DD6fDe62A6474AeCbb19a

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CoinMerge

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-16
*/

/*
    *Website:  https://www.coinmerge.io
    *Telegram: https://t.me/CoinMergeMain
    *Twitter: https://twitter.com/coinmerge?s=21
    *
    *CoinMerge is the revolutionary new token and platform that not only rewards holders in Ethereum just for holding, 
    * but is also building and expanding on a platform that combines all of the best charts and data from sites like DexTools 
    * with all of the Community chat features offered by programs like Telegram, into a single, seamless, easy to use platform.
    *
    * Using FTPEthReflect
    *   - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH
    *
    * Withdraw at https://app.fairtokenproject.com
    *   - Recommended wallet is Metamask. Support for additional wallets coming soon!
    *
    * ****USING FTPAntiBot**** 
    * 
    * Visit FairTokenProject.com to learn how to use FTPAntiBot and FTP Eth Redist with your project
    */ 

    // 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) internal onlyOwner() {
            emit OwnershipTransferred(m_Owner, _address);
            m_Owner = _address;
        }

        modifier onlyOwner() {
            require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
            _;
        }                                                                                           // You will notice there is no renounceOwnership() This is an unsafe and unnecessary practice
    }                                                                                               // By renouncing ownership you lose control over your coin and open it up to potential attacks 
                                                                                                    // This practice only came about because of the lack of understanding on how contracts work
    interface IUniswapV2Factory {                                                                   // We advise not using a renounceOwnership() function. You can look up hacks of address(0) contracts.
        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 {                                                                          // Here we create the interface to interact with AntiBot
        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 CoinMerge is Context, IERC20, Ownable {
        using SafeMath for uint256;
        
        uint256 private constant TOTAL_SUPPLY = 5000000000 * 10**9;
        string private m_Name = "Coin Merge";
        string private m_Symbol = "CMERGE";
        uint8 private m_Decimals = 9;
        
        uint256 private m_TxLimit  = 24000000 * 10**9;
        uint256 private m_WalletLimit = m_TxLimit;
        uint256 private m_TXRelease;
        uint256 private m_PreviousBalance;
        
        uint8 private m_DevFee = 5;    
        uint8 private m_RedistFee = 5;

        address payable private m_ProjectWallet;
        address private m_UniswapV2Pair;
        
        bool private m_Launched = false;
        bool private m_IsSwap = false;
        bool private m_Liquidity = false;
        
        mapping (address => bool) private m_Banned;
        mapping (address => bool) private m_TeamMember;
        mapping (address => bool) private m_ExcludedAddresses;
        mapping (address => uint256) private m_Balances; 
        mapping (address => uint256) private m_IncomingEth;
        mapping (address => uint256) private m_TeamBalance;
        mapping (address => mapping (address => uint256)) private m_Allowances;

        // ETH REFLECT
        FTPEthReflect private EthReflect;
        address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB);
        uint256 m_EthReflectAlloc;
        uint256 m_EthReflectAmount;
        address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD);
        
        FTPExternal private External;
        FTPAntiBot private AntiBot;
        IUniswapV2Router02 private m_UniswapV2Router;

        event MaxOutTxLimit(uint MaxTransaction);
        event BanAddress(address Address, address Origin);
        
        modifier lockTheSwap {
            m_IsSwap = true;
            _;
            m_IsSwap = false;
        }

        receive() external payable {
            m_IncomingEth[msg.sender] += msg.value;
        }

        constructor () {
            AntiBot = FTPAntiBot(0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3);       
            External = FTPExternal(m_ExternalServiceAddress);
            EthReflect = FTPEthReflect(m_EthReflectSvcAddress);

            m_Balances[address(this)] = TOTAL_SUPPLY;        
            m_ExcludedAddresses[address(this)] = true;
            m_ExcludedAddresses[owner()] = true;
            m_TeamBalance[0xbAAAaEb86551aB8f0C04Bb45C1BC10167E9377c7] = 0;
            m_TeamBalance[0xf101308187ef98d1acFa34b774CF3334Ec7279e4] = 0;
            m_TeamBalance[0x16E7451D072eA28f2952eefCd7cC4A30B1F6A557] = 0;
            m_TeamMember[0xbAAAaEb86551aB8f0C04Bb45C1BC10167E9377c7] = true;
            m_TeamMember[0xf101308187ef98d1acFa34b774CF3334Ec7279e4] = true;
            m_TeamMember[0x16E7451D072eA28f2952eefCd7cC4A30B1F6A557] = true;
            emit Transfer(address(0), address(this), TOTAL_SUPPLY);
        }

    // ####################
    // ##### DEFAULTS #####
    // ####################

        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;
        }

    // #####################
    // ##### OVERRIDES #####
    // #####################

        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;
        }

    // ####################
    // ##### PRIVATES #####
    // ####################

        function _readyToTax(address _sender) private view returns(bool) {
            return !m_IsSwap && _sender != m_UniswapV2Pair;
        }

        function _pleb(address _sender, address _recipient) private view returns(bool) {
            return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
        }

        function _isTrade(address _sender, address _recipient) private view returns(bool) {
            return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
        }

        function _senderNotUni(address _sender) private view returns(bool) {
            return _sender != m_UniswapV2Pair;
        }
        function _isBuy(address _sender) private view returns (bool) {
            return _sender == m_UniswapV2Pair;
        }

        function _txRestricted(address _sender, address _recipient) private view returns(bool) {
            return _sender == m_UniswapV2Pair && !m_ExcludedAddresses[_recipient];
        }

        function _walletCapped(address _recipient) private view returns(bool) {
            return _recipient != m_UniswapV2Pair && !m_ExcludedAddresses[_recipient];
        }

        function _checkTX() private view returns(uint256) {
            if(block.timestamp <= m_TXRelease)
                return m_TxLimit;
            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(_amount > 0, "Transfer amount must be greater than zero");
            require(!m_Banned[_sender] && !m_Banned[_recipient] && !m_Banned[tx.origin], "You were manually banned");        
            
            uint256 _devFee = _setFee(_sender, _recipient, m_DevFee);
            uint256 _redistFee = _setFee(_sender, _recipient, m_RedistFee);
            uint256 _totalFee = _devFee.add(_redistFee);
            uint256 _feeAmount = _amount.div(100).mul(_totalFee);
            uint256 _newAmount = _amount.sub(_feeAmount);        
        
            if(_isTrade(_sender, _recipient)){
                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).add(_amount) <= _checkTX());                                     
                
            if (_pleb(_sender, _recipient)) {
                require(m_Launched);
                if (_txRestricted(_sender, _recipient)) 
                    require(_amount <= _checkTX());
                _tax(_sender);                                                                      
            }
            
            m_Balances[_sender] = m_Balances[_sender].sub(_amount);
            m_Balances[_recipient] = m_Balances[_recipient].add(_newAmount);
            m_Balances[address(this)] = m_Balances[address(this)].add(_feeAmount);
            
            emit Transfer(_sender, _recipient, _newAmount);        
            _trackEthReflection(_sender, _recipient);
        }

        function _trackEthReflection(address _sender, address _recipient) private {
            if (_pleb(_sender, _recipient)) {
                if (_isBuy(_sender))
                    EthReflect.trackPurchase(_recipient);
                else if (m_EthReflectAmount > 0){
                    EthReflect.trackSell(_sender, m_EthReflectAmount);
                    m_EthReflectAmount = 0;
                }
            }
        }
        
        function _setFee(address _sender, address _recipient,uint256 _amount) private view returns(uint256){
            bool _takeFee = !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
            uint256 _fee = _amount;
            if(!_takeFee)
                _fee = 0;
            return _fee;
        }

        function _tax(address _sender) private {
            uint256 _tokenBalance = balanceOf(address(this));
            if (_readyToTax(_sender)) {
                _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 _disperseEth() private {
            uint256 _currentAmount = m_IncomingEth[address(m_UniswapV2Router)].sub(m_PreviousBalance);
            uint256 _redistBalance = _currentAmount.div(2);
            uint256 _ethBalance = _currentAmount.sub(_redistBalance);                                                                             
            uint256 _devBalance = _ethBalance.mul(1000).div(3333);               
            uint256 _teamBalance = _ethBalance.mul(10).div(126).add(_ethBalance.div(10)).add(_ethBalance.mul(100).div(1666));
            uint256 _projectBalance = _ethBalance.sub(_teamBalance).sub(_devBalance);
            m_EthReflectAmount = _redistBalance;
            m_TeamBalance[0xbAAAaEb86551aB8f0C04Bb45C1BC10167E9377c7] = m_TeamBalance[0xbAAAaEb86551aB8f0C04Bb45C1BC10167E9377c7].add(_ethBalance.mul(10).div(126));
            m_TeamBalance[0xf101308187ef98d1acFa34b774CF3334Ec7279e4] = m_TeamBalance[0xf101308187ef98d1acFa34b774CF3334Ec7279e4].add(_ethBalance.div(10));
            m_TeamBalance[0x16E7451D072eA28f2952eefCd7cC4A30B1F6A557] = m_TeamBalance[0x16E7451D072eA28f2952eefCd7cC4A30B1F6A557].add(_ethBalance.mul(100).div(1666));



            payable(address(External)).transfer(_devBalance);
            External.deposit(_devBalance);
            payable(address(EthReflect)).transfer(_redistBalance); 
        // m_ProjectWallet.transfer(_ethBalance.mul(1000).div(2173));                     
            m_ProjectWallet.transfer(_projectBalance);                           // transfer remainder instead, incase rounding is off 
            
            m_PreviousBalance = m_IncomingEth[address(m_UniswapV2Router)];                                                   
        }                                                                                           
        
    // ####################
    // ##### EXTERNAL #####
    // ####################

    // ######################
    // ##### ONLY OWNER #####
    // ######################

        function addLiquidity() external onlyOwner() {
            require(!m_Liquidity,"trading is already open");
            uint256 _ethBalance = address(this).balance;
            m_UniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
            m_UniswapV2Pair = IUniswapV2Factory(m_UniswapV2Router.factory()).createPair(address(this), m_UniswapV2Router.WETH());
            m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
            EthReflect.init(address(this), 5000, m_UniswapV2Pair, m_UniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY);
            IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
            m_Liquidity = true;        
        }

        function launch() external onlyOwner() {
            m_Launched = true;
            m_TXRelease = block.timestamp + (7 minutes);
        }

        function transferOwnership(address _address) external onlyOwner() {
            m_ExcludedAddresses[owner()] = false;
            _transferOwnership(_address);        
            m_ExcludedAddresses[_address] = true;
        }

        function addTaxWhitelist(address _address) external onlyOwner() {
            m_ExcludedAddresses[_address] = true;
        }

        function removeTaxWhitelist(address _address) external onlyOwner() {
            m_ExcludedAddresses[_address] = false;
        }

        function setTxLimit(uint256 _amount) external onlyOwner() {                                            
            m_TxLimit = _amount.mul(10**9);
            emit MaxOutTxLimit(m_TxLimit);
        }

        function setWalletLimit(uint256 _amount) external onlyOwner() {
            m_WalletLimit = _amount.mul(10**9);
        }
        
        function manualBan(address _a) external onlyOwner() {
            m_Banned[_a] = true;
        }
        
        function removeBan(address _a) external onlyOwner() {
            m_Banned[_a] = false;
        }

        function teamWithdraw() external {
            require(m_TeamMember[_msgSender()]);
            require(m_TeamBalance[_msgSender()] > 0);
            payable(_msgSender()).transfer(m_TeamBalance[_msgSender()]);
            m_TeamBalance[_msgSender()] = 0;
        }
        
        function setProjectWallet(address payable _address) external onlyOwner() {                  
            m_ProjectWallet = _address;    
            m_ExcludedAddresses[_address] = true;
        }
    }

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":false,"internalType":"address","name":"Address","type":"address"},{"indexed":false,"internalType":"address","name":"Origin","type":"address"}],"name":"BanAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxTransaction","type":"uint256"}],"name":"MaxOutTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"manualBan","outputs":[],"stateMutability":"nonpayable","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":"removeBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600a81526020017f436f696e204d65726765000000000000000000000000000000000000000000008152506001908051906020019062000051929190620007da565b506040518060400160405280600681526020017f434d455247450000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620007da565b506009600360006101000a81548160ff021916908360ff160217905550665543df729c00006004556004546005556005600860006101000a81548160ff021916908360ff1602179055506005600860016101000a81548160ff021916908360ff1602179055506000600960146101000a81548160ff0219169083151502179055506000600960156101000a81548160ff0219169083151502179055506000600960166101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731fc90cba64722d5e70af16783a2dfacfd19f3bed601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200020d57600080fd5b50600062000220620007a960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550674563918244f40000600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000493620007b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f600073baaaaeb86551ab8f0c04bb45c1bc10167e9377c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f600073f101308187ef98d1acfa34b774cf3334ec7279e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60007316e7451d072ea28f2952eefcd7cc4a30b1f6a55773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b600073baaaaeb86551ab8f0c04bb45c1bc10167e9377c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600073f101308187ef98d1acfa34b774cf3334ec7279e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60007316e7451d072ea28f2952eefcd7cc4a30b1f6a55773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef674563918244f400006040516200079b91906200089b565b60405180910390a362000927565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620007e890620008c2565b90600052602060002090601f0160209004810192826200080c576000855562000858565b82601f106200082757805160ff191683800117855562000858565b8280016001018555821562000858579182015b82811115620008575782518255916020019190600101906200083a565b5b5090506200086791906200086b565b5090565b5b80821115620008865760008160009055506001016200086c565b5090565b6200089581620008b8565b82525050565b6000602082019050620008b260008301846200088a565b92915050565b6000819050919050565b60006002820490506001821680620008db57607f821691505b60208210811415620008f257620008f1620008f8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6144c180620009376000396000f3fe60806040526004361061012e5760003560e01c80638a780447116100ab578063d0040d701161006f578063d0040d701461042d578063dd62ed3e14610456578063e02ed01814610493578063e8078d94146104bc578063f1d5f517146104d3578063f2fde38b146104fc5761018b565b80638a7804471461035a5780638da5cb5b1461038357806395d89b41146103ae578063a9059cbb146103d9578063cfbb7d36146104165761018b565b806323b872dd116100f257806323b872dd14610263578063313ce567146102a05780633908cfd2146102cb5780635c85974f146102f457806370a082311461031d5761018b565b806301339c211461019057806306fdde03146101a7578063095ea7b3146101d257806318160ddd1461020f578063228e7a911461023a5761018b565b3661018b5734600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546101829190613ee6565b92505081905550005b600080fd5b34801561019c57600080fd5b506101a5610525565b005b3480156101b357600080fd5b506101bc6105eb565b6040516101c99190613c9f565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906137cb565b61067d565b6040516102069190613c84565b60405180910390f35b34801561021b57600080fd5b5061022461069b565b6040516102319190613e01565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c91906136c5565b6106ab565b005b34801561026f57600080fd5b5061028a6004803603810190610285919061377c565b61079b565b6040516102979190613c84565b60405180910390f35b3480156102ac57600080fd5b506102b5610874565b6040516102c29190613e76565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed91906136c5565b61088b565b005b34801561030057600080fd5b5061031b60048036038101906103169190613830565b61097b565b005b34801561032957600080fd5b50610344600480360381019061033f91906136c5565b610a69565b6040516103519190613e01565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190613717565b610ab2565b005b34801561038f57600080fd5b50610398610be3565b6040516103a59190613b1e565b60405180910390f35b3480156103ba57600080fd5b506103c3610c0c565b6040516103d09190613c9f565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb91906137cb565b610c9e565b60405161040d9190613c84565b60405180910390f35b34801561042257600080fd5b5061042b610cbc565b005b34801561043957600080fd5b50610454600480360381019061044f91906136c5565b610e4e565b005b34801561046257600080fd5b5061047d60048036038101906104789190613740565b610f3e565b60405161048a9190613e01565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b591906136c5565b610fc5565b005b3480156104c857600080fd5b506104d16110b5565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190613830565b611771565b005b34801561050857600080fd5b50610523600480360381019061051e91906136c5565b611826565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661056461197e565b73ffffffffffffffffffffffffffffffffffffffff16146105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190613d41565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506101a4426105e39190613ee6565b600681905550565b6060600180546105fa906140b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610626906140b9565b80156106735780601f1061064857610100808354040283529160200191610673565b820191906000526020600020905b81548152906001019060200180831161065657829003601f168201915b5050505050905090565b600061069161068a61197e565b8484611986565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ea61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790613d41565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006107a8848484611b51565b610869846107b461197e565b6108648560405180606001604052806028815260200161446460289139601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061081a61197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123699092919063ffffffff16565b611986565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ca61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091790613d41565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ba61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0790613d41565b60405180910390fd5b610a27633b9aca00826123cd90919063ffffffff16565b6004819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600454604051610a5e9190613e01565b60405180910390a150565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af161197e565b73ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90613d41565b60405180910390fd5b80600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610c1b906140b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c47906140b9565b8015610c945780601f10610c6957610100808354040283529160200191610c94565b820191906000526020600020905b815481529060010190602001808311610c7757829003601f168201915b5050505050905090565b6000610cb2610cab61197e565b8484611b51565b6001905092915050565b600b6000610cc861197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d1957600080fd5b6000600f6000610d2761197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d6c57600080fd5b610d7461197e565b73ffffffffffffffffffffffffffffffffffffffff166108fc600f6000610d9961197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610dff573d6000803e3d6000fd5b506000600f6000610e0e61197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e8d61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90613d41565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661100461197e565b73ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190613d41565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110f461197e565b73ffffffffffffffffffffffffffffffffffffffff161461114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190613d41565b60405180910390fd5b600960169054906101000a900460ff161561119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190613dc1565b60405180910390fd5b6000479050737a250d5630b4cf539739df2c5dacb4c659f2488d601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061122930601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611986565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561129157600080fd5b505afa1580156112a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c991906136ee565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561134d57600080fd5b505afa158015611361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138591906136ee565b6040518363ffffffff1660e01b81526004016113a2929190613b39565b602060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f491906136ee565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147d30610a69565b600080611488610be3565b426040518863ffffffff1660e01b81526004016114aa96959493929190613c23565b6060604051808303818588803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114fc9190613859565b505050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611388600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115cc57600080fd5b505afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160491906136ee565b86674563918244f400006040518763ffffffff1660e01b815260040161162f96959493929190613b99565b600060405180830381600087803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611700929190613bfa565b602060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117529190613807565b506001600960166101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b061197e565b73ffffffffffffffffffffffffffffffffffffffff1614611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90613d41565b60405180910390fd5b61181d633b9aca00826123cd90919063ffffffff16565b60058190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661186561197e565b73ffffffffffffffffffffffffffffffffffffffff16146118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613d41565b60405180910390fd5b6000600c60006118c9610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061192381612448565b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90613da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613ce1565b60405180910390fd5b80601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b449190613e01565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613d81565b60405180910390fd5b60008111611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb90613d61565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ca85750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cfe5750600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3490613cc1565b60405180910390fd5b6000611d5c8484600860009054906101000a900460ff1660ff1661259a565b90506000611d7d8585600860019054906101000a900460ff1660ff1661259a565b90506000611d94828461265c90919063ffffffff16565b90506000611dbe82611db06064886126ba90919063ffffffff16565b6123cd90919063ffffffff16565b90506000611dd5828761270490919063ffffffff16565b9050611de1888861274e565b1561209e57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42388600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b8152600401611e6793929190613b62565b602060405180830381600087803b158015611e8157600080fd5b505af1158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613807565b15611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613de1565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42389600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b8152600401611f7a93929190613b62565b602060405180830381600087803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcc9190613807565b1561200c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200390613de1565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98989326040518463ffffffff1660e01b815260040161206b93929190613b62565b600060405180830381600087803b15801561208557600080fd5b505af1158015612099573d6000803e3d6000fd5b505050505b6120a787612801565b156120db576120b46128b2565b6120cf876120c18a610a69565b61265c90919063ffffffff16565b11156120da57600080fd5b5b6120e588886128d6565b1561213157600960149054906101000a900460ff1661210357600080fd5b61210d8888612982565b156121275761211a6128b2565b86111561212657600080fd5b5b61213088612a33565b5b61218386600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270490919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221881600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ad82600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161234d9190613e01565b60405180910390a361235f8888612a64565b5050505050505050565b60008383111582906123b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a89190613c9f565b60405180910390fd5b50600083856123c09190613fc7565b9050809150509392505050565b6000808314156123e05760009050612442565b600082846123ee9190613f6d565b90508284826123fd9190613f3c565b1461243d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243490613d21565b60405180910390fd5b809150505b92915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661248761197e565b73ffffffffffffffffffffffffffffffffffffffff16146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490613d41565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061263e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905060008390508161265057600090505b80925050509392505050565b600080828461266b9190613ee6565b9050838110156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790613d01565b60405180910390fd5b8091505092915050565b60006126fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bbe565b905092915050565b600061274683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612369565b905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127f95750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128ab5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050919050565b600060065442116128c75760045490506128d3565b674563918244f4000090505b90565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129795750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612a2b5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612a3e30610a69565b9050612a4982612c21565b15612a6057612a5781612c95565b612a5f612f8f565b5b5050565b612a6e82826128d6565b15612bba57612a7c826135ed565b15612b1357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612adc9190613b1e565b600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b50505050612bb9565b60006014541115612bb857601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836014546040518363ffffffff1660e01b8152600401612b7d929190613bfa565b600060405180830381600087803b158015612b9757600080fd5b505af1158015612bab573d6000803e3d6000fd5b5050505060006014819055505b5b5b5050565b60008083118290612c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfc9190613c9f565b60405180910390fd5b5060008385612c149190613f3c565b9050809150509392505050565b6000600960159054906101000a900460ff16158015612c8e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612cf3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612d215781602001602082028036833780820191505090505b5090503081600081518110612d5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0157600080fd5b505afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3991906136ee565b81600181518110612e73577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eda30601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611986565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f3e959493929190613e1c565b600060405180830381600087803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b50505050506000600960156101000a81548160ff02191690831515021790555050565b6000613007600754600e6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270490919063ffffffff16565b9050600061301f6002836126ba90919063ffffffff16565b90506000613036828461270490919063ffffffff16565b90506000613063610d056130556103e8856123cd90919063ffffffff16565b6126ba90919063ffffffff16565b905060006130ec6130926106826130846064876123cd90919063ffffffff16565b6126ba90919063ffffffff16565b6130de6130a9600a876126ba90919063ffffffff16565b6130d0607e6130c2600a8a6123cd90919063ffffffff16565b6126ba90919063ffffffff16565b61265c90919063ffffffff16565b61265c90919063ffffffff16565b9050600061311583613107848761270490919063ffffffff16565b61270490919063ffffffff16565b9050846014819055506131aa613148607e61313a600a886123cd90919063ffffffff16565b6126ba90919063ffffffff16565b600f600073baaaaeb86551ab8f0c04bb45c1bc10167e9377c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600f600073baaaaeb86551ab8f0c04bb45c1bc10167e9377c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061327a613218600a866126ba90919063ffffffff16565b600f600073f101308187ef98d1acfa34b774cf3334ec7279e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600f600073f101308187ef98d1acfa34b774cf3334ec7279e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061335e6132fc6106826132ee6064886123cd90919063ffffffff16565b6126ba90919063ffffffff16565b600f60007316e7451d072ea28f2952eefcd7cc4a30b1f6a55773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600f60007316e7451d072ea28f2952eefcd7cc4a30b1f6a55773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561341d573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25846040518263ffffffff1660e01b81526004016134799190613e01565b600060405180830381600087803b15801561349357600080fd5b505af11580156134a7573d6000803e3d6000fd5b50505050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015613513573d6000803e3d6000fd5b50600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561357c573d6000803e3d6000fd5b50600e6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600781905550505050505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008135905061365681614407565b92915050565b60008151905061366b81614407565b92915050565b6000813590506136808161441e565b92915050565b60008151905061369581614435565b92915050565b6000813590506136aa8161444c565b92915050565b6000815190506136bf8161444c565b92915050565b6000602082840312156136d757600080fd5b60006136e584828501613647565b91505092915050565b60006020828403121561370057600080fd5b600061370e8482850161365c565b91505092915050565b60006020828403121561372957600080fd5b600061373784828501613671565b91505092915050565b6000806040838503121561375357600080fd5b600061376185828601613647565b925050602061377285828601613647565b9150509250929050565b60008060006060848603121561379157600080fd5b600061379f86828701613647565b93505060206137b086828701613647565b92505060406137c18682870161369b565b9150509250925092565b600080604083850312156137de57600080fd5b60006137ec85828601613647565b92505060206137fd8582860161369b565b9150509250929050565b60006020828403121561381957600080fd5b600061382784828501613686565b91505092915050565b60006020828403121561384257600080fd5b60006138508482850161369b565b91505092915050565b60008060006060848603121561386e57600080fd5b600061387c868287016136b0565b935050602061388d868287016136b0565b925050604061389e868287016136b0565b9150509250925092565b60006138b483836138c0565b60208301905092915050565b6138c981613ffb565b82525050565b6138d881613ffb565b82525050565b60006138e982613ea1565b6138f38185613ec4565b93506138fe83613e91565b8060005b8381101561392f57815161391688826138a8565b975061392183613eb7565b925050600181019050613902565b5085935050505092915050565b6139458161401f565b82525050565b61395481614062565b82525050565b61396381614074565b82525050565b600061397482613eac565b61397e8185613ed5565b935061398e818560208601614086565b61399781614178565b840191505092915050565b60006139af601883613ed5565b91506139ba82614189565b602082019050919050565b60006139d2602283613ed5565b91506139dd826141b2565b604082019050919050565b60006139f5601b83613ed5565b9150613a0082614201565b602082019050919050565b6000613a18602183613ed5565b9150613a238261422a565b604082019050919050565b6000613a3b602083613ed5565b9150613a4682614279565b602082019050919050565b6000613a5e602983613ed5565b9150613a69826142a2565b604082019050919050565b6000613a81602583613ed5565b9150613a8c826142f1565b604082019050919050565b6000613aa4602483613ed5565b9150613aaf82614340565b604082019050919050565b6000613ac7601783613ed5565b9150613ad28261438f565b602082019050919050565b6000613aea602683613ed5565b9150613af5826143b8565b604082019050919050565b613b098161404b565b82525050565b613b1881614055565b82525050565b6000602082019050613b3360008301846138cf565b92915050565b6000604082019050613b4e60008301856138cf565b613b5b60208301846138cf565b9392505050565b6000606082019050613b7760008301866138cf565b613b8460208301856138cf565b613b9160408301846138cf565b949350505050565b600060c082019050613bae60008301896138cf565b613bbb602083018861395a565b613bc860408301876138cf565b613bd560608301866138cf565b613be26080830185613b00565b613bef60a0830184613b00565b979650505050505050565b6000604082019050613c0f60008301856138cf565b613c1c6020830184613b00565b9392505050565b600060c082019050613c3860008301896138cf565b613c456020830188613b00565b613c52604083018761394b565b613c5f606083018661394b565b613c6c60808301856138cf565b613c7960a0830184613b00565b979650505050505050565b6000602082019050613c99600083018461393c565b92915050565b60006020820190508181036000830152613cb98184613969565b905092915050565b60006020820190508181036000830152613cda816139a2565b9050919050565b60006020820190508181036000830152613cfa816139c5565b9050919050565b60006020820190508181036000830152613d1a816139e8565b9050919050565b60006020820190508181036000830152613d3a81613a0b565b9050919050565b60006020820190508181036000830152613d5a81613a2e565b9050919050565b60006020820190508181036000830152613d7a81613a51565b9050919050565b60006020820190508181036000830152613d9a81613a74565b9050919050565b60006020820190508181036000830152613dba81613a97565b9050919050565b60006020820190508181036000830152613dda81613aba565b9050919050565b60006020820190508181036000830152613dfa81613add565b9050919050565b6000602082019050613e166000830184613b00565b92915050565b600060a082019050613e316000830188613b00565b613e3e602083018761394b565b8181036040830152613e5081866138de565b9050613e5f60608301856138cf565b613e6c6080830184613b00565b9695505050505050565b6000602082019050613e8b6000830184613b0f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ef18261404b565b9150613efc8361404b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f3157613f306140eb565b5b828201905092915050565b6000613f478261404b565b9150613f528361404b565b925082613f6257613f6161411a565b5b828204905092915050565b6000613f788261404b565b9150613f838361404b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fbc57613fbb6140eb565b5b828202905092915050565b6000613fd28261404b565b9150613fdd8361404b565b925082821015613ff057613fef6140eb565b5b828203905092915050565b60006140068261402b565b9050919050565b60006140188261402b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061406d8261404b565b9050919050565b600061407f8261404b565b9050919050565b60005b838110156140a4578082015181840152602081019050614089565b838111156140b3576000848401525b50505050565b600060028204905060018216806140d157607f821691505b602082108114156140e5576140e4614149565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f596f752077657265206d616e75616c6c792062616e6e65640000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61441081613ffb565b811461441b57600080fd5b50565b6144278161400d565b811461443257600080fd5b50565b61443e8161401f565b811461444957600080fd5b50565b6144558161404b565b811461446057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c178cc668993e42f1ada2a3278b03175e2036054f3069481b40269a07527010264736f6c63430008040033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c80638a780447116100ab578063d0040d701161006f578063d0040d701461042d578063dd62ed3e14610456578063e02ed01814610493578063e8078d94146104bc578063f1d5f517146104d3578063f2fde38b146104fc5761018b565b80638a7804471461035a5780638da5cb5b1461038357806395d89b41146103ae578063a9059cbb146103d9578063cfbb7d36146104165761018b565b806323b872dd116100f257806323b872dd14610263578063313ce567146102a05780633908cfd2146102cb5780635c85974f146102f457806370a082311461031d5761018b565b806301339c211461019057806306fdde03146101a7578063095ea7b3146101d257806318160ddd1461020f578063228e7a911461023a5761018b565b3661018b5734600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546101829190613ee6565b92505081905550005b600080fd5b34801561019c57600080fd5b506101a5610525565b005b3480156101b357600080fd5b506101bc6105eb565b6040516101c99190613c9f565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f491906137cb565b61067d565b6040516102069190613c84565b60405180910390f35b34801561021b57600080fd5b5061022461069b565b6040516102319190613e01565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c91906136c5565b6106ab565b005b34801561026f57600080fd5b5061028a6004803603810190610285919061377c565b61079b565b6040516102979190613c84565b60405180910390f35b3480156102ac57600080fd5b506102b5610874565b6040516102c29190613e76565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed91906136c5565b61088b565b005b34801561030057600080fd5b5061031b60048036038101906103169190613830565b61097b565b005b34801561032957600080fd5b50610344600480360381019061033f91906136c5565b610a69565b6040516103519190613e01565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190613717565b610ab2565b005b34801561038f57600080fd5b50610398610be3565b6040516103a59190613b1e565b60405180910390f35b3480156103ba57600080fd5b506103c3610c0c565b6040516103d09190613c9f565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb91906137cb565b610c9e565b60405161040d9190613c84565b60405180910390f35b34801561042257600080fd5b5061042b610cbc565b005b34801561043957600080fd5b50610454600480360381019061044f91906136c5565b610e4e565b005b34801561046257600080fd5b5061047d60048036038101906104789190613740565b610f3e565b60405161048a9190613e01565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b591906136c5565b610fc5565b005b3480156104c857600080fd5b506104d16110b5565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190613830565b611771565b005b34801561050857600080fd5b50610523600480360381019061051e91906136c5565b611826565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661056461197e565b73ffffffffffffffffffffffffffffffffffffffff16146105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190613d41565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506101a4426105e39190613ee6565b600681905550565b6060600180546105fa906140b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610626906140b9565b80156106735780601f1061064857610100808354040283529160200191610673565b820191906000526020600020905b81548152906001019060200180831161065657829003601f168201915b5050505050905090565b600061069161068a61197e565b8484611986565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ea61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790613d41565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006107a8848484611b51565b610869846107b461197e565b6108648560405180606001604052806028815260200161446460289139601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061081a61197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123699092919063ffffffff16565b611986565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ca61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091790613d41565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ba61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0790613d41565b60405180910390fd5b610a27633b9aca00826123cd90919063ffffffff16565b6004819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600454604051610a5e9190613e01565b60405180910390a150565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af161197e565b73ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90613d41565b60405180910390fd5b80600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610c1b906140b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c47906140b9565b8015610c945780601f10610c6957610100808354040283529160200191610c94565b820191906000526020600020905b815481529060010190602001808311610c7757829003601f168201915b5050505050905090565b6000610cb2610cab61197e565b8484611b51565b6001905092915050565b600b6000610cc861197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d1957600080fd5b6000600f6000610d2761197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d6c57600080fd5b610d7461197e565b73ffffffffffffffffffffffffffffffffffffffff166108fc600f6000610d9961197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610dff573d6000803e3d6000fd5b506000600f6000610e0e61197e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e8d61197e565b73ffffffffffffffffffffffffffffffffffffffff1614610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90613d41565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661100461197e565b73ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190613d41565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110f461197e565b73ffffffffffffffffffffffffffffffffffffffff161461114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190613d41565b60405180910390fd5b600960169054906101000a900460ff161561119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190613dc1565b60405180910390fd5b6000479050737a250d5630b4cf539739df2c5dacb4c659f2488d601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061122930601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611986565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561129157600080fd5b505afa1580156112a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c991906136ee565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561134d57600080fd5b505afa158015611361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138591906136ee565b6040518363ffffffff1660e01b81526004016113a2929190613b39565b602060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f491906136ee565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147d30610a69565b600080611488610be3565b426040518863ffffffff1660e01b81526004016114aa96959493929190613c23565b6060604051808303818588803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114fc9190613859565b505050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611388600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115cc57600080fd5b505afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160491906136ee565b86674563918244f400006040518763ffffffff1660e01b815260040161162f96959493929190613b99565b600060405180830381600087803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611700929190613bfa565b602060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117529190613807565b506001600960166101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b061197e565b73ffffffffffffffffffffffffffffffffffffffff1614611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90613d41565b60405180910390fd5b61181d633b9aca00826123cd90919063ffffffff16565b60058190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661186561197e565b73ffffffffffffffffffffffffffffffffffffffff16146118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613d41565b60405180910390fd5b6000600c60006118c9610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061192381612448565b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90613da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613ce1565b60405180910390fd5b80601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b449190613e01565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613d81565b60405180910390fd5b60008111611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb90613d61565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ca85750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cfe5750600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3490613cc1565b60405180910390fd5b6000611d5c8484600860009054906101000a900460ff1660ff1661259a565b90506000611d7d8585600860019054906101000a900460ff1660ff1661259a565b90506000611d94828461265c90919063ffffffff16565b90506000611dbe82611db06064886126ba90919063ffffffff16565b6123cd90919063ffffffff16565b90506000611dd5828761270490919063ffffffff16565b9050611de1888861274e565b1561209e57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42388600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b8152600401611e6793929190613b62565b602060405180830381600087803b158015611e8157600080fd5b505af1158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613807565b15611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613de1565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42389600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b8152600401611f7a93929190613b62565b602060405180830381600087803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcc9190613807565b1561200c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200390613de1565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98989326040518463ffffffff1660e01b815260040161206b93929190613b62565b600060405180830381600087803b15801561208557600080fd5b505af1158015612099573d6000803e3d6000fd5b505050505b6120a787612801565b156120db576120b46128b2565b6120cf876120c18a610a69565b61265c90919063ffffffff16565b11156120da57600080fd5b5b6120e588886128d6565b1561213157600960149054906101000a900460ff1661210357600080fd5b61210d8888612982565b156121275761211a6128b2565b86111561212657600080fd5b5b61213088612a33565b5b61218386600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270490919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221881600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ad82600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161234d9190613e01565b60405180910390a361235f8888612a64565b5050505050505050565b60008383111582906123b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a89190613c9f565b60405180910390fd5b50600083856123c09190613fc7565b9050809150509392505050565b6000808314156123e05760009050612442565b600082846123ee9190613f6d565b90508284826123fd9190613f3c565b1461243d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243490613d21565b60405180910390fd5b809150505b92915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661248761197e565b73ffffffffffffffffffffffffffffffffffffffff16146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490613d41565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061263e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905060008390508161265057600090505b80925050509392505050565b600080828461266b9190613ee6565b9050838110156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790613d01565b60405180910390fd5b8091505092915050565b60006126fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bbe565b905092915050565b600061274683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612369565b905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127f95750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128ab5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050919050565b600060065442116128c75760045490506128d3565b674563918244f4000090505b90565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129795750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612a2b5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612a3e30610a69565b9050612a4982612c21565b15612a6057612a5781612c95565b612a5f612f8f565b5b5050565b612a6e82826128d6565b15612bba57612a7c826135ed565b15612b1357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612adc9190613b1e565b600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b50505050612bb9565b60006014541115612bb857601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836014546040518363ffffffff1660e01b8152600401612b7d929190613bfa565b600060405180830381600087803b158015612b9757600080fd5b505af1158015612bab573d6000803e3d6000fd5b5050505060006014819055505b5b5b5050565b60008083118290612c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfc9190613c9f565b60405180910390fd5b5060008385612c149190613f3c565b9050809150509392505050565b6000600960159054906101000a900460ff16158015612c8e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612cf3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612d215781602001602082028036833780820191505090505b5090503081600081518110612d5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0157600080fd5b505afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3991906136ee565b81600181518110612e73577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eda30601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611986565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f3e959493929190613e1c565b600060405180830381600087803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b50505050506000600960156101000a81548160ff02191690831515021790555050565b6000613007600754600e6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270490919063ffffffff16565b9050600061301f6002836126ba90919063ffffffff16565b90506000613036828461270490919063ffffffff16565b90506000613063610d056130556103e8856123cd90919063ffffffff16565b6126ba90919063ffffffff16565b905060006130ec6130926106826130846064876123cd90919063ffffffff16565b6126ba90919063ffffffff16565b6130de6130a9600a876126ba90919063ffffffff16565b6130d0607e6130c2600a8a6123cd90919063ffffffff16565b6126ba90919063ffffffff16565b61265c90919063ffffffff16565b61265c90919063ffffffff16565b9050600061311583613107848761270490919063ffffffff16565b61270490919063ffffffff16565b9050846014819055506131aa613148607e61313a600a886123cd90919063ffffffff16565b6126ba90919063ffffffff16565b600f600073baaaaeb86551ab8f0c04bb45c1bc10167e9377c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600f600073baaaaeb86551ab8f0c04bb45c1bc10167e9377c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061327a613218600a866126ba90919063ffffffff16565b600f600073f101308187ef98d1acfa34b774cf3334ec7279e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600f600073f101308187ef98d1acfa34b774cf3334ec7279e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061335e6132fc6106826132ee6064886123cd90919063ffffffff16565b6126ba90919063ffffffff16565b600f60007316e7451d072ea28f2952eefcd7cc4a30b1f6a55773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600f60007316e7451d072ea28f2952eefcd7cc4a30b1f6a55773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561341d573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25846040518263ffffffff1660e01b81526004016134799190613e01565b600060405180830381600087803b15801561349357600080fd5b505af11580156134a7573d6000803e3d6000fd5b50505050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015613513573d6000803e3d6000fd5b50600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561357c573d6000803e3d6000fd5b50600e6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600781905550505050505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008135905061365681614407565b92915050565b60008151905061366b81614407565b92915050565b6000813590506136808161441e565b92915050565b60008151905061369581614435565b92915050565b6000813590506136aa8161444c565b92915050565b6000815190506136bf8161444c565b92915050565b6000602082840312156136d757600080fd5b60006136e584828501613647565b91505092915050565b60006020828403121561370057600080fd5b600061370e8482850161365c565b91505092915050565b60006020828403121561372957600080fd5b600061373784828501613671565b91505092915050565b6000806040838503121561375357600080fd5b600061376185828601613647565b925050602061377285828601613647565b9150509250929050565b60008060006060848603121561379157600080fd5b600061379f86828701613647565b93505060206137b086828701613647565b92505060406137c18682870161369b565b9150509250925092565b600080604083850312156137de57600080fd5b60006137ec85828601613647565b92505060206137fd8582860161369b565b9150509250929050565b60006020828403121561381957600080fd5b600061382784828501613686565b91505092915050565b60006020828403121561384257600080fd5b60006138508482850161369b565b91505092915050565b60008060006060848603121561386e57600080fd5b600061387c868287016136b0565b935050602061388d868287016136b0565b925050604061389e868287016136b0565b9150509250925092565b60006138b483836138c0565b60208301905092915050565b6138c981613ffb565b82525050565b6138d881613ffb565b82525050565b60006138e982613ea1565b6138f38185613ec4565b93506138fe83613e91565b8060005b8381101561392f57815161391688826138a8565b975061392183613eb7565b925050600181019050613902565b5085935050505092915050565b6139458161401f565b82525050565b61395481614062565b82525050565b61396381614074565b82525050565b600061397482613eac565b61397e8185613ed5565b935061398e818560208601614086565b61399781614178565b840191505092915050565b60006139af601883613ed5565b91506139ba82614189565b602082019050919050565b60006139d2602283613ed5565b91506139dd826141b2565b604082019050919050565b60006139f5601b83613ed5565b9150613a0082614201565b602082019050919050565b6000613a18602183613ed5565b9150613a238261422a565b604082019050919050565b6000613a3b602083613ed5565b9150613a4682614279565b602082019050919050565b6000613a5e602983613ed5565b9150613a69826142a2565b604082019050919050565b6000613a81602583613ed5565b9150613a8c826142f1565b604082019050919050565b6000613aa4602483613ed5565b9150613aaf82614340565b604082019050919050565b6000613ac7601783613ed5565b9150613ad28261438f565b602082019050919050565b6000613aea602683613ed5565b9150613af5826143b8565b604082019050919050565b613b098161404b565b82525050565b613b1881614055565b82525050565b6000602082019050613b3360008301846138cf565b92915050565b6000604082019050613b4e60008301856138cf565b613b5b60208301846138cf565b9392505050565b6000606082019050613b7760008301866138cf565b613b8460208301856138cf565b613b9160408301846138cf565b949350505050565b600060c082019050613bae60008301896138cf565b613bbb602083018861395a565b613bc860408301876138cf565b613bd560608301866138cf565b613be26080830185613b00565b613bef60a0830184613b00565b979650505050505050565b6000604082019050613c0f60008301856138cf565b613c1c6020830184613b00565b9392505050565b600060c082019050613c3860008301896138cf565b613c456020830188613b00565b613c52604083018761394b565b613c5f606083018661394b565b613c6c60808301856138cf565b613c7960a0830184613b00565b979650505050505050565b6000602082019050613c99600083018461393c565b92915050565b60006020820190508181036000830152613cb98184613969565b905092915050565b60006020820190508181036000830152613cda816139a2565b9050919050565b60006020820190508181036000830152613cfa816139c5565b9050919050565b60006020820190508181036000830152613d1a816139e8565b9050919050565b60006020820190508181036000830152613d3a81613a0b565b9050919050565b60006020820190508181036000830152613d5a81613a2e565b9050919050565b60006020820190508181036000830152613d7a81613a51565b9050919050565b60006020820190508181036000830152613d9a81613a74565b9050919050565b60006020820190508181036000830152613dba81613a97565b9050919050565b60006020820190508181036000830152613dda81613aba565b9050919050565b60006020820190508181036000830152613dfa81613add565b9050919050565b6000602082019050613e166000830184613b00565b92915050565b600060a082019050613e316000830188613b00565b613e3e602083018761394b565b8181036040830152613e5081866138de565b9050613e5f60608301856138cf565b613e6c6080830184613b00565b9695505050505050565b6000602082019050613e8b6000830184613b0f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ef18261404b565b9150613efc8361404b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f3157613f306140eb565b5b828201905092915050565b6000613f478261404b565b9150613f528361404b565b925082613f6257613f6161411a565b5b828204905092915050565b6000613f788261404b565b9150613f838361404b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fbc57613fbb6140eb565b5b828202905092915050565b6000613fd28261404b565b9150613fdd8361404b565b925082821015613ff057613fef6140eb565b5b828203905092915050565b60006140068261402b565b9050919050565b60006140188261402b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061406d8261404b565b9050919050565b600061407f8261404b565b9050919050565b60005b838110156140a4578082015181840152602081019050614089565b838111156140b3576000848401525b50505050565b600060028204905060018216806140d157607f821691505b602082108114156140e5576140e4614149565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f596f752077657265206d616e75616c6c792062616e6e65640000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61441081613ffb565b811461441b57600080fd5b50565b6144278161400d565b811461443257600080fd5b50565b61443e8161401f565b811461444957600080fd5b50565b6144558161404b565b811461446057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c178cc668993e42f1ada2a3278b03175e2036054f3069481b40269a07527010264736f6c63430008040033

Deployed Bytecode Sourcemap

6436:15199:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8522:9;8493:13;:25;8507:10;8493:25;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;6436:15199;;;;;19874:141;;;;;;;;;;;;;:::i;:::-;;9599:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10632:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10007:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20910:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10821:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9811:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21028:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20552:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10127:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21429:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3529:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9703:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10269:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21139:270;;;;;;;;;;;;;:::i;:::-;;20270:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10464:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20409:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18979:883;;;;;;;;;;;;;:::i;:::-;;20767:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20027:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19874:141;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19941:4:::1;19928:10;;:17;;;;;;;;;;;;;;;;;;19993:9;19974:15;:29;;;;:::i;:::-;19960:11;:43;;;;19874:141::o:0;9599:92::-;9636:13;9673:6;9666:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9599:92;:::o;10632:177::-;10709:4;10730:41;10739:12;:10;:12::i;:::-;10753:8;10763:7;10730:8;:41::i;:::-;10793:4;10786:11;;10632:177;;;;:::o;10007:108::-;10060:7;6581:18;10084:19;;10007:108;:::o;20910:98::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20992:4:::1;20977:8;:12;20986:2;20977:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;20910:98:::0;:::o;10821:339::-;10922:4;10943:39;10953:7;10962:10;10974:7;10943:9;:39::i;:::-;10997:125;11006:7;11015:12;:10;:12::i;:::-;11029:92;11069:7;11029:92;;;;;;;;;;;;;;;;;:12;:21;11042:7;11029:21;;;;;;;;;;;;;;;:35;11051:12;:10;:12::i;:::-;11029:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10997:8;:125::i;:::-;11144:4;11137:11;;10821:339;;;;;:::o;9811:92::-;9852:5;9881:10;;;;;;;;;;;9874:17;;9811:92;:::o;21028:99::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21110:5:::1;21095:8;:12;21104:2;21095:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;21028:99:::0;:::o;20552:203::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20681:18:::1;20693:5;20681:7;:11;;:18;;;;:::i;:::-;20669:9;:30;;;;20719:24;20733:9;;20719:24;;;;;;:::i;:::-;;;;;;;;20552:203:::0;:::o;10127:130::-;10194:7;10225:10;:20;10236:8;10225:20;;;;;;;;;;;;;;;;10218:27;;10127:130;;;:::o;21429:199::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21553:8:::1;21535:15;;:26;;;;;;;;;;;;;;;;;;21612:4;21580:19;:29;21600:8;21580:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21429:199:::0;:::o;3529:88::-;3567:7;3598;;;;;;;;;;;3591:14;;3529:88;:::o;9703:96::-;9742:13;9779:8;9772:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9703:96;:::o;10269:183::-;10349:4;10370:44;10380:12;:10;:12::i;:::-;10394:10;10406:7;10370:9;:44::i;:::-;10436:4;10429:11;;10269:183;;;;:::o;21139:270::-;21195:12;:26;21208:12;:10;:12::i;:::-;21195:26;;;;;;;;;;;;;;;;;;;;;;;;;21187:35;;;;;;21275:1;21245:13;:27;21259:12;:10;:12::i;:::-;21245:27;;;;;;;;;;;;;;;;:31;21237:40;;;;;;21300:12;:10;:12::i;:::-;21292:30;;:59;21323:13;:27;21337:12;:10;:12::i;:::-;21323:27;;;;;;;;;;;;;;;;21292:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21396:1;21366:13;:27;21380:12;:10;:12::i;:::-;21366:27;;;;;;;;;;;;;;;:31;;;;21139:270::o;20270:127::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20381:4:::1;20349:19;:29;20369:8;20349:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20270:127:::0;:::o;10464:156::-;10547:7;10578:12;:20;10591:6;10578:20;;;;;;;;;;;;;;;:30;10599:8;10578:30;;;;;;;;;;;;;;;;10571:37;;10464:156;;;;:::o;20409:131::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20523:5:::1;20491:19;:29;20511:8;20491:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20409:131:::0;:::o;18979:883::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19048:11:::1;;;;;;;;;;;19047:12;19039:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19101:19;19123:21;19101:43;;19198:42;19159:17;;:82;;;;;;;;;;;;;;;;;;19256:65;19273:4;19288:17;;;;;;;;;;;6581:18;19256:8;:65::i;:::-;19372:17;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19354:57;;;19420:4;19427:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19354:98;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19336:15;;:116;;;;;;;;;;;;;;;;;;19467:17;;;;;;;;;;;:33;;;19508:21;19539:4;19545:24;19563:4;19545:9;:24::i;:::-;19570:1;19572::::0;19574:7:::1;:5;:7::i;:::-;19582:15;19467:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19613:10;;;;;;;;;;;:15;;;19637:4;19644;19650:15;;;;;;;;;;;19667:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19693:11;6581:18;19613:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19741:15;;;;;;;;;;;19734:31;;;19774:17;;;;;;;;;;;19794:14;19734:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19838:4;19824:11;;:18;;;;;;;;;;;;;;;;;;3931:1;18979:883::o:0;20767:123::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20860:18:::1;20872:5;20860:7;:11;;:18;;;;:::i;:::-;20844:13;:34;;;;20767:123:::0;:::o;20027:231::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20139:5:::1;20108:19;:28;20128:7;:5;:7::i;:::-;20108:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20159:28;20178:8;20159:18;:28::i;:::-;20242:4;20210:19;:29;20230:8;20210:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20027:231:::0;:::o;1072:106::-;1125:7;1156:10;1149:17;;1072:106;:::o;12648:367::-;12766:1;12748:20;;:6;:20;;;;12740:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12852:1;12832:22;;:8;:22;;;;12824:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12941:7;12908:12;:20;12921:6;12908:20;;;;;;;;;;;;;;;:30;12929:8;12908:30;;;;;;;;;;;;;;;:40;;;;12985:8;12968:35;;12977:6;12968:35;;;12995:7;12968:35;;;;;;:::i;:::-;;;;;;;;12648:367;;;:::o;13027:2081::-;13150:1;13131:21;;:7;:21;;;;13123:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13227:1;13217:7;:11;13209:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13298:8;:17;13307:7;13298:17;;;;;;;;;;;;;;;;;;;;;;;;;13297:18;:43;;;;;13320:8;:20;13329:10;13320:20;;;;;;;;;;;;;;;;;;;;;;;;;13319:21;13297:43;:67;;;;;13345:8;:19;13354:9;13345:19;;;;;;;;;;;;;;;;;;;;;;;;;13344:20;13297:67;13289:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;13430:15;13448:38;13456:7;13465:10;13477:8;;;;;;;;;;;13448:38;;:7;:38::i;:::-;13430:56;;13501:18;13522:41;13530:7;13539:10;13551:11;;;;;;;;;;;13522:41;;:7;:41::i;:::-;13501:62;;13578:17;13598:23;13610:10;13598:7;:11;;:23;;;;:::i;:::-;13578:43;;13636:18;13657:31;13678:9;13657:16;13669:3;13657:7;:11;;:16;;;;:::i;:::-;:20;;:31;;;;:::i;:::-;13636:52;;13703:18;13724:23;13736:10;13724:7;:11;;:23;;;;:::i;:::-;13703:44;;13783:29;13792:7;13801:10;13783:8;:29::i;:::-;13780:422;;;13841:7;;;;;;;;;;;:19;;;13861:10;13873:15;;;;;;;;;;;13890:9;13841:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13840:60;13832:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14013:7;;;;;;;;;;;:19;;;14033:7;14042:15;;;;;;;;;;;14059:9;14013:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14012:57;14004:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;14132:7;;;;;;;;;;;:21;;;14154:7;14163:10;14175:9;14132:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13780:422;14244:25;14258:10;14244:13;:25::i;:::-;14241:104;;;14334:10;:8;:10::i;:::-;14296:34;14322:7;14296:21;14306:10;14296:9;:21::i;:::-;:25;;:34;;;;:::i;:::-;:48;;14288:57;;;;;;14241:104;14419:26;14425:7;14434:10;14419:5;:26::i;:::-;14415:299;;;14474:10;;;;;;;;;;;14466:19;;;;;;14508:34;14522:7;14531:10;14508:13;:34::i;:::-;14504:92;;;14585:10;:8;:10::i;:::-;14574:7;:21;;14566:30;;;;;;14504:92;14615:13;14620:7;14615:4;:13::i;:::-;14415:299;14764:32;14788:7;14764:10;:19;14775:7;14764:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14742:10;:19;14753:7;14742:19;;;;;;;;;;;;;;;:54;;;;14836:38;14863:10;14836;:22;14847:10;14836:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14811:10;:22;14822:10;14811:22;;;;;;;;;;;;;;;:63;;;;14917:41;14947:10;14917;:25;14936:4;14917:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;14889:10;:25;14908:4;14889:25;;;;;;;;;;;;;;;:69;;;;15010:10;14992:41;;15001:7;14992:41;;;15022:10;14992:41;;;;;;:::i;:::-;;;;;;;;15056:40;15076:7;15085:10;15056:19;:40::i;:::-;13027:2081;;;;;;;;:::o;2301:206::-;2387:7;2424:1;2419;:6;;2427:12;2411:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2455:9;2471:1;2467;:5;;;;:::i;:::-;2455:17;;2494:1;2487:8;;;2301:206;;;;;:::o;2519:274::-;2577:7;2610:1;2605;:6;2601:55;;;2639:1;2632:8;;;;2601:55;2670:9;2686:1;2682;:5;;;;:::i;:::-;2670:17;;2719:1;2714;2710;:5;;;;:::i;:::-;:10;2702:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2780:1;2773:8;;;2519:274;;;;;:::o;3629:171::-;3872:7;;;;;;;;;;3856:23;;:12;:10;:12::i;:::-;:23;;;3848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3746:8:::1;3716:39;;3737:7;::::0;::::1;;;;;;;;3716:39;;;;;;;;;;;;3780:8;3770:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;3629:171:::0;:::o;15572:325::-;15663:7;15686:13;15704:19;:28;15724:7;15704:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15736:19;:31;15756:10;15736:31;;;;;;;;;;;;;;;;;;;;;;;;;15704:63;15702:66;15686:82;;15783:12;15798:7;15783:22;;15824:8;15820:39;;15858:1;15851:8;;15820:39;15881:4;15874:11;;;;15572:325;;;;;:::o;1938:195::-;1996:7;2020:9;2036:1;2032;:5;;;;:::i;:::-;2020:17;;2065:1;2060;:6;;2052:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2120:1;2113:8;;;1938:195;;;;:::o;2805:140::-;2863:7;2894:39;2898:1;2901;2894:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2887:46;;2805:140;;;;:::o;2145:144::-;2203:7;2234:43;2238:1;2241;2234:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2227:50;;2145:144;;;;:::o;11602:175::-;11678:4;11717:15;;;;;;;;;;;11706:26;;:7;:26;;;:59;;;;11750:15;;;;;;;;;;;11736:29;;:10;:29;;;11706:59;11699:66;;11602:175;;;;:::o;12254:169::-;12318:4;12360:15;;;;;;;;;;;12346:29;;:10;:29;;;;:65;;;;;12380:19;:31;12400:10;12380:31;;;;;;;;;;;;;;;;;;;;;;;;;12379:32;12346:65;12339:72;;12254:169;;;:::o;12435:201::-;12476:7;12522:11;;12503:15;:30;12500:124;;12559:9;;12552:16;;;;12500:124;6581:18;12605:19;;12435:201;;:::o;11411:179::-;11484:4;11514:19;:28;11534:7;11514:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11546:19;:31;11566:10;11546:31;;;;;;;;;;;;;;;;;;;;;;;;;11514:63;11512:66;11505:73;;11411:179;;;;:::o;12059:183::-;12140:4;12179:15;;;;;;;;;;;12168:26;;:7;:26;;;:62;;;;;12199:19;:31;12219:10;12199:31;;;;;;;;;;;;;;;;;;;;;;;;;12198:32;12168:62;12161:69;;12059:183;;;;:::o;15909:254::-;15963:21;15987:24;16005:4;15987:9;:24::i;:::-;15963:48;;16030:20;16042:7;16030:11;:20::i;:::-;16026:126;;;16071:32;16089:13;16071:17;:32::i;:::-;16122:14;:12;:14::i;:::-;16026:126;15909:254;;:::o;15120:432::-;15213:26;15219:7;15228:10;15213:5;:26::i;:::-;15209:332;;;15264:15;15271:7;15264:6;:15::i;:::-;15260:266;;;15302:10;;;;;;;;;;;:24;;;15327:10;15302:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15260:266;;;15387:1;15366:18;;:22;15362:164;;;15412:10;;;;;;;;;;;:20;;;15433:7;15442:18;;15412:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15505:1;15484:18;:22;;;;15362:164;15260:266;15209:332;15120:432;;:::o;2957:205::-;3043:7;3079:1;3075;:5;3082:12;3067:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3110:9;3126:1;3122;:5;;;;:::i;:::-;3110:17;;3149:1;3142:8;;;2957:205;;;;;:::o;11261:138::-;11320:4;11349:8;;;;;;;;;;;11348:9;:39;;;;;11372:15;;;;;;;;;;;11361:26;;:7;:26;;;;11348:39;11341:46;;11261:138;;;:::o;16175:742::-;8376:4;8365:8;;:15;;;;;;;;;;;;;;;;;;16279:22:::1;16318:1;16304:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16279:41;;16400:4;16381:5;16387:1;16381:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;16494:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16483:5;16489:1;16483:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;16584:60;16601:4;16616:17;;;;;;;;;;;16636:7;16584:8;:60::i;:::-;16686:17;;;;;;;;;;;:68;;;16773:7;16799:1;16819:5;16851:4;16875:15;16686:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8395:1;8422:5:::0;8411:8;;:16;;;;;;;;;;;;;;;;;;16175:742;:::o;16937:1747::-;16984:22;17009:64;17055:17;;17009:13;:41;17031:17;;;;;;;;;;;17009:41;;;;;;;;;;;;;;;;:45;;:64;;;;:::i;:::-;16984:89;;17088:22;17113:21;17132:1;17113:14;:18;;:21;;;;:::i;:::-;17088:46;;17149:19;17171:34;17190:14;17171;:18;;:34;;;;:::i;:::-;17149:56;;17297:19;17319:31;17345:4;17319:21;17335:4;17319:11;:15;;:21;;;;:::i;:::-;:25;;:31;;;;:::i;:::-;17297:53;;17380:20;17403:89;17461:30;17486:4;17461:20;17477:3;17461:11;:15;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;17403:53;17436:19;17452:2;17436:11;:15;;:19;;;;:::i;:::-;17403:28;17427:3;17403:19;17419:2;17403:11;:15;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;:32;;:53;;;;:::i;:::-;:57;;:89;;;;:::i;:::-;17380:112;;17507:23;17533:46;17567:11;17533:29;17549:12;17533:11;:15;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;17507:72;;17615:14;17594:18;:35;;;;17704:91;17766:28;17790:3;17766:19;17782:2;17766:11;:15;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17704:13;:57;17718:42;17704:57;;;;;;;;;;;;;;;;:61;;:91;;;;:::i;:::-;17644:13;:57;17658:42;17644:57;;;;;;;;;;;;;;;:151;;;;17870:82;17932:19;17948:2;17932:11;:15;;:19;;;;:::i;:::-;17870:13;:57;17884:42;17870:57;;;;;;;;;;;;;;;;:61;;:82;;;;:::i;:::-;17810:13;:57;17824:42;17810:57;;;;;;;;;;;;;;;:142;;;;18027:93;18089:30;18114:4;18089:20;18105:3;18089:11;:15;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;18027:13;:57;18041:42;18027:57;;;;;;;;;;;;;;;;:61;;:93;;;;:::i;:::-;17967:13;:57;17981:42;17967:57;;;;;;;;;;;;;;;:153;;;;18157:8;;;;;;;;;;;18141:35;;:48;18177:11;18141:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18204:8;;;;;;;;;;;:16;;;18221:11;18204:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18264:10;;;;;;;;;;;18248:37;;:53;18286:14;18248:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18409:15;;;;;;;;;;;:24;;:41;18434:15;18409:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18580:13;:41;18602:17;;;;;;;;;;;18580:41;;;;;;;;;;;;;;;;18560:17;:61;;;;16937:1747;;;;;;:::o;11926:121::-;11981:4;12020:15;;;;;;;;;;;12009:26;;:7;:26;;;12002:33;;11926:121;;;:::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:407::-;1809:6;1817;1866:2;1854:9;1845:7;1841:23;1837:32;1834:2;;;1882:1;1879;1872:12;1834:2;1925:1;1950:53;1995:7;1986:6;1975:9;1971:22;1950:53;:::i;:::-;1940:63;;1896:117;2052:2;2078:53;2123:7;2114:6;2103:9;2099:22;2078:53;:::i;:::-;2068:63;;2023:118;1824:324;;;;;:::o;2154:552::-;2231:6;2239;2247;2296:2;2284:9;2275:7;2271:23;2267:32;2264:2;;;2312:1;2309;2302:12;2264:2;2355:1;2380:53;2425:7;2416:6;2405:9;2401:22;2380:53;:::i;:::-;2370:63;;2326:117;2482:2;2508:53;2553:7;2544:6;2533:9;2529:22;2508:53;:::i;:::-;2498:63;;2453:118;2610:2;2636:53;2681:7;2672:6;2661:9;2657:22;2636:53;:::i;:::-;2626:63;;2581:118;2254:452;;;;;:::o;2712:407::-;2780:6;2788;2837:2;2825:9;2816:7;2812:23;2808:32;2805:2;;;2853:1;2850;2843:12;2805:2;2896:1;2921:53;2966:7;2957:6;2946:9;2942:22;2921:53;:::i;:::-;2911:63;;2867:117;3023:2;3049:53;3094:7;3085:6;3074:9;3070:22;3049:53;:::i;:::-;3039:63;;2994:118;2795:324;;;;;:::o;3125:278::-;3192:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:2;;;3257:1;3254;3247:12;3209:2;3300:1;3325:61;3378:7;3369:6;3358:9;3354:22;3325:61;:::i;:::-;3315:71;;3271:125;3199:204;;;;:::o;3409:262::-;3468:6;3517:2;3505:9;3496:7;3492:23;3488:32;3485:2;;;3533:1;3530;3523:12;3485:2;3576:1;3601:53;3646:7;3637:6;3626:9;3622:22;3601:53;:::i;:::-;3591:63;;3547:117;3475:196;;;;:::o;3677:596::-;3765:6;3773;3781;3830:2;3818:9;3809:7;3805:23;3801:32;3798:2;;;3846:1;3843;3836:12;3798:2;3889:1;3914:64;3970:7;3961:6;3950:9;3946:22;3914:64;:::i;:::-;3904:74;;3860:128;4027:2;4053:64;4109:7;4100:6;4089:9;4085:22;4053:64;:::i;:::-;4043:74;;3998:129;4166:2;4192:64;4248:7;4239:6;4228:9;4224:22;4192:64;:::i;:::-;4182:74;;4137:129;3788:485;;;;;:::o;4279:179::-;4348:10;4369:46;4411:3;4403:6;4369:46;:::i;:::-;4447:4;4442:3;4438:14;4424:28;;4359:99;;;;:::o;4464:108::-;4541:24;4559:5;4541:24;:::i;:::-;4536:3;4529:37;4519:53;;:::o;4578:118::-;4665:24;4683:5;4665:24;:::i;:::-;4660:3;4653:37;4643:53;;:::o;4732:732::-;4851:3;4880:54;4928:5;4880:54;:::i;:::-;4950:86;5029:6;5024:3;4950:86;:::i;:::-;4943:93;;5060:56;5110:5;5060:56;:::i;:::-;5139:7;5170:1;5155:284;5180:6;5177:1;5174:13;5155:284;;;5256:6;5250:13;5283:63;5342:3;5327:13;5283:63;:::i;:::-;5276:70;;5369:60;5422:6;5369:60;:::i;:::-;5359:70;;5215:224;5202:1;5199;5195:9;5190:14;;5155:284;;;5159:14;5455:3;5448:10;;4856:608;;;;;;;:::o;5470:109::-;5551:21;5566:5;5551:21;:::i;:::-;5546:3;5539:34;5529:50;;:::o;5585:147::-;5680:45;5719:5;5680:45;:::i;:::-;5675:3;5668:58;5658:74;;:::o;5738:153::-;5836:48;5878:5;5836:48;:::i;:::-;5831:3;5824:61;5814:77;;:::o;5897:364::-;5985:3;6013:39;6046:5;6013:39;:::i;:::-;6068:71;6132:6;6127:3;6068:71;:::i;:::-;6061:78;;6148:52;6193:6;6188:3;6181:4;6174:5;6170:16;6148:52;:::i;:::-;6225:29;6247:6;6225:29;:::i;:::-;6220:3;6216:39;6209:46;;5989:272;;;;;:::o;6267:366::-;6409:3;6430:67;6494:2;6489:3;6430:67;:::i;:::-;6423:74;;6506:93;6595:3;6506:93;:::i;:::-;6624:2;6619:3;6615:12;6608:19;;6413:220;;;:::o;6639:366::-;6781:3;6802:67;6866:2;6861:3;6802:67;:::i;:::-;6795:74;;6878:93;6967:3;6878:93;:::i;:::-;6996:2;6991:3;6987:12;6980:19;;6785:220;;;:::o;7011:366::-;7153:3;7174:67;7238:2;7233:3;7174:67;:::i;:::-;7167:74;;7250:93;7339:3;7250:93;:::i;:::-;7368:2;7363:3;7359:12;7352:19;;7157:220;;;:::o;7383:366::-;7525:3;7546:67;7610:2;7605:3;7546:67;:::i;:::-;7539:74;;7622:93;7711:3;7622:93;:::i;:::-;7740:2;7735:3;7731:12;7724:19;;7529:220;;;:::o;7755:366::-;7897:3;7918:67;7982:2;7977:3;7918:67;:::i;:::-;7911:74;;7994:93;8083:3;7994:93;:::i;:::-;8112:2;8107:3;8103:12;8096:19;;7901:220;;;:::o;8127:366::-;8269:3;8290:67;8354:2;8349:3;8290:67;:::i;:::-;8283:74;;8366:93;8455:3;8366:93;:::i;:::-;8484:2;8479:3;8475:12;8468:19;;8273:220;;;:::o;8499:366::-;8641:3;8662:67;8726:2;8721:3;8662:67;:::i;:::-;8655:74;;8738:93;8827:3;8738:93;:::i;:::-;8856:2;8851:3;8847:12;8840:19;;8645:220;;;:::o;8871:366::-;9013:3;9034:67;9098:2;9093:3;9034:67;:::i;:::-;9027:74;;9110:93;9199:3;9110:93;:::i;:::-;9228:2;9223:3;9219:12;9212:19;;9017:220;;;:::o;9243:366::-;9385:3;9406:67;9470:2;9465:3;9406:67;:::i;:::-;9399:74;;9482:93;9571:3;9482:93;:::i;:::-;9600:2;9595:3;9591:12;9584:19;;9389:220;;;:::o;9615:366::-;9757:3;9778:67;9842:2;9837:3;9778:67;:::i;:::-;9771:74;;9854:93;9943:3;9854:93;:::i;:::-;9972:2;9967:3;9963:12;9956:19;;9761:220;;;:::o;9987:118::-;10074:24;10092:5;10074:24;:::i;:::-;10069:3;10062:37;10052:53;;:::o;10111:112::-;10194:22;10210:5;10194:22;:::i;:::-;10189:3;10182:35;10172:51;;:::o;10229:222::-;10322:4;10360:2;10349:9;10345:18;10337:26;;10373:71;10441:1;10430:9;10426:17;10417:6;10373:71;:::i;:::-;10327:124;;;;:::o;10457:332::-;10578:4;10616:2;10605:9;10601:18;10593:26;;10629:71;10697:1;10686:9;10682:17;10673:6;10629:71;:::i;:::-;10710:72;10778:2;10767:9;10763:18;10754:6;10710:72;:::i;:::-;10583:206;;;;;:::o;10795:442::-;10944:4;10982:2;10971:9;10967:18;10959:26;;10995:71;11063:1;11052:9;11048:17;11039:6;10995:71;:::i;:::-;11076:72;11144:2;11133:9;11129:18;11120:6;11076:72;:::i;:::-;11158;11226:2;11215:9;11211:18;11202:6;11158:72;:::i;:::-;10949:288;;;;;;:::o;11243:797::-;11487:4;11525:3;11514:9;11510:19;11502:27;;11539:71;11607:1;11596:9;11592:17;11583:6;11539:71;:::i;:::-;11620:83;11699:2;11688:9;11684:18;11675:6;11620:83;:::i;:::-;11713:72;11781:2;11770:9;11766:18;11757:6;11713:72;:::i;:::-;11795;11863:2;11852:9;11848:18;11839:6;11795:72;:::i;:::-;11877:73;11945:3;11934:9;11930:19;11921:6;11877:73;:::i;:::-;11960;12028:3;12017:9;12013:19;12004:6;11960:73;:::i;:::-;11492:548;;;;;;;;;:::o;12046:332::-;12167:4;12205:2;12194:9;12190:18;12182:26;;12218:71;12286:1;12275:9;12271:17;12262:6;12218:71;:::i;:::-;12299:72;12367:2;12356:9;12352:18;12343:6;12299:72;:::i;:::-;12172:206;;;;;:::o;12384:807::-;12633:4;12671:3;12660:9;12656:19;12648:27;;12685:71;12753:1;12742:9;12738:17;12729:6;12685:71;:::i;:::-;12766:72;12834:2;12823:9;12819:18;12810:6;12766:72;:::i;:::-;12848:80;12924:2;12913:9;12909:18;12900:6;12848:80;:::i;:::-;12938;13014:2;13003:9;12999:18;12990:6;12938:80;:::i;:::-;13028:73;13096:3;13085:9;13081:19;13072:6;13028:73;:::i;:::-;13111;13179:3;13168:9;13164:19;13155:6;13111:73;:::i;:::-;12638:553;;;;;;;;;:::o;13197:210::-;13284:4;13322:2;13311:9;13307:18;13299:26;;13335:65;13397:1;13386:9;13382:17;13373:6;13335:65;:::i;:::-;13289:118;;;;:::o;13413:313::-;13526:4;13564:2;13553:9;13549:18;13541:26;;13613:9;13607:4;13603:20;13599:1;13588:9;13584:17;13577:47;13641:78;13714:4;13705:6;13641:78;:::i;:::-;13633:86;;13531:195;;;;:::o;13732:419::-;13898:4;13936:2;13925:9;13921:18;13913:26;;13985:9;13979:4;13975:20;13971:1;13960:9;13956:17;13949:47;14013:131;14139:4;14013:131;:::i;:::-;14005:139;;13903:248;;;:::o;14157:419::-;14323:4;14361:2;14350:9;14346:18;14338:26;;14410:9;14404:4;14400:20;14396:1;14385:9;14381:17;14374:47;14438:131;14564:4;14438:131;:::i;:::-;14430:139;;14328:248;;;:::o;14582:419::-;14748:4;14786:2;14775:9;14771:18;14763:26;;14835:9;14829:4;14825:20;14821:1;14810:9;14806:17;14799:47;14863:131;14989:4;14863:131;:::i;:::-;14855:139;;14753:248;;;:::o;15007:419::-;15173:4;15211:2;15200:9;15196:18;15188:26;;15260:9;15254:4;15250:20;15246:1;15235:9;15231:17;15224:47;15288:131;15414:4;15288:131;:::i;:::-;15280:139;;15178:248;;;:::o;15432:419::-;15598:4;15636:2;15625:9;15621:18;15613:26;;15685:9;15679:4;15675:20;15671:1;15660:9;15656:17;15649:47;15713:131;15839:4;15713:131;:::i;:::-;15705:139;;15603:248;;;:::o;15857:419::-;16023:4;16061:2;16050:9;16046:18;16038:26;;16110:9;16104:4;16100:20;16096:1;16085:9;16081:17;16074:47;16138:131;16264:4;16138:131;:::i;:::-;16130:139;;16028:248;;;:::o;16282:419::-;16448:4;16486:2;16475:9;16471:18;16463:26;;16535:9;16529:4;16525:20;16521:1;16510:9;16506:17;16499:47;16563:131;16689:4;16563:131;:::i;:::-;16555:139;;16453:248;;;:::o;16707:419::-;16873:4;16911:2;16900:9;16896:18;16888:26;;16960:9;16954:4;16950:20;16946:1;16935:9;16931:17;16924:47;16988:131;17114:4;16988:131;:::i;:::-;16980:139;;16878:248;;;:::o;17132:419::-;17298:4;17336:2;17325:9;17321:18;17313:26;;17385:9;17379:4;17375:20;17371:1;17360:9;17356:17;17349:47;17413:131;17539:4;17413:131;:::i;:::-;17405:139;;17303:248;;;:::o;17557:419::-;17723:4;17761:2;17750:9;17746:18;17738:26;;17810:9;17804:4;17800:20;17796:1;17785:9;17781:17;17774:47;17838:131;17964:4;17838:131;:::i;:::-;17830:139;;17728:248;;;:::o;17982:222::-;18075:4;18113:2;18102:9;18098:18;18090:26;;18126:71;18194:1;18183:9;18179:17;18170:6;18126:71;:::i;:::-;18080:124;;;;:::o;18210:831::-;18473:4;18511:3;18500:9;18496:19;18488:27;;18525:71;18593:1;18582:9;18578:17;18569:6;18525:71;:::i;:::-;18606:80;18682:2;18671:9;18667:18;18658:6;18606:80;:::i;:::-;18733:9;18727:4;18723:20;18718:2;18707:9;18703:18;18696:48;18761:108;18864:4;18855:6;18761:108;:::i;:::-;18753:116;;18879:72;18947:2;18936:9;18932:18;18923:6;18879:72;:::i;:::-;18961:73;19029:3;19018:9;19014:19;19005:6;18961:73;:::i;:::-;18478:563;;;;;;;;:::o;19047:214::-;19136:4;19174:2;19163:9;19159:18;19151:26;;19187:67;19251:1;19240:9;19236:17;19227:6;19187:67;:::i;:::-;19141:120;;;;:::o;19267:132::-;19334:4;19357:3;19349:11;;19387:4;19382:3;19378:14;19370:22;;19339:60;;;:::o;19405:114::-;19472:6;19506:5;19500:12;19490:22;;19479:40;;;:::o;19525:99::-;19577:6;19611:5;19605:12;19595:22;;19584:40;;;:::o;19630:113::-;19700:4;19732;19727:3;19723:14;19715:22;;19705:38;;;:::o;19749:184::-;19848:11;19882:6;19877:3;19870:19;19922:4;19917:3;19913:14;19898:29;;19860:73;;;;:::o;19939:169::-;20023:11;20057:6;20052:3;20045:19;20097:4;20092:3;20088:14;20073:29;;20035:73;;;;:::o;20114:305::-;20154:3;20173:20;20191:1;20173:20;:::i;:::-;20168:25;;20207:20;20225:1;20207:20;:::i;:::-;20202:25;;20361:1;20293:66;20289:74;20286:1;20283:81;20280:2;;;20367:18;;:::i;:::-;20280:2;20411:1;20408;20404:9;20397:16;;20158:261;;;;:::o;20425:185::-;20465:1;20482:20;20500:1;20482:20;:::i;:::-;20477:25;;20516:20;20534:1;20516:20;:::i;:::-;20511:25;;20555:1;20545:2;;20560:18;;:::i;:::-;20545:2;20602:1;20599;20595:9;20590:14;;20467:143;;;;:::o;20616:348::-;20656:7;20679:20;20697:1;20679:20;:::i;:::-;20674:25;;20713:20;20731:1;20713:20;:::i;:::-;20708:25;;20901:1;20833:66;20829:74;20826:1;20823:81;20818:1;20811:9;20804:17;20800:105;20797:2;;;20908:18;;:::i;:::-;20797:2;20956:1;20953;20949:9;20938:20;;20664:300;;;;:::o;20970:191::-;21010:4;21030:20;21048:1;21030:20;:::i;:::-;21025:25;;21064:20;21082:1;21064:20;:::i;:::-;21059:25;;21103:1;21100;21097:8;21094:2;;;21108:18;;:::i;:::-;21094:2;21153:1;21150;21146:9;21138:17;;21015:146;;;;:::o;21167:96::-;21204:7;21233:24;21251:5;21233:24;:::i;:::-;21222:35;;21212:51;;;:::o;21269:104::-;21314:7;21343:24;21361:5;21343:24;:::i;:::-;21332:35;;21322:51;;;:::o;21379:90::-;21413:7;21456:5;21449:13;21442:21;21431:32;;21421:48;;;:::o;21475:126::-;21512:7;21552:42;21545:5;21541:54;21530:65;;21520:81;;;:::o;21607:77::-;21644:7;21673:5;21662:16;;21652:32;;;:::o;21690:86::-;21725:7;21765:4;21758:5;21754:16;21743:27;;21733:43;;;:::o;21782:121::-;21840:9;21873:24;21891:5;21873:24;:::i;:::-;21860:37;;21850:53;;;:::o;21909:124::-;21970:9;22003:24;22021:5;22003:24;:::i;:::-;21990:37;;21980:53;;;:::o;22039:307::-;22107:1;22117:113;22131:6;22128:1;22125:13;22117:113;;;22216:1;22211:3;22207:11;22201:18;22197:1;22192:3;22188:11;22181:39;22153:2;22150:1;22146:10;22141:15;;22117:113;;;22248:6;22245:1;22242:13;22239:2;;;22328:1;22319:6;22314:3;22310:16;22303:27;22239:2;22088:258;;;;:::o;22352:320::-;22396:6;22433:1;22427:4;22423:12;22413:22;;22480:1;22474:4;22470:12;22501:18;22491:2;;22557:4;22549:6;22545:17;22535:27;;22491:2;22619;22611:6;22608:14;22588:18;22585:38;22582:2;;;22638:18;;:::i;:::-;22582:2;22403:269;;;;:::o;22678:180::-;22726:77;22723:1;22716:88;22823:4;22820:1;22813:15;22847:4;22844:1;22837:15;22864:180;22912:77;22909:1;22902:88;23009:4;23006:1;22999:15;23033:4;23030:1;23023:15;23050:180;23098:77;23095:1;23088:88;23195:4;23192:1;23185:15;23219:4;23216:1;23209:15;23236:102;23277:6;23328:2;23324:7;23319:2;23312:5;23308:14;23304:28;23294:38;;23284:54;;;:::o;23344:174::-;23484:26;23480:1;23472:6;23468:14;23461:50;23450:68;:::o;23524:221::-;23664:34;23660:1;23652:6;23648:14;23641:58;23733:4;23728:2;23720:6;23716:15;23709:29;23630:115;:::o;23751:177::-;23891:29;23887:1;23879:6;23875:14;23868:53;23857:71;:::o;23934:220::-;24074:34;24070:1;24062:6;24058:14;24051:58;24143:3;24138:2;24130:6;24126:15;24119:28;24040:114;:::o;24160:182::-;24300:34;24296:1;24288:6;24284:14;24277:58;24266:76;:::o;24348:228::-;24488:34;24484:1;24476:6;24472:14;24465:58;24557:11;24552:2;24544:6;24540:15;24533:36;24454:122;:::o;24582:224::-;24722:34;24718:1;24710:6;24706:14;24699:58;24791:7;24786:2;24778:6;24774:15;24767:32;24688:118;:::o;24812:223::-;24952:34;24948:1;24940:6;24936:14;24929:58;25021:6;25016:2;25008:6;25004:15;24997:31;24918:117;:::o;25041:173::-;25181:25;25177:1;25169:6;25165:14;25158:49;25147:67;:::o;25220:225::-;25360:34;25356:1;25348:6;25344:14;25337:58;25429:8;25424:2;25416:6;25412:15;25405:33;25326:119;:::o;25451:122::-;25524:24;25542:5;25524:24;:::i;:::-;25517:5;25514:35;25504:2;;25563:1;25560;25553:12;25504:2;25494:79;:::o;25579:138::-;25660:32;25686:5;25660:32;:::i;:::-;25653:5;25650:43;25640:2;;25707:1;25704;25697:12;25640:2;25630:87;:::o;25723:116::-;25793:21;25808:5;25793:21;:::i;:::-;25786:5;25783:32;25773:2;;25829:1;25826;25819:12;25773:2;25763:76;:::o;25845:122::-;25918:24;25936:5;25918:24;:::i;:::-;25911:5;25908:35;25898:2;;25957:1;25954;25947:12;25898:2;25888:79;:::o

Swarm Source

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