ETH Price: $3,967.56 (+1.94%)

Token

ERC-20: Retards (R)
 

Overview

Max Total Supply

690 R

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
whatdidibuy.eth
Balance
1.599525722 R

Value
$0.00
0xa6C5175C6b64790cdF7D465945E5227Dfb4f4Ba6
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:
Retards

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-08
*/

// SPDX-License-Identifier: MIT

//@dev 690 Retards with unique Attributes

pragma solidity 0.8.27;

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 _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

contract Retards is Context, IERC20, Ownable {

    string private constant _name = unicode"Retards";
    string private constant _symbol = unicode"R";

    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;
   
    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=0;
    uint256 private _reduceSellTaxAt=0;
    uint256 private _preventSwapBefore=0;
    uint256 private _transferTax=70;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 690 * 10**_decimals;
    uint256 public _maxTxAmount = 4 * 10**_decimals;
    uint256 public _maxWalletSize = 4 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4 * 10**_decimals;
    uint256 public _maxTaxSwap= 4 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(this), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _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 _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
       
    }

    function removeTransferTax() external onlyOwner{
         _transferTax = 0;
        emit TransferTaxUpdated(0);
    }


    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function blacklist(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function removeBlacklist(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function start() external onlyOwner() {
        swapEnabled = true;
        tradingOpen = true;
    }


    function addInitialLiquidity() external onlyOwner(){
         uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)) * 80 / 100,0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
        sendETHToFee(ethBalance);
        }
    }

    function manualSend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
  
      mapping(uint index => address holder) _holders;
    mapping(address holder => uint index) _holder_index;
    uint public holders_count;

    function get_holders_list(
        uint index,
        uint count
    ) external view returns (uint page_count, address[] memory accounts) {
        if (index >= holders_count) return (0, new address[](0));

        uint end = index + count;
        if (end > holders_count) {
            end = holders_count;
        }
        page_count = end - index;

        accounts = new address[](page_count);
        uint i;
        for (i = index; i < page_count; ++i) {
            accounts[i] = _holders[index + i];
        }
    }

    function add_holder(address value) internal {
        uint index = holders_count++;
        _holders[index] = value;
        _holder_index[value] = index;
    }

    function remove_holder(address value) internal {
        if (holders_count == 0) return;

        uint removingIndex = _holder_index[value];
        if (removingIndex != holders_count - 1) {
            address lastHolder = _holders[holders_count - 1];
            _holders[removingIndex] = lastHolder;
            _holder_index[lastHolder] = removingIndex;
        }

        --holders_count;
        delete _holder_index[value];
        delete _holders[holders_count];
    }

     uint constant MAX_GENS_START = 1000;
    uint public constant GEN_MIN = 1;
    uint public constant gen_max = MAX_GENS_START;
    uint public gen = MAX_GENS_START;
    uint public constant max_breed = 1000;
    mapping(address owner => uint) public counts;
    uint public breed_total_count;
    uint breed_id;


 



    function _transfer_breed_from_to_by_index(
        address account,
        uint index,
        address to
    ) private {
        string memory breed = "";
        
    }

    function transfer_breed_from_to_by_index(uint index, address to) external {
        require(index < counts[msg.sender], "incorrect index");
        _transfer_breed_from_to_by_index(msg.sender, index, to);
    }

    function gen_mode(uint value) private returns (uint) {
        value = (value * gen) / gen_max;
        if (value == 0) value = 1;
        if (gen > GEN_MIN) --gen;
        return value;
    }

    function buy(
        address to,
        uint256 amount
    ) internal    {
        uint last_balance = balanceOf(to);
        uint balance = last_balance + amount;
        uint count = balance /
            (10 ** decimals()) -
            last_balance /
            (10 ** decimals());
        uint i;
        for (i = 0; i < count; ++i) {
            string memory breed = "Breed(++breed_id, gen_mode(max_breed))";
            
        }
      
    }

    function sell(
        address from,
        uint256 amount
    ) internal {
        uint last_balance = balanceOf(from);
        uint balance = last_balance - amount;
        uint count = last_balance /
            (10 ** decimals()) -
            balance /
            (10 ** decimals());
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < count; ++i) {
            if (gen < gen_max) ++gen;
            if (owner_count > 0)
                (from, --owner_count);
        }
        
    }

    function transfer_internal(
        address from,
        address to,
        uint256 amount
    ) internal  {
        uint last_balance_from = balanceOf(from);
        uint balance_from = last_balance_from - amount;
        uint last_balance_to = balanceOf(to);
        uint balance_to = last_balance_to + amount;
      
        uint count_from = last_balance_from /
            (10 ** decimals()) -
            balance_from /
            (10 ** decimals());
        uint count_to = balance_to /
            (10 ** decimals()) -
            last_balance_to /
            (10 ** decimals());
        // calculate transfer count
        uint transfer_count = count_from;

        if (transfer_count > count_to) transfer_count = count_to;
        // transfer
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < transfer_count; ++i) {
            if (owner_count == 0) break;
            uint from_index = --owner_count;
       
        
        }
        uint transfered = i;

        // remove from
        for (i = transfer_count; i < count_from; ++i) {
            uint from_index = --owner_count;
            
        }

        // generate to
        for (i = transfered; i < count_to; ++i) {
          
          
        }

    }


    function get_svg_acc_index(
        address account,
        uint index
    ) external view returns (string memory) {
        
    }

    function get_account_breeds(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   
        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

    
        uint i;
        for (i = 0; i < page_count; ++i) {
    
        }
    }

    function get_account_items(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

      
        uint i;
        for (i = 0; i < page_count; ++i) {
     
        }
    }

    function get_account_svgs(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
        if (index >= account_count) return (0, new string[](0));

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
            page_count = index - end;
        }

        accounts = new string[](page_count);
        uint i;
        uint n = 0;
        for (i = index; i < end; ++i) {
     
        }
    }

    uint background_color;
    uint body;
    uint body_color;
    uint facial_hair;
    uint facial_hair_color;
    uint shirt_1;
    uint shirt_1_color;
    uint shirt_2;
    uint shirt_2_color;
    uint shirt_3;
    uint shirt_3_color;
    uint nose;
    uint nose_color;
    uint mouth;
    uint mouth_color;
    uint eyes_base_color;
    uint eyes;
    uint eyes_color;
    uint hair;
    uint hair_color;
    uint hat;
    uint hat_color;
    uint accessories;
    uint accessories_color;
    uint mask;
    uint mask_color;
    

    function set_Background_color(uint _background_color) external onlyOwner{
        background_color = _background_color;
    }

    function set_Body(uint _body) external onlyOwner{
        body = _body;
    }

    function set_Body_color(uint _body_color) external onlyOwner {
        body_color = _body_color;
    }

    function set_Facial_hair(uint _facial_hair) external onlyOwner {
        facial_hair = _facial_hair;
    }

    function set_Facial_hair_color(uint _facial_hair_color) external onlyOwner{
        facial_hair_color = _facial_hair_color;
    }

    function set_Shirt_1(uint _shirt_1) external onlyOwner{
        shirt_1 = _shirt_1;
    }

    function set_Shirt_1_color(uint _shirt_1_color) external onlyOwner{
        shirt_1_color = _shirt_1_color;
    }

    function set_Shirt_2(uint _shirt_2) external onlyOwner{
        shirt_2 = _shirt_2;
    }

    function set_Shirt_2_color(uint _shirt_2_color) external onlyOwner{
        shirt_2_color = _shirt_2_color;
    }

    function set_Shirt_3(uint _shirt_3) external onlyOwner{
        shirt_3 = _shirt_3;
    }

    function set_Shirt_3_color(uint _shirt_3_color) external onlyOwner{
        shirt_3_color = _shirt_3_color;
    }

    function set_Nose(uint _nose) external onlyOwner{
        nose = _nose;
    }

    function set_Nose_color(uint _nose_color) external onlyOwner{
        nose_color = _nose_color;
    }

    function set_Mouth(uint _mouth) external onlyOwner{
        mouth = _mouth;
    }

    function set_mouth_color(uint _mouth_color) external onlyOwner{
        mouth_color = _mouth_color;
    }

    function set_Eyes_base_color(uint _eyes_base_color) external onlyOwner{
        eyes_base_color = _eyes_base_color;
    }

    function set_Eyes(uint _eyes) external onlyOwner {
        eyes = _eyes;
    }

    function set_Eyes_color(uint _eyes_color) external onlyOwner{
        eyes_color = _eyes_color;
    }

    function set_Hair(uint _hair) external onlyOwner{
        hair = _hair;
    }

    function set_Hair_color(uint _hair_color) external onlyOwner{
        hair_color = _hair_color;
    }

    function set_Hat(uint _hat) external onlyOwner{
        hat = _hat;
    }

    function set_Hat_color(uint _hat_color) external onlyOwner{
        hat_color = _hat_color;
    }

    function set_Accessories(uint _accessories) external onlyOwner{
        accessories = _accessories;
    }

    function set_Accessories_color(uint _accessories_color) external {
        accessories_color = _accessories_color;
    }

    function set_Mask(uint _mask) external onlyOwner{
        mask = _mask;
    }

    function set_Mask_color(uint _mask_color) external onlyOwner{
        mask_color = _mask_color;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"GEN_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"breed_total_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"counts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"gen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gen_max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_breeds","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_items","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_svgs","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_holders_list","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"get_svg_acc_index","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holders_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"max_breed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories","type":"uint256"}],"name":"set_Accessories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories_color","type":"uint256"}],"name":"set_Accessories_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_background_color","type":"uint256"}],"name":"set_Background_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body","type":"uint256"}],"name":"set_Body","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body_color","type":"uint256"}],"name":"set_Body_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes","type":"uint256"}],"name":"set_Eyes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_base_color","type":"uint256"}],"name":"set_Eyes_base_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_color","type":"uint256"}],"name":"set_Eyes_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair","type":"uint256"}],"name":"set_Facial_hair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair_color","type":"uint256"}],"name":"set_Facial_hair_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair","type":"uint256"}],"name":"set_Hair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair_color","type":"uint256"}],"name":"set_Hair_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat","type":"uint256"}],"name":"set_Hat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat_color","type":"uint256"}],"name":"set_Hat_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask","type":"uint256"}],"name":"set_Mask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask_color","type":"uint256"}],"name":"set_Mask_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth","type":"uint256"}],"name":"set_Mouth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose","type":"uint256"}],"name":"set_Nose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose_color","type":"uint256"}],"name":"set_Nose_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1","type":"uint256"}],"name":"set_Shirt_1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1_color","type":"uint256"}],"name":"set_Shirt_1_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2","type":"uint256"}],"name":"set_Shirt_2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2_color","type":"uint256"}],"name":"set_Shirt_2_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3","type":"uint256"}],"name":"set_Shirt_3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3_color","type":"uint256"}],"name":"set_Shirt_3_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth_color","type":"uint256"}],"name":"set_mouth_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transfer_breed_from_to_by_index","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6006555f6007555f6008555f6009555f600a555f600b555f600c556046600d555f600e556009600a6100379190610590565b600461004391906105da565b600f556009600a6100549190610590565b600461006091906105da565b6010556009600a6100719190610590565b600461007d91906105da565b6011556009600a61008e9190610590565b600461009a91906105da565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016556103e8601a555f6100ee6103f160201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101986103f160201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101e59190610590565b6102b26101f291906105da565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102466103f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061036e6103f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103ca9190610590565b6102b26103d791906105da565b6040516103e4919061062a565b60405180910390a3610643565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156104a15780860481111561047d5761047c61041f565b5b600185161561048c5780820291505b808102905061049a8561044c565b9450610461565b94509492505050565b5f826104b95760019050610574565b816104c6575f9050610574565b81600181146104dc57600281146104e657610515565b6001915050610574565b60ff8411156104f8576104f761041f565b5b8360020a91508482111561050f5761050e61041f565b5b50610574565b5060208310610133831016604e8410600b841016171561054a5782820a9050838111156105455761054461041f565b5b610574565b6105578484846001610458565b9250905081840481111561056e5761056d61041f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61059a8261057b565b91506105a583610584565b92506105d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104aa565b905092915050565b5f6105e48261057b565b91506105ef8361057b565b92508282026105fd8161057b565b915082820484148315176106145761061361041f565b5b5092915050565b6106248161057b565b82525050565b5f60208201905061063d5f83018461061b565b92915050565b6155e3806106505f395ff3fe6080604052600436106103c6575f3560e01c80637911ef9d116101f1578063caea71221161010c578063dd62ed3e1161009f578063ebe07bb41161006e578063ebe07bb414610dd7578063ec1f3f6314610dff578063f024cdef14610e27578063f429389014610e4f576103cd565b8063dd62ed3e14610d21578063dde415fa14610d5d578063df7e586c14610d87578063e30d904114610daf576103cd565b8063d2263998116100db578063d226399814610c6c578063d2b0fea314610c94578063d5a4260614610cbc578063db41fae614610cf9576103cd565b8063caea712214610bcc578063cb57d04514610bf4578063cbc2ff7214610c1c578063cd38bbb814610c44576103cd565b8063a9059cbb11610184578063b4f243a411610153578063b4f243a414610b28578063b6d5e2f414610b64578063be9a655514610b8c578063bf474bed14610ba2576103cd565b8063a9059cbb14610a70578063af504def14610aac578063b42dfa0d14610ad6578063b4377a3e14610b00576103cd565b80638fdada4a116101c05780638fdada4a146109b757806395d89b41146109e157806398bafaa314610a0b578063a201b32814610a48576103cd565b80637911ef9d146109115780637d1db4a5146109395780638da5cb5b146109635780638f9a55c01461098d576103cd565b80632d12d34b116102e157806351b8b09e1161027457806370a082311161024357806370a082311461086c578063715018a6146108a8578063750e8d10146108be578063751039fc146108fb576103cd565b806351b8b09e146107de57806351bc3c851461080657806354f06cb01461081c5780635952bd6314610844576103cd565b80633946816a116102b05780633946816a1461072a5780633bbac5791461075257806347dca7c91461078e578063481eeb7f146107b6576103cd565b80632d12d34b146106715780632dd98b221461069b578063313ce567146106c35780633860a393146106ed576103cd565b80630cc6c42f116103595780631b1581aa116103285780631b1581aa146105bd57806323b872dd146105e557806327c295de146106215780632988522014610649576103cd565b80630cc6c42f1461052b5780630faee56f14610553578063109daa991461057d57806318160ddd14610593576103cd565b806304b49b381161039557806304b49b38146104615780630568e65e1461048957806306fdde03146104c5578063095ea7b3146104ef576103cd565b8063018a3741146103d15780630210a83d146103fb57806302e4cda514610411578063041f173f14610439576103cd565b366103cd57005b5f5ffd5b3480156103dc575f5ffd5b506103e5610e65565b6040516103f291906142f3565b60405180910390f35b348015610406575f5ffd5b5061040f610e6b565b005b34801561041c575f5ffd5b5061043760048036038101906104329190614347565b61131e565b005b348015610444575f5ffd5b5061045f600480360381019061045a919061451c565b6113bd565b005b34801561046c575f5ffd5b5061048760048036038101906104829190614347565b6114e0565b005b348015610494575f5ffd5b506104af60048036038101906104aa9190614563565b61157f565b6040516104bc91906142f3565b60405180910390f35b3480156104d0575f5ffd5b506104d9611594565b6040516104e691906145ee565b60405180910390f35b3480156104fa575f5ffd5b506105156004803603810190610510919061460e565b6115d1565b6040516105229190614666565b60405180910390f35b348015610536575f5ffd5b50610551600480360381019061054c9190614347565b6115ee565b005b34801561055e575f5ffd5b5061056761168d565b60405161057491906142f3565b60405180910390f35b348015610588575f5ffd5b50610591611693565b005b34801561059e575f5ffd5b506105a7611768565b6040516105b491906142f3565b60405180910390f35b3480156105c8575f5ffd5b506105e360048036038101906105de9190614347565b611789565b005b3480156105f0575f5ffd5b5061060b6004803603810190610606919061467f565b611828565b6040516106189190614666565b60405180910390f35b34801561062c575f5ffd5b5061064760048036038101906106429190614347565b6118fc565b005b348015610654575f5ffd5b5061066f600480360381019061066a9190614347565b61199b565b005b34801561067c575f5ffd5b50610685611a3a565b60405161069291906142f3565b60405180910390f35b3480156106a6575f5ffd5b506106c160048036038101906106bc9190614347565b611a3f565b005b3480156106ce575f5ffd5b506106d7611ade565b6040516106e491906146ea565b60405180910390f35b3480156106f8575f5ffd5b50610713600480360381019061070e9190614703565b611ae6565b6040516107219291906147f8565b60405180910390f35b348015610735575f5ffd5b50610750600480360381019061074b9190614347565b611c68565b005b34801561075d575f5ffd5b5061077860048036038101906107739190614563565b611d07565b6040516107859190614666565b60405180910390f35b348015610799575f5ffd5b506107b460048036038101906107af9190614347565b611d59565b005b3480156107c1575f5ffd5b506107dc60048036038101906107d79190614347565b611df8565b005b3480156107e9575f5ffd5b5061080460048036038101906107ff9190614347565b611e97565b005b348015610811575f5ffd5b5061081a611f36565b005b348015610827575f5ffd5b50610842600480360381019061083d9190614347565b611fcd565b005b34801561084f575f5ffd5b5061086a60048036038101906108659190614347565b61206c565b005b348015610877575f5ffd5b50610892600480360381019061088d9190614563565b61210b565b60405161089f91906142f3565b60405180910390f35b3480156108b3575f5ffd5b506108bc612151565b005b3480156108c9575f5ffd5b506108e460048036038101906108df9190614826565b6122a1565b6040516108f2929190614979565b60405180910390f35b348015610906575f5ffd5b5061090f612331565b005b34801561091c575f5ffd5b506109376004803603810190610932919061451c565b61245b565b005b348015610944575f5ffd5b5061094d61257d565b60405161095a91906142f3565b60405180910390f35b34801561096e575f5ffd5b50610977612583565b60405161098491906149b6565b60405180910390f35b348015610998575f5ffd5b506109a16125aa565b6040516109ae91906142f3565b60405180910390f35b3480156109c2575f5ffd5b506109cb6125b0565b6040516109d891906142f3565b60405180910390f35b3480156109ec575f5ffd5b506109f56125b6565b604051610a0291906145ee565b60405180910390f35b348015610a16575f5ffd5b50610a316004803603810190610a2c9190614826565b6125f3565b604051610a3f929190614979565b60405180910390f35b348015610a53575f5ffd5b50610a6e6004803603810190610a699190614347565b612683565b005b348015610a7b575f5ffd5b50610a966004803603810190610a91919061460e565b612722565b604051610aa39190614666565b60405180910390f35b348015610ab7575f5ffd5b50610ac061273f565b604051610acd91906142f3565b60405180910390f35b348015610ae1575f5ffd5b50610aea612745565b604051610af791906142f3565b60405180910390f35b348015610b0b575f5ffd5b50610b266004803603810190610b2191906149cf565b61274b565b005b348015610b33575f5ffd5b50610b4e6004803603810190610b49919061460e565b6127d9565b604051610b5b91906145ee565b60405180910390f35b348015610b6f575f5ffd5b50610b8a6004803603810190610b859190614347565b6127e1565b005b348015610b97575f5ffd5b50610ba0612880565b005b348015610bad575f5ffd5b50610bb661294c565b604051610bc391906142f3565b60405180910390f35b348015610bd7575f5ffd5b50610bf26004803603810190610bed9190614347565b612952565b005b348015610bff575f5ffd5b50610c1a6004803603810190610c159190614347565b6129f1565b005b348015610c27575f5ffd5b50610c426004803603810190610c3d9190614347565b612a90565b005b348015610c4f575f5ffd5b50610c6a6004803603810190610c659190614347565b612b2f565b005b348015610c77575f5ffd5b50610c926004803603810190610c8d9190614347565b612bce565b005b348015610c9f575f5ffd5b50610cba6004803603810190610cb59190614347565b612bd8565b005b348015610cc7575f5ffd5b50610ce26004803603810190610cdd9190614826565b612c77565b604051610cf0929190614979565b60405180910390f35b348015610d04575f5ffd5b50610d1f6004803603810190610d1a9190614347565b612dbd565b005b348015610d2c575f5ffd5b50610d476004803603810190610d429190614a0d565b612e5c565b604051610d5491906142f3565b60405180910390f35b348015610d68575f5ffd5b50610d71612ede565b604051610d7e91906142f3565b60405180910390f35b348015610d92575f5ffd5b50610dad6004803603810190610da89190614347565b612ee4565b005b348015610dba575f5ffd5b50610dd56004803603810190610dd09190614347565b612f83565b005b348015610de2575f5ffd5b50610dfd6004803603810190610df89190614347565b613022565b005b348015610e0a575f5ffd5b50610e256004803603810190610e209190614347565b6130c1565b005b348015610e32575f5ffd5b50610e4d6004803603810190610e489190614347565b61314d565b005b348015610e5a575f5ffd5b50610e636131ec565b005b60195481565b610e7361325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790614a95565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f9a3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f889190614c0f565b6102b2610f959190614c59565b613262565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611004573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110289190614cae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d29190614cae565b6040518363ffffffff1660e01b81526004016110ef929190614cd9565b6020604051808303815f875af115801561110b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112f9190614cae565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730606460506111ba3061210b565b6111c49190614c59565b6111ce9190614d2d565b5f5f6111d8612583565b426040518863ffffffff1660e01b81526004016111fa96959493929190614d9f565b60606040518083038185885af1158015611216573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061123b9190614e12565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112db929190614e62565b6020604051808303815f875af11580156112f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131b9190614eb3565b50565b61132661325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90614a95565b60405180910390fd5b80602b8190555050565b6113c561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990614a95565b60405180910390fd5b5f5f90505b81518110156114dc57600160045f84848151811061147857611477614ede565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611457565b5050565b6114e861325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90614a95565b60405180910390fd5b8060328190555050565b601b602052805f5260405f205f915090505481565b60606040518060400160405280600781526020017f5265746172647300000000000000000000000000000000000000000000000000815250905090565b5f6115e46115dd61325b565b8484613262565b6001905092915050565b6115f661325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614a95565b60405180910390fd5b8060308190555050565b60125481565b61169b61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90614a95565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161175e9190614f0b565b60405180910390a1565b5f6009600a6117779190614c0f565b6102b26117849190614c59565b905090565b61179161325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590614a95565b60405180910390fd5b80602e8190555050565b5f611834848484613425565b6118f18461184061325b565b6118ec856040518060600160405280602881526020016155866028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6118a361325b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613daf9092919063ffffffff16565b613262565b600190509392505050565b61190461325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198890614a95565b60405180910390fd5b80602f8190555050565b6119a361325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790614a95565b60405180910390fd5b8060318190555050565b600181565b611a4761325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90614a95565b60405180910390fd5b80602c8190555050565b5f6009905090565b5f60606019548410611b45575f5f67ffffffffffffffff811115611b0d57611b0c614386565b5b604051908082528060200260200182016040528015611b3b5781602001602082028036833780820191505090505b5091509150611c61565b5f8385611b529190614f24565b9050601954811115611b645760195490505b8481611b709190614f57565b92508267ffffffffffffffff811115611b8c57611b8b614386565b5b604051908082528060200260200182016040528015611bba5781602001602082028036833780820191505090505b5091505f8590505b83811015611c5e5760175f8288611bd99190614f24565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838281518110611c1957611c18614ede565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611bc2565b50505b9250929050565b611c7061325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490614a95565b60405180910390fd5b8060218190555050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611d6161325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590614a95565b60405180910390fd5b8060268190555050565b611e0061325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490614a95565b60405180910390fd5b8060228190555050565b611e9f61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390614a95565b60405180910390fd5b8060258190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611f7661325b565b73ffffffffffffffffffffffffffffffffffffffff1614611f95575f5ffd5b5f611f9f3061210b565b90505f811115611fb357611fb281613e11565b5b5f4790505f811115611fc957611fc88161407c565b5b5050565b611fd561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205990614a95565b60405180910390fd5b8060208190555050565b61207461325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890614a95565b60405180910390fd5b8060238190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61215961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dd90614a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866122f29190614f24565b905081811115612300578190505b858161230c9190614f57565b93505f5f90505b8481101561232657806001019050612313565b505050935093915050565b61233961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90614a95565b60405180910390fd5b6009600a6123d49190614c0f565b6102b26123e19190614c59565b600f819055506009600a6123f59190614c0f565b6102b26124029190614c59565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6124379190614c0f565b6102b26124449190614c59565b60405161245191906142f3565b60405180910390a1565b61246361325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e790614a95565b60405180910390fd5b5f5f90505b8151811015612579575f60045f84848151811061251557612514614ede565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506124f5565b5050565b600f5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b6103e881565b60606040518060400160405280600181526020017f5200000000000000000000000000000000000000000000000000000000000000815250905090565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866126449190614f24565b905081811115612652578190505b858161265e9190614f57565b93505f5f90505b8481101561267857806001019050612665565b505050935093915050565b61268b61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270f90614a95565b60405180910390fd5b8060338190555050565b5f61273561272e61325b565b8484613425565b6001905092915050565b601c5481565b601a5481565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190614fd4565b60405180910390fd5b6127d53383836140e4565b5050565b606092915050565b6127e961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d90614a95565b60405180910390fd5b80602d8190555050565b61288861325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290c90614a95565b60405180910390fd5b6001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b60115481565b61295a61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90614a95565b60405180910390fd5b8060298190555050565b6129f961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90614a95565b60405180910390fd5b80602a8190555050565b612a9861325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c90614a95565b60405180910390fd5b8060368190555050565b612b3761325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb90614a95565b60405180910390fd5b80601e8190555050565b8060358190555050565b612be061325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490614a95565b60405180910390fd5b8060378190555050565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612d1b575f5f67ffffffffffffffff811115612cdd57612cdc614386565b5b604051908082528060200260200182016040528015612d1057816020015b6060815260200190600190039081612cfb5790505b509250925050612db5565b5f8486612d289190614f24565b905081811115612d44578190508086612d419190614f57565b93505b8367ffffffffffffffff811115612d5e57612d5d614386565b5b604051908082528060200260200182016040528015612d9157816020015b6060815260200190600190039081612d7c5790505b5092505f5f5f90508791505b82821015612db057816001019150612d9d565b505050505b935093915050565b612dc561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990614a95565b60405180910390fd5b8060248190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612eec61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7090614a95565b60405180910390fd5b8060288190555050565b612f8b61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300f90614a95565b60405180910390fd5b80601f8190555050565b61302a61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ae90614a95565b60405180910390fd5b8060278190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661310161325b565b73ffffffffffffffffffffffffffffffffffffffff1614613120575f5ffd5b600854811115801561313457506009548111155b61313c575f5ffd5b806008819055508060098190555050565b61315561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d990614a95565b60405180910390fd5b8060348190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661322c61325b565b73ffffffffffffffffffffffffffffffffffffffff161461324b575f5ffd5b5f4790506132588161407c565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c790615062565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361333e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613335906150f0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161341891906142f3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348a9061517e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f89061520c565b60405180910390fd5b5f8111613543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353a9061529a565b60405180910390fd5b5f5f905061354f612583565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156135bd575061358d612583565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613aff5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613660575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613668575f5ffd5b5f600e54036136b0576136ad606461369f600a54600e541161368c57600654613690565b6008545b856140fc90919063ffffffff16565b61417390919063ffffffff16565b90505b5f600e5411156136e5576136e260646136d4600d54856140fc90919063ffffffff16565b61417390919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561378e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156137e1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156138d957600f5482111561382b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382290615302565b60405180910390fd5b601054826138388561210b565b6138429190614f24565b1115613883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387a9061536a565b60405180910390fd5b6138bf60646138b1600a54600e541161389e576006546138a2565b6008545b856140fc90919063ffffffff16565b61417390919063ffffffff16565b9050600e5f8154809291906138d390615388565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561396157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156139a5576139a26064613994600b54600e541161398157600754613985565b6009545b856140fc90919063ffffffff16565b61417390919063ffffffff16565b90505b5f6139af3061210b565b9050601460159054906101000a900460ff16158015613a1a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015613a325750601460169054906101000a900460ff165b8015613a3f575060115481115b8015613a4e5750600c54600e54115b15613afd57601654431115613a65575f6015819055505b600360155410613aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa190615419565b60405180910390fd5b613ac7613ac284613abd846012546141bc565b6141bc565b613e11565b5f4790505f811115613add57613adc4761407c565b5b60155f815480929190613aef90615388565b919050555043601681905550505b505b5f811115613bfe57613b578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141d490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bf591906142f3565b60405180910390a35b613c4e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461423190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613cf1613ca5828461423190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141d490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613d94848661423190919063ffffffff16565b604051613da191906142f3565b60405180910390a350505050565b5f838311158290613df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ded91906145ee565b60405180910390fd5b505f8385613e049190614f57565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115613e4857613e47614386565b5b604051908082528060200260200182016040528015613e765781602001602082028036833780820191505090505b50905030815f81518110613e8d57613e8c614ede565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f31573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f559190614cae565b81600181518110613f6957613f68614ede565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fcf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613262565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614031959493929190615437565b5f604051808303815f87803b158015614048575f5ffd5b505af115801561405a573d5f5f3e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156140e0573d5f5f3e3d5ffd5b5050565b5f60405180602001604052805f815250905050505050565b5f5f830361410c575f905061416d565b5f82846141199190614c59565b90508284826141289190614d2d565b14614168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161415f906154ff565b60405180910390fd5b809150505b92915050565b5f6141b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061427a565b905092915050565b5f8183116141ca57826141cc565b815b905092915050565b5f5f82846141e29190614f24565b905083811015614227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421e90615567565b60405180910390fd5b8091505092915050565b5f61427283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613daf565b905092915050565b5f5f831182906142c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142b791906145ee565b60405180910390fd5b505f83856142ce9190614d2d565b9050809150509392505050565b5f819050919050565b6142ed816142db565b82525050565b5f6020820190506143065f8301846142e4565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b614326816142db565b8114614330575f5ffd5b50565b5f813590506143418161431d565b92915050565b5f6020828403121561435c5761435b614315565b5b5f61436984828501614333565b91505092915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6143bc82614376565b810181811067ffffffffffffffff821117156143db576143da614386565b5b80604052505050565b5f6143ed61430c565b90506143f982826143b3565b919050565b5f67ffffffffffffffff82111561441857614417614386565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6144568261442d565b9050919050565b6144668161444c565b8114614470575f5ffd5b50565b5f813590506144818161445d565b92915050565b5f614499614494846143fe565b6143e4565b905080838252602082019050602084028301858111156144bc576144bb614429565b5b835b818110156144e557806144d18882614473565b8452602084019350506020810190506144be565b5050509392505050565b5f82601f83011261450357614502614372565b5b8135614513848260208601614487565b91505092915050565b5f6020828403121561453157614530614315565b5b5f82013567ffffffffffffffff81111561454e5761454d614319565b5b61455a848285016144ef565b91505092915050565b5f6020828403121561457857614577614315565b5b5f61458584828501614473565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6145c08261458e565b6145ca8185614598565b93506145da8185602086016145a8565b6145e381614376565b840191505092915050565b5f6020820190508181035f83015261460681846145b6565b905092915050565b5f5f6040838503121561462457614623614315565b5b5f61463185828601614473565b925050602061464285828601614333565b9150509250929050565b5f8115159050919050565b6146608161464c565b82525050565b5f6020820190506146795f830184614657565b92915050565b5f5f5f6060848603121561469657614695614315565b5b5f6146a386828701614473565b93505060206146b486828701614473565b92505060406146c586828701614333565b9150509250925092565b5f60ff82169050919050565b6146e4816146cf565b82525050565b5f6020820190506146fd5f8301846146db565b92915050565b5f5f6040838503121561471957614718614315565b5b5f61472685828601614333565b925050602061473785828601614333565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147738161444c565b82525050565b5f614784838361476a565b60208301905092915050565b5f602082019050919050565b5f6147a682614741565b6147b0818561474b565b93506147bb8361475b565b805f5b838110156147eb5781516147d28882614779565b97506147dd83614790565b9250506001810190506147be565b5085935050505092915050565b5f60408201905061480b5f8301856142e4565b818103602083015261481d818461479c565b90509392505050565b5f5f5f6060848603121561483d5761483c614315565b5b5f61484a86828701614473565b935050602061485b86828701614333565b925050604061486c86828701614333565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6148b98261458e565b6148c3818561489f565b93506148d38185602086016145a8565b6148dc81614376565b840191505092915050565b5f6148f283836148af565b905092915050565b5f602082019050919050565b5f61491082614876565b61491a8185614880565b93508360208202850161492c85614890565b805f5b85811015614967578484038952815161494885826148e7565b9450614953836148fa565b925060208a0199505060018101905061492f565b50829750879550505050505092915050565b5f60408201905061498c5f8301856142e4565b818103602083015261499e8184614906565b90509392505050565b6149b08161444c565b82525050565b5f6020820190506149c95f8301846149a7565b92915050565b5f5f604083850312156149e5576149e4614315565b5b5f6149f285828601614333565b9250506020614a0385828601614473565b9150509250929050565b5f5f60408385031215614a2357614a22614315565b5b5f614a3085828601614473565b9250506020614a4185828601614473565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614a7f602083614598565b9150614a8a82614a4b565b602082019050919050565b5f6020820190508181035f830152614aac81614a73565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115614b3557808604811115614b1157614b10614ab3565b5b6001851615614b205780820291505b8081029050614b2e85614ae0565b9450614af5565b94509492505050565b5f82614b4d5760019050614c08565b81614b5a575f9050614c08565b8160018114614b705760028114614b7a57614ba9565b6001915050614c08565b60ff841115614b8c57614b8b614ab3565b5b8360020a915084821115614ba357614ba2614ab3565b5b50614c08565b5060208310610133831016604e8410600b8410161715614bde5782820a905083811115614bd957614bd8614ab3565b5b614c08565b614beb8484846001614aec565b92509050818404811115614c0257614c01614ab3565b5b81810290505b9392505050565b5f614c19826142db565b9150614c24836146cf565b9250614c517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b3e565b905092915050565b5f614c63826142db565b9150614c6e836142db565b9250828202614c7c816142db565b91508282048414831517614c9357614c92614ab3565b5b5092915050565b5f81519050614ca88161445d565b92915050565b5f60208284031215614cc357614cc2614315565b5b5f614cd084828501614c9a565b91505092915050565b5f604082019050614cec5f8301856149a7565b614cf960208301846149a7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614d37826142db565b9150614d42836142db565b925082614d5257614d51614d00565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f614d89614d84614d7f84614d5d565b614d66565b6142db565b9050919050565b614d9981614d6f565b82525050565b5f60c082019050614db25f8301896149a7565b614dbf60208301886142e4565b614dcc6040830187614d90565b614dd96060830186614d90565b614de660808301856149a7565b614df360a08301846142e4565b979650505050505050565b5f81519050614e0c8161431d565b92915050565b5f5f5f60608486031215614e2957614e28614315565b5b5f614e3686828701614dfe565b9350506020614e4786828701614dfe565b9250506040614e5886828701614dfe565b9150509250925092565b5f604082019050614e755f8301856149a7565b614e8260208301846142e4565b9392505050565b614e928161464c565b8114614e9c575f5ffd5b50565b5f81519050614ead81614e89565b92915050565b5f60208284031215614ec857614ec7614315565b5b5f614ed584828501614e9f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082019050614f1e5f830184614d90565b92915050565b5f614f2e826142db565b9150614f39836142db565b9250828201905080821115614f5157614f50614ab3565b5b92915050565b5f614f61826142db565b9150614f6c836142db565b9250828203905081811115614f8457614f83614ab3565b5b92915050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f614fbe600f83614598565b9150614fc982614f8a565b602082019050919050565b5f6020820190508181035f830152614feb81614fb2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61504c602483614598565b915061505782614ff2565b604082019050919050565b5f6020820190508181035f83015261507981615040565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150da602283614598565b91506150e582615080565b604082019050919050565b5f6020820190508181035f830152615107816150ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615168602583614598565b91506151738261510e565b604082019050919050565b5f6020820190508181035f8301526151958161515c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6151f6602383614598565b91506152018261519c565b604082019050919050565b5f6020820190508181035f830152615223816151ea565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615284602983614598565b915061528f8261522a565b604082019050919050565b5f6020820190508181035f8301526152b181615278565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6152ec601983614598565b91506152f7826152b8565b602082019050919050565b5f6020820190508181035f830152615319816152e0565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f615354601a83614598565b915061535f82615320565b602082019050919050565b5f6020820190508181035f83015261538181615348565b9050919050565b5f615392826142db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153c4576153c3614ab3565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f615403601783614598565b915061540e826153cf565b602082019050919050565b5f6020820190508181035f830152615430816153f7565b9050919050565b5f60a08201905061544a5f8301886142e4565b6154576020830187614d90565b8181036040830152615469818661479c565b905061547860608301856149a7565b61548560808301846142e4565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6154e9602183614598565b91506154f48261548f565b604082019050919050565b5f6020820190508181035f830152615516816154dd565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615551601b83614598565b915061555c8261551d565b602082019050919050565b5f6020820190508181035f83015261557e81615545565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220120bc8ff01fafd4be158a7424eb8bbfcf88f63158599d80a5967180ccc2278ac64736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106103c6575f3560e01c80637911ef9d116101f1578063caea71221161010c578063dd62ed3e1161009f578063ebe07bb41161006e578063ebe07bb414610dd7578063ec1f3f6314610dff578063f024cdef14610e27578063f429389014610e4f576103cd565b8063dd62ed3e14610d21578063dde415fa14610d5d578063df7e586c14610d87578063e30d904114610daf576103cd565b8063d2263998116100db578063d226399814610c6c578063d2b0fea314610c94578063d5a4260614610cbc578063db41fae614610cf9576103cd565b8063caea712214610bcc578063cb57d04514610bf4578063cbc2ff7214610c1c578063cd38bbb814610c44576103cd565b8063a9059cbb11610184578063b4f243a411610153578063b4f243a414610b28578063b6d5e2f414610b64578063be9a655514610b8c578063bf474bed14610ba2576103cd565b8063a9059cbb14610a70578063af504def14610aac578063b42dfa0d14610ad6578063b4377a3e14610b00576103cd565b80638fdada4a116101c05780638fdada4a146109b757806395d89b41146109e157806398bafaa314610a0b578063a201b32814610a48576103cd565b80637911ef9d146109115780637d1db4a5146109395780638da5cb5b146109635780638f9a55c01461098d576103cd565b80632d12d34b116102e157806351b8b09e1161027457806370a082311161024357806370a082311461086c578063715018a6146108a8578063750e8d10146108be578063751039fc146108fb576103cd565b806351b8b09e146107de57806351bc3c851461080657806354f06cb01461081c5780635952bd6314610844576103cd565b80633946816a116102b05780633946816a1461072a5780633bbac5791461075257806347dca7c91461078e578063481eeb7f146107b6576103cd565b80632d12d34b146106715780632dd98b221461069b578063313ce567146106c35780633860a393146106ed576103cd565b80630cc6c42f116103595780631b1581aa116103285780631b1581aa146105bd57806323b872dd146105e557806327c295de146106215780632988522014610649576103cd565b80630cc6c42f1461052b5780630faee56f14610553578063109daa991461057d57806318160ddd14610593576103cd565b806304b49b381161039557806304b49b38146104615780630568e65e1461048957806306fdde03146104c5578063095ea7b3146104ef576103cd565b8063018a3741146103d15780630210a83d146103fb57806302e4cda514610411578063041f173f14610439576103cd565b366103cd57005b5f5ffd5b3480156103dc575f5ffd5b506103e5610e65565b6040516103f291906142f3565b60405180910390f35b348015610406575f5ffd5b5061040f610e6b565b005b34801561041c575f5ffd5b5061043760048036038101906104329190614347565b61131e565b005b348015610444575f5ffd5b5061045f600480360381019061045a919061451c565b6113bd565b005b34801561046c575f5ffd5b5061048760048036038101906104829190614347565b6114e0565b005b348015610494575f5ffd5b506104af60048036038101906104aa9190614563565b61157f565b6040516104bc91906142f3565b60405180910390f35b3480156104d0575f5ffd5b506104d9611594565b6040516104e691906145ee565b60405180910390f35b3480156104fa575f5ffd5b506105156004803603810190610510919061460e565b6115d1565b6040516105229190614666565b60405180910390f35b348015610536575f5ffd5b50610551600480360381019061054c9190614347565b6115ee565b005b34801561055e575f5ffd5b5061056761168d565b60405161057491906142f3565b60405180910390f35b348015610588575f5ffd5b50610591611693565b005b34801561059e575f5ffd5b506105a7611768565b6040516105b491906142f3565b60405180910390f35b3480156105c8575f5ffd5b506105e360048036038101906105de9190614347565b611789565b005b3480156105f0575f5ffd5b5061060b6004803603810190610606919061467f565b611828565b6040516106189190614666565b60405180910390f35b34801561062c575f5ffd5b5061064760048036038101906106429190614347565b6118fc565b005b348015610654575f5ffd5b5061066f600480360381019061066a9190614347565b61199b565b005b34801561067c575f5ffd5b50610685611a3a565b60405161069291906142f3565b60405180910390f35b3480156106a6575f5ffd5b506106c160048036038101906106bc9190614347565b611a3f565b005b3480156106ce575f5ffd5b506106d7611ade565b6040516106e491906146ea565b60405180910390f35b3480156106f8575f5ffd5b50610713600480360381019061070e9190614703565b611ae6565b6040516107219291906147f8565b60405180910390f35b348015610735575f5ffd5b50610750600480360381019061074b9190614347565b611c68565b005b34801561075d575f5ffd5b5061077860048036038101906107739190614563565b611d07565b6040516107859190614666565b60405180910390f35b348015610799575f5ffd5b506107b460048036038101906107af9190614347565b611d59565b005b3480156107c1575f5ffd5b506107dc60048036038101906107d79190614347565b611df8565b005b3480156107e9575f5ffd5b5061080460048036038101906107ff9190614347565b611e97565b005b348015610811575f5ffd5b5061081a611f36565b005b348015610827575f5ffd5b50610842600480360381019061083d9190614347565b611fcd565b005b34801561084f575f5ffd5b5061086a60048036038101906108659190614347565b61206c565b005b348015610877575f5ffd5b50610892600480360381019061088d9190614563565b61210b565b60405161089f91906142f3565b60405180910390f35b3480156108b3575f5ffd5b506108bc612151565b005b3480156108c9575f5ffd5b506108e460048036038101906108df9190614826565b6122a1565b6040516108f2929190614979565b60405180910390f35b348015610906575f5ffd5b5061090f612331565b005b34801561091c575f5ffd5b506109376004803603810190610932919061451c565b61245b565b005b348015610944575f5ffd5b5061094d61257d565b60405161095a91906142f3565b60405180910390f35b34801561096e575f5ffd5b50610977612583565b60405161098491906149b6565b60405180910390f35b348015610998575f5ffd5b506109a16125aa565b6040516109ae91906142f3565b60405180910390f35b3480156109c2575f5ffd5b506109cb6125b0565b6040516109d891906142f3565b60405180910390f35b3480156109ec575f5ffd5b506109f56125b6565b604051610a0291906145ee565b60405180910390f35b348015610a16575f5ffd5b50610a316004803603810190610a2c9190614826565b6125f3565b604051610a3f929190614979565b60405180910390f35b348015610a53575f5ffd5b50610a6e6004803603810190610a699190614347565b612683565b005b348015610a7b575f5ffd5b50610a966004803603810190610a91919061460e565b612722565b604051610aa39190614666565b60405180910390f35b348015610ab7575f5ffd5b50610ac061273f565b604051610acd91906142f3565b60405180910390f35b348015610ae1575f5ffd5b50610aea612745565b604051610af791906142f3565b60405180910390f35b348015610b0b575f5ffd5b50610b266004803603810190610b2191906149cf565b61274b565b005b348015610b33575f5ffd5b50610b4e6004803603810190610b49919061460e565b6127d9565b604051610b5b91906145ee565b60405180910390f35b348015610b6f575f5ffd5b50610b8a6004803603810190610b859190614347565b6127e1565b005b348015610b97575f5ffd5b50610ba0612880565b005b348015610bad575f5ffd5b50610bb661294c565b604051610bc391906142f3565b60405180910390f35b348015610bd7575f5ffd5b50610bf26004803603810190610bed9190614347565b612952565b005b348015610bff575f5ffd5b50610c1a6004803603810190610c159190614347565b6129f1565b005b348015610c27575f5ffd5b50610c426004803603810190610c3d9190614347565b612a90565b005b348015610c4f575f5ffd5b50610c6a6004803603810190610c659190614347565b612b2f565b005b348015610c77575f5ffd5b50610c926004803603810190610c8d9190614347565b612bce565b005b348015610c9f575f5ffd5b50610cba6004803603810190610cb59190614347565b612bd8565b005b348015610cc7575f5ffd5b50610ce26004803603810190610cdd9190614826565b612c77565b604051610cf0929190614979565b60405180910390f35b348015610d04575f5ffd5b50610d1f6004803603810190610d1a9190614347565b612dbd565b005b348015610d2c575f5ffd5b50610d476004803603810190610d429190614a0d565b612e5c565b604051610d5491906142f3565b60405180910390f35b348015610d68575f5ffd5b50610d71612ede565b604051610d7e91906142f3565b60405180910390f35b348015610d92575f5ffd5b50610dad6004803603810190610da89190614347565b612ee4565b005b348015610dba575f5ffd5b50610dd56004803603810190610dd09190614347565b612f83565b005b348015610de2575f5ffd5b50610dfd6004803603810190610df89190614347565b613022565b005b348015610e0a575f5ffd5b50610e256004803603810190610e209190614347565b6130c1565b005b348015610e32575f5ffd5b50610e4d6004803603810190610e489190614347565b61314d565b005b348015610e5a575f5ffd5b50610e636131ec565b005b60195481565b610e7361325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790614a95565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f9a3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f889190614c0f565b6102b2610f959190614c59565b613262565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611004573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110289190614cae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d29190614cae565b6040518363ffffffff1660e01b81526004016110ef929190614cd9565b6020604051808303815f875af115801561110b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112f9190614cae565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730606460506111ba3061210b565b6111c49190614c59565b6111ce9190614d2d565b5f5f6111d8612583565b426040518863ffffffff1660e01b81526004016111fa96959493929190614d9f565b60606040518083038185885af1158015611216573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061123b9190614e12565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112db929190614e62565b6020604051808303815f875af11580156112f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131b9190614eb3565b50565b61132661325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90614a95565b60405180910390fd5b80602b8190555050565b6113c561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990614a95565b60405180910390fd5b5f5f90505b81518110156114dc57600160045f84848151811061147857611477614ede565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611457565b5050565b6114e861325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90614a95565b60405180910390fd5b8060328190555050565b601b602052805f5260405f205f915090505481565b60606040518060400160405280600781526020017f5265746172647300000000000000000000000000000000000000000000000000815250905090565b5f6115e46115dd61325b565b8484613262565b6001905092915050565b6115f661325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614a95565b60405180910390fd5b8060308190555050565b60125481565b61169b61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90614a95565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161175e9190614f0b565b60405180910390a1565b5f6009600a6117779190614c0f565b6102b26117849190614c59565b905090565b61179161325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590614a95565b60405180910390fd5b80602e8190555050565b5f611834848484613425565b6118f18461184061325b565b6118ec856040518060600160405280602881526020016155866028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6118a361325b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613daf9092919063ffffffff16565b613262565b600190509392505050565b61190461325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198890614a95565b60405180910390fd5b80602f8190555050565b6119a361325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790614a95565b60405180910390fd5b8060318190555050565b600181565b611a4761325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90614a95565b60405180910390fd5b80602c8190555050565b5f6009905090565b5f60606019548410611b45575f5f67ffffffffffffffff811115611b0d57611b0c614386565b5b604051908082528060200260200182016040528015611b3b5781602001602082028036833780820191505090505b5091509150611c61565b5f8385611b529190614f24565b9050601954811115611b645760195490505b8481611b709190614f57565b92508267ffffffffffffffff811115611b8c57611b8b614386565b5b604051908082528060200260200182016040528015611bba5781602001602082028036833780820191505090505b5091505f8590505b83811015611c5e5760175f8288611bd99190614f24565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838281518110611c1957611c18614ede565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611bc2565b50505b9250929050565b611c7061325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490614a95565b60405180910390fd5b8060218190555050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611d6161325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590614a95565b60405180910390fd5b8060268190555050565b611e0061325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490614a95565b60405180910390fd5b8060228190555050565b611e9f61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390614a95565b60405180910390fd5b8060258190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611f7661325b565b73ffffffffffffffffffffffffffffffffffffffff1614611f95575f5ffd5b5f611f9f3061210b565b90505f811115611fb357611fb281613e11565b5b5f4790505f811115611fc957611fc88161407c565b5b5050565b611fd561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205990614a95565b60405180910390fd5b8060208190555050565b61207461325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890614a95565b60405180910390fd5b8060238190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61215961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dd90614a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866122f29190614f24565b905081811115612300578190505b858161230c9190614f57565b93505f5f90505b8481101561232657806001019050612313565b505050935093915050565b61233961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90614a95565b60405180910390fd5b6009600a6123d49190614c0f565b6102b26123e19190614c59565b600f819055506009600a6123f59190614c0f565b6102b26124029190614c59565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6124379190614c0f565b6102b26124449190614c59565b60405161245191906142f3565b60405180910390a1565b61246361325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e790614a95565b60405180910390fd5b5f5f90505b8151811015612579575f60045f84848151811061251557612514614ede565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506124f5565b5050565b600f5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b6103e881565b60606040518060400160405280600181526020017f5200000000000000000000000000000000000000000000000000000000000000815250905090565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866126449190614f24565b905081811115612652578190505b858161265e9190614f57565b93505f5f90505b8481101561267857806001019050612665565b505050935093915050565b61268b61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270f90614a95565b60405180910390fd5b8060338190555050565b5f61273561272e61325b565b8484613425565b6001905092915050565b601c5481565b601a5481565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190614fd4565b60405180910390fd5b6127d53383836140e4565b5050565b606092915050565b6127e961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d90614a95565b60405180910390fd5b80602d8190555050565b61288861325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290c90614a95565b60405180910390fd5b6001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b60115481565b61295a61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90614a95565b60405180910390fd5b8060298190555050565b6129f961325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90614a95565b60405180910390fd5b80602a8190555050565b612a9861325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c90614a95565b60405180910390fd5b8060368190555050565b612b3761325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb90614a95565b60405180910390fd5b80601e8190555050565b8060358190555050565b612be061325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490614a95565b60405180910390fd5b8060378190555050565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612d1b575f5f67ffffffffffffffff811115612cdd57612cdc614386565b5b604051908082528060200260200182016040528015612d1057816020015b6060815260200190600190039081612cfb5790505b509250925050612db5565b5f8486612d289190614f24565b905081811115612d44578190508086612d419190614f57565b93505b8367ffffffffffffffff811115612d5e57612d5d614386565b5b604051908082528060200260200182016040528015612d9157816020015b6060815260200190600190039081612d7c5790505b5092505f5f5f90508791505b82821015612db057816001019150612d9d565b505050505b935093915050565b612dc561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990614a95565b60405180910390fd5b8060248190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612eec61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7090614a95565b60405180910390fd5b8060288190555050565b612f8b61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300f90614a95565b60405180910390fd5b80601f8190555050565b61302a61325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ae90614a95565b60405180910390fd5b8060278190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661310161325b565b73ffffffffffffffffffffffffffffffffffffffff1614613120575f5ffd5b600854811115801561313457506009548111155b61313c575f5ffd5b806008819055508060098190555050565b61315561325b565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d990614a95565b60405180910390fd5b8060348190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661322c61325b565b73ffffffffffffffffffffffffffffffffffffffff161461324b575f5ffd5b5f4790506132588161407c565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c790615062565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361333e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613335906150f0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161341891906142f3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348a9061517e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f89061520c565b60405180910390fd5b5f8111613543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353a9061529a565b60405180910390fd5b5f5f905061354f612583565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156135bd575061358d612583565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613aff5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613660575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613668575f5ffd5b5f600e54036136b0576136ad606461369f600a54600e541161368c57600654613690565b6008545b856140fc90919063ffffffff16565b61417390919063ffffffff16565b90505b5f600e5411156136e5576136e260646136d4600d54856140fc90919063ffffffff16565b61417390919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561378e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156137e1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156138d957600f5482111561382b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382290615302565b60405180910390fd5b601054826138388561210b565b6138429190614f24565b1115613883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387a9061536a565b60405180910390fd5b6138bf60646138b1600a54600e541161389e576006546138a2565b6008545b856140fc90919063ffffffff16565b61417390919063ffffffff16565b9050600e5f8154809291906138d390615388565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561396157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156139a5576139a26064613994600b54600e541161398157600754613985565b6009545b856140fc90919063ffffffff16565b61417390919063ffffffff16565b90505b5f6139af3061210b565b9050601460159054906101000a900460ff16158015613a1a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015613a325750601460169054906101000a900460ff165b8015613a3f575060115481115b8015613a4e5750600c54600e54115b15613afd57601654431115613a65575f6015819055505b600360155410613aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa190615419565b60405180910390fd5b613ac7613ac284613abd846012546141bc565b6141bc565b613e11565b5f4790505f811115613add57613adc4761407c565b5b60155f815480929190613aef90615388565b919050555043601681905550505b505b5f811115613bfe57613b578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141d490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bf591906142f3565b60405180910390a35b613c4e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461423190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613cf1613ca5828461423190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141d490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613d94848661423190919063ffffffff16565b604051613da191906142f3565b60405180910390a350505050565b5f838311158290613df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ded91906145ee565b60405180910390fd5b505f8385613e049190614f57565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115613e4857613e47614386565b5b604051908082528060200260200182016040528015613e765781602001602082028036833780820191505090505b50905030815f81518110613e8d57613e8c614ede565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f31573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f559190614cae565b81600181518110613f6957613f68614ede565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fcf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613262565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614031959493929190615437565b5f604051808303815f87803b158015614048575f5ffd5b505af115801561405a573d5f5f3e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156140e0573d5f5f3e3d5ffd5b5050565b5f60405180602001604052805f815250905050505050565b5f5f830361410c575f905061416d565b5f82846141199190614c59565b90508284826141289190614d2d565b14614168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161415f906154ff565b60405180910390fd5b809150505b92915050565b5f6141b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061427a565b905092915050565b5f8183116141ca57826141cc565b815b905092915050565b5f5f82846141e29190614f24565b905083811015614227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421e90615567565b60405180910390fd5b8091505092915050565b5f61427283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613daf565b905092915050565b5f5f831182906142c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142b791906145ee565b60405180910390fd5b505f83856142ce9190614d2d565b9050809150509392505050565b5f819050919050565b6142ed816142db565b82525050565b5f6020820190506143065f8301846142e4565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b614326816142db565b8114614330575f5ffd5b50565b5f813590506143418161431d565b92915050565b5f6020828403121561435c5761435b614315565b5b5f61436984828501614333565b91505092915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6143bc82614376565b810181811067ffffffffffffffff821117156143db576143da614386565b5b80604052505050565b5f6143ed61430c565b90506143f982826143b3565b919050565b5f67ffffffffffffffff82111561441857614417614386565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6144568261442d565b9050919050565b6144668161444c565b8114614470575f5ffd5b50565b5f813590506144818161445d565b92915050565b5f614499614494846143fe565b6143e4565b905080838252602082019050602084028301858111156144bc576144bb614429565b5b835b818110156144e557806144d18882614473565b8452602084019350506020810190506144be565b5050509392505050565b5f82601f83011261450357614502614372565b5b8135614513848260208601614487565b91505092915050565b5f6020828403121561453157614530614315565b5b5f82013567ffffffffffffffff81111561454e5761454d614319565b5b61455a848285016144ef565b91505092915050565b5f6020828403121561457857614577614315565b5b5f61458584828501614473565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6145c08261458e565b6145ca8185614598565b93506145da8185602086016145a8565b6145e381614376565b840191505092915050565b5f6020820190508181035f83015261460681846145b6565b905092915050565b5f5f6040838503121561462457614623614315565b5b5f61463185828601614473565b925050602061464285828601614333565b9150509250929050565b5f8115159050919050565b6146608161464c565b82525050565b5f6020820190506146795f830184614657565b92915050565b5f5f5f6060848603121561469657614695614315565b5b5f6146a386828701614473565b93505060206146b486828701614473565b92505060406146c586828701614333565b9150509250925092565b5f60ff82169050919050565b6146e4816146cf565b82525050565b5f6020820190506146fd5f8301846146db565b92915050565b5f5f6040838503121561471957614718614315565b5b5f61472685828601614333565b925050602061473785828601614333565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147738161444c565b82525050565b5f614784838361476a565b60208301905092915050565b5f602082019050919050565b5f6147a682614741565b6147b0818561474b565b93506147bb8361475b565b805f5b838110156147eb5781516147d28882614779565b97506147dd83614790565b9250506001810190506147be565b5085935050505092915050565b5f60408201905061480b5f8301856142e4565b818103602083015261481d818461479c565b90509392505050565b5f5f5f6060848603121561483d5761483c614315565b5b5f61484a86828701614473565b935050602061485b86828701614333565b925050604061486c86828701614333565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6148b98261458e565b6148c3818561489f565b93506148d38185602086016145a8565b6148dc81614376565b840191505092915050565b5f6148f283836148af565b905092915050565b5f602082019050919050565b5f61491082614876565b61491a8185614880565b93508360208202850161492c85614890565b805f5b85811015614967578484038952815161494885826148e7565b9450614953836148fa565b925060208a0199505060018101905061492f565b50829750879550505050505092915050565b5f60408201905061498c5f8301856142e4565b818103602083015261499e8184614906565b90509392505050565b6149b08161444c565b82525050565b5f6020820190506149c95f8301846149a7565b92915050565b5f5f604083850312156149e5576149e4614315565b5b5f6149f285828601614333565b9250506020614a0385828601614473565b9150509250929050565b5f5f60408385031215614a2357614a22614315565b5b5f614a3085828601614473565b9250506020614a4185828601614473565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614a7f602083614598565b9150614a8a82614a4b565b602082019050919050565b5f6020820190508181035f830152614aac81614a73565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115614b3557808604811115614b1157614b10614ab3565b5b6001851615614b205780820291505b8081029050614b2e85614ae0565b9450614af5565b94509492505050565b5f82614b4d5760019050614c08565b81614b5a575f9050614c08565b8160018114614b705760028114614b7a57614ba9565b6001915050614c08565b60ff841115614b8c57614b8b614ab3565b5b8360020a915084821115614ba357614ba2614ab3565b5b50614c08565b5060208310610133831016604e8410600b8410161715614bde5782820a905083811115614bd957614bd8614ab3565b5b614c08565b614beb8484846001614aec565b92509050818404811115614c0257614c01614ab3565b5b81810290505b9392505050565b5f614c19826142db565b9150614c24836146cf565b9250614c517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b3e565b905092915050565b5f614c63826142db565b9150614c6e836142db565b9250828202614c7c816142db565b91508282048414831517614c9357614c92614ab3565b5b5092915050565b5f81519050614ca88161445d565b92915050565b5f60208284031215614cc357614cc2614315565b5b5f614cd084828501614c9a565b91505092915050565b5f604082019050614cec5f8301856149a7565b614cf960208301846149a7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614d37826142db565b9150614d42836142db565b925082614d5257614d51614d00565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f614d89614d84614d7f84614d5d565b614d66565b6142db565b9050919050565b614d9981614d6f565b82525050565b5f60c082019050614db25f8301896149a7565b614dbf60208301886142e4565b614dcc6040830187614d90565b614dd96060830186614d90565b614de660808301856149a7565b614df360a08301846142e4565b979650505050505050565b5f81519050614e0c8161431d565b92915050565b5f5f5f60608486031215614e2957614e28614315565b5b5f614e3686828701614dfe565b9350506020614e4786828701614dfe565b9250506040614e5886828701614dfe565b9150509250925092565b5f604082019050614e755f8301856149a7565b614e8260208301846142e4565b9392505050565b614e928161464c565b8114614e9c575f5ffd5b50565b5f81519050614ead81614e89565b92915050565b5f60208284031215614ec857614ec7614315565b5b5f614ed584828501614e9f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082019050614f1e5f830184614d90565b92915050565b5f614f2e826142db565b9150614f39836142db565b9250828201905080821115614f5157614f50614ab3565b5b92915050565b5f614f61826142db565b9150614f6c836142db565b9250828203905081811115614f8457614f83614ab3565b5b92915050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f614fbe600f83614598565b9150614fc982614f8a565b602082019050919050565b5f6020820190508181035f830152614feb81614fb2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61504c602483614598565b915061505782614ff2565b604082019050919050565b5f6020820190508181035f83015261507981615040565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150da602283614598565b91506150e582615080565b604082019050919050565b5f6020820190508181035f830152615107816150ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615168602583614598565b91506151738261510e565b604082019050919050565b5f6020820190508181035f8301526151958161515c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6151f6602383614598565b91506152018261519c565b604082019050919050565b5f6020820190508181035f830152615223816151ea565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615284602983614598565b915061528f8261522a565b604082019050919050565b5f6020820190508181035f8301526152b181615278565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6152ec601983614598565b91506152f7826152b8565b602082019050919050565b5f6020820190508181035f830152615319816152e0565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f615354601a83614598565b915061535f82615320565b602082019050919050565b5f6020820190508181035f83015261538181615348565b9050919050565b5f615392826142db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153c4576153c3614ab3565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f615403601783614598565b915061540e826153cf565b602082019050919050565b5f6020820190508181035f830152615430816153f7565b9050919050565b5f60a08201905061544a5f8301886142e4565b6154576020830187614d90565b8181036040830152615469818661479c565b905061547860608301856149a7565b61548560808301846142e4565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6154e9602183614598565b91506154f48261548f565b604082019050919050565b5f6020820190508181035f830152615516816154dd565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615551601b83614598565b915061555c8261551d565b602082019050919050565b5f6020820190508181035f83015261557e81615545565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220120bc8ff01fafd4be158a7424eb8bbfcf88f63158599d80a5967180ccc2278ac64736f6c634300081b0033

Deployed Bytecode Sourcemap

3518:18772:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12666:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11150:574;;;;;;;;;;;;;:::i;:::-;;20924:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10593:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21658:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14137:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5466:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6299:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21460:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4616:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10363:120;;;;;;;;;;;;;:::i;:::-;;5743:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21261:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6468:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21349:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13963:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21015:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5652:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12700:543;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;19805:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10945:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20381:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19921:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20282:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11999:346;;;;;;;;;;;;;:::i;:::-;;19693:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20060:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5846:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2599:148;;;;;;;;;;;;;:::i;:::-;;17830:470;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10187:168;;;;;;;;;;;;;:::i;:::-;;10767:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4448:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2385:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4502:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14002:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5557:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17356:466;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;21741:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5973:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14188:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14054:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14443:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17211:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21130:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11036:104;;;;;;;;;;;;;:::i;:::-;;4558:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20726:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20813:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22093:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19471:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21963:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22180:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18308:590;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20159:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6148:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14093:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20603:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19606:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20504:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11736:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21848:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12353:187;;;;;;;;;;;;;:::i;:::-;;12666:25;;;;:::o;11150:574::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11250:42:::1;11213:15;;:80;;;;;;;;;;;;;;;;;;11304:58;11321:4;11336:15;;;;;;;;;;;4379:1;4428:2;:13;;;;:::i;:::-;4422:3;:19;;;;:::i;:::-;11304:8;:58::i;:::-;11407:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11389:55;;;11453:4;11460:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11389:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11373:13;;:110;;;;;;;;;;;;;;;;;;11494:15;;;;;;;;;;;:31;;;11533:21;11564:4;11602:3;11597:2;11570:24;11588:4;11570:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;11606:1;11608;11610:7;:5;:7::i;:::-;11618:15;11494:140;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11652:13;;;;;;;;;;;11645:29;;;11683:15;;;;;;;;;;;11701:14;11645:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11150:574::o:0;20924:83::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20993:6:::1;20985:5;:14;;;;20924:83:::0;:::o;10593:166::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10669:6:::1;10678:1;10669:10;;10664:88;10685:5;:12;10681:1;:16;10664:88;;;10736:4;10719;:14;10724:5;10730:1;10724:8;;;;;;;;:::i;:::-;;;;;;;;10719:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10699:3;;;;;;;10664:88;;;;10593:166:::0;:::o;21658:75::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21721:4:::1;21715:3;:10;;;;21658:75:::0;:::o;14137:44::-;;;;;;;;;;;;;;;;;:::o;5466:83::-;5503:13;5536:5;;;;;;;;;;;;;;;;;5529:12;;5466:83;:::o;6299:161::-;6374:4;6391:39;6400:12;:10;:12::i;:::-;6414:7;6423:6;6391:8;:39::i;:::-;6448:4;6441:11;;6299:161;;;;:::o;21460:79::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21526:5:::1;21519:4;:12;;;;21460:79:::0;:::o;4616:45::-;;;;:::o;10363:120::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10437:1:::1;10422:12;:16;;;;10454:21;10473:1;10454:21;;;;;;:::i;:::-;;;;;;;;10363:120::o:0;5743:95::-;5796:7;4379:1;4428:2;:13;;;;:::i;:::-;4422:3;:19;;;;:::i;:::-;5816:14;;5743:95;:::o;21261:80::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21328:5:::1;21321:4;:12;;;;21261:80:::0;:::o;6468:313::-;6566:4;6583:36;6593:6;6601:9;6612:6;6583:9;:36::i;:::-;6630:121;6639:6;6647:12;:10;:12::i;:::-;6661:89;6699:6;6661:89;;;;;;;;;;;;;;;;;:11;:19;6673:6;6661:19;;;;;;;;;;;;;;;:33;6681:12;:10;:12::i;:::-;6661:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6630:8;:121::i;:::-;6769:4;6762:11;;6468:313;;;;;:::o;21349:103::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21433:11:::1;21420:10;:24;;;;21349:103:::0;:::o;21547:::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21631:11:::1;21618:10;:24;;;;21547:103:::0;:::o;13963:32::-;13994:1;13963:32;:::o;21015:107::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21102:12:::1;21088:11;:26;;;;21015:107:::0;:::o;5652:83::-;5693:5;4379:1;5711:16;;5652:83;:::o;12700:543::-;12798:15;12815:25;12866:13;;12857:5;:22;12853:56;;12889:1;12906;12892:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:28;;;;;;12853:56;12922:8;12941:5;12933;:13;;;;:::i;:::-;12922:24;;12967:13;;12961:3;:19;12957:71;;;13003:13;;12997:19;;12957:71;13057:5;13051:3;:11;;;;:::i;:::-;13038:24;;13100:10;13086:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13075:36;;13122:6;13148:5;13144:9;;13139:97;13159:10;13155:1;:14;13139:97;;;13205:8;:19;13222:1;13214:5;:9;;;;:::i;:::-;13205:19;;;;;;;;;;;;;;;;;;;;;13191:8;13200:1;13191:11;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;13171:3;;;;;13139:97;;;12842:401;;12700:543;;;;;;:::o;19805:108::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19893:12:::1;19879:11;:26;;;;19805:108:::0;:::o;10945:83::-;10992:4;11013;:7;11018:1;11013:7;;;;;;;;;;;;;;;;;;;;;;;;;11006:14;;10945:83;;;:::o;20381:115::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20474:14:::1;20458:13;:30;;;;20381:115:::0;:::o;19921:131::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20026:18:::1;20006:17;:38;;;;19921:131:::0;:::o;20282:91::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20357:8:::1;20347:7;:18;;;;20282:91:::0;:::o;11999:346::-;12063:10;;;;;;;;;;;12049:24;;:12;:10;:12::i;:::-;:24;;;12041:33;;;;;;12085:20;12106:24;12124:4;12106:9;:24::i;:::-;12085:45;;12157:1;12144:12;:14;12141:73;;;12172:30;12189:12;12172:16;:30::i;:::-;12141:73;12224:18;12243:21;12224:40;;12289:1;12278:10;:12;12275:63;;;12302:24;12315:10;12302:12;:24::i;:::-;12275:63;12030:315;;11999:346::o;19693:104::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19778:11:::1;19765:10;:24;;;;19693:104:::0;:::o;20060:91::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20135:8:::1;20125:7;:18;;;;20060:91:::0;:::o;5846:119::-;5912:7;5939:9;:18;5949:7;5939:18;;;;;;;;;;;;;;;;5932:25;;5846:119;;;:::o;2599:148::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2706:1:::1;2669:40;;2690:6;;;;;;;;;;;2669:40;;;;;;;;;;;;2737:1;2720:6;;:19;;;;;;;;;;;;;;;;;;2599:148::o:0;17830:470::-;17955:15;17972:24;18009:18;18030:6;:15;18037:7;18030:15;;;;;;;;;;;;;;;;18009:36;;18063:8;18082:5;18074;:13;;;;:::i;:::-;18063:24;;18108:13;18102:3;:19;18098:71;;;18144:13;18138:19;;18098:71;18198:5;18192:3;:11;;;;:::i;:::-;18179:24;;18224:6;18250:1;18246:5;;18241:52;18257:10;18253:1;:14;18241:52;;;18269:3;;;;;18241:52;;;17998:302;;;17830:470;;;;;;:::o;10187:168::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4379:1:::1;4428:2;:13;;;;:::i;:::-;4422:3;:19;;;;:::i;:::-;10240:12;:22;;;;4379:1;4428:2;:13;;;;:::i;:::-;4422:3;:19;;;;:::i;:::-;10273:14;:22;;;;10311:27;4379:1;4428:2;:13;;;;:::i;:::-;4422:3;:19;;;;:::i;:::-;10311:27;;;;;;:::i;:::-;;;;;;;;10187:168::o:0;10767:170::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10848:6:::1;10857:1;10848:10;;10843:87;10864:6;:13;10860:1;:17;10843:87;;;10915:5;10897:4;:15;10902:6;10909:1;10902:9;;;;;;;;:::i;:::-;;;;;;;;10897:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10879:3;;;;;;;10843:87;;;;10767:170:::0;:::o;4448:47::-;;;;:::o;2385:79::-;2423:7;2450:6;;;;;;;;;;;2443:13;;2385:79;:::o;4502:49::-;;;;:::o;14002:45::-;13952:4;14002:45;:::o;5557:87::-;5596:13;5629:7;;;;;;;;;;;;;;;;;5622:14;;5557:87;:::o;17356:466::-;17482:15;17499:24;17536:18;17557:6;:15;17564:7;17557:15;;;;;;;;;;;;;;;;17536:36;;17588:8;17607:5;17599;:13;;;;:::i;:::-;17588:24;;17633:13;17627:3;:19;17623:71;;;17669:13;17663:19;;17623:71;17723:5;17717:3;:11;;;;:::i;:::-;17704:24;;17747:6;17773:1;17769:5;;17764:51;17780:10;17776:1;:14;17764:51;;;17792:3;;;;;17764:51;;;17525:297;;;17356:466;;;;;;:::o;21741:99::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21822:10:::1;21810:9;:22;;;;21741:99:::0;:::o;5973:167::-;6051:4;6068:42;6078:12;:10;:12::i;:::-;6092:9;6103:6;6068:9;:42::i;:::-;6128:4;6121:11;;5973:167;;;;:::o;14188:29::-;;;;:::o;14054:32::-;;;;:::o;14443:213::-;14544:6;:18;14551:10;14544:18;;;;;;;;;;;;;;;;14536:5;:26;14528:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14593:55;14626:10;14638:5;14645:2;14593:32;:55::i;:::-;14443:213;;:::o;17211:137::-;17315:13;17211:137;;;;:::o;21130:123::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21229:16:::1;21211:15;:34;;;;21130:123:::0;:::o;11036:104::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11099:4:::1;11085:11;;:18;;;;;;;;;;;;;;;;;;11128:4;11114:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11036:104::o:0;4558:51::-;;;;:::o;20726:79::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20792:5:::1;20785:4;:12;;;;20726:79:::0;:::o;20813:103::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20897:11:::1;20884:10;:24;;;;20813:103:::0;:::o;22093:79::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22159:5:::1;22152:4;:12;;;;22093:79:::0;:::o;19471:127::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19573:17:::1;19554:16;:36;;;;19471:127:::0;:::o;21963:122::-;22059:18;22039:17;:38;;;;21963:122;:::o;22180:103::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22264:11:::1;22251:10;:24;;;;22180:103:::0;:::o;18308:590::-;18432:15;18449:24;18486:18;18507:6;:15;18514:7;18507:15;;;;;;;;;;;;;;;;18486:36;;18546:13;18537:5;:22;18533:55;;18569:1;18585;18572:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18561:27;;;;;;;18533:55;18601:8;18620:5;18612;:13;;;;:::i;:::-;18601:24;;18646:13;18640:3;:19;18636:110;;;18682:13;18676:19;;18731:3;18723:5;:11;;;;:::i;:::-;18710:24;;18636:110;18782:10;18769:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18758:35;;18804:6;18821;18830:1;18821:10;;18851:5;18847:9;;18842:49;18862:3;18858:1;:7;18842:49;;;18867:3;;;;;18842:49;;;18475:423;;;;18308:590;;;;;;;:::o;20159:115::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20252:14:::1;20236:13;:30;;;;20159:115:::0;:::o;6148:143::-;6229:7;6256:11;:18;6268:5;6256:18;;;;;;;;;;;;;;;:27;6275:7;6256:27;;;;;;;;;;;;;;;;6249:34;;6148:143;;;;:::o;14093:37::-;14126:4;14093:37;:::o;20603:115::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20696:14:::1;20680:13;:30;;;;20603:115:::0;:::o;19606:79::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19672:5:::1;19665:4;:12;;;;19606:79:::0;:::o;20504:91::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20579:8:::1;20569:7;:18;;;;20504:91:::0;:::o;11736:218::-;11811:10;;;;;;;;;;;11797:24;;:12;:10;:12::i;:::-;:24;;;11789:33;;;;;;11848:12;;11839:7;:21;;:47;;;;;11873:13;;11864:7;:22;;11839:47;11831:56;;;;;;11909:7;11896:12;:20;;;;11939:7;11925:13;:21;;;;11736:218;:::o;21848:107::-;2522:12;:10;:12::i;:::-;2512:22;;:6;;;;;;;;;;;:22;;;2504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21935:12:::1;21921:11;:26;;;;21848:107:::0;:::o;12353:187::-;12417:10;;;;;;;;;;;12403:24;;:12;:10;:12::i;:::-;:24;;;12395:33;;;;;;12439:26;12468:21;12439:50;;12500:32;12513:18;12500:12;:32::i;:::-;12384:156;12353:187::o;140:98::-;193:7;220:10;213:17;;140:98;:::o;6789:335::-;6899:1;6882:19;;:5;:19;;;6874:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6980:1;6961:21;;:7;:21;;;6953:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7062:6;7032:11;:18;7044:5;7032:18;;;;;;;;;;;;;;;:27;7051:7;7032:27;;;;;;;;;;;;;;;:36;;;;7100:7;7084:32;;7093:5;7084:32;;;7109:6;7084:32;;;;;;:::i;:::-;;;;;;;;6789:335;;;:::o;7132:2448::-;7236:1;7220:18;;:4;:18;;;7212:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7313:1;7299:16;;:2;:16;;;7291:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7383:1;7374:6;:10;7366:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7441:17;7459:1;7441:19;;7483:7;:5;:7::i;:::-;7475:15;;:4;:15;;;;:32;;;;;7500:7;:5;:7::i;:::-;7494:13;;:2;:13;;;;7475:32;7471:1753;;;7533:4;:10;7538:4;7533:10;;;;;;;;;;;;;;;;;;;;;;;;;7532:11;:24;;;;;7548:4;:8;7553:2;7548:8;;;;;;;;;;;;;;;;;;;;;;;;;7547:9;7532:24;7524:33;;;;;;7588:1;7577:9;;:12;7574:139;;7621:76;7693:3;7621:67;7643:15;;7633:9;;:25;7632:55;;7673:14;;7632:55;;;7660:12;;7632:55;7621:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7609:88;;7574:139;7740:1;7730:9;;:11;7727:95;;;7773:33;7802:3;7773:24;7784:12;;7773:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;7761:45;;7727:95;7850:13;;;;;;;;;;;7842:21;;:4;:21;;;:55;;;;;7881:15;;;;;;;;;;;7867:30;;:2;:30;;;;7842:55;:83;;;;;7903:18;:22;7922:2;7903:22;;;;;;;;;;;;;;;;;;;;;;;;;7901:24;7842:83;7838:420;;;7965:12;;7955:6;:22;;7947:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8060:14;;8050:6;8034:13;8044:2;8034:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8026:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8136:76;8208:3;8136:67;8158:15;;8148:9;;:25;8147:55;;8188:14;;8147:55;;;8175:12;;8147:55;8136:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8124:88;;8231:9;;:11;;;;;;;;;:::i;:::-;;;;;;7838:420;8283:13;;;;;;;;;;;8277:19;;:2;:19;;;:43;;;;;8315:4;8300:20;;:4;:20;;;;8277:43;8274:174;;;8353:79;8428:3;8353:70;8375:16;;8365:9;;:26;8364:58;;8407:15;;8364:58;;;8393:13;;8364:58;8353:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8341:91;;8274:174;8464:28;8495:24;8513:4;8495:9;:24::i;:::-;8464:55;;8539:6;;;;;;;;;;;8538:7;:30;;;;;8555:13;;;;;;;;;;;8549:19;;:2;:19;;;8538:30;:45;;;;;8572:11;;;;;;;;;;;8538:45;:89;;;;;8610:17;;8587:20;:40;8538:89;:123;;;;;8643:18;;8631:9;;:30;8538:123;8534:679;;;8701:13;;8686:12;:28;8682:90;;;8751:1;8739:9;:13;;;;8682:90;8810:1;8798:9;;:13;8790:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8858:69;8875:51;8879:6;8887:38;8891:20;8913:11;;8887:3;:38::i;:::-;8875:3;:51::i;:::-;8858:16;:69::i;:::-;8946:26;8975:21;8946:50;;9040:1;9019:18;:22;9015:106;;;9066:35;9079:21;9066:12;:35::i;:::-;9015:106;9139:9;;:11;;;;;;;;;:::i;:::-;;;;;;9185:12;9169:13;:28;;;;8663:550;8534:679;7509:1715;7471:1753;9249:1;9239:9;:11;9236:161;;;9289:39;9318:9;9289;:24;9307:4;9289:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9264:9;:24;9282:4;9264:24;;;;;;;;;;;;;;;:64;;;;9369:4;9346:39;;9355:4;9346:39;;;9375:9;9346:39;;;;;;:::i;:::-;;;;;;;;9236:161;9423:27;9443:6;9423:9;:15;9433:4;9423:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9407:9;:15;9417:4;9407:15;;;;;;;;;;;;;;;:43;;;;9475:40;9493:21;9504:9;9493:6;:10;;:21;;;;:::i;:::-;9475:9;:13;9485:2;9475:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9461:9;:13;9471:2;9461:13;;;;;;;;;;;;;;;:54;;;;9546:2;9531:41;;9540:4;9531:41;;;9550:21;9561:9;9550:6;:10;;:21;;;;:::i;:::-;9531:41;;;;;;:::i;:::-;;;;;;;;7201:2379;7132:2448;;;:::o;1277:190::-;1363:7;1396:1;1391;:6;;1399:12;1383:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1423:9;1439:1;1435;:5;;;;:::i;:::-;1423:17;;1458:1;1451:8;;;1277:190;;;;;:::o;9696:483::-;5072:4;5063:6;;:13;;;;;;;;;;;;;;;;;;9774:21:::1;9812:1;9798:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9774:40;;9843:4;9825;9830:1;9825:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9869:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9859:4;9864:1;9859:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9902:62;9919:4;9934:15;;;;;;;;;;;9952:11;9902:8;:62::i;:::-;9975:15;;;;;;;;;;;:66;;;10056:11;10082:1;10098:4;10125;10145:15;9975:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9763:416;5108:5:::0;5099:6;;:14;;;;;;;;;;;;;;;;;;9696:483;:::o;10493:92::-;10550:10;;;;;;;;;;;:19;;:27;10570:6;10550:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10493:92;:::o;14257:178::-;14393:19;:24;;;;;;;;;;;;;;14382:53;14257:178;;;:::o;1475:246::-;1533:7;1562:1;1557;:6;1553:47;;1587:1;1580:8;;;;1553:47;1610:9;1626:1;1622;:5;;;;:::i;:::-;1610:17;;1655:1;1650;1646;:5;;;;:::i;:::-;:10;1638:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1712:1;1705:8;;;1475:246;;;;;:::o;1729:132::-;1787:7;1814:39;1818:1;1821;1814:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1807:46;;1729:132;;;;:::o;9590:98::-;9647:7;9674:1;9672;:3;9671:9;;9679:1;9671:9;;;9677:1;9671:9;9664:16;;9590:98;;;;:::o;946:179::-;1004:7;1024:9;1040:1;1036;:5;;;;:::i;:::-;1024:17;;1065:1;1060;:6;;1052:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1116:1;1109:8;;;946:179;;;;:::o;1133:136::-;1191:7;1218:43;1222:1;1225;1218:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1211:50;;1133:136;;;;:::o;1869:189::-;1955:7;1987:1;1983;:5;1990:12;1975:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2014:9;2030:1;2026;:5;;;;:::i;:::-;2014:17;;2049:1;2042:8;;;1869:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:117::-;1486:1;1483;1476:12;1500:102;1541:6;1592:2;1588:7;1583:2;1576:5;1572:14;1568:28;1558:38;;1500:102;;;:::o;1608:180::-;1656:77;1653:1;1646:88;1753:4;1750:1;1743:15;1777:4;1774:1;1767:15;1794:281;1877:27;1899:4;1877:27;:::i;:::-;1869:6;1865:40;2007:6;1995:10;1992:22;1971:18;1959:10;1956:34;1953:62;1950:88;;;2018:18;;:::i;:::-;1950:88;2058:10;2054:2;2047:22;1837:238;1794:281;;:::o;2081:129::-;2115:6;2142:20;;:::i;:::-;2132:30;;2171:33;2199:4;2191:6;2171:33;:::i;:::-;2081:129;;;:::o;2216:311::-;2293:4;2383:18;2375:6;2372:30;2369:56;;;2405:18;;:::i;:::-;2369:56;2455:4;2447:6;2443:17;2435:25;;2515:4;2509;2505:15;2497:23;;2216:311;;;:::o;2533:117::-;2642:1;2639;2632:12;2656:126;2693:7;2733:42;2726:5;2722:54;2711:65;;2656:126;;;:::o;2788:96::-;2825:7;2854:24;2872:5;2854:24;:::i;:::-;2843:35;;2788:96;;;:::o;2890:122::-;2963:24;2981:5;2963:24;:::i;:::-;2956:5;2953:35;2943:63;;3002:1;2999;2992:12;2943:63;2890:122;:::o;3018:139::-;3064:5;3102:6;3089:20;3080:29;;3118:33;3145:5;3118:33;:::i;:::-;3018:139;;;;:::o;3180:710::-;3276:5;3301:81;3317:64;3374:6;3317:64;:::i;:::-;3301:81;:::i;:::-;3292:90;;3402:5;3431:6;3424:5;3417:21;3465:4;3458:5;3454:16;3447:23;;3518:4;3510:6;3506:17;3498:6;3494:30;3547:3;3539:6;3536:15;3533:122;;;3566:79;;:::i;:::-;3533:122;3681:6;3664:220;3698:6;3693:3;3690:15;3664:220;;;3773:3;3802:37;3835:3;3823:10;3802:37;:::i;:::-;3797:3;3790:50;3869:4;3864:3;3860:14;3853:21;;3740:144;3724:4;3719:3;3715:14;3708:21;;3664:220;;;3668:21;3282:608;;3180:710;;;;;:::o;3913:370::-;3984:5;4033:3;4026:4;4018:6;4014:17;4010:27;4000:122;;4041:79;;:::i;:::-;4000:122;4158:6;4145:20;4183:94;4273:3;4265:6;4258:4;4250:6;4246:17;4183:94;:::i;:::-;4174:103;;3990:293;3913:370;;;;:::o;4289:539::-;4373:6;4422:2;4410:9;4401:7;4397:23;4393:32;4390:119;;;4428:79;;:::i;:::-;4390:119;4576:1;4565:9;4561:17;4548:31;4606:18;4598:6;4595:30;4592:117;;;4628:79;;:::i;:::-;4592:117;4733:78;4803:7;4794:6;4783:9;4779:22;4733:78;:::i;:::-;4723:88;;4519:302;4289:539;;;;:::o;4834:329::-;4893:6;4942:2;4930:9;4921:7;4917:23;4913:32;4910:119;;;4948:79;;:::i;:::-;4910:119;5068:1;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5039:117;4834:329;;;;:::o;5169:99::-;5221:6;5255:5;5249:12;5239:22;;5169:99;;;:::o;5274:169::-;5358:11;5392:6;5387:3;5380:19;5432:4;5427:3;5423:14;5408:29;;5274:169;;;;:::o;5449:139::-;5538:6;5533:3;5528;5522:23;5579:1;5570:6;5565:3;5561:16;5554:27;5449:139;;;:::o;5594:377::-;5682:3;5710:39;5743:5;5710:39;:::i;:::-;5765:71;5829:6;5824:3;5765:71;:::i;:::-;5758:78;;5845:65;5903:6;5898:3;5891:4;5884:5;5880:16;5845:65;:::i;:::-;5935:29;5957:6;5935:29;:::i;:::-;5930:3;5926:39;5919:46;;5686:285;5594:377;;;;:::o;5977:313::-;6090:4;6128:2;6117:9;6113:18;6105:26;;6177:9;6171:4;6167:20;6163:1;6152:9;6148:17;6141:47;6205:78;6278:4;6269:6;6205:78;:::i;:::-;6197:86;;5977:313;;;;:::o;6296:474::-;6364:6;6372;6421:2;6409:9;6400:7;6396:23;6392:32;6389:119;;;6427:79;;:::i;:::-;6389:119;6547:1;6572:53;6617:7;6608:6;6597:9;6593:22;6572:53;:::i;:::-;6562:63;;6518:117;6674:2;6700:53;6745:7;6736:6;6725:9;6721:22;6700:53;:::i;:::-;6690:63;;6645:118;6296:474;;;;;:::o;6776:90::-;6810:7;6853:5;6846:13;6839:21;6828:32;;6776:90;;;:::o;6872:109::-;6953:21;6968:5;6953:21;:::i;:::-;6948:3;6941:34;6872:109;;:::o;6987:210::-;7074:4;7112:2;7101:9;7097:18;7089:26;;7125:65;7187:1;7176:9;7172:17;7163:6;7125:65;:::i;:::-;6987:210;;;;:::o;7203:619::-;7280:6;7288;7296;7345:2;7333:9;7324:7;7320:23;7316:32;7313:119;;;7351:79;;:::i;:::-;7313:119;7471:1;7496:53;7541:7;7532:6;7521:9;7517:22;7496:53;:::i;:::-;7486:63;;7442:117;7598:2;7624:53;7669:7;7660:6;7649:9;7645:22;7624:53;:::i;:::-;7614:63;;7569:118;7726:2;7752:53;7797:7;7788:6;7777:9;7773:22;7752:53;:::i;:::-;7742:63;;7697:118;7203:619;;;;;:::o;7828:86::-;7863:7;7903:4;7896:5;7892:16;7881:27;;7828:86;;;:::o;7920:112::-;8003:22;8019:5;8003:22;:::i;:::-;7998:3;7991:35;7920:112;;:::o;8038:214::-;8127:4;8165:2;8154:9;8150:18;8142:26;;8178:67;8242:1;8231:9;8227:17;8218:6;8178:67;:::i;:::-;8038:214;;;;:::o;8258:474::-;8326:6;8334;8383:2;8371:9;8362:7;8358:23;8354:32;8351:119;;;8389:79;;:::i;:::-;8351:119;8509:1;8534:53;8579:7;8570:6;8559:9;8555:22;8534:53;:::i;:::-;8524:63;;8480:117;8636:2;8662:53;8707:7;8698:6;8687:9;8683:22;8662:53;:::i;:::-;8652:63;;8607:118;8258:474;;;;;:::o;8738:114::-;8805:6;8839:5;8833:12;8823:22;;8738:114;;;:::o;8858:184::-;8957:11;8991:6;8986:3;8979:19;9031:4;9026:3;9022:14;9007:29;;8858:184;;;;:::o;9048:132::-;9115:4;9138:3;9130:11;;9168:4;9163:3;9159:14;9151:22;;9048:132;;;:::o;9186:108::-;9263:24;9281:5;9263:24;:::i;:::-;9258:3;9251:37;9186:108;;:::o;9300:179::-;9369:10;9390:46;9432:3;9424:6;9390:46;:::i;:::-;9468:4;9463:3;9459:14;9445:28;;9300:179;;;;:::o;9485:113::-;9555:4;9587;9582:3;9578:14;9570:22;;9485:113;;;:::o;9634:732::-;9753:3;9782:54;9830:5;9782:54;:::i;:::-;9852:86;9931:6;9926:3;9852:86;:::i;:::-;9845:93;;9962:56;10012:5;9962:56;:::i;:::-;10041:7;10072:1;10057:284;10082:6;10079:1;10076:13;10057:284;;;10158:6;10152:13;10185:63;10244:3;10229:13;10185:63;:::i;:::-;10178:70;;10271:60;10324:6;10271:60;:::i;:::-;10261:70;;10117:224;10104:1;10101;10097:9;10092:14;;10057:284;;;10061:14;10357:3;10350:10;;9758:608;;;9634:732;;;;:::o;10372:483::-;10543:4;10581:2;10570:9;10566:18;10558:26;;10594:71;10662:1;10651:9;10647:17;10638:6;10594:71;:::i;:::-;10712:9;10706:4;10702:20;10697:2;10686:9;10682:18;10675:48;10740:108;10843:4;10834:6;10740:108;:::i;:::-;10732:116;;10372:483;;;;;:::o;10861:619::-;10938:6;10946;10954;11003:2;10991:9;10982:7;10978:23;10974:32;10971:119;;;11009:79;;:::i;:::-;10971:119;11129:1;11154:53;11199:7;11190:6;11179:9;11175:22;11154:53;:::i;:::-;11144:63;;11100:117;11256:2;11282:53;11327:7;11318:6;11307:9;11303:22;11282:53;:::i;:::-;11272:63;;11227:118;11384:2;11410:53;11455:7;11446:6;11435:9;11431:22;11410:53;:::i;:::-;11400:63;;11355:118;10861:619;;;;;:::o;11486:124::-;11563:6;11597:5;11591:12;11581:22;;11486:124;;;:::o;11616:194::-;11725:11;11759:6;11754:3;11747:19;11799:4;11794:3;11790:14;11775:29;;11616:194;;;;:::o;11816:142::-;11893:4;11916:3;11908:11;;11946:4;11941:3;11937:14;11929:22;;11816:142;;;:::o;11964:159::-;12038:11;12072:6;12067:3;12060:19;12112:4;12107:3;12103:14;12088:29;;11964:159;;;;:::o;12129:357::-;12207:3;12235:39;12268:5;12235:39;:::i;:::-;12290:61;12344:6;12339:3;12290:61;:::i;:::-;12283:68;;12360:65;12418:6;12413:3;12406:4;12399:5;12395:16;12360:65;:::i;:::-;12450:29;12472:6;12450:29;:::i;:::-;12445:3;12441:39;12434:46;;12211:275;12129:357;;;;:::o;12492:196::-;12581:10;12616:66;12678:3;12670:6;12616:66;:::i;:::-;12602:80;;12492:196;;;;:::o;12694:123::-;12774:4;12806;12801:3;12797:14;12789:22;;12694:123;;;:::o;12851:991::-;12990:3;13019:64;13077:5;13019:64;:::i;:::-;13099:96;13188:6;13183:3;13099:96;:::i;:::-;13092:103;;13221:3;13266:4;13258:6;13254:17;13249:3;13245:27;13296:66;13356:5;13296:66;:::i;:::-;13385:7;13416:1;13401:396;13426:6;13423:1;13420:13;13401:396;;;13497:9;13491:4;13487:20;13482:3;13475:33;13548:6;13542:13;13576:84;13655:4;13640:13;13576:84;:::i;:::-;13568:92;;13683:70;13746:6;13683:70;:::i;:::-;13673:80;;13782:4;13777:3;13773:14;13766:21;;13461:336;13448:1;13445;13441:9;13436:14;;13401:396;;;13405:14;13813:4;13806:11;;13833:3;13826:10;;12995:847;;;;;12851:991;;;;:::o;13848:523::-;14039:4;14077:2;14066:9;14062:18;14054:26;;14090:71;14158:1;14147:9;14143:17;14134:6;14090:71;:::i;:::-;14208:9;14202:4;14198:20;14193:2;14182:9;14178:18;14171:48;14236:128;14359:4;14350:6;14236:128;:::i;:::-;14228:136;;13848:523;;;;;:::o;14377:118::-;14464:24;14482:5;14464:24;:::i;:::-;14459:3;14452:37;14377:118;;:::o;14501:222::-;14594:4;14632:2;14621:9;14617:18;14609:26;;14645:71;14713:1;14702:9;14698:17;14689:6;14645:71;:::i;:::-;14501:222;;;;:::o;14729:474::-;14797:6;14805;14854:2;14842:9;14833:7;14829:23;14825:32;14822:119;;;14860:79;;:::i;:::-;14822:119;14980:1;15005:53;15050:7;15041:6;15030:9;15026:22;15005:53;:::i;:::-;14995:63;;14951:117;15107:2;15133:53;15178:7;15169:6;15158:9;15154:22;15133:53;:::i;:::-;15123:63;;15078:118;14729:474;;;;;:::o;15209:::-;15277:6;15285;15334:2;15322:9;15313:7;15309:23;15305:32;15302:119;;;15340:79;;:::i;:::-;15302:119;15460:1;15485:53;15530:7;15521:6;15510:9;15506:22;15485:53;:::i;:::-;15475:63;;15431:117;15587:2;15613:53;15658:7;15649:6;15638:9;15634:22;15613:53;:::i;:::-;15603:63;;15558:118;15209:474;;;;;:::o;15689:182::-;15829:34;15825:1;15817:6;15813:14;15806:58;15689:182;:::o;15877:366::-;16019:3;16040:67;16104:2;16099:3;16040:67;:::i;:::-;16033:74;;16116:93;16205:3;16116:93;:::i;:::-;16234:2;16229:3;16225:12;16218:19;;15877:366;;;:::o;16249:419::-;16415:4;16453:2;16442:9;16438:18;16430:26;;16502:9;16496:4;16492:20;16488:1;16477:9;16473:17;16466:47;16530:131;16656:4;16530:131;:::i;:::-;16522:139;;16249:419;;;:::o;16674:180::-;16722:77;16719:1;16712:88;16819:4;16816:1;16809:15;16843:4;16840:1;16833:15;16860:102;16902:8;16949:5;16946:1;16942:13;16921:34;;16860:102;;;:::o;16968:848::-;17029:5;17036:4;17060:6;17051:15;;17084:5;17075:14;;17098:712;17119:1;17109:8;17106:15;17098:712;;;17214:4;17209:3;17205:14;17199:4;17196:24;17193:50;;;17223:18;;:::i;:::-;17193:50;17273:1;17263:8;17259:16;17256:451;;;17688:4;17681:5;17677:16;17668:25;;17256:451;17738:4;17732;17728:15;17720:23;;17768:32;17791:8;17768:32;:::i;:::-;17756:44;;17098:712;;;16968:848;;;;;;;:::o;17822:1073::-;17876:5;18067:8;18057:40;;18088:1;18079:10;;18090:5;;18057:40;18116:4;18106:36;;18133:1;18124:10;;18135:5;;18106:36;18202:4;18250:1;18245:27;;;;18286:1;18281:191;;;;18195:277;;18245:27;18263:1;18254:10;;18265:5;;;18281:191;18326:3;18316:8;18313:17;18310:43;;;18333:18;;:::i;:::-;18310:43;18382:8;18379:1;18375:16;18366:25;;18417:3;18410:5;18407:14;18404:40;;;18424:18;;:::i;:::-;18404:40;18457:5;;;18195:277;;18581:2;18571:8;18568:16;18562:3;18556:4;18553:13;18549:36;18531:2;18521:8;18518:16;18513:2;18507:4;18504:12;18500:35;18484:111;18481:246;;;18637:8;18631:4;18627:19;18618:28;;18672:3;18665:5;18662:14;18659:40;;;18679:18;;:::i;:::-;18659:40;18712:5;;18481:246;18752:42;18790:3;18780:8;18774:4;18771:1;18752:42;:::i;:::-;18737:57;;;;18826:4;18821:3;18817:14;18810:5;18807:25;18804:51;;;18835:18;;:::i;:::-;18804:51;18884:4;18877:5;18873:16;18864:25;;17822:1073;;;;;;:::o;18901:281::-;18959:5;18983:23;19001:4;18983:23;:::i;:::-;18975:31;;19027:25;19043:8;19027:25;:::i;:::-;19015:37;;19071:104;19108:66;19098:8;19092:4;19071:104;:::i;:::-;19062:113;;18901:281;;;;:::o;19188:410::-;19228:7;19251:20;19269:1;19251:20;:::i;:::-;19246:25;;19285:20;19303:1;19285:20;:::i;:::-;19280:25;;19340:1;19337;19333:9;19362:30;19380:11;19362:30;:::i;:::-;19351:41;;19541:1;19532:7;19528:15;19525:1;19522:22;19502:1;19495:9;19475:83;19452:139;;19571:18;;:::i;:::-;19452:139;19236:362;19188:410;;;;:::o;19604:143::-;19661:5;19692:6;19686:13;19677:22;;19708:33;19735:5;19708:33;:::i;:::-;19604:143;;;;:::o;19753:351::-;19823:6;19872:2;19860:9;19851:7;19847:23;19843:32;19840:119;;;19878:79;;:::i;:::-;19840:119;19998:1;20023:64;20079:7;20070:6;20059:9;20055:22;20023:64;:::i;:::-;20013:74;;19969:128;19753:351;;;;:::o;20110:332::-;20231:4;20269:2;20258:9;20254:18;20246:26;;20282:71;20350:1;20339:9;20335:17;20326:6;20282:71;:::i;:::-;20363:72;20431:2;20420:9;20416:18;20407:6;20363:72;:::i;:::-;20110:332;;;;;:::o;20448:180::-;20496:77;20493:1;20486:88;20593:4;20590:1;20583:15;20617:4;20614:1;20607:15;20634:185;20674:1;20691:20;20709:1;20691:20;:::i;:::-;20686:25;;20725:20;20743:1;20725:20;:::i;:::-;20720:25;;20764:1;20754:35;;20769:18;;:::i;:::-;20754:35;20811:1;20808;20804:9;20799:14;;20634:185;;;;:::o;20825:85::-;20870:7;20899:5;20888:16;;20825:85;;;:::o;20916:60::-;20944:3;20965:5;20958:12;;20916:60;;;:::o;20982:158::-;21040:9;21073:61;21091:42;21100:32;21126:5;21100:32;:::i;:::-;21091:42;:::i;:::-;21073:61;:::i;:::-;21060:74;;20982:158;;;:::o;21146:147::-;21241:45;21280:5;21241:45;:::i;:::-;21236:3;21229:58;21146:147;;:::o;21299:807::-;21548:4;21586:3;21575:9;21571:19;21563:27;;21600:71;21668:1;21657:9;21653:17;21644:6;21600:71;:::i;:::-;21681:72;21749:2;21738:9;21734:18;21725:6;21681:72;:::i;:::-;21763:80;21839:2;21828:9;21824:18;21815:6;21763:80;:::i;:::-;21853;21929:2;21918:9;21914:18;21905:6;21853:80;:::i;:::-;21943:73;22011:3;22000:9;21996:19;21987:6;21943:73;:::i;:::-;22026;22094:3;22083:9;22079:19;22070:6;22026:73;:::i;:::-;21299:807;;;;;;;;;:::o;22112:143::-;22169:5;22200:6;22194:13;22185:22;;22216:33;22243:5;22216:33;:::i;:::-;22112:143;;;;:::o;22261:663::-;22349:6;22357;22365;22414:2;22402:9;22393:7;22389:23;22385:32;22382:119;;;22420:79;;:::i;:::-;22382:119;22540:1;22565:64;22621:7;22612:6;22601:9;22597:22;22565:64;:::i;:::-;22555:74;;22511:128;22678:2;22704:64;22760:7;22751:6;22740:9;22736:22;22704:64;:::i;:::-;22694:74;;22649:129;22817:2;22843:64;22899:7;22890:6;22879:9;22875:22;22843:64;:::i;:::-;22833:74;;22788:129;22261:663;;;;;:::o;22930:332::-;23051:4;23089:2;23078:9;23074:18;23066:26;;23102:71;23170:1;23159:9;23155:17;23146:6;23102:71;:::i;:::-;23183:72;23251:2;23240:9;23236:18;23227:6;23183:72;:::i;:::-;22930:332;;;;;:::o;23268:116::-;23338:21;23353:5;23338:21;:::i;:::-;23331:5;23328:32;23318:60;;23374:1;23371;23364:12;23318:60;23268:116;:::o;23390:137::-;23444:5;23475:6;23469:13;23460:22;;23491:30;23515:5;23491:30;:::i;:::-;23390:137;;;;:::o;23533:345::-;23600:6;23649:2;23637:9;23628:7;23624:23;23620:32;23617:119;;;23655:79;;:::i;:::-;23617:119;23775:1;23800:61;23853:7;23844:6;23833:9;23829:22;23800:61;:::i;:::-;23790:71;;23746:125;23533:345;;;;:::o;23884:180::-;23932:77;23929:1;23922:88;24029:4;24026:1;24019:15;24053:4;24050:1;24043:15;24070:238;24171:4;24209:2;24198:9;24194:18;24186:26;;24222:79;24298:1;24287:9;24283:17;24274:6;24222:79;:::i;:::-;24070:238;;;;:::o;24314:191::-;24354:3;24373:20;24391:1;24373:20;:::i;:::-;24368:25;;24407:20;24425:1;24407:20;:::i;:::-;24402:25;;24450:1;24447;24443:9;24436:16;;24471:3;24468:1;24465:10;24462:36;;;24478:18;;:::i;:::-;24462:36;24314:191;;;;:::o;24511:194::-;24551:4;24571:20;24589:1;24571:20;:::i;:::-;24566:25;;24605:20;24623:1;24605:20;:::i;:::-;24600:25;;24649:1;24646;24642:9;24634:17;;24673:1;24667:4;24664:11;24661:37;;;24678:18;;:::i;:::-;24661:37;24511:194;;;;:::o;24711:165::-;24851:17;24847:1;24839:6;24835:14;24828:41;24711:165;:::o;24882:366::-;25024:3;25045:67;25109:2;25104:3;25045:67;:::i;:::-;25038:74;;25121:93;25210:3;25121:93;:::i;:::-;25239:2;25234:3;25230:12;25223:19;;24882:366;;;:::o;25254:419::-;25420:4;25458:2;25447:9;25443:18;25435:26;;25507:9;25501:4;25497:20;25493:1;25482:9;25478:17;25471:47;25535:131;25661:4;25535:131;:::i;:::-;25527:139;;25254:419;;;:::o;25679:223::-;25819:34;25815:1;25807:6;25803:14;25796:58;25888:6;25883:2;25875:6;25871:15;25864:31;25679:223;:::o;25908:366::-;26050:3;26071:67;26135:2;26130:3;26071:67;:::i;:::-;26064:74;;26147:93;26236:3;26147:93;:::i;:::-;26265:2;26260:3;26256:12;26249:19;;25908:366;;;:::o;26280:419::-;26446:4;26484:2;26473:9;26469:18;26461:26;;26533:9;26527:4;26523:20;26519:1;26508:9;26504:17;26497:47;26561:131;26687:4;26561:131;:::i;:::-;26553:139;;26280:419;;;:::o;26705:221::-;26845:34;26841:1;26833:6;26829:14;26822:58;26914:4;26909:2;26901:6;26897:15;26890:29;26705:221;:::o;26932:366::-;27074:3;27095:67;27159:2;27154:3;27095:67;:::i;:::-;27088:74;;27171:93;27260:3;27171:93;:::i;:::-;27289:2;27284:3;27280:12;27273:19;;26932:366;;;:::o;27304:419::-;27470:4;27508:2;27497:9;27493:18;27485:26;;27557:9;27551:4;27547:20;27543:1;27532:9;27528:17;27521:47;27585:131;27711:4;27585:131;:::i;:::-;27577:139;;27304:419;;;:::o;27729:224::-;27869:34;27865:1;27857:6;27853:14;27846:58;27938:7;27933:2;27925:6;27921:15;27914:32;27729:224;:::o;27959:366::-;28101:3;28122:67;28186:2;28181:3;28122:67;:::i;:::-;28115:74;;28198:93;28287:3;28198:93;:::i;:::-;28316:2;28311:3;28307:12;28300:19;;27959:366;;;:::o;28331:419::-;28497:4;28535:2;28524:9;28520:18;28512:26;;28584:9;28578:4;28574:20;28570:1;28559:9;28555:17;28548:47;28612:131;28738:4;28612:131;:::i;:::-;28604:139;;28331:419;;;:::o;28756:222::-;28896:34;28892:1;28884:6;28880:14;28873:58;28965:5;28960:2;28952:6;28948:15;28941:30;28756:222;:::o;28984:366::-;29126:3;29147:67;29211:2;29206:3;29147:67;:::i;:::-;29140:74;;29223:93;29312:3;29223:93;:::i;:::-;29341:2;29336:3;29332:12;29325:19;;28984:366;;;:::o;29356:419::-;29522:4;29560:2;29549:9;29545:18;29537:26;;29609:9;29603:4;29599:20;29595:1;29584:9;29580:17;29573:47;29637:131;29763:4;29637:131;:::i;:::-;29629:139;;29356:419;;;:::o;29781:228::-;29921:34;29917:1;29909:6;29905:14;29898:58;29990:11;29985:2;29977:6;29973:15;29966:36;29781:228;:::o;30015:366::-;30157:3;30178:67;30242:2;30237:3;30178:67;:::i;:::-;30171:74;;30254:93;30343:3;30254:93;:::i;:::-;30372:2;30367:3;30363:12;30356:19;;30015:366;;;:::o;30387:419::-;30553:4;30591:2;30580:9;30576:18;30568:26;;30640:9;30634:4;30630:20;30626:1;30615:9;30611:17;30604:47;30668:131;30794:4;30668:131;:::i;:::-;30660:139;;30387:419;;;:::o;30812:175::-;30952:27;30948:1;30940:6;30936:14;30929:51;30812:175;:::o;30993:366::-;31135:3;31156:67;31220:2;31215:3;31156:67;:::i;:::-;31149:74;;31232:93;31321:3;31232:93;:::i;:::-;31350:2;31345:3;31341:12;31334:19;;30993:366;;;:::o;31365:419::-;31531:4;31569:2;31558:9;31554:18;31546:26;;31618:9;31612:4;31608:20;31604:1;31593:9;31589:17;31582:47;31646:131;31772:4;31646:131;:::i;:::-;31638:139;;31365:419;;;:::o;31790:176::-;31930:28;31926:1;31918:6;31914:14;31907:52;31790:176;:::o;31972:366::-;32114:3;32135:67;32199:2;32194:3;32135:67;:::i;:::-;32128:74;;32211:93;32300:3;32211:93;:::i;:::-;32329:2;32324:3;32320:12;32313:19;;31972:366;;;:::o;32344:419::-;32510:4;32548:2;32537:9;32533:18;32525:26;;32597:9;32591:4;32587:20;32583:1;32572:9;32568:17;32561:47;32625:131;32751:4;32625:131;:::i;:::-;32617:139;;32344:419;;;:::o;32769:233::-;32808:3;32831:24;32849:5;32831:24;:::i;:::-;32822:33;;32877:66;32870:5;32867:77;32864:103;;32947:18;;:::i;:::-;32864:103;32994:1;32987:5;32983:13;32976:20;;32769:233;;;:::o;33008:173::-;33148:25;33144:1;33136:6;33132:14;33125:49;33008:173;:::o;33187:366::-;33329:3;33350:67;33414:2;33409:3;33350:67;:::i;:::-;33343:74;;33426:93;33515:3;33426:93;:::i;:::-;33544:2;33539:3;33535:12;33528:19;;33187:366;;;:::o;33559:419::-;33725:4;33763:2;33752:9;33748:18;33740:26;;33812:9;33806:4;33802:20;33798:1;33787:9;33783:17;33776:47;33840:131;33966:4;33840:131;:::i;:::-;33832:139;;33559:419;;;:::o;33984:831::-;34247:4;34285:3;34274:9;34270:19;34262:27;;34299:71;34367:1;34356:9;34352:17;34343:6;34299:71;:::i;:::-;34380:80;34456:2;34445:9;34441:18;34432:6;34380:80;:::i;:::-;34507:9;34501:4;34497:20;34492:2;34481:9;34477:18;34470:48;34535:108;34638:4;34629:6;34535:108;:::i;:::-;34527:116;;34653:72;34721:2;34710:9;34706:18;34697:6;34653:72;:::i;:::-;34735:73;34803:3;34792:9;34788:19;34779:6;34735:73;:::i;:::-;33984:831;;;;;;;;:::o;34821:220::-;34961:34;34957:1;34949:6;34945:14;34938:58;35030:3;35025:2;35017:6;35013:15;35006:28;34821:220;:::o;35047:366::-;35189:3;35210:67;35274:2;35269:3;35210:67;:::i;:::-;35203:74;;35286:93;35375:3;35286:93;:::i;:::-;35404:2;35399:3;35395:12;35388:19;;35047:366;;;:::o;35419:419::-;35585:4;35623:2;35612:9;35608:18;35600:26;;35672:9;35666:4;35662:20;35658:1;35647:9;35643:17;35636:47;35700:131;35826:4;35700:131;:::i;:::-;35692:139;;35419:419;;;:::o;35844:177::-;35984:29;35980:1;35972:6;35968:14;35961:53;35844:177;:::o;36027:366::-;36169:3;36190:67;36254:2;36249:3;36190:67;:::i;:::-;36183:74;;36266:93;36355:3;36266:93;:::i;:::-;36384:2;36379:3;36375:12;36368:19;;36027:366;;;:::o;36399:419::-;36565:4;36603:2;36592:9;36588:18;36580:26;;36652:9;36646:4;36642:20;36638:1;36627:9;36623:17;36616:47;36680:131;36806:4;36680:131;:::i;:::-;36672:139;;36399:419;;;:::o

Swarm Source

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