ETH Price: $3,093.82 (+0.20%)

Token

Pass the Loot (LOOT)
 

Overview

Max Total Supply

69,000 LOOT

Holders

157

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
154.275 LOOT

Value
$0.00
0x2B9605c497Aa5E5A7ce7deC76D6c1Aaa9D2EB02a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PASSTHELOOT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-15
*/

/*
    *Telegram: https://t.me/passtheloot_official
    *Website: https://Ethloot.io

    *Custom Contract and dApps created by FairTokenProject. Visit app.fairtokenproject.com to hire FTP for your next project.

    * Using FTPAntiBot
        - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically.
        - Learn more at https://fairtokenproject.com
    */
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.11; 
    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 _newOwner) public virtual onlyOwner {
            emit OwnershipTransferred(m_Owner, _newOwner);
            m_Owner = _newOwner;
        }
        modifier onlyOwner() {
            require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
            _;
        }                                                                                           
    }                                                                                 
    interface IUniswapV2Factory {                                                         
        function createPair(address tokenA, address tokenB) external returns (address pair);
    }
    interface IUniswapV2Router02 {
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
        function factory() external pure returns (address);
        function WETH() external pure returns (address);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    }
    interface IWETH {
        function deposit() external payable;
    }
    interface FTPAntiBot {
        function scanAddress(address _sender, address _recipient, address _safeAddress, address _origin) external returns (bool);
        function registerBlock(address _recipient, address _sender, address _origin) external;
    }
    contract PASSTHELOOT is IERC20, Ownable {
        using SafeMath for uint256;
        uint256 private constant TOTAL_SUPPLY = 69000 * 10**18;
        string private m_Name = "Pass the Loot";
        string private m_Symbol = "LOOT";
        uint8 private m_Decimals = 18;
        address private m_UniswapV2Pair;
        address private m_Controller;
        address payable private m_MarketingWallet;
        IUniswapV2Router02 private m_UniswapV2Router;

        uint256 private m_TxLimit  = TOTAL_SUPPLY.div(400);
        uint256 private m_WalletLimit = TOTAL_SUPPLY.div(80);

        bool private m_Liquidity = false;
        FTPAntiBot private AntiBot;
        address private m_AntibotSvcAddress = 0x2d2230185B24aF94FeEba779CA11Ff6f96d17e6D; //Double check address

        mapping (address => bool) private m_ExcludedAddresses;
        mapping (address => uint256) private m_Balances;
        mapping (uint256 => uint256) private m_RaffleTaxAmountVotes;
        mapping (uint256 => uint256) private m_LargestTaxAmountVotes;
        mapping (uint256 => uint256) private m_IntervalVote;
        mapping (uint256 => mapping (address => uint256)) private m_BuyerId;
        mapping (uint256 => mapping (address => uint256)) private m_VoterIdx;
        mapping (address => mapping (address => uint256)) private m_Allowances;
        mapping (uint256 => mapping (uint256 => uint256)) private m_GenericVote;
        mapping (address => uint256) m_Earnings;
        uint256 private m_Launched;
        uint256 private pMax = 100000;
        uint256 private m_RoundStart;
        uint256 private m_Interval = 900;
        uint256 private m_RaffleTax = 3000;
        uint256 private m_LargestBuyerTax = 2000;
        uint256 private m_GenericIdx = 0;
        uint256 private m_MarketingTax = 3000;
        uint256 private m_Round;
        uint256 private m_DAOmin = TOTAL_SUPPLY.div(1000);
        uint256 private m_VoteCycle = 1;
        uint256 private m_TotalWinnings;
        bool private m_AntiBot = false;
        address[] private m_Winners;
        uint256[] private m_Winnings;

        struct Buyer {
            address addr;
            uint256 amount;
            bool eligible;
        }
        struct Vote {
            uint256 interval;
            uint256 raffleTax;
            uint256 biggestTax;
            uint256 generic;
        }
        struct GameState {
            uint256 round; // default 1
            uint256 gameInterval; // default 15min
            uint256 raffleTax; // default 3%
            uint256 biggestBuyerTax; // default 2%
        }
        mapping (uint256 => Buyer[]) private m_Raffle;
        mapping (uint256 => Vote[]) private m_Voters;
        
        receive() external payable {}

        constructor () {
            m_Launched = block.timestamp.add(69 days);
            AntiBot = FTPAntiBot(m_AntibotSvcAddress);
            m_Controller = msg.sender;
            m_MarketingWallet = payable(msg.sender);

            m_Winners.push(address(0));
            m_Winnings.push(0);
            m_Raffle[0].push(Buyer(address(0),0,false));
            m_Voters[m_VoteCycle].push(Vote(0,0,0,0));

            m_Balances[address(this)] = TOTAL_SUPPLY;
            m_ExcludedAddresses[owner()] = true;
            m_ExcludedAddresses[address(this)] = true;
            emit Transfer(address(0), address(this), TOTAL_SUPPLY);
        }
        function name() public view returns (string memory) {
            return m_Name;
        }
        function symbol() public view returns (string memory) {
            return m_Symbol;
        }
        function decimals() public view returns (uint8) {
            return m_Decimals;
        }
        function totalSupply() public pure override returns (uint256) {
            return TOTAL_SUPPLY;
        }
        function balanceOf(address _account) public view override returns (uint256) {
            return m_Balances[_account];
        }
        function transfer(address _recipient, uint256 _amount) public override returns (bool) {
            _transfer(_msgSender(), _recipient, _amount);
            return true;
        }
        function allowance(address _owner, address _spender) public view override returns (uint256) {
            return m_Allowances[_owner][_spender];
        }
        function approve(address _spender, uint256 _amount) public override returns (bool) {
            _approve(_msgSender(), _spender, _amount);
            return true;
        }
        function transferFrom(address _sender, address _recipient, uint256 _amount) public override returns (bool) {
            _transfer(_sender, _recipient, _amount);
            _approve(_sender, _msgSender(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
            return true;
        }
        function _isBuy(address _sender) private view returns (bool) {
            return _sender == m_UniswapV2Pair;
        }
        function _isSell(address _recipient) private view returns (bool) {
            return _recipient == m_UniswapV2Pair;
        }
        function _trader(address _sender, address _recipient) private view returns (bool) {
            return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
        }
        function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
            return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
        }
        function _txRestricted(address _sender, address _recipient) private view returns (bool) {
            return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
        }
        function _walletCapped(address _recipient) private view returns (bool) {
            return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router);
        }
        function _checkTX() private view returns (uint256){
            if(block.timestamp <= m_Launched.add(15 minutes))
                return TOTAL_SUPPLY.div(400);
            else
                return TOTAL_SUPPLY;
        }
        function _approve(address _owner, address _spender, uint256 _amount) private {
            require(_owner != address(0), "ERC20: approve from the zero address");
            require(_spender != address(0), "ERC20: approve to the zero address");
            m_Allowances[_owner][_spender] = _amount;
            emit Approval(_owner, _spender, _amount);
        }
        function _transfer(address _sender, address _recipient, uint256 _amount) private {
            require(_sender != address(0), "ERC20: transfer from the zero address");
            require(_amount > 0, "Transfer amount must be greater than zero");
            
            if(m_AntiBot && _isExchangeTransfer(_sender, _recipient)) {
                require(!AntiBot.scanAddress(_sender, _recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");  
                AntiBot.registerBlock(_sender, _recipient, tx.origin);
            }
            
            if(_walletCapped(_recipient))
                require(balanceOf(_recipient) < m_WalletLimit);
            
            uint256 _taxes = 0;            
            if (_trader(_sender, _recipient)) {
                _taxes = _amount.div(pMax.div(_getTaxDenominator()));
                require(block.timestamp >= m_Launched);
                if (_txRestricted(_sender, _recipient))
                    require(_amount <= _checkTX());
            }
            _updateBalances(_sender, _recipient, _amount, _taxes);
        }
        function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
            uint256 _netAmount = _amount.sub(_taxes);
            _updateDAO(_sender, _amount);

            m_Balances[_sender] = m_Balances[_sender].sub(_amount);
            m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
            m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);

            if(_isBuy(_sender))
                _trackBuy(_recipient, _netAmount);
            else if(_isSell(_recipient))
                _trackSell(_sender);
            else{
                _trackSell(_sender);
                _trackBuy(_recipient, _netAmount);
            }
            emit Transfer(_sender, _recipient, _netAmount);
        }
        function addLiquidity() external onlyOwner() {
            require(!m_Liquidity,"Liquidity already added.");
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            m_UniswapV2Router = _uniswapV2Router;
            _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
            m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
            IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
            m_Liquidity = true;
        }
        function launch(uint256 _timer) external onlyOwner() {
            m_Launched = block.timestamp.add(_timer);
            m_AntiBot = true;
            m_Round = 1;
            m_RoundStart = m_Launched;
            m_Raffle[m_Round].push(Buyer(address(0),0,false));
        }
        function _updateDAO(address _sender, uint256 _amount) private {
            uint256 _senderBal = balanceOf(_sender);
            if(_sender != m_UniswapV2Pair && _sender != address(this)){
                if(_senderBal > m_DAOmin){
                    if(_senderBal.sub(_amount) < m_DAOmin){
                        _cleanVotes(_sender);
                    }
                }
            }
        }
        function _cleanVotes(address _sender) private {
            if(m_VoterIdx[m_VoteCycle][msg.sender] != 0){
                delete m_Voters[m_VoteCycle][m_VoterIdx[m_VoteCycle][_sender]];
                m_VoterIdx[m_VoteCycle][msg.sender] = 0;
            }
        }
        function _trackBuy(address _recipient,uint256 _amount) private {
            if(m_BuyerId[m_Round][_recipient] != 0){                           
                m_Raffle[m_Round][m_BuyerId[m_Round][_recipient]].amount += _amount;    
            }
            else{
                m_Raffle[m_Round].push(Buyer(_recipient, _amount, true));
                m_BuyerId[m_Round][_recipient] = m_Raffle[m_Round].length - 1;
            }
        }
        function _trackSell(address _sender) private {
            if(m_BuyerId[m_Round][_sender] != 0)
                m_Raffle[m_Round][m_BuyerId[m_Round][_sender]].eligible = false;
            else{
                m_Raffle[m_Round].push(Buyer(_sender, 0, false));
                m_BuyerId[m_Round][_sender] = m_Raffle[m_Round].length - 1;
            }
        }
        function _swapTokensForETH(uint256 _amount) private {
            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(address[] memory _winners, address _specialWinner, uint256 _invalid) private {
            uint256 _bal = address(this).balance;
            if(_invalid == 0){
                uint256 _denom = _getTaxDenominator();  
                uint256 _marketingShare = _bal.mul(m_MarketingTax).div(_denom);
                uint256 _share = _bal.mul(m_RaffleTax).div(_denom).div(_winners.length);
                uint256 _largestShare = _bal.mul(m_LargestBuyerTax).div(_denom).div(_winners.length);

                if (_marketingShare > 0) {
                    m_MarketingWallet.transfer(_marketingShare);
                    _bal = _bal.sub(_marketingShare);
                }
                m_TotalWinnings += _bal;
                if(_share > 0){
                    for(uint256 i=0; i<_winners.length; i++){                      
                        if(_share > address(this).balance) 
                            _share = address(this).balance;                   
                        if(m_Raffle[m_Round][m_BuyerId[m_Round][_winners[i]]].eligible){
                            m_Winners.push(_winners[i]);
                            m_Winnings.push(_share);
                            m_Earnings[_winners[i]] += _share;
                            payable(_winners[i]).transfer(_share);
                        }
                        _bal = _bal.sub(_share);
                    }            
                }
                if(_specialWinner != address(0) && _largestShare > 0){   
                    if(_largestShare > address(this).balance) 
                        _largestShare = address(this).balance;                
                    if(m_Raffle[m_Round][m_BuyerId[m_Round][_specialWinner]].eligible){
                        m_Winners.push(_specialWinner);
                        m_Winnings.push(_bal);
                        m_Earnings[_specialWinner] += _bal;                    
                        payable(_specialWinner).transfer(_bal);
                    }
                }
            }
            else
                m_MarketingWallet.transfer(_bal.div(_invalid));
        }
        function _getTaxDenominator() private view returns (uint256) {
            uint256 _ret = m_MarketingTax;
            _ret += m_LargestBuyerTax;
            _ret += m_RaffleTax;
            return _ret;
        }
        function _applyRoundSettings(uint256 _raffleTax, uint256 _biggestTax, uint256 _interval) private {
            if(m_RaffleTax != _raffleTax)
                m_RaffleTax = _raffleTax;
            if(m_LargestBuyerTax != _biggestTax)
                m_LargestBuyerTax = _biggestTax;
            if(m_Interval != _interval)
                m_Interval = _interval;
        }
        function updateMarketingTax(uint256 _value) external onlyOwner() {
            m_MarketingTax = _value;
        }
        function viewWinners() external view returns (address[] memory, uint256[] memory) {
            return (m_Winners, m_Winnings);
        }
        function earningsOf(address _address) external view returns (uint256) {
            return m_Earnings[_address];
        }
        function vote(uint256 _raffle, uint256 _biggest, uint256 _interval) external {
            require(balanceOf(msg.sender) >= m_DAOmin);
            require(_raffle >= 1000);
            require(_raffle <= 7000);
            require(_biggest >= 0);
            require(_biggest <= 7000);
            require(_interval >= 900);
            require(_interval <= 86400);
            if(m_VoterIdx[m_VoteCycle][msg.sender] == 0){
                m_Voters[m_VoteCycle].push(Vote(_interval, _raffle, _biggest, 0));
                m_VoterIdx[m_VoteCycle][msg.sender] = m_Voters[m_VoteCycle].length - 1;
            }
            else{
                m_Voters[m_VoteCycle][m_VoterIdx[m_VoteCycle][msg.sender]].raffleTax = _raffle;
                m_Voters[m_VoteCycle][m_VoterIdx[m_VoteCycle][msg.sender]].biggestTax = _biggest;
                m_Voters[m_VoteCycle][m_VoterIdx[m_VoteCycle][msg.sender]].interval = _interval;
            }

        }
        function voteForGeneric(uint256 _value) external {
            require(balanceOf(msg.sender) >= m_DAOmin);
            if(m_VoterIdx[m_VoteCycle][msg.sender] == 0){
                m_Voters[m_VoteCycle].push(Vote(0, 0, 0, _value));
                m_VoterIdx[m_VoteCycle][msg.sender] = m_Voters[m_VoteCycle].length - 1;
            }
            else
                m_Voters[m_VoteCycle][m_VoterIdx[m_VoteCycle][msg.sender]].generic = _value;
        }        
        function getVotes() external view returns (Vote[] memory) {
            return m_Voters[m_VoteCycle];
        }       
        function getBuyers() external view returns (Buyer[] memory, Buyer[] memory) {
            return (m_Raffle[m_Round-1], m_Raffle[m_Round]);
        }        
        function getGameState() external view returns (GameState memory) {
            return GameState(m_Round,m_Interval,m_RaffleTax,m_LargestBuyerTax);
        } 
        function resetGame(address[] memory _winners, address _specialWinner, uint256 _raffleTax, uint256 _biggestTax, uint256 _interval, uint256 _cycle, uint256 _invalid) external {
            require(msg.sender == m_Controller);
            uint256 _bal = balanceOf(address(this));
            _swapTokensForETH(_bal);
            _disperseETH(_winners, _specialWinner, _invalid);           
            _applyRoundSettings(_raffleTax, _biggestTax, _interval); 
            m_Round += 1;
            m_RoundStart = block.timestamp;
            m_Raffle[m_Round].push(Buyer(address(0), 0, false));
            if (_cycle != m_VoteCycle)
                m_Voters[_cycle].push(Vote(0,0,0,0));
            m_VoteCycle = _cycle;
        }
        function getTotalWinnings() external view returns (uint256){
            return m_TotalWinnings;
        }
        function emergencyReclaim() external onlyOwner() {
            m_MarketingWallet.transfer(address(this).balance);
        }
        function toggleAntibot() external onlyOwner() {
            if(m_AntiBot){
                m_AntiBot = false;
                return;
            }
            m_AntiBot = true;
        }
        function addTaxWhitelist(address _address) external onlyOwner() {
            m_ExcludedAddresses[_address] = true;
        }
        function remTaxWhitelist(address _address) external onlyOwner() {
            m_ExcludedAddresses[_address] = false;
        }
        function adjustWalletCap(uint256 _factor) external onlyOwner(){
            m_WalletLimit = TOTAL_SUPPLY.div(_factor);
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_factor","type":"uint256"}],"name":"adjustWalletCap","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":[{"internalType":"address","name":"_address","type":"address"}],"name":"earningsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyReclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyers","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"eligible","type":"bool"}],"internalType":"struct PASSTHELOOT.Buyer[]","name":"","type":"tuple[]"},{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"eligible","type":"bool"}],"internalType":"struct PASSTHELOOT.Buyer[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGameState","outputs":[{"components":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"uint256","name":"gameInterval","type":"uint256"},{"internalType":"uint256","name":"raffleTax","type":"uint256"},{"internalType":"uint256","name":"biggestBuyerTax","type":"uint256"}],"internalType":"struct PASSTHELOOT.GameState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalWinnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVotes","outputs":[{"components":[{"internalType":"uint256","name":"interval","type":"uint256"},{"internalType":"uint256","name":"raffleTax","type":"uint256"},{"internalType":"uint256","name":"biggestTax","type":"uint256"},{"internalType":"uint256","name":"generic","type":"uint256"}],"internalType":"struct PASSTHELOOT.Vote[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","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":"_address","type":"address"}],"name":"remTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_winners","type":"address[]"},{"internalType":"address","name":"_specialWinner","type":"address"},{"internalType":"uint256","name":"_raffleTax","type":"uint256"},{"internalType":"uint256","name":"_biggestTax","type":"uint256"},{"internalType":"uint256","name":"_interval","type":"uint256"},{"internalType":"uint256","name":"_cycle","type":"uint256"},{"internalType":"uint256","name":"_invalid","type":"uint256"}],"name":"resetGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"updateMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewWinners","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_raffle","type":"uint256"},{"internalType":"uint256","name":"_biggest","type":"uint256"},{"internalType":"uint256","name":"_interval","type":"uint256"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"voteForGeneric","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600d81526020017f5061737320746865204c6f6f7400000000000000000000000000000000000000815250600190805190602001906200005192919062000883565b506040518060400160405280600481526020017f4c4f4f5400000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000883565b506012600360006101000a81548160ff021916908360ff160217905550620000e2610190690e9c7f5bd655012000006200073560201b620022bd1790919060201c565b6007556200010a6050690e9c7f5bd655012000006200073560201b620022bd1790919060201c565b6008556000600960006101000a81548160ff021916908315150217905550732d2230185b24af94feeba779ca11ff6f96d17e6d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620186a0601655610384601855610bb86019556107d0601a556000601b55610bb8601c55620001c76103e8690e9c7f5bd655012000006200073560201b620022bd1790919060201c565b601e556001601f556000602160006101000a81548160ff021916908315150217905550348015620001f757600080fd5b5060006200020a6200078760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002c5625af780426200078f60201b620023071790919060201c565b601581905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602260009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602360009080600181540180825580915050600190039060005260206000200160009091909190915055602460008081526020019081526020016000206040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550505060256000601f548152602001908152602001600020604051806080016040528060008152602001600081526020016000815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050690e9c7f5bd65501200000600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b600062000614620007f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef690e9c7f5bd655012000006040516200072791906200094e565b60405180910390a362000bfd565b60006200077f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200081b60201b60201c565b905092915050565b600033905090565b6000808284620007a091906200099a565b905083811015620007e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007df9062000a58565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085c919062000b0d565b60405180910390fd5b506000838562000876919062000b60565b9050809150509392505050565b828054620008919062000bc7565b90600052602060002090601f016020900481019282620008b5576000855562000901565b82601f10620008d057805160ff191683800117855562000901565b8280016001018555821562000901579182015b8281111562000900578251825591602001919060010190620008e3565b5b50905062000910919062000914565b5090565b5b808211156200092f57600081600090555060010162000915565b5090565b6000819050919050565b620009488162000933565b82525050565b60006020820190506200096560008301846200093d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009a78262000933565b9150620009b48362000933565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009ec57620009eb6200096b565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000a40601b83620009f7565b915062000a4d8262000a08565b602082019050919050565b6000602082019050818103600083015262000a738162000a31565b9050919050565b600081519050919050565b60005b8381101562000aa557808201518184015260208101905062000a88565b8381111562000ab5576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ad98262000a7a565b62000ae58185620009f7565b935062000af781856020860162000a85565b62000b028162000abb565b840191505092915050565b6000602082019050818103600083015262000b29818462000acc565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b6d8262000933565b915062000b7a8362000933565b92508262000b8d5762000b8c62000b31565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000be057607f821691505b6020821081141562000bf75762000bf662000b98565b5b50919050565b6155488062000c0d6000396000f3fe6080604052600436106101ba5760003560e01c80638a6655d6116100ec578063d0040d701161008a578063dd62ed3e11610064578063dd62ed3e146105f1578063e8078d941461062e578063f2fde38b14610645578063f64bfaba1461066e576101c1565b8063d0040d7014610585578063da44d275146105ae578063da98c40b146105da576101c1565b806395d89b41116100c657806395d89b41146104c75780639b057610146104f2578063a9059cbb1461051d578063b7d0628b1461055a576101c1565b80638a6655d6146104365780638da5cb5b1461045f5780638df08bd41461048a576101c1565b806323b872dd116101595780635c6ee14a116101335780635c6ee14a1461037e5780635f56f8c2146103a757806370a08231146103d057806385b12c7c1461040d576101c1565b806323b872dd146102ed578063313ce5671461032a5780633cbc58d514610355576101c1565b80630dc96015116101955780630dc96015146102575780630f34b97d1461028257806317b95885146102ab57806318160ddd146102c2576101c1565b806289716a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e8919061413d565b61069a565b005b3480156101fb57600080fd5b50610204610739565b6040516102119190614203565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190614283565b6107cb565b60405161024e91906142de565b60405180910390f35b34801561026357600080fd5b5061026c6107e9565b604051610279919061440c565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190614576565b610883565b005b3480156102b757600080fd5b506102c0610ab7565b005b3480156102ce57600080fd5b506102d7610bb7565b6040516102e49190614643565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061465e565b610bc9565b60405161032191906142de565b60405180910390f35b34801561033657600080fd5b5061033f610ca2565b60405161034c91906146cd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061413d565b610cb9565b005b34801561038a57600080fd5b506103a560048036038101906103a091906146e8565b610eca565b005b3480156103b357600080fd5b506103ce60048036038101906103c9919061413d565b610fba565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906146e8565b611075565b6040516104049190614643565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f919061413d565b6110be565b005b34801561044257600080fd5b5061045d60048036038101906104589190614715565b611282565b005b34801561046b57600080fd5b5061047461160b565b6040516104819190614777565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906146e8565b611634565b6040516104be9190614643565b60405180910390f35b3480156104d357600080fd5b506104dc61167d565b6040516104e99190614203565b60405180910390f35b3480156104fe57600080fd5b5061050761170f565b6040516105149190614643565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190614283565b611719565b60405161055191906142de565b60405180910390f35b34801561056657600080fd5b5061056f611737565b60405161057c91906147e7565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a791906146e8565b61176d565b005b3480156105ba57600080fd5b506105c361185d565b6040516105d192919061496f565b60405180910390f35b3480156105e657600080fd5b506105ef611946565b005b3480156105fd57600080fd5b50610618600480360381019061061391906149a6565b611a2e565b6040516106259190614643565b60405180910390f35b34801561063a57600080fd5b50610643611ab5565b005b34801561065157600080fd5b5061066c600480360381019061066791906146e8565b611f82565b005b34801561067a57600080fd5b506106836120d4565b604051610691929190614ae6565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106d9612365565b73ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690614b69565b60405180910390fd5b80601c8190555050565b60606001805461074890614bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461077490614bb8565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050905090565b60006107df6107d8612365565b848461236d565b6001905092915050565b606060256000601f548152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561087a578382906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610820565b50505050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108dd57600080fd5b60006108e830611075565b90506108f381612538565b6108fe88888461277b565b610909868686612df8565b6001601d600082825461091c9190614c19565b925050819055504260178190555060246000601d5481526020019081526020016000206040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055505050601f548314610aa657602560008481526020019081526020016000206040518060800160405280600081526020016000815260200160008152602001600081525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015550505b82601f819055505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af6612365565b73ffffffffffffffffffffffffffffffffffffffff1614610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4390614b69565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bb4573d6000803e3d6000fd5b50565b6000690e9c7f5bd65501200000905090565b6000610bd6848484612e30565b610c9784610be2612365565b610c92856040518060600160405280602881526020016154eb60289139601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c48612365565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e9092919063ffffffff16565b61236d565b600190509392505050565b6000600360009054906101000a900460ff16905090565b601e54610cc533611075565b1015610cd057600080fd5b600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610e375760256000601f5481526020019081526020016000206040518060800160405280600081526020016000815260200160008152602001838152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050600160256000601f54815260200190815260200160002080549050610ddc9190614c6f565b60116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec7565b8060256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610eb157610eb0614ca3565b5b9060005260206000209060040201600301819055505b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f09612365565b73ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690614b69565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff9612365565b73ffffffffffffffffffffffffffffffffffffffff161461104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690614b69565b60405180910390fd5b61106c81690e9c7f5bd655012000006122bd90919063ffffffff16565b60088190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110fd612365565b73ffffffffffffffffffffffffffffffffffffffff1614611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90614b69565b60405180910390fd5b611166814261230790919063ffffffff16565b6015819055506001602160006101000a81548160ff0219169083151502179055506001601d8190555060155460178190555060246000601d5481526020019081526020016000206040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550505050565b601e5461128e33611075565b101561129957600080fd5b6103e88310156112a857600080fd5b611b588311156112b757600080fd5b60008210156112c557600080fd5b611b588211156112d457600080fd5b6103848110156112e357600080fd5b620151808111156112f357600080fd5b600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156114585760256000601f548152602001908152602001600020604051806080016040528083815260200185815260200184815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050600160256000601f548152602001908152602001600020805490506113fd9190614c6f565b60116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611606565b8260256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114d2576114d1614ca3565b5b9060005260206000209060040201600101819055508160256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061156157611560614ca3565b5b9060005260206000209060040201600201819055508060256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106115f0576115ef614ca3565b5b9060005260206000209060040201600001819055505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606002805461168c90614bb8565b80601f01602080910402602001604051908101604052809291908181526020018280546116b890614bb8565b80156117055780601f106116da57610100808354040283529160200191611705565b820191906000526020600020905b8154815290600101906020018083116116e857829003601f168201915b5050505050905090565b6000602054905090565b600061172d611726612365565b8484612e30565b6001905092915050565b61173f6140cb565b6040518060800160405280601d54815260200160185481526020016019548152602001601a54815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117ac612365565b73ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f990614b69565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60608060226023818054806020026020016040519081016040528092919081815260200182805480156118e557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161189b575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561193757602002820191906000526020600020905b815481526020019060010190808311611923575b50505050509050915091509091565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611985612365565b73ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290614b69565b60405180910390fd5b602160009054906101000a900460ff1615611a10576000602160006101000a81548160ff021916908315150217905550611a2c565b6001602160006101000a81548160ff0219169083151502179055505b565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611af4612365565b73ffffffffffffffffffffffffffffffffffffffff1614611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190614b69565b60405180910390fd5b600960009054906101000a900460ff1615611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614d1e565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c2b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16690e9c7f5bd6550120000061236d565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9a9190614d53565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d259190614d53565b6040518363ffffffff1660e01b8152600401611d42929190614d80565b6020604051808303816000875af1158015611d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d859190614d53565b600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e0e30611075565b600080611e1961160b565b426040518863ffffffff1660e01b8152600401611e3b96959493929190614dee565b60606040518083038185885af1158015611e59573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e7e9190614e64565b505050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f20929190614eb7565b6020604051808303816000875af1158015611f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f639190614f0c565b506001600960006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611fc1612365565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614b69565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606080602460006001601d546120ea9190614c6f565b815260200190815260200160002060246000601d54815260200190815260200160002081805480602002602001604051908101604052809291908181526020016000905b828210156121db57838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1615151515815250508152602001906001019061212e565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156122af57838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff16151515158152505081526020019060010190612202565b505050509050915091509091565b60006122ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131b2565b905092915050565b60008082846123169190614c19565b90508381101561235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235290614f85565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490615017565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561244d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612444906150a9565b60405180910390fd5b80601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161252b9190614643565b60405180910390a3505050565b6000600267ffffffffffffffff81111561255557612554614433565b5b6040519080825280602002602001820160405280156125835781602001602082028036833780820191505090505b509050308160008151811061259b5761259a614ca3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190614d53565b8160018151811061267a57612679614ca3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126e130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461236d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127459594939291906150c9565b600060405180830381600087803b15801561275f57600080fd5b505af1158015612773573d6000803e3d6000fd5b505050505050565b60004790506000821415612d76576000612793613215565b905060006127be826127b0601c548661324490919063ffffffff16565b6122bd90919063ffffffff16565b905060006127fc87516127ee856127e06019548961324490919063ffffffff16565b6122bd90919063ffffffff16565b6122bd90919063ffffffff16565b9050600061283a885161282c8661281e601a548a61324490919063ffffffff16565b6122bd90919063ffffffff16565b6122bd90919063ffffffff16565b905060008311156128c457600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156128ad573d6000803e3d6000fd5b506128c183866132bf90919063ffffffff16565b94505b84602060008282546128d69190614c19565b925050819055506000821115612b575760005b8851811015612b5557478311156128fe574792505b60246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008b848151811061293d5761293c614ca3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061299157612990614ca3565b5b906000526020600020906003020160020160009054906101000a900460ff1615612b2d5760228982815181106129ca576129c9614ca3565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602383908060018154018082558091505060019003906000526020600020016000909190919091505582601460008b8481518110612a7357612a72614ca3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ac49190614c19565b92505081905550888181518110612ade57612add614ca3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612b2b573d6000803e3d6000fd5b505b612b4083876132bf90919063ffffffff16565b95508080612b4d90615123565b9150506128e9565b505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015612b945750600081115b15612d6d5747811115612ba5574790505b60246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110612c1e57612c1d614ca3565b5b906000526020600020906003020160020160009054906101000a900460ff1615612d6c576022879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602385908060018154018082558091505060019003906000526020600020016000909190919091505584601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d1d9190614c19565b925050819055508673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015612d6a573d6000803e3d6000fd5b505b5b50505050612df2565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612dc584846122bd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612df0573d6000803e3d6000fd5b505b50505050565b8260195414612e0957826019819055505b81601a5414612e1a5781601a819055505b8060185414612e2b57806018819055505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e97906151de565b60405180910390fd5b60008111612ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eda90615270565b60405180910390fd5b602160009054906101000a900460ff168015612f055750612f048383613309565b5b156130a257600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639051f0248484600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518563ffffffff1660e01b8152600401612f8d9493929190615290565b6020604051808303816000875af1158015612fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd09190614f0c565b15613010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300790615347565b60405180910390fd5b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161306f93929190615367565b600060405180830381600087803b15801561308957600080fd5b505af115801561309d573d6000803e3d6000fd5b505050505b6130ab826133bc565b156130c7576008546130bc83611075565b106130c657600080fd5b5b60006130d38484613471565b1561313c576131066130f76130e6613215565b6016546122bd90919063ffffffff16565b836122bd90919063ffffffff16565b905060155442101561311757600080fd5b613121848461351d565b1561313b5761312e613628565b82111561313a57600080fd5b5b5b6131488484848461367e565b50505050565b6000838311158290613196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318d9190614203565b60405180910390fd5b50600083856131a59190614c6f565b9050809150509392505050565b600080831182906131f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f09190614203565b60405180910390fd5b506000838561320891906153cd565b9050809150509392505050565b600080601c549050601a548161322b9190614c19565b90506019548161323b9190614c19565b90508091505090565b60008083141561325757600090506132b9565b6000828461326591906153fe565b905082848261327491906153cd565b146132b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ab906154ca565b60405180910390fd5b809150505b92915050565b600061330183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061314e565b905092915050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806133b45750600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561346a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135145750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156135ca5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136205750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061364161038460155461230790919063ffffffff16565b421161366d57613666610190690e9c7f5bd655012000006122bd90919063ffffffff16565b905061367b565b690e9c7f5bd6550120000090505b90565b600061369382846132bf90919063ffffffff16565b905061369f8584613918565b6136f183600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bf90919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378681600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230790919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061381b82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230790919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613867856139eb565b1561387b576138768482613a45565b6138ac565b61388484613caa565b156138975761389285613d04565b6138ab565b6138a085613d04565b6138aa8482613a45565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139099190614643565b60405180910390a35050505050565b600061392383611075565b9050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156139af57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156139e657601e548111156139e557601e546139d483836132bf90919063ffffffff16565b10156139e4576139e383613f6b565b5b5b5b505050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600060106000601d54815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613b45578060246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110613b1957613b18614ca3565b5b90600052602060002090600302016001016000828254613b399190614c19565b92505081905550613ca6565b60246000601d54815260200190815260200160002060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200160011515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055505050600160246000601d54815260200190815260200160002080549050613c4f9190614c6f565b60106000601d54815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600060106000601d54815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613e0657600060246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110613dd957613dd8614ca3565b5b906000526020600020906003020160020160006101000a81548160ff021916908315150217905550613f68565b60246000601d54815260200190815260200160002060405180606001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055505050600160246000601d54815260200190815260200160002080549050613f119190614c6f565b60106000601d54815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146140c85760256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061403e5761403d614ca3565b5b90600052602060002090600402016000808201600090556001820160009055600282016000905560038201600090555050600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61411a81614107565b811461412557600080fd5b50565b60008135905061413781614111565b92915050565b600060208284031215614153576141526140fd565b5b600061416184828501614128565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141a4578082015181840152602081019050614189565b838111156141b3576000848401525b50505050565b6000601f19601f8301169050919050565b60006141d58261416a565b6141df8185614175565b93506141ef818560208601614186565b6141f8816141b9565b840191505092915050565b6000602082019050818103600083015261421d81846141ca565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061425082614225565b9050919050565b61426081614245565b811461426b57600080fd5b50565b60008135905061427d81614257565b92915050565b6000806040838503121561429a576142996140fd565b5b60006142a88582860161426e565b92505060206142b985828601614128565b9150509250929050565b60008115159050919050565b6142d8816142c3565b82525050565b60006020820190506142f360008301846142cf565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61432e81614107565b82525050565b60808201600082015161434a6000850182614325565b50602082015161435d6020850182614325565b5060408201516143706040850182614325565b5060608201516143836060850182614325565b50505050565b60006143958383614334565b60808301905092915050565b6000602082019050919050565b60006143b9826142f9565b6143c38185614304565b93506143ce83614315565b8060005b838110156143ff5781516143e68882614389565b97506143f1836143a1565b9250506001810190506143d2565b5085935050505092915050565b6000602082019050818103600083015261442681846143ae565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61446b826141b9565b810181811067ffffffffffffffff8211171561448a57614489614433565b5b80604052505050565b600061449d6140f3565b90506144a98282614462565b919050565b600067ffffffffffffffff8211156144c9576144c8614433565b5b602082029050602081019050919050565b600080fd5b60006144f26144ed846144ae565b614493565b90508083825260208201905060208402830185811115614515576145146144da565b5b835b8181101561453e578061452a888261426e565b845260208401935050602081019050614517565b5050509392505050565b600082601f83011261455d5761455c61442e565b5b813561456d8482602086016144df565b91505092915050565b600080600080600080600060e0888a031215614595576145946140fd565b5b600088013567ffffffffffffffff8111156145b3576145b2614102565b5b6145bf8a828b01614548565b97505060206145d08a828b0161426e565b96505060406145e18a828b01614128565b95505060606145f28a828b01614128565b94505060806146038a828b01614128565b93505060a06146148a828b01614128565b92505060c06146258a828b01614128565b91505092959891949750929550565b61463d81614107565b82525050565b60006020820190506146586000830184614634565b92915050565b600080600060608486031215614677576146766140fd565b5b60006146858682870161426e565b93505060206146968682870161426e565b92505060406146a786828701614128565b9150509250925092565b600060ff82169050919050565b6146c7816146b1565b82525050565b60006020820190506146e260008301846146be565b92915050565b6000602082840312156146fe576146fd6140fd565b5b600061470c8482850161426e565b91505092915050565b60008060006060848603121561472e5761472d6140fd565b5b600061473c86828701614128565b935050602061474d86828701614128565b925050604061475e86828701614128565b9150509250925092565b61477181614245565b82525050565b600060208201905061478c6000830184614768565b92915050565b6080820160008201516147a86000850182614325565b5060208201516147bb6020850182614325565b5060408201516147ce6040850182614325565b5060608201516147e16060850182614325565b50505050565b60006080820190506147fc6000830184614792565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61483781614245565b82525050565b6000614849838361482e565b60208301905092915050565b6000602082019050919050565b600061486d82614802565b614877818561480d565b93506148828361481e565b8060005b838110156148b357815161489a888261483d565b97506148a583614855565b925050600181019050614886565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006148f88383614325565b60208301905092915050565b6000602082019050919050565b600061491c826148c0565b61492681856148cb565b9350614931836148dc565b8060005b8381101561496257815161494988826148ec565b975061495483614904565b925050600181019050614935565b5085935050505092915050565b600060408201905081810360008301526149898185614862565b9050818103602083015261499d8184614911565b90509392505050565b600080604083850312156149bd576149bc6140fd565b5b60006149cb8582860161426e565b92505060206149dc8582860161426e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a1b816142c3565b82525050565b606082016000820151614a37600085018261482e565b506020820151614a4a6020850182614325565b506040820151614a5d6040850182614a12565b50505050565b6000614a6f8383614a21565b60608301905092915050565b6000602082019050919050565b6000614a93826149e6565b614a9d81856149f1565b9350614aa883614a02565b8060005b83811015614ad9578151614ac08882614a63565b9750614acb83614a7b565b925050600181019050614aac565b5085935050505092915050565b60006040820190508181036000830152614b008185614a88565b90508181036020830152614b148184614a88565b90509392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b53602083614175565b9150614b5e82614b1d565b602082019050919050565b60006020820190508181036000830152614b8281614b46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bd057607f821691505b60208210811415614be457614be3614b89565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c2482614107565b9150614c2f83614107565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c6457614c63614bea565b5b828201905092915050565b6000614c7a82614107565b9150614c8583614107565b925082821015614c9857614c97614bea565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b6000614d08601883614175565b9150614d1382614cd2565b602082019050919050565b60006020820190508181036000830152614d3781614cfb565b9050919050565b600081519050614d4d81614257565b92915050565b600060208284031215614d6957614d686140fd565b5b6000614d7784828501614d3e565b91505092915050565b6000604082019050614d956000830185614768565b614da26020830184614768565b9392505050565b6000819050919050565b6000819050919050565b6000614dd8614dd3614dce84614da9565b614db3565b614107565b9050919050565b614de881614dbd565b82525050565b600060c082019050614e036000830189614768565b614e106020830188614634565b614e1d6040830187614ddf565b614e2a6060830186614ddf565b614e376080830185614768565b614e4460a0830184614634565b979650505050505050565b600081519050614e5e81614111565b92915050565b600080600060608486031215614e7d57614e7c6140fd565b5b6000614e8b86828701614e4f565b9350506020614e9c86828701614e4f565b9250506040614ead86828701614e4f565b9150509250925092565b6000604082019050614ecc6000830185614768565b614ed96020830184614634565b9392505050565b614ee9816142c3565b8114614ef457600080fd5b50565b600081519050614f0681614ee0565b92915050565b600060208284031215614f2257614f216140fd565b5b6000614f3084828501614ef7565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f6f601b83614175565b9150614f7a82614f39565b602082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615001602483614175565b915061500c82614fa5565b604082019050919050565b6000602082019050818103600083015261503081614ff4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615093602283614175565b915061509e82615037565b604082019050919050565b600060208201905081810360008301526150c281615086565b9050919050565b600060a0820190506150de6000830188614634565b6150eb6020830187614ddf565b81810360408301526150fd8186614862565b905061510c6060830185614768565b6151196080830184614634565b9695505050505050565b600061512e82614107565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561516157615160614bea565b5b600182019050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151c8602583614175565b91506151d38261516c565b604082019050919050565b600060208201905081810360008301526151f7816151bb565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061525a602983614175565b9150615265826151fe565b604082019050919050565b600060208201905081810360008301526152898161524d565b9050919050565b60006080820190506152a56000830187614768565b6152b26020830186614768565b6152bf6040830185614768565b6152cc6060830184614768565b95945050505050565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6000615331602683614175565b915061533c826152d5565b604082019050919050565b6000602082019050818103600083015261536081615324565b9050919050565b600060608201905061537c6000830186614768565b6153896020830185614768565b6153966040830184614768565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006153d882614107565b91506153e383614107565b9250826153f3576153f261539e565b5b828204905092915050565b600061540982614107565b915061541483614107565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561544d5761544c614bea565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006154b4602183614175565b91506154bf82615458565b604082019050919050565b600060208201905081810360008301526154e3816154a7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122064b7fe463d15043a76755fec2008608bb49db036f7b584d7dd521acc3f90f4b164736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101ba5760003560e01c80638a6655d6116100ec578063d0040d701161008a578063dd62ed3e11610064578063dd62ed3e146105f1578063e8078d941461062e578063f2fde38b14610645578063f64bfaba1461066e576101c1565b8063d0040d7014610585578063da44d275146105ae578063da98c40b146105da576101c1565b806395d89b41116100c657806395d89b41146104c75780639b057610146104f2578063a9059cbb1461051d578063b7d0628b1461055a576101c1565b80638a6655d6146104365780638da5cb5b1461045f5780638df08bd41461048a576101c1565b806323b872dd116101595780635c6ee14a116101335780635c6ee14a1461037e5780635f56f8c2146103a757806370a08231146103d057806385b12c7c1461040d576101c1565b806323b872dd146102ed578063313ce5671461032a5780633cbc58d514610355576101c1565b80630dc96015116101955780630dc96015146102575780630f34b97d1461028257806317b95885146102ab57806318160ddd146102c2576101c1565b806289716a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e8919061413d565b61069a565b005b3480156101fb57600080fd5b50610204610739565b6040516102119190614203565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190614283565b6107cb565b60405161024e91906142de565b60405180910390f35b34801561026357600080fd5b5061026c6107e9565b604051610279919061440c565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190614576565b610883565b005b3480156102b757600080fd5b506102c0610ab7565b005b3480156102ce57600080fd5b506102d7610bb7565b6040516102e49190614643565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061465e565b610bc9565b60405161032191906142de565b60405180910390f35b34801561033657600080fd5b5061033f610ca2565b60405161034c91906146cd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061413d565b610cb9565b005b34801561038a57600080fd5b506103a560048036038101906103a091906146e8565b610eca565b005b3480156103b357600080fd5b506103ce60048036038101906103c9919061413d565b610fba565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906146e8565b611075565b6040516104049190614643565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f919061413d565b6110be565b005b34801561044257600080fd5b5061045d60048036038101906104589190614715565b611282565b005b34801561046b57600080fd5b5061047461160b565b6040516104819190614777565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906146e8565b611634565b6040516104be9190614643565b60405180910390f35b3480156104d357600080fd5b506104dc61167d565b6040516104e99190614203565b60405180910390f35b3480156104fe57600080fd5b5061050761170f565b6040516105149190614643565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190614283565b611719565b60405161055191906142de565b60405180910390f35b34801561056657600080fd5b5061056f611737565b60405161057c91906147e7565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a791906146e8565b61176d565b005b3480156105ba57600080fd5b506105c361185d565b6040516105d192919061496f565b60405180910390f35b3480156105e657600080fd5b506105ef611946565b005b3480156105fd57600080fd5b50610618600480360381019061061391906149a6565b611a2e565b6040516106259190614643565b60405180910390f35b34801561063a57600080fd5b50610643611ab5565b005b34801561065157600080fd5b5061066c600480360381019061066791906146e8565b611f82565b005b34801561067a57600080fd5b506106836120d4565b604051610691929190614ae6565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106d9612365565b73ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690614b69565b60405180910390fd5b80601c8190555050565b60606001805461074890614bb8565b80601f016020809104026020016040519081016040528092919081815260200182805461077490614bb8565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050905090565b60006107df6107d8612365565b848461236d565b6001905092915050565b606060256000601f548152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561087a578382906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610820565b50505050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108dd57600080fd5b60006108e830611075565b90506108f381612538565b6108fe88888461277b565b610909868686612df8565b6001601d600082825461091c9190614c19565b925050819055504260178190555060246000601d5481526020019081526020016000206040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055505050601f548314610aa657602560008481526020019081526020016000206040518060800160405280600081526020016000815260200160008152602001600081525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015550505b82601f819055505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af6612365565b73ffffffffffffffffffffffffffffffffffffffff1614610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4390614b69565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bb4573d6000803e3d6000fd5b50565b6000690e9c7f5bd65501200000905090565b6000610bd6848484612e30565b610c9784610be2612365565b610c92856040518060600160405280602881526020016154eb60289139601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c48612365565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e9092919063ffffffff16565b61236d565b600190509392505050565b6000600360009054906101000a900460ff16905090565b601e54610cc533611075565b1015610cd057600080fd5b600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610e375760256000601f5481526020019081526020016000206040518060800160405280600081526020016000815260200160008152602001838152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050600160256000601f54815260200190815260200160002080549050610ddc9190614c6f565b60116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec7565b8060256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610eb157610eb0614ca3565b5b9060005260206000209060040201600301819055505b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f09612365565b73ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690614b69565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff9612365565b73ffffffffffffffffffffffffffffffffffffffff161461104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690614b69565b60405180910390fd5b61106c81690e9c7f5bd655012000006122bd90919063ffffffff16565b60088190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110fd612365565b73ffffffffffffffffffffffffffffffffffffffff1614611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90614b69565b60405180910390fd5b611166814261230790919063ffffffff16565b6015819055506001602160006101000a81548160ff0219169083151502179055506001601d8190555060155460178190555060246000601d5481526020019081526020016000206040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550505050565b601e5461128e33611075565b101561129957600080fd5b6103e88310156112a857600080fd5b611b588311156112b757600080fd5b60008210156112c557600080fd5b611b588211156112d457600080fd5b6103848110156112e357600080fd5b620151808111156112f357600080fd5b600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156114585760256000601f548152602001908152602001600020604051806080016040528083815260200185815260200184815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050600160256000601f548152602001908152602001600020805490506113fd9190614c6f565b60116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611606565b8260256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114d2576114d1614ca3565b5b9060005260206000209060040201600101819055508160256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061156157611560614ca3565b5b9060005260206000209060040201600201819055508060256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106115f0576115ef614ca3565b5b9060005260206000209060040201600001819055505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606002805461168c90614bb8565b80601f01602080910402602001604051908101604052809291908181526020018280546116b890614bb8565b80156117055780601f106116da57610100808354040283529160200191611705565b820191906000526020600020905b8154815290600101906020018083116116e857829003601f168201915b5050505050905090565b6000602054905090565b600061172d611726612365565b8484612e30565b6001905092915050565b61173f6140cb565b6040518060800160405280601d54815260200160185481526020016019548152602001601a54815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117ac612365565b73ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f990614b69565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60608060226023818054806020026020016040519081016040528092919081815260200182805480156118e557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161189b575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561193757602002820191906000526020600020905b815481526020019060010190808311611923575b50505050509050915091509091565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611985612365565b73ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290614b69565b60405180910390fd5b602160009054906101000a900460ff1615611a10576000602160006101000a81548160ff021916908315150217905550611a2c565b6001602160006101000a81548160ff0219169083151502179055505b565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611af4612365565b73ffffffffffffffffffffffffffffffffffffffff1614611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190614b69565b60405180910390fd5b600960009054906101000a900460ff1615611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614d1e565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c2b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16690e9c7f5bd6550120000061236d565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9a9190614d53565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d259190614d53565b6040518363ffffffff1660e01b8152600401611d42929190614d80565b6020604051808303816000875af1158015611d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d859190614d53565b600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e0e30611075565b600080611e1961160b565b426040518863ffffffff1660e01b8152600401611e3b96959493929190614dee565b60606040518083038185885af1158015611e59573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e7e9190614e64565b505050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f20929190614eb7565b6020604051808303816000875af1158015611f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f639190614f0c565b506001600960006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611fc1612365565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614b69565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606080602460006001601d546120ea9190614c6f565b815260200190815260200160002060246000601d54815260200190815260200160002081805480602002602001604051908101604052809291908181526020016000905b828210156121db57838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1615151515815250508152602001906001019061212e565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156122af57838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff16151515158152505081526020019060010190612202565b505050509050915091509091565b60006122ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131b2565b905092915050565b60008082846123169190614c19565b90508381101561235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235290614f85565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490615017565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561244d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612444906150a9565b60405180910390fd5b80601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161252b9190614643565b60405180910390a3505050565b6000600267ffffffffffffffff81111561255557612554614433565b5b6040519080825280602002602001820160405280156125835781602001602082028036833780820191505090505b509050308160008151811061259b5761259a614ca3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190614d53565b8160018151811061267a57612679614ca3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126e130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461236d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127459594939291906150c9565b600060405180830381600087803b15801561275f57600080fd5b505af1158015612773573d6000803e3d6000fd5b505050505050565b60004790506000821415612d76576000612793613215565b905060006127be826127b0601c548661324490919063ffffffff16565b6122bd90919063ffffffff16565b905060006127fc87516127ee856127e06019548961324490919063ffffffff16565b6122bd90919063ffffffff16565b6122bd90919063ffffffff16565b9050600061283a885161282c8661281e601a548a61324490919063ffffffff16565b6122bd90919063ffffffff16565b6122bd90919063ffffffff16565b905060008311156128c457600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156128ad573d6000803e3d6000fd5b506128c183866132bf90919063ffffffff16565b94505b84602060008282546128d69190614c19565b925050819055506000821115612b575760005b8851811015612b5557478311156128fe574792505b60246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008b848151811061293d5761293c614ca3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061299157612990614ca3565b5b906000526020600020906003020160020160009054906101000a900460ff1615612b2d5760228982815181106129ca576129c9614ca3565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602383908060018154018082558091505060019003906000526020600020016000909190919091505582601460008b8481518110612a7357612a72614ca3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ac49190614c19565b92505081905550888181518110612ade57612add614ca3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612b2b573d6000803e3d6000fd5b505b612b4083876132bf90919063ffffffff16565b95508080612b4d90615123565b9150506128e9565b505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015612b945750600081115b15612d6d5747811115612ba5574790505b60246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110612c1e57612c1d614ca3565b5b906000526020600020906003020160020160009054906101000a900460ff1615612d6c576022879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602385908060018154018082558091505060019003906000526020600020016000909190919091505584601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d1d9190614c19565b925050819055508673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015612d6a573d6000803e3d6000fd5b505b5b50505050612df2565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612dc584846122bd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612df0573d6000803e3d6000fd5b505b50505050565b8260195414612e0957826019819055505b81601a5414612e1a5781601a819055505b8060185414612e2b57806018819055505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e97906151de565b60405180910390fd5b60008111612ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eda90615270565b60405180910390fd5b602160009054906101000a900460ff168015612f055750612f048383613309565b5b156130a257600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639051f0248484600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518563ffffffff1660e01b8152600401612f8d9493929190615290565b6020604051808303816000875af1158015612fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd09190614f0c565b15613010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300790615347565b60405180910390fd5b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161306f93929190615367565b600060405180830381600087803b15801561308957600080fd5b505af115801561309d573d6000803e3d6000fd5b505050505b6130ab826133bc565b156130c7576008546130bc83611075565b106130c657600080fd5b5b60006130d38484613471565b1561313c576131066130f76130e6613215565b6016546122bd90919063ffffffff16565b836122bd90919063ffffffff16565b905060155442101561311757600080fd5b613121848461351d565b1561313b5761312e613628565b82111561313a57600080fd5b5b5b6131488484848461367e565b50505050565b6000838311158290613196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318d9190614203565b60405180910390fd5b50600083856131a59190614c6f565b9050809150509392505050565b600080831182906131f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f09190614203565b60405180910390fd5b506000838561320891906153cd565b9050809150509392505050565b600080601c549050601a548161322b9190614c19565b90506019548161323b9190614c19565b90508091505090565b60008083141561325757600090506132b9565b6000828461326591906153fe565b905082848261327491906153cd565b146132b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ab906154ca565b60405180910390fd5b809150505b92915050565b600061330183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061314e565b905092915050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806133b45750600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561346a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135145750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156135ca5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136205750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061364161038460155461230790919063ffffffff16565b421161366d57613666610190690e9c7f5bd655012000006122bd90919063ffffffff16565b905061367b565b690e9c7f5bd6550120000090505b90565b600061369382846132bf90919063ffffffff16565b905061369f8584613918565b6136f183600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bf90919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378681600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230790919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061381b82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230790919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613867856139eb565b1561387b576138768482613a45565b6138ac565b61388484613caa565b156138975761389285613d04565b6138ab565b6138a085613d04565b6138aa8482613a45565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139099190614643565b60405180910390a35050505050565b600061392383611075565b9050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156139af57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156139e657601e548111156139e557601e546139d483836132bf90919063ffffffff16565b10156139e4576139e383613f6b565b5b5b5b505050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600060106000601d54815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613b45578060246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110613b1957613b18614ca3565b5b90600052602060002090600302016001016000828254613b399190614c19565b92505081905550613ca6565b60246000601d54815260200190815260200160002060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200160011515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055505050600160246000601d54815260200190815260200160002080549050613c4f9190614c6f565b60106000601d54815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600060106000601d54815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613e0657600060246000601d54815260200190815260200160002060106000601d54815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110613dd957613dd8614ca3565b5b906000526020600020906003020160020160006101000a81548160ff021916908315150217905550613f68565b60246000601d54815260200190815260200160002060405180606001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055505050600160246000601d54815260200190815260200160002080549050613f119190614c6f565b60106000601d54815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146140c85760256000601f54815260200190815260200160002060116000601f54815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061403e5761403d614ca3565b5b90600052602060002090600402016000808201600090556001820160009055600282016000905560038201600090555050600060116000601f54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61411a81614107565b811461412557600080fd5b50565b60008135905061413781614111565b92915050565b600060208284031215614153576141526140fd565b5b600061416184828501614128565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141a4578082015181840152602081019050614189565b838111156141b3576000848401525b50505050565b6000601f19601f8301169050919050565b60006141d58261416a565b6141df8185614175565b93506141ef818560208601614186565b6141f8816141b9565b840191505092915050565b6000602082019050818103600083015261421d81846141ca565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061425082614225565b9050919050565b61426081614245565b811461426b57600080fd5b50565b60008135905061427d81614257565b92915050565b6000806040838503121561429a576142996140fd565b5b60006142a88582860161426e565b92505060206142b985828601614128565b9150509250929050565b60008115159050919050565b6142d8816142c3565b82525050565b60006020820190506142f360008301846142cf565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61432e81614107565b82525050565b60808201600082015161434a6000850182614325565b50602082015161435d6020850182614325565b5060408201516143706040850182614325565b5060608201516143836060850182614325565b50505050565b60006143958383614334565b60808301905092915050565b6000602082019050919050565b60006143b9826142f9565b6143c38185614304565b93506143ce83614315565b8060005b838110156143ff5781516143e68882614389565b97506143f1836143a1565b9250506001810190506143d2565b5085935050505092915050565b6000602082019050818103600083015261442681846143ae565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61446b826141b9565b810181811067ffffffffffffffff8211171561448a57614489614433565b5b80604052505050565b600061449d6140f3565b90506144a98282614462565b919050565b600067ffffffffffffffff8211156144c9576144c8614433565b5b602082029050602081019050919050565b600080fd5b60006144f26144ed846144ae565b614493565b90508083825260208201905060208402830185811115614515576145146144da565b5b835b8181101561453e578061452a888261426e565b845260208401935050602081019050614517565b5050509392505050565b600082601f83011261455d5761455c61442e565b5b813561456d8482602086016144df565b91505092915050565b600080600080600080600060e0888a031215614595576145946140fd565b5b600088013567ffffffffffffffff8111156145b3576145b2614102565b5b6145bf8a828b01614548565b97505060206145d08a828b0161426e565b96505060406145e18a828b01614128565b95505060606145f28a828b01614128565b94505060806146038a828b01614128565b93505060a06146148a828b01614128565b92505060c06146258a828b01614128565b91505092959891949750929550565b61463d81614107565b82525050565b60006020820190506146586000830184614634565b92915050565b600080600060608486031215614677576146766140fd565b5b60006146858682870161426e565b93505060206146968682870161426e565b92505060406146a786828701614128565b9150509250925092565b600060ff82169050919050565b6146c7816146b1565b82525050565b60006020820190506146e260008301846146be565b92915050565b6000602082840312156146fe576146fd6140fd565b5b600061470c8482850161426e565b91505092915050565b60008060006060848603121561472e5761472d6140fd565b5b600061473c86828701614128565b935050602061474d86828701614128565b925050604061475e86828701614128565b9150509250925092565b61477181614245565b82525050565b600060208201905061478c6000830184614768565b92915050565b6080820160008201516147a86000850182614325565b5060208201516147bb6020850182614325565b5060408201516147ce6040850182614325565b5060608201516147e16060850182614325565b50505050565b60006080820190506147fc6000830184614792565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61483781614245565b82525050565b6000614849838361482e565b60208301905092915050565b6000602082019050919050565b600061486d82614802565b614877818561480d565b93506148828361481e565b8060005b838110156148b357815161489a888261483d565b97506148a583614855565b925050600181019050614886565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006148f88383614325565b60208301905092915050565b6000602082019050919050565b600061491c826148c0565b61492681856148cb565b9350614931836148dc565b8060005b8381101561496257815161494988826148ec565b975061495483614904565b925050600181019050614935565b5085935050505092915050565b600060408201905081810360008301526149898185614862565b9050818103602083015261499d8184614911565b90509392505050565b600080604083850312156149bd576149bc6140fd565b5b60006149cb8582860161426e565b92505060206149dc8582860161426e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a1b816142c3565b82525050565b606082016000820151614a37600085018261482e565b506020820151614a4a6020850182614325565b506040820151614a5d6040850182614a12565b50505050565b6000614a6f8383614a21565b60608301905092915050565b6000602082019050919050565b6000614a93826149e6565b614a9d81856149f1565b9350614aa883614a02565b8060005b83811015614ad9578151614ac08882614a63565b9750614acb83614a7b565b925050600181019050614aac565b5085935050505092915050565b60006040820190508181036000830152614b008185614a88565b90508181036020830152614b148184614a88565b90509392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b53602083614175565b9150614b5e82614b1d565b602082019050919050565b60006020820190508181036000830152614b8281614b46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bd057607f821691505b60208210811415614be457614be3614b89565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c2482614107565b9150614c2f83614107565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c6457614c63614bea565b5b828201905092915050565b6000614c7a82614107565b9150614c8583614107565b925082821015614c9857614c97614bea565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b6000614d08601883614175565b9150614d1382614cd2565b602082019050919050565b60006020820190508181036000830152614d3781614cfb565b9050919050565b600081519050614d4d81614257565b92915050565b600060208284031215614d6957614d686140fd565b5b6000614d7784828501614d3e565b91505092915050565b6000604082019050614d956000830185614768565b614da26020830184614768565b9392505050565b6000819050919050565b6000819050919050565b6000614dd8614dd3614dce84614da9565b614db3565b614107565b9050919050565b614de881614dbd565b82525050565b600060c082019050614e036000830189614768565b614e106020830188614634565b614e1d6040830187614ddf565b614e2a6060830186614ddf565b614e376080830185614768565b614e4460a0830184614634565b979650505050505050565b600081519050614e5e81614111565b92915050565b600080600060608486031215614e7d57614e7c6140fd565b5b6000614e8b86828701614e4f565b9350506020614e9c86828701614e4f565b9250506040614ead86828701614e4f565b9150509250925092565b6000604082019050614ecc6000830185614768565b614ed96020830184614634565b9392505050565b614ee9816142c3565b8114614ef457600080fd5b50565b600081519050614f0681614ee0565b92915050565b600060208284031215614f2257614f216140fd565b5b6000614f3084828501614ef7565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f6f601b83614175565b9150614f7a82614f39565b602082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615001602483614175565b915061500c82614fa5565b604082019050919050565b6000602082019050818103600083015261503081614ff4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615093602283614175565b915061509e82615037565b604082019050919050565b600060208201905081810360008301526150c281615086565b9050919050565b600060a0820190506150de6000830188614634565b6150eb6020830187614ddf565b81810360408301526150fd8186614862565b905061510c6060830185614768565b6151196080830184614634565b9695505050505050565b600061512e82614107565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561516157615160614bea565b5b600182019050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151c8602583614175565b91506151d38261516c565b604082019050919050565b600060208201905081810360008301526151f7816151bb565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061525a602983614175565b9150615265826151fe565b604082019050919050565b600060208201905081810360008301526152898161524d565b9050919050565b60006080820190506152a56000830187614768565b6152b26020830186614768565b6152bf6040830185614768565b6152cc6060830184614768565b95945050505050565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6000615331602683614175565b915061533c826152d5565b604082019050919050565b6000602082019050818103600083015261536081615324565b9050919050565b600060608201905061537c6000830186614768565b6153896020830185614768565b6153966040830184614768565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006153d882614107565b91506153e383614107565b9250826153f3576153f261539e565b5b828204905092915050565b600061540982614107565b915061541483614107565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561544d5761544c614bea565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006154b4602183614175565b91506154bf82615458565b604082019050919050565b600060208201905081810360008301526154e3816154a7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122064b7fe463d15043a76755fec2008608bb49db036f7b584d7dd521acc3f90f4b164736f6c634300080b0033

Deployed Bytecode Sourcemap

4788:18448:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19294:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8261:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9188:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21151:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21618:740;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22486:125;;;;;;;;;;;;;:::i;:::-;;8571:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9375:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8469:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20672:461;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22961:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23099:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8689;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14136:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19702:960;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2945:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19568:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8363:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22368:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8829:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21449:158;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22824:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19419:139;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22621:193;;;;;;;;;;;;;:::i;:::-;;9022:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13362:764;;;;;;;;;;;;;:::i;:::-;;3043:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21281:150;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;19294:115;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19391:6:::1;19374:14;:23;;;;19294:115:::0;:::o;8261:92::-;8298:13;8335:6;8328:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8261:92;:::o;9188:177::-;9265:4;9286:41;9295:12;:10;:12::i;:::-;9309:8;9319:7;9286:8;:41::i;:::-;9349:4;9342:11;;9188:177;;;;:::o;21151:113::-;21194:13;21231:8;:21;21240:11;;21231:21;;;;;;;;;;;21224:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21151:113;:::o;21618:740::-;21828:12;;;;;;;;;;;21814:26;;:10;:26;;;21806:35;;;;;;21856:12;21871:24;21889:4;21871:9;:24::i;:::-;21856:39;;21910:23;21928:4;21910:17;:23::i;:::-;21948:48;21961:8;21971:14;21987:8;21948:12;:48::i;:::-;22022:55;22042:10;22054:11;22067:9;22022:19;:55::i;:::-;22104:1;22093:7;;:12;;;;;;;:::i;:::-;;;;;;;;22135:15;22120:12;:30;;;;22165:8;:17;22174:7;;22165:17;;;;;;;;;;;22188:27;;;;;;;;22202:1;22188:27;;;;;;22206:1;22188:27;;;;22209:5;22188:27;;;;;22165:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22245:11;;22235:6;:21;22231:80;;22275:8;:16;22284:6;22275:16;;;;;;;;;;;22297:13;;;;;;;;22302:1;22297:13;;;;22304:1;22297:13;;;;22306:1;22297:13;;;;22308:1;22297:13;;;22275:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22231:80;22340:6;22326:11;:20;;;;21791:567;21618:740;;;;;;;:::o;22486:125::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22550:17:::1;;;;;;;;;;;:26;;:49;22577:21;22550:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22486:125::o:0;8571:108::-;8624:7;4916:14;8648:19;;8571:108;:::o;9375:339::-;9476:4;9497:39;9507:7;9516:10;9528:7;9497:9;:39::i;:::-;9551:125;9560:7;9569:12;:10;:12::i;:::-;9583:92;9623:7;9583:92;;;;;;;;;;;;;;;;;:12;:21;9596:7;9583:21;;;;;;;;;;;;;;;:35;9605:12;:10;:12::i;:::-;9583:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;9551:8;:125::i;:::-;9698:4;9691:11;;9375:339;;;;;:::o;8469:92::-;8510:5;8539:10;;;;;;;;;;;8532:17;;8469:92;:::o;20672:461::-;20769:8;;20744:21;20754:10;20744:9;:21::i;:::-;:33;;20736:42;;;;;;20835:1;20796:10;:23;20807:11;;20796:23;;;;;;;;;;;:35;20820:10;20796:35;;;;;;;;;;;;;;;;:40;20793:328;;;20856:8;:21;20865:11;;20856:21;;;;;;;;;;;20883;;;;;;;;20888:1;20883:21;;;;20891:1;20883:21;;;;20894:1;20883:21;;;;20897:6;20883:21;;;20856:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20993:1;20962:8;:21;20971:11;;20962:21;;;;;;;;;;;:28;;;;:32;;;;:::i;:::-;20924:10;:23;20935:11;;20924:23;;;;;;;;;;;:35;20948:10;20924:35;;;;;;;;;;;;;;;:70;;;;20793:328;;;21115:6;21046:8;:21;21055:11;;21046:21;;;;;;;;;;;21068:10;:23;21079:11;;21068:23;;;;;;;;;;;:35;21092:10;21068:35;;;;;;;;;;;;;;;;21046:58;;;;;;;;:::i;:::-;;;;;;;;;;;;:66;;:75;;;;20793:328;20672:461;:::o;22961:128::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23072:5:::1;23040:19;:29;23060:8;23040:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22961:128:::0;:::o;23099:130::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23192:25:::1;23209:7;4916:14;23192:16;;:25;;;;:::i;:::-;23176:13;:41;;;;23099:130:::0;:::o;8689:::-;8756:7;8787:10;:20;8798:8;8787:20;;;;;;;;;;;;;;;;8780:27;;8689:130;;;:::o;14136:281::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14217:27:::1;14237:6;14217:15;:19;;:27;;;;:::i;:::-;14204:10;:40;;;;14271:4;14259:9;;:16;;;;;;;;;;;;;;;;;;14300:1;14290:7;:11;;;;14331:10;;14316:12;:25;;;;14356:8;:17;14365:7;;14356:17;;;;;;;;;;;14379:25;;;;;;;;14393:1;14379:25;;;;;;14396:1;14379:25;;;;14398:5;14379:25;;;;::::0;14356:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14136:281:::0;:::o;19702:960::-;19827:8;;19802:21;19812:10;19802:9;:21::i;:::-;:33;;19794:42;;;;;;19870:4;19859:7;:15;;19851:24;;;;;;19909:4;19898:7;:15;;19890:24;;;;;;19949:1;19937:8;:13;;19929:22;;;;;;19986:4;19974:8;:16;;19966:25;;;;;;20027:3;20014:9;:16;;20006:25;;;;;;20067:5;20054:9;:18;;20046:27;;;;;;20130:1;20091:10;:23;20102:11;;20091:23;;;;;;;;;;;:35;20115:10;20091:35;;;;;;;;;;;;;;;;:40;20088:561;;;20151:8;:21;20160:11;;20151:21;;;;;;;;;;;20178:37;;;;;;;;20183:9;20178:37;;;;20194:7;20178:37;;;;20203:8;20178:37;;;;20213:1;20178:37;;;20151:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20304:1;20273:8;:21;20282:11;;20273:21;;;;;;;;;;;:28;;;;:32;;;;:::i;:::-;20235:10;:23;20246:11;;20235:23;;;;;;;;;;;:35;20259:10;20235:35;;;;;;;;;;;;;;;:70;;;;20088:561;;;20429:7;20358:8;:21;20367:11;;20358:21;;;;;;;;;;;20380:10;:23;20391:11;;20380:23;;;;;;;;;;;:35;20404:10;20380:35;;;;;;;;;;;;;;;;20358:58;;;;;;;;:::i;:::-;;;;;;;;;;;;:68;;:78;;;;20527:8;20455;:21;20464:11;;20455:21;;;;;;;;;;;20477:10;:23;20488:11;;20477:23;;;;;;;;;;;:35;20501:10;20477:35;;;;;;;;;;;;;;;;20455:58;;;;;;;;:::i;:::-;;;;;;;;;;;;:69;;:80;;;;20624:9;20554:8;:21;20563:11;;20554:21;;;;;;;;;;;20576:10;:23;20587:11;;20576:23;;;;;;;;;;;:35;20600:10;20576:35;;;;;;;;;;;;;;;;20554:58;;;;;;;;:::i;:::-;;;;;;;;;;;;:67;;:79;;;;20088:561;19702:960;;;:::o;2945:88::-;2983:7;3014;;;;;;;;;;;3007:14;;2945:88;:::o;19568:124::-;19629:7;19660:10;:20;19671:8;19660:20;;;;;;;;;;;;;;;;19653:27;;19568:124;;;:::o;8363:96::-;8402:13;8439:8;8432:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8363:96;:::o;22368:108::-;22419:7;22449:15;;22442:22;;22368:108;:::o;8829:183::-;8909:4;8930:44;8940:12;:10;:12::i;:::-;8954:10;8966:7;8930:9;:44::i;:::-;8996:4;8989:11;;8829:183;;;;:::o;21449:158::-;21496:16;;:::i;:::-;21536:59;;;;;;;;21546:7;;21536:59;;;;21554:10;;21536:59;;;;21565:11;;21536:59;;;;21577:17;;21536:59;;;21529:66;;21449:158;:::o;22824:127::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22935:4:::1;22903:19;:29;22923:8;22903:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22824:127:::0;:::o;19419:139::-;19465:16;19483;19524:9;19535:10;19516:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19419:139;;:::o;22621:193::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22685:9:::1;;;;;;;;;;;22682:90;;;22726:5;22714:9;;:17;;;;;;;;;;;;;;;;;;22750:7;;22682:90;22798:4;22786:9;;:16;;;;;;;;;;;;;;;;;;3349:1;22621:193::o:0;9022:156::-;9105:7;9136:12;:20;9149:6;9136:20;;;;;;;;;;;;;;;:30;9157:8;9136:30;;;;;;;;;;;;;;;;9129:37;;9022:156;;;;:::o;13362:764::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13431:11:::1;;;;;;;;;;;13430:12;13422:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13485:35;13542:42;13485:100;;13620:16;13600:17;;:36;;;;;;;;;;;;;;;;;;13651:65;13668:4;13683:17;;;;;;;;;;;4916:14;13651:8;:65::i;:::-;13767:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13749:56;;;13814:4;13821:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13749:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13731:15;;:114;;;;;;;;;;;;;;;;;;13860:17;;;;;;;;;;;:33;;;13901:21;13932:4;13938:24;13956:4;13938:9;:24::i;:::-;13963:1;13965::::0;13967:7:::1;:5;:7::i;:::-;13975:15;13860:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14013:15;;;;;;;;;;;14006:31;;;14046:17;;;;;;;;;;;14066:14;14006:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14110:4;14096:11;;:18;;;;;;;;;;;;;;;;;;13407:719;13362:764::o:0;3043:177::-;3290:7;;;;;;;;;;3274:23;;:12;:10;:12::i;:::-;:23;;;3266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3164:9:::1;3134:40;;3155:7;::::0;::::1;;;;;;;;3134:40;;;;;;;;;;;;3199:9;3189:7;::::0;:19:::1;;;;;;;;;;;;;;;;;;3043:177:::0;:::o;21281:150::-;21325:14;21341;21380:8;:19;21397:1;21389:7;;:9;;;;:::i;:::-;21380:19;;;;;;;;;;;21401:8;:17;21410:7;;21401:17;;;;;;;;;;;21372:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21281:150;;:::o;2229:140::-;2287:7;2318:39;2322:1;2325;2318:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2311:46;;2229:140;;;;:::o;1370:195::-;1428:7;1452:9;1468:1;1464;:5;;;;:::i;:::-;1452:17;;1497:1;1492;:6;;1484:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1552:1;1545:8;;;1370:195;;;;:::o;508:106::-;561:7;592:10;585:17;;508:106;:::o;11046:367::-;11164:1;11146:20;;:6;:20;;;;11138:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11250:1;11230:22;;:8;:22;;;;11222:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11339:7;11306:12;:20;11319:6;11306:20;;;;;;;;;;;;;;;:30;11327:8;11306:30;;;;;;;;;;;;;;;:40;;;;11383:8;11366:35;;11375:6;11366:35;;;11393:7;11366:35;;;;;;:::i;:::-;;;;;;;;11046:367;;;:::o;15965:518::-;16032:22;16071:1;16057:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16032:41;;16107:4;16088:5;16094:1;16088:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;16138:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16127:5;16133:1;16127:8;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;16177:60;16194:4;16209:17;;;;;;;;;;;16229:7;16177:8;:60::i;:::-;16252:17;;;;;;;;;;;:68;;;16339:7;16365:1;16385:5;16417:4;16441:15;16252:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16017:466;15965:518;:::o;16493:2177::-;16607:12;16622:21;16607:36;;16673:1;16661:8;:13;16658:2000;;;16694:14;16711:20;:18;:20::i;:::-;16694:37;;16752:23;16778:36;16807:6;16778:24;16787:14;;16778:4;:8;;:24;;;;:::i;:::-;:28;;:36;;;;:::i;:::-;16752:62;;16833:14;16850:54;16888:8;:15;16850:33;16876:6;16850:21;16859:11;;16850:4;:8;;:21;;;;:::i;:::-;:25;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16833:71;;16923:21;16947:60;16991:8;:15;16947:39;16979:6;16947:27;16956:17;;16947:4;:8;;:27;;;;:::i;:::-;:31;;:39;;;;:::i;:::-;:43;;:60;;;;:::i;:::-;16923:84;;17050:1;17032:15;:19;17028:166;;;17076:17;;;;;;;;;;;:26;;:43;17103:15;17076:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17149:25;17158:15;17149:4;:8;;:25;;;;:::i;:::-;17142:32;;17028:166;17231:4;17212:15;;:23;;;;;;;:::i;:::-;;;;;;;;17266:1;17257:6;:10;17254:706;;;17295:9;17291:638;17310:8;:15;17308:1;:17;17291:638;;;17392:21;17383:6;:30;17380:95;;;17454:21;17445:30;;17380:95;17524:8;:17;17533:7;;17524:17;;;;;;;;;;;17542:9;:18;17552:7;;17542:18;;;;;;;;;;;:31;17561:8;17570:1;17561:11;;;;;;;;:::i;:::-;;;;;;;;17542:31;;;;;;;;;;;;;;;;17524:50;;;;;;;;:::i;:::-;;;;;;;;;;;;:59;;;;;;;;;;;;17521:335;;;17615:9;17630:8;17639:1;17630:11;;;;;;;;:::i;:::-;;;;;;;;17615:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17673:10;17689:6;17673:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17754:6;17727:10;:23;17738:8;17747:1;17738:11;;;;;;;;:::i;:::-;;;;;;;;17727:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;17799:8;17808:1;17799:11;;;;;;;;:::i;:::-;;;;;;;;17791:29;;:37;17821:6;17791:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17521:335;17889:16;17898:6;17889:4;:8;;:16;;;;:::i;:::-;17882:23;;17327:3;;;;;:::i;:::-;;;;17291:638;;;;17254:706;18007:1;17981:28;;:14;:28;;;;:49;;;;;18029:1;18013:13;:17;17981:49;17978:583;;;18076:21;18060:13;:37;18057:105;;;18141:21;18125:37;;18057:105;18204:8;:17;18213:7;;18204:17;;;;;;;;;;;18222:9;:18;18232:7;;18222:18;;;;;;;;;;;:34;18241:14;18222:34;;;;;;;;;;;;;;;;18204:53;;;;;;;;:::i;:::-;;;;;;;;;;;;:62;;;;;;;;;;;;18201:341;;;18294:9;18309:14;18294:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18351:10;18367:4;18351:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18429:4;18399:10;:26;18410:14;18399:26;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;18488:14;18480:32;;:38;18513:4;18480:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18201:341;17978:583;16675:1901;;;;16658:2000;;;18612:17;;;;;;;;;;;:26;;:46;18639:18;18648:8;18639:4;:8;;:18;;;;:::i;:::-;18612:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16658:2000;16592:2078;16493:2177;;;:::o;18907:377::-;19037:10;19022:11;;:25;19019:71;;19080:10;19066:11;:24;;;;19019:71;19129:11;19108:17;;:32;19105:85;;19179:11;19159:17;:31;;;;19105:85;19222:9;19208:10;;:23;19205:67;;19263:9;19250:10;:22;;;;19205:67;18907:377;;;:::o;11423:1125::-;11546:1;11527:21;;:7;:21;;;;11519:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11623:1;11613:7;:11;11605:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11702:9;;;;;;;;;;;:53;;;;;11715:40;11735:7;11744:10;11715:19;:40::i;:::-;11702:53;11699:287;;;11785:7;;;;;;;;;;;:19;;;11805:7;11814:10;11826:15;;;;;;;;;;;11843:9;11785:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11784:69;11776:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;11917:7;;;;;;;;;;;:21;;;11939:7;11948:10;11960:9;11917:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11699:287;12017:25;12031:10;12017:13;:25::i;:::-;12014:93;;;12093:13;;12069:21;12079:10;12069:9;:21::i;:::-;:37;12061:46;;;;;;12014:93;12136:14;12185:28;12193:7;12202:10;12185:7;:28::i;:::-;12181:288;;;12243:43;12255:30;12264:20;:18;:20::i;:::-;12255:4;;:8;;:30;;;;:::i;:::-;12243:7;:11;;:43;;;;:::i;:::-;12234:52;;12332:10;;12313:15;:29;;12305:38;;;;;;12366:34;12380:7;12389:10;12366:13;:34::i;:::-;12362:91;;;12442:10;:8;:10::i;:::-;12431:7;:21;;12423:30;;;;;;12362:91;12181:288;12483:53;12499:7;12508:10;12520:7;12529:6;12483:15;:53::i;:::-;11504:1044;11423:1125;;;:::o;1729:206::-;1815:7;1852:1;1847;:6;;1855:12;1839:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1883:9;1899:1;1895;:5;;;;:::i;:::-;1883:17;;1922:1;1915:8;;;1729:206;;;;;:::o;2379:205::-;2465:7;2501:1;2497;:5;2504:12;2489:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2532:9;2548:1;2544;:5;;;;:::i;:::-;2532:17;;2571:1;2564:8;;;2379:205;;;;;:::o;18680:217::-;18732:7;18756:12;18771:14;;18756:29;;18808:17;;18800:25;;;;;:::i;:::-;;;18848:11;;18840:19;;;;;:::i;:::-;;;18881:4;18874:11;;;18680:217;:::o;1945:274::-;2003:7;2036:1;2031;:6;2027:55;;;2065:1;2058:8;;;;2027:55;2096:9;2112:1;2108;:5;;;;:::i;:::-;2096:17;;2145:1;2140;2136;:5;;;;:::i;:::-;:10;2128:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2206:1;2199:8;;;1945:274;;;;;:::o;1575:144::-;1633:7;1664:43;1668:1;1671;1664:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1657:50;;1575:144;;;;:::o;10185:187::-;10273:4;10312:15;;;;;;;;;;;10301:26;;:7;:26;;;:59;;;;10345:15;;;;;;;;;;;10331:29;;:10;:29;;;10301:59;10294:66;;10185:187;;;;:::o;10620:178::-;10685:4;10727:15;;;;;;;;;;;10713:29;;:10;:29;;;;:73;;;;;10768:17;;;;;;;;;;;10746:40;;:10;:40;;;;10713:73;10706:80;;10620:178;;;:::o;9993:182::-;10069:4;10099:19;:28;10119:7;10099:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;10131:19;:31;10151:10;10131:31;;;;;;;;;;;;;;;;;;;;;;;;;10099:63;10097:66;10090:73;;9993:182;;;;:::o;10382:228::-;10464:4;10503:15;;;;;;;;;;;10492:26;;:7;:26;;;:70;;;;;10544:17;;;;;;;;;;;10522:40;;:10;:40;;;;10492:70;:106;;;;;10567:19;:31;10587:10;10567:31;;;;;;;;;;;;;;;;;;;;;;;;;10566:32;10492:106;10485:113;;10382:228;;;;:::o;10808:::-;10850:7;10895:26;10910:10;10895;;:14;;:26;;;;:::i;:::-;10876:15;:45;10873:151;;10947:21;10964:3;4916:14;10947:16;;:21;;;;:::i;:::-;10940:28;;;;10873:151;4916:14;11005:19;;10808:228;;:::o;12558:794::-;12676:18;12697:19;12709:6;12697:7;:11;;:19;;;;:::i;:::-;12676:40;;12731:28;12742:7;12751;12731:10;:28::i;:::-;12798:32;12822:7;12798:10;:19;12809:7;12798:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;12776:10;:19;12787:7;12776:19;;;;;;;;;;;;;;;:54;;;;12870:38;12897:10;12870;:22;12881:10;12870:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;12845:10;:22;12856:10;12845:22;;;;;;;;;;;;;;;:63;;;;12951:37;12981:6;12951:10;:25;12970:4;12951:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;12923:10;:25;12942:4;12923:25;;;;;;;;;;;;;;;:65;;;;13008:15;13015:7;13008:6;:15::i;:::-;13005:275;;;13042:33;13052:10;13064;13042:9;:33::i;:::-;13005:275;;;13098:19;13106:10;13098:7;:19::i;:::-;13095:185;;;13136:19;13147:7;13136:10;:19::i;:::-;13095:185;;;13193:19;13204:7;13193:10;:19::i;:::-;13231:33;13241:10;13253;13231:9;:33::i;:::-;13095:185;13005:275;13317:10;13299:41;;13308:7;13299:41;;;13329:10;13299:41;;;;;;:::i;:::-;;;;;;;;12661:691;12558:794;;;;:::o;14427:410::-;14504:18;14525;14535:7;14525:9;:18::i;:::-;14504:39;;14572:15;;;;;;;;;;;14561:26;;:7;:26;;;;:54;;;;;14610:4;14591:24;;:7;:24;;;;14561:54;14558:268;;;14651:8;;14638:10;:21;14635:176;;;14712:8;;14686:23;14701:7;14686:10;:14;;:23;;;;:::i;:::-;:34;14683:109;;;14748:20;14760:7;14748:11;:20::i;:::-;14683:109;14635:176;14558:268;14489:348;14427:410;;:::o;9724:121::-;9779:4;9818:15;;;;;;;;;;;9807:26;;:7;:26;;;9800:33;;9724:121;;;:::o;15128:450::-;15243:1;15209:9;:18;15219:7;;15209:18;;;;;;;;;;;:30;15228:10;15209:30;;;;;;;;;;;;;;;;:35;15206:361;;15351:7;15291:8;:17;15300:7;;15291:17;;;;;;;;;;;15309:9;:18;15319:7;;15309:18;;;;;;;;;;;:30;15328:10;15309:30;;;;;;;;;;;;;;;;15291:49;;;;;;;;:::i;:::-;;;;;;;;;;;;:56;;;:67;;;;;;;:::i;:::-;;;;;;;;15206:361;;;15415:8;:17;15424:7;;15415:17;;;;;;;;;;;15438:32;;;;;;;;15444:10;15438:32;;;;;;15456:7;15438:32;;;;15465:4;15438:32;;;;;15415:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15550:1;15523:8;:17;15532:7;;15523:17;;;;;;;;;;;:24;;;;:28;;;;:::i;:::-;15490:9;:18;15500:7;;15490:18;;;;;;;;;;;:30;15509:10;15490:30;;;;;;;;;;;;;;;:61;;;;15206:361;15128:450;;:::o;9855:128::-;9914:4;9956:15;;;;;;;;;;;9942:29;;:10;:29;;;9935:36;;9855:128;;;:::o;15588:367::-;15682:1;15651:9;:18;15661:7;;15651:18;;;;;;;;;;;:27;15670:7;15651:27;;;;;;;;;;;;;;;;:32;15648:296;;15760:5;15702:8;:17;15711:7;;15702:17;;;;;;;;;;;15720:9;:18;15730:7;;15720:18;;;;;;;;;;;:27;15739:7;15720:27;;;;;;;;;;;;;;;;15702:46;;;;;;;;:::i;:::-;;;;;;;;;;;;:55;;;:63;;;;;;;;;;;;;;;;;;15648:296;;;15803:8;:17;15812:7;;15803:17;;;;;;;;;;;15826:24;;;;;;;;15832:7;15826:24;;;;;;15841:1;15826:24;;;;15844:5;15826:24;;;;;15803:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15927:1;15900:8;:17;15909:7;;15900:17;;;;;;;;;;;:24;;;;:28;;;;:::i;:::-;15870:9;:18;15880:7;;15870:18;;;;;;;;;;;:27;15889:7;15870:27;;;;;;;;;;;;;;;:58;;;;15648:296;15588:367;:::o;14847:271::-;14950:1;14911:10;:23;14922:11;;14911:23;;;;;;;;;;;:35;14935:10;14911:35;;;;;;;;;;;;;;;;:40;14908:199;;14978:8;:21;14987:11;;14978:21;;;;;;;;;;;15000:10;:23;15011:11;;15000:23;;;;;;;;;;;:32;15024:7;15000:32;;;;;;;;;;;;;;;;14978:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;14971:62;;;;;;;;;;;;;;;;;;;;;;;;;;15090:1;15052:10;:23;15063:11;;15052:23;;;;;;;;;;;:35;15076:10;15052:35;;;;;;;;;;;;;;;:39;;;;14908:199;14847:271;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:135::-;3917:6;3951:5;3945:12;3935:22;;3829:135;;;:::o;3970:205::-;4090:11;4124:6;4119:3;4112:19;4164:4;4159:3;4155:14;4140:29;;3970:205;;;;:::o;4181:153::-;4269:4;4292:3;4284:11;;4322:4;4317:3;4313:14;4305:22;;4181:153;;;:::o;4340:108::-;4417:24;4435:5;4417:24;:::i;:::-;4412:3;4405:37;4340:108;;:::o;4512:855::-;4641:4;4636:3;4632:14;4732:4;4725:5;4721:16;4715:23;4751:63;4808:4;4803:3;4799:14;4785:12;4751:63;:::i;:::-;4656:168;4911:4;4904:5;4900:16;4894:23;4930:63;4987:4;4982:3;4978:14;4964:12;4930:63;:::i;:::-;4834:169;5091:4;5084:5;5080:16;5074:23;5110:63;5167:4;5162:3;5158:14;5144:12;5110:63;:::i;:::-;5013:170;5268:4;5261:5;5257:16;5251:23;5287:63;5344:4;5339:3;5335:14;5321:12;5287:63;:::i;:::-;5193:167;4610:757;4512:855;;:::o;5373:263::-;5484:10;5505:88;5589:3;5581:6;5505:88;:::i;:::-;5625:4;5620:3;5616:14;5602:28;;5373:263;;;;:::o;5642:134::-;5733:4;5765;5760:3;5756:14;5748:22;;5642:134;;;:::o;5844:900::-;6005:3;6034:75;6103:5;6034:75;:::i;:::-;6125:107;6225:6;6220:3;6125:107;:::i;:::-;6118:114;;6256:77;6327:5;6256:77;:::i;:::-;6356:7;6387:1;6372:347;6397:6;6394:1;6391:13;6372:347;;;6473:6;6467:13;6500:105;6601:3;6586:13;6500:105;:::i;:::-;6493:112;;6628:81;6702:6;6628:81;:::i;:::-;6618:91;;6432:287;6419:1;6416;6412:9;6407:14;;6372:347;;;6376:14;6735:3;6728:10;;6010:734;;;5844:900;;;;:::o;6750:457::-;6935:4;6973:2;6962:9;6958:18;6950:26;;7022:9;7016:4;7012:20;7008:1;6997:9;6993:17;6986:47;7050:150;7195:4;7186:6;7050:150;:::i;:::-;7042:158;;6750:457;;;;:::o;7213:117::-;7322:1;7319;7312:12;7336:180;7384:77;7381:1;7374:88;7481:4;7478:1;7471:15;7505:4;7502:1;7495:15;7522:281;7605:27;7627:4;7605:27;:::i;:::-;7597:6;7593:40;7735:6;7723:10;7720:22;7699:18;7687:10;7684:34;7681:62;7678:88;;;7746:18;;:::i;:::-;7678:88;7786:10;7782:2;7775:22;7565:238;7522:281;;:::o;7809:129::-;7843:6;7870:20;;:::i;:::-;7860:30;;7899:33;7927:4;7919:6;7899:33;:::i;:::-;7809:129;;;:::o;7944:311::-;8021:4;8111:18;8103:6;8100:30;8097:56;;;8133:18;;:::i;:::-;8097:56;8183:4;8175:6;8171:17;8163:25;;8243:4;8237;8233:15;8225:23;;7944:311;;;:::o;8261:117::-;8370:1;8367;8360:12;8401:710;8497:5;8522:81;8538:64;8595:6;8538:64;:::i;:::-;8522:81;:::i;:::-;8513:90;;8623:5;8652:6;8645:5;8638:21;8686:4;8679:5;8675:16;8668:23;;8739:4;8731:6;8727:17;8719:6;8715:30;8768:3;8760:6;8757:15;8754:122;;;8787:79;;:::i;:::-;8754:122;8902:6;8885:220;8919:6;8914:3;8911:15;8885:220;;;8994:3;9023:37;9056:3;9044:10;9023:37;:::i;:::-;9018:3;9011:50;9090:4;9085:3;9081:14;9074:21;;8961:144;8945:4;8940:3;8936:14;8929:21;;8885:220;;;8889:21;8503:608;;8401:710;;;;;:::o;9134:370::-;9205:5;9254:3;9247:4;9239:6;9235:17;9231:27;9221:122;;9262:79;;:::i;:::-;9221:122;9379:6;9366:20;9404:94;9494:3;9486:6;9479:4;9471:6;9467:17;9404:94;:::i;:::-;9395:103;;9211:293;9134:370;;;;:::o;9510:1413::-;9648:6;9656;9664;9672;9680;9688;9696;9745:3;9733:9;9724:7;9720:23;9716:33;9713:120;;;9752:79;;:::i;:::-;9713:120;9900:1;9889:9;9885:17;9872:31;9930:18;9922:6;9919:30;9916:117;;;9952:79;;:::i;:::-;9916:117;10057:78;10127:7;10118:6;10107:9;10103:22;10057:78;:::i;:::-;10047:88;;9843:302;10184:2;10210:53;10255:7;10246:6;10235:9;10231:22;10210:53;:::i;:::-;10200:63;;10155:118;10312:2;10338:53;10383:7;10374:6;10363:9;10359:22;10338:53;:::i;:::-;10328:63;;10283:118;10440:2;10466:53;10511:7;10502:6;10491:9;10487:22;10466:53;:::i;:::-;10456:63;;10411:118;10568:3;10595:53;10640:7;10631:6;10620:9;10616:22;10595:53;:::i;:::-;10585:63;;10539:119;10697:3;10724:53;10769:7;10760:6;10749:9;10745:22;10724:53;:::i;:::-;10714:63;;10668:119;10826:3;10853:53;10898:7;10889:6;10878:9;10874:22;10853:53;:::i;:::-;10843:63;;10797:119;9510:1413;;;;;;;;;;:::o;10929:118::-;11016:24;11034:5;11016:24;:::i;:::-;11011:3;11004:37;10929:118;;:::o;11053:222::-;11146:4;11184:2;11173:9;11169:18;11161:26;;11197:71;11265:1;11254:9;11250:17;11241:6;11197:71;:::i;:::-;11053:222;;;;:::o;11281:619::-;11358:6;11366;11374;11423:2;11411:9;11402:7;11398:23;11394:32;11391:119;;;11429:79;;:::i;:::-;11391:119;11549:1;11574:53;11619:7;11610:6;11599:9;11595:22;11574:53;:::i;:::-;11564:63;;11520:117;11676:2;11702:53;11747:7;11738:6;11727:9;11723:22;11702:53;:::i;:::-;11692:63;;11647:118;11804:2;11830:53;11875:7;11866:6;11855:9;11851:22;11830:53;:::i;:::-;11820:63;;11775:118;11281:619;;;;;:::o;11906:86::-;11941:7;11981:4;11974:5;11970:16;11959:27;;11906:86;;;:::o;11998:112::-;12081:22;12097:5;12081:22;:::i;:::-;12076:3;12069:35;11998:112;;:::o;12116:214::-;12205:4;12243:2;12232:9;12228:18;12220:26;;12256:67;12320:1;12309:9;12305:17;12296:6;12256:67;:::i;:::-;12116:214;;;;:::o;12336:329::-;12395:6;12444:2;12432:9;12423:7;12419:23;12415:32;12412:119;;;12450:79;;:::i;:::-;12412:119;12570:1;12595:53;12640:7;12631:6;12620:9;12616:22;12595:53;:::i;:::-;12585:63;;12541:117;12336:329;;;;:::o;12671:619::-;12748:6;12756;12764;12813:2;12801:9;12792:7;12788:23;12784:32;12781:119;;;12819:79;;:::i;:::-;12781:119;12939:1;12964:53;13009:7;13000:6;12989:9;12985:22;12964:53;:::i;:::-;12954:63;;12910:117;13066:2;13092:53;13137:7;13128:6;13117:9;13113:22;13092:53;:::i;:::-;13082:63;;13037:118;13194:2;13220:53;13265:7;13256:6;13245:9;13241:22;13220:53;:::i;:::-;13210:63;;13165:118;12671:619;;;;;:::o;13296:118::-;13383:24;13401:5;13383:24;:::i;:::-;13378:3;13371:37;13296:118;;:::o;13420:222::-;13513:4;13551:2;13540:9;13536:18;13528:26;;13564:71;13632:1;13621:9;13617:17;13608:6;13564:71;:::i;:::-;13420:222;;;;:::o;13716:882::-;13865:4;13860:3;13856:14;13953:4;13946:5;13942:16;13936:23;13972:63;14029:4;14024:3;14020:14;14006:12;13972:63;:::i;:::-;13880:165;14135:4;14128:5;14124:16;14118:23;14154:63;14211:4;14206:3;14202:14;14188:12;14154:63;:::i;:::-;14055:172;14314:4;14307:5;14303:16;14297:23;14333:63;14390:4;14385:3;14381:14;14367:12;14333:63;:::i;:::-;14237:169;14499:4;14492:5;14488:16;14482:23;14518:63;14575:4;14570:3;14566:14;14552:12;14518:63;:::i;:::-;14416:175;13834:764;13716:882;;:::o;14604:327::-;14749:4;14787:3;14776:9;14772:19;14764:27;;14801:123;14921:1;14910:9;14906:17;14897:6;14801:123;:::i;:::-;14604:327;;;;:::o;14937:114::-;15004:6;15038:5;15032:12;15022:22;;14937:114;;;:::o;15057:184::-;15156:11;15190:6;15185:3;15178:19;15230:4;15225:3;15221:14;15206:29;;15057:184;;;;:::o;15247:132::-;15314:4;15337:3;15329:11;;15367:4;15362:3;15358:14;15350:22;;15247:132;;;:::o;15385:108::-;15462:24;15480:5;15462:24;:::i;:::-;15457:3;15450:37;15385:108;;:::o;15499:179::-;15568:10;15589:46;15631:3;15623:6;15589:46;:::i;:::-;15667:4;15662:3;15658:14;15644:28;;15499:179;;;;:::o;15684:113::-;15754:4;15786;15781:3;15777:14;15769:22;;15684:113;;;:::o;15833:732::-;15952:3;15981:54;16029:5;15981:54;:::i;:::-;16051:86;16130:6;16125:3;16051:86;:::i;:::-;16044:93;;16161:56;16211:5;16161:56;:::i;:::-;16240:7;16271:1;16256:284;16281:6;16278:1;16275:13;16256:284;;;16357:6;16351:13;16384:63;16443:3;16428:13;16384:63;:::i;:::-;16377:70;;16470:60;16523:6;16470:60;:::i;:::-;16460:70;;16316:224;16303:1;16300;16296:9;16291:14;;16256:284;;;16260:14;16556:3;16549:10;;15957:608;;;15833:732;;;;:::o;16571:114::-;16638:6;16672:5;16666:12;16656:22;;16571:114;;;:::o;16691:184::-;16790:11;16824:6;16819:3;16812:19;16864:4;16859:3;16855:14;16840:29;;16691:184;;;;:::o;16881:132::-;16948:4;16971:3;16963:11;;17001:4;16996:3;16992:14;16984:22;;16881:132;;;:::o;17019:179::-;17088:10;17109:46;17151:3;17143:6;17109:46;:::i;:::-;17187:4;17182:3;17178:14;17164:28;;17019:179;;;;:::o;17204:113::-;17274:4;17306;17301:3;17297:14;17289:22;;17204:113;;;:::o;17353:732::-;17472:3;17501:54;17549:5;17501:54;:::i;:::-;17571:86;17650:6;17645:3;17571:86;:::i;:::-;17564:93;;17681:56;17731:5;17681:56;:::i;:::-;17760:7;17791:1;17776:284;17801:6;17798:1;17795:13;17776:284;;;17877:6;17871:13;17904:63;17963:3;17948:13;17904:63;:::i;:::-;17897:70;;17990:60;18043:6;17990:60;:::i;:::-;17980:70;;17836:224;17823:1;17820;17816:9;17811:14;;17776:284;;;17780:14;18076:3;18069:10;;17477:608;;;17353:732;;;;:::o;18091:634::-;18312:4;18350:2;18339:9;18335:18;18327:26;;18399:9;18393:4;18389:20;18385:1;18374:9;18370:17;18363:47;18427:108;18530:4;18521:6;18427:108;:::i;:::-;18419:116;;18582:9;18576:4;18572:20;18567:2;18556:9;18552:18;18545:48;18610:108;18713:4;18704:6;18610:108;:::i;:::-;18602:116;;18091:634;;;;;:::o;18731:474::-;18799:6;18807;18856:2;18844:9;18835:7;18831:23;18827:32;18824:119;;;18862:79;;:::i;:::-;18824:119;18982:1;19007:53;19052:7;19043:6;19032:9;19028:22;19007:53;:::i;:::-;18997:63;;18953:117;19109:2;19135:53;19180:7;19171:6;19160:9;19156:22;19135:53;:::i;:::-;19125:63;;19080:118;18731:474;;;;;:::o;19211:136::-;19300:6;19334:5;19328:12;19318:22;;19211:136;;;:::o;19353:206::-;19474:11;19508:6;19503:3;19496:19;19548:4;19543:3;19539:14;19524:29;;19353:206;;;;:::o;19565:154::-;19654:4;19677:3;19669:11;;19707:4;19702:3;19698:14;19690:22;;19565:154;;;:::o;19725:99::-;19796:21;19811:5;19796:21;:::i;:::-;19791:3;19784:34;19725:99;;:::o;19890:665::-;20021:4;20016:3;20012:14;20108:4;20101:5;20097:16;20091:23;20127:63;20184:4;20179:3;20175:14;20161:12;20127:63;:::i;:::-;20036:164;20284:4;20277:5;20273:16;20267:23;20303:63;20360:4;20355:3;20351:14;20337:12;20303:63;:::i;:::-;20210:166;20462:4;20455:5;20451:16;20445:23;20481:57;20532:4;20527:3;20523:14;20509:12;20481:57;:::i;:::-;20386:162;19990:565;19890:665;;:::o;20561:267::-;20674:10;20695:90;20781:3;20773:6;20695:90;:::i;:::-;20817:4;20812:3;20808:14;20794:28;;20561:267;;;;:::o;20834:135::-;20926:4;20958;20953:3;20949:14;20941:22;;20834:135;;;:::o;21039:908::-;21202:3;21231:76;21301:5;21231:76;:::i;:::-;21323:108;21424:6;21419:3;21323:108;:::i;:::-;21316:115;;21455:78;21527:5;21455:78;:::i;:::-;21556:7;21587:1;21572:350;21597:6;21594:1;21591:13;21572:350;;;21673:6;21667:13;21700:107;21803:3;21788:13;21700:107;:::i;:::-;21693:114;;21830:82;21905:6;21830:82;:::i;:::-;21820:92;;21632:290;21619:1;21616;21612:9;21607:14;;21572:350;;;21576:14;21938:3;21931:10;;21207:740;;;21039:908;;;;:::o;21953:810::-;22262:4;22300:2;22289:9;22285:18;22277:26;;22349:9;22343:4;22339:20;22335:1;22324:9;22320:17;22313:47;22377:152;22524:4;22515:6;22377:152;:::i;:::-;22369:160;;22576:9;22570:4;22566:20;22561:2;22550:9;22546:18;22539:48;22604:152;22751:4;22742:6;22604:152;:::i;:::-;22596:160;;21953:810;;;;;:::o;22769:182::-;22909:34;22905:1;22897:6;22893:14;22886:58;22769:182;:::o;22957:366::-;23099:3;23120:67;23184:2;23179:3;23120:67;:::i;:::-;23113:74;;23196:93;23285:3;23196:93;:::i;:::-;23314:2;23309:3;23305:12;23298:19;;22957:366;;;:::o;23329:419::-;23495:4;23533:2;23522:9;23518:18;23510:26;;23582:9;23576:4;23572:20;23568:1;23557:9;23553:17;23546:47;23610:131;23736:4;23610:131;:::i;:::-;23602:139;;23329:419;;;:::o;23754:180::-;23802:77;23799:1;23792:88;23899:4;23896:1;23889:15;23923:4;23920:1;23913:15;23940:320;23984:6;24021:1;24015:4;24011:12;24001:22;;24068:1;24062:4;24058:12;24089:18;24079:81;;24145:4;24137:6;24133:17;24123:27;;24079:81;24207:2;24199:6;24196:14;24176:18;24173:38;24170:84;;;24226:18;;:::i;:::-;24170:84;23991:269;23940:320;;;:::o;24266:180::-;24314:77;24311:1;24304:88;24411:4;24408:1;24401:15;24435:4;24432:1;24425:15;24452:305;24492:3;24511:20;24529:1;24511:20;:::i;:::-;24506:25;;24545:20;24563:1;24545:20;:::i;:::-;24540:25;;24699:1;24631:66;24627:74;24624:1;24621:81;24618:107;;;24705:18;;:::i;:::-;24618:107;24749:1;24746;24742:9;24735:16;;24452:305;;;;:::o;24763:191::-;24803:4;24823:20;24841:1;24823:20;:::i;:::-;24818:25;;24857:20;24875:1;24857:20;:::i;:::-;24852:25;;24896:1;24893;24890:8;24887:34;;;24901:18;;:::i;:::-;24887:34;24946:1;24943;24939:9;24931:17;;24763:191;;;;:::o;24960:180::-;25008:77;25005:1;24998:88;25105:4;25102:1;25095:15;25129:4;25126:1;25119:15;25146:174;25286:26;25282:1;25274:6;25270:14;25263:50;25146:174;:::o;25326:366::-;25468:3;25489:67;25553:2;25548:3;25489:67;:::i;:::-;25482:74;;25565:93;25654:3;25565:93;:::i;:::-;25683:2;25678:3;25674:12;25667:19;;25326:366;;;:::o;25698:419::-;25864:4;25902:2;25891:9;25887:18;25879:26;;25951:9;25945:4;25941:20;25937:1;25926:9;25922:17;25915:47;25979:131;26105:4;25979:131;:::i;:::-;25971:139;;25698:419;;;:::o;26123:143::-;26180:5;26211:6;26205:13;26196:22;;26227:33;26254:5;26227:33;:::i;:::-;26123:143;;;;:::o;26272:351::-;26342:6;26391:2;26379:9;26370:7;26366:23;26362:32;26359:119;;;26397:79;;:::i;:::-;26359:119;26517:1;26542:64;26598:7;26589:6;26578:9;26574:22;26542:64;:::i;:::-;26532:74;;26488:128;26272:351;;;;:::o;26629:332::-;26750:4;26788:2;26777:9;26773:18;26765:26;;26801:71;26869:1;26858:9;26854:17;26845:6;26801:71;:::i;:::-;26882:72;26950:2;26939:9;26935:18;26926:6;26882:72;:::i;:::-;26629:332;;;;;:::o;26967:85::-;27012:7;27041:5;27030:16;;26967:85;;;:::o;27058:60::-;27086:3;27107:5;27100:12;;27058:60;;;:::o;27124:158::-;27182:9;27215:61;27233:42;27242:32;27268:5;27242:32;:::i;:::-;27233:42;:::i;:::-;27215:61;:::i;:::-;27202:74;;27124:158;;;:::o;27288:147::-;27383:45;27422:5;27383:45;:::i;:::-;27378:3;27371:58;27288:147;;:::o;27441:807::-;27690:4;27728:3;27717:9;27713:19;27705:27;;27742:71;27810:1;27799:9;27795:17;27786:6;27742:71;:::i;:::-;27823:72;27891:2;27880:9;27876:18;27867:6;27823:72;:::i;:::-;27905:80;27981:2;27970:9;27966:18;27957:6;27905:80;:::i;:::-;27995;28071:2;28060:9;28056:18;28047:6;27995:80;:::i;:::-;28085:73;28153:3;28142:9;28138:19;28129:6;28085:73;:::i;:::-;28168;28236:3;28225:9;28221:19;28212:6;28168:73;:::i;:::-;27441:807;;;;;;;;;:::o;28254:143::-;28311:5;28342:6;28336:13;28327:22;;28358:33;28385:5;28358:33;:::i;:::-;28254:143;;;;:::o;28403:663::-;28491:6;28499;28507;28556:2;28544:9;28535:7;28531:23;28527:32;28524:119;;;28562:79;;:::i;:::-;28524:119;28682:1;28707:64;28763:7;28754:6;28743:9;28739:22;28707:64;:::i;:::-;28697:74;;28653:128;28820:2;28846:64;28902:7;28893:6;28882:9;28878:22;28846:64;:::i;:::-;28836:74;;28791:129;28959:2;28985:64;29041:7;29032:6;29021:9;29017:22;28985:64;:::i;:::-;28975:74;;28930:129;28403:663;;;;;:::o;29072:332::-;29193:4;29231:2;29220:9;29216:18;29208:26;;29244:71;29312:1;29301:9;29297:17;29288:6;29244:71;:::i;:::-;29325:72;29393:2;29382:9;29378:18;29369:6;29325:72;:::i;:::-;29072:332;;;;;:::o;29410:116::-;29480:21;29495:5;29480:21;:::i;:::-;29473:5;29470:32;29460:60;;29516:1;29513;29506:12;29460:60;29410:116;:::o;29532:137::-;29586:5;29617:6;29611:13;29602:22;;29633:30;29657:5;29633:30;:::i;:::-;29532:137;;;;:::o;29675:345::-;29742:6;29791:2;29779:9;29770:7;29766:23;29762:32;29759:119;;;29797:79;;:::i;:::-;29759:119;29917:1;29942:61;29995:7;29986:6;29975:9;29971:22;29942:61;:::i;:::-;29932:71;;29888:125;29675:345;;;;:::o;30026:177::-;30166:29;30162:1;30154:6;30150:14;30143:53;30026:177;:::o;30209:366::-;30351:3;30372:67;30436:2;30431:3;30372:67;:::i;:::-;30365:74;;30448:93;30537:3;30448:93;:::i;:::-;30566:2;30561:3;30557:12;30550:19;;30209:366;;;:::o;30581:419::-;30747:4;30785:2;30774:9;30770:18;30762:26;;30834:9;30828:4;30824:20;30820:1;30809:9;30805:17;30798:47;30862:131;30988:4;30862:131;:::i;:::-;30854:139;;30581:419;;;:::o;31006:223::-;31146:34;31142:1;31134:6;31130:14;31123:58;31215:6;31210:2;31202:6;31198:15;31191:31;31006:223;:::o;31235:366::-;31377:3;31398:67;31462:2;31457:3;31398:67;:::i;:::-;31391:74;;31474:93;31563:3;31474:93;:::i;:::-;31592:2;31587:3;31583:12;31576:19;;31235:366;;;:::o;31607:419::-;31773:4;31811:2;31800:9;31796:18;31788:26;;31860:9;31854:4;31850:20;31846:1;31835:9;31831:17;31824:47;31888:131;32014:4;31888:131;:::i;:::-;31880:139;;31607:419;;;:::o;32032:221::-;32172:34;32168:1;32160:6;32156:14;32149:58;32241:4;32236:2;32228:6;32224:15;32217:29;32032:221;:::o;32259:366::-;32401:3;32422:67;32486:2;32481:3;32422:67;:::i;:::-;32415:74;;32498:93;32587:3;32498:93;:::i;:::-;32616:2;32611:3;32607:12;32600:19;;32259:366;;;:::o;32631:419::-;32797:4;32835:2;32824:9;32820:18;32812:26;;32884:9;32878:4;32874:20;32870:1;32859:9;32855:17;32848:47;32912:131;33038:4;32912:131;:::i;:::-;32904:139;;32631:419;;;:::o;33056:831::-;33319:4;33357:3;33346:9;33342:19;33334:27;;33371:71;33439:1;33428:9;33424:17;33415:6;33371:71;:::i;:::-;33452:80;33528:2;33517:9;33513:18;33504:6;33452:80;:::i;:::-;33579:9;33573:4;33569:20;33564:2;33553:9;33549:18;33542:48;33607:108;33710:4;33701:6;33607:108;:::i;:::-;33599:116;;33725:72;33793:2;33782:9;33778:18;33769:6;33725:72;:::i;:::-;33807:73;33875:3;33864:9;33860:19;33851:6;33807:73;:::i;:::-;33056:831;;;;;;;;:::o;33893:233::-;33932:3;33955:24;33973:5;33955:24;:::i;:::-;33946:33;;34001:66;33994:5;33991:77;33988:103;;;34071:18;;:::i;:::-;33988:103;34118:1;34111:5;34107:13;34100:20;;33893:233;;;:::o;34132:224::-;34272:34;34268:1;34260:6;34256:14;34249:58;34341:7;34336:2;34328:6;34324:15;34317:32;34132:224;:::o;34362:366::-;34504:3;34525:67;34589:2;34584:3;34525:67;:::i;:::-;34518:74;;34601:93;34690:3;34601:93;:::i;:::-;34719:2;34714:3;34710:12;34703:19;;34362:366;;;:::o;34734:419::-;34900:4;34938:2;34927:9;34923:18;34915:26;;34987:9;34981:4;34977:20;34973:1;34962:9;34958:17;34951:47;35015:131;35141:4;35015:131;:::i;:::-;35007:139;;34734:419;;;:::o;35159:228::-;35299:34;35295:1;35287:6;35283:14;35276:58;35368:11;35363:2;35355:6;35351:15;35344:36;35159:228;:::o;35393:366::-;35535:3;35556:67;35620:2;35615:3;35556:67;:::i;:::-;35549:74;;35632:93;35721:3;35632:93;:::i;:::-;35750:2;35745:3;35741:12;35734:19;;35393:366;;;:::o;35765:419::-;35931:4;35969:2;35958:9;35954:18;35946:26;;36018:9;36012:4;36008:20;36004:1;35993:9;35989:17;35982:47;36046:131;36172:4;36046:131;:::i;:::-;36038:139;;35765:419;;;:::o;36190:553::-;36367:4;36405:3;36394:9;36390:19;36382:27;;36419:71;36487:1;36476:9;36472:17;36463:6;36419:71;:::i;:::-;36500:72;36568:2;36557:9;36553:18;36544:6;36500:72;:::i;:::-;36582;36650:2;36639:9;36635:18;36626:6;36582:72;:::i;:::-;36664;36732:2;36721:9;36717:18;36708:6;36664:72;:::i;:::-;36190:553;;;;;;;:::o;36749:225::-;36889:34;36885:1;36877:6;36873:14;36866:58;36958:8;36953:2;36945:6;36941:15;36934:33;36749:225;:::o;36980:366::-;37122:3;37143:67;37207:2;37202:3;37143:67;:::i;:::-;37136:74;;37219:93;37308:3;37219:93;:::i;:::-;37337:2;37332:3;37328:12;37321:19;;36980:366;;;:::o;37352:419::-;37518:4;37556:2;37545:9;37541:18;37533:26;;37605:9;37599:4;37595:20;37591:1;37580:9;37576:17;37569:47;37633:131;37759:4;37633:131;:::i;:::-;37625:139;;37352:419;;;:::o;37777:442::-;37926:4;37964:2;37953:9;37949:18;37941:26;;37977:71;38045:1;38034:9;38030:17;38021:6;37977:71;:::i;:::-;38058:72;38126:2;38115:9;38111:18;38102:6;38058:72;:::i;:::-;38140;38208:2;38197:9;38193:18;38184:6;38140:72;:::i;:::-;37777:442;;;;;;:::o;38225:180::-;38273:77;38270:1;38263:88;38370:4;38367:1;38360:15;38394:4;38391:1;38384:15;38411:185;38451:1;38468:20;38486:1;38468:20;:::i;:::-;38463:25;;38502:20;38520:1;38502:20;:::i;:::-;38497:25;;38541:1;38531:35;;38546:18;;:::i;:::-;38531:35;38588:1;38585;38581:9;38576:14;;38411:185;;;;:::o;38602:348::-;38642:7;38665:20;38683:1;38665:20;:::i;:::-;38660:25;;38699:20;38717:1;38699:20;:::i;:::-;38694:25;;38887:1;38819:66;38815:74;38812:1;38809:81;38804:1;38797:9;38790:17;38786:105;38783:131;;;38894:18;;:::i;:::-;38783:131;38942:1;38939;38935:9;38924:20;;38602:348;;;;:::o;38956:220::-;39096:34;39092:1;39084:6;39080:14;39073:58;39165:3;39160:2;39152:6;39148:15;39141:28;38956:220;:::o;39182:366::-;39324:3;39345:67;39409:2;39404:3;39345:67;:::i;:::-;39338:74;;39421:93;39510:3;39421:93;:::i;:::-;39539:2;39534:3;39530:12;39523:19;;39182:366;;;:::o;39554:419::-;39720:4;39758:2;39747:9;39743:18;39735:26;;39807:9;39801:4;39797:20;39793:1;39782:9;39778:17;39771:47;39835:131;39961:4;39835:131;:::i;:::-;39827:139;;39554:419;;;:::o

Swarm Source

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