ETH Price: $3,484.05 (-1.25%)
Gas: 3 Gwei

Token

Okami Inu (OKAMI)
 

Overview

Max Total Supply

1,000,000,000,000 OKAMI

Holders

127

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
highfrog.eth
Balance
6,151,426.658274948 OKAMI

Value
$0.00
0xb0ba236badf081b08de6438b1f2207388d88a576
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:
OkamiInu

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-27
*/

/** 
 * OKAMI INU
 * $OKAMI
 * https://t.me/OkamiInuETH
 * https://OkamiInu.info
 * 
 * SPDX-License-Identifier: Unlicensed
 * */

pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

    function 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 OkamiInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => uint256) private _buyMap;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Okami Inu";
    string private constant _symbol = "OKAMI";
    uint8 private constant _decimals = 9;   
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet1 = payable(0x8254397E59c4b9CbcD01db6a2eC3CcD58d374047);
        _feeAddrWallet2 = payable(0x8254397E59c4b9CbcD01db6a2eC3CcD58d374047);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(address(0x0000000000000000000000000000000000000000), _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 originalPurchase(address account) public  view returns (uint256) {
        return _buyMap[account];
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function setMaxTx(uint256 maxTransactionAmount) external onlyOwner() {
        _maxTxAmount = maxTransactionAmount;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        
        if (!_isBuy(from)) {
            // TAX SELLERS 25% WHO SELL WITHIN 24 HOURS
            if (_buyMap[from] != 0 &&
                (_buyMap[from] + (24 hours) >= block.timestamp))  {
                _feeAddr1 = 1;
                _feeAddr2 = 25;
            } else {
                _feeAddr1 = 1;
                _feeAddr2 = 8;
            }
        } else {
            if (_buyMap[to] == 0) {
                _buyMap[to] = block.timestamp;
            }
            _feeAddr1 = 1;
            _feeAddr2 = 8;
        }
        
        if (_isExcludedFromFee[to]) {
            _feeAddr2 = 0;
            _feeAddr1 = 0;
        }
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }
    
    function setIsExcluded(address excluded) external onlyOwner {
        _isExcludedFromFee[excluded] = true;
    }
    
    function setIsNotExcluded(address excluded) external onlyOwner {
        _isExcludedFromFee[excluded] = false;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _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)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 20000000000 * 10 ** 9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function removeStrictTxLimit() public onlyOwner {
        _maxTxAmount = 1e12 * 10**9;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function updateMaxTx (uint256 fee) public onlyOwner {
        _maxTxAmount = fee;
    }
    
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _isBuy(address _sender) private view returns (bool) {
        return _sender == uniswapV2Pair;
    }


	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"originalPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excluded","type":"address"}],"name":"setIsExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excluded","type":"address"}],"name":"setIsNotExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"}],"name":"setMaxTx","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":"fee","type":"uint256"}],"name":"updateMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620004ed565b6000196200002c919062000554565b6009556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060176101000a81548160ff021916908315150217905550683635c9adc5dea000006011553480156200009a57600080fd5b506000620000ad6200048360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350738254397e59c4b9cbcd01db6a2ec3ccd58d374047600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738254397e59c4b9cbcd01db6a2ec3ccd58d374047600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600954600260006200020c6200048360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002606200048b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200040d6200048360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004759190620005a0565b60405180910390a3620005bd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004fa82620004b4565b91506200050783620004b4565b9250826200051a5762000519620004be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200056182620004b4565b91506200056e83620004b4565b92508282101562000584576200058362000525565b5b828203905092915050565b6200059a81620004b4565b82525050565b6000602082019050620005b760008301846200058f565b92915050565b6139fa80620005cd6000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063c2d0ffca1161006f578063c2d0ffca1461043f578063c3c8cd8014610468578063c9567bf91461047f578063cc653b4414610496578063dd62ed3e146104d3578063ff872602146105105761014b565b8063715018a6146103435780638da5cb5b1461035a57806395d89b4114610385578063a9059cbb146103b0578063b515566a146103ed578063bc337182146104165761014b565b8063273123b711610108578063273123b714610249578063313ce5671461027257806351fa79531461029d5780635932ead1146102c65780636fc3eaec146102ef57806370a08231146103065761014b565b806306fdde0314610150578063095ea7b31461017b57806310736fb5146101b857806318160ddd146101e157806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610527565b6040516101729190612ad1565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612b9b565b610564565b6040516101af9190612bf6565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612c11565b610582565b005b3480156101ed57600080fd5b506101f6610672565b6040516102039190612c4d565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612c68565b610683565b6040516102409190612bf6565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612c11565b61075c565b005b34801561027e57600080fd5b5061028761084c565b6040516102949190612cd7565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612c11565b610855565b005b3480156102d257600080fd5b506102ed60048036038101906102e89190612d1e565b610945565b005b3480156102fb57600080fd5b506103046109f7565b005b34801561031257600080fd5b5061032d60048036038101906103289190612c11565b610a69565b60405161033a9190612c4d565b60405180910390f35b34801561034f57600080fd5b50610358610aba565b005b34801561036657600080fd5b5061036f610c0d565b60405161037c9190612d5a565b60405180910390f35b34801561039157600080fd5b5061039a610c36565b6040516103a79190612ad1565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190612b9b565b610c73565b6040516103e49190612bf6565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190612ebd565b610c91565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f06565b610dbb565b005b34801561044b57600080fd5b5061046660048036038101906104619190612f06565b610e5a565b005b34801561047457600080fd5b5061047d610ef9565b005b34801561048b57600080fd5b50610494610f73565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612c11565b6114d0565b6040516104ca9190612c4d565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190612f33565b611519565b6040516105079190612c4d565b60405180910390f35b34801561051c57600080fd5b506105256115a0565b005b60606040518060400160405280600981526020017f4f6b616d6920496e750000000000000000000000000000000000000000000000815250905090565b6000610578610571611647565b848461164f565b6001905092915050565b61058a611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90612fbf565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000683635c9adc5dea00000905090565b600061069084848461181a565b6107518461069c611647565b61074c8560405180606001604052806028815260200161399d60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610702611647565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed39092919063ffffffff16565b61164f565b600190509392505050565b610764611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e890612fbf565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b61085d611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e190612fbf565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61094d611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190612fbf565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a38611647565b73ffffffffffffffffffffffffffffffffffffffff1614610a5857600080fd5b6000479050610a6681611f37565b50565b6000610ab3600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612032565b9050919050565b610ac2611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690612fbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4f4b414d49000000000000000000000000000000000000000000000000000000815250905090565b6000610c87610c80611647565b848461181a565b6001905092915050565b610c99611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d90612fbf565b60405180910390fd5b60005b8151811015610db757600160076000848481518110610d4b57610d4a612fdf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610daf9061303d565b915050610d29565b5050565b610dc3611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790612fbf565b60405180910390fd5b8060118190555050565b610e62611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690612fbf565b60405180910390fd5b8060118190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3a611647565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a57600080fd5b6000610f6530610a69565b9050610f70816120a0565b50565b610f7b611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90612fbf565b60405180910390fd5b601060149054906101000a900460ff1615611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f906130d2565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110e830600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061164f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561112e57600080fd5b505afa158015611142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111669190613107565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c857600080fd5b505afa1580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190613107565b6040518363ffffffff1660e01b815260040161121d929190613134565b602060405180830381600087803b15801561123757600080fd5b505af115801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f9190613107565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112f830610a69565b600080611303610c0d565b426040518863ffffffff1660e01b8152600401611325969594939291906131a2565b6060604051808303818588803b15801561133e57600080fd5b505af1158015611352573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113779190613218565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff0219169083151502179055506801158e460913d000006011819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161147a92919061326b565b602060405180830381600087803b15801561149457600080fd5b505af11580156114a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cc91906132a9565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115a8611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c90612fbf565b60405180910390fd5b683635c9adc5dea00000601181905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906133da565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161180d9190612c4d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561188a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118819061346c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f1906134fe565b60405180910390fd5b6000811161193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490613590565b60405180910390fd5b61194683612328565b611a17576000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156119e757504262015180600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e491906135b0565b10155b15611a01576001600b819055506019600c81905550611a12565b6001600b819055506008600c819055505b611ab5565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611aa45742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600b819055506008600c819055505b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b18576000600c819055506000600b819055505b611b20610c0d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750611b5e610c0d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ec357600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c375750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c4057600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ceb5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d415750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d595750601060179054906101000a900460ff165b15611e0957601154811115611d6d57600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611db857600080fd5b601e42611dc591906135b0565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611e1430610a69565b9050601060159054906101000a900460ff16158015611e815750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e995750601060169054906101000a900460ff165b15611ec157611ea7816120a0565b60004790506000811115611ebf57611ebe47611f37565b5b505b505b611ece838383612382565b505050565b6000838311158290611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f129190612ad1565b60405180910390fd5b5060008385611f2a9190613606565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f8760028461239290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fb2573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61200360028461239290919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561202e573d6000803e3d6000fd5b5050565b6000600954821115612079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612070906136ac565b60405180910390fd5b60006120836123dc565b9050612098818461239290919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120d8576120d7612d7a565b5b6040519080825280602002602001820160405280156121065781602001602082028036833780820191505090505b509050308160008151811061211e5761211d612fdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190613107565b8160018151811061220c5761220b612fdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227330600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164f565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122d795949392919061378a565b600060405180830381600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61238d838383612407565b505050565b60006123d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d2565b905092915050565b60008060006123e9612635565b91509150612400818361239290919063ffffffff16565b9250505090565b60008060008060008061241987612697565b95509550955095509550955061247786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612558816127a7565b6125628483612864565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125bf9190612c4d565b60405180910390a3505050505050505050565b60008083118290612619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126109190612ad1565b60405180910390fd5b50600083856126289190613813565b9050809150509392505050565b600080600060095490506000683635c9adc5dea00000905061266b683635c9adc5dea0000060095461239290919063ffffffff16565b82101561268a57600954683635c9adc5dea00000935093505050612693565b81819350935050505b9091565b60008060008060008060008060006126b48a600b54600c5461289e565b92509250925060006126c46123dc565b905060008060006126d78e878787612934565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061274183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ed3565b905092915050565b600080828461275891906135b0565b90508381101561279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279490613890565b60405180910390fd5b8091505092915050565b60006127b16123dc565b905060006127c882846129bd90919063ffffffff16565b905061281c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612879826009546126ff90919063ffffffff16565b60098190555061289481600a5461274990919063ffffffff16565b600a819055505050565b6000806000806128ca60646128bc888a6129bd90919063ffffffff16565b61239290919063ffffffff16565b905060006128f460646128e6888b6129bd90919063ffffffff16565b61239290919063ffffffff16565b9050600061291d8261290f858c6126ff90919063ffffffff16565b6126ff90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061294d85896129bd90919063ffffffff16565b9050600061296486896129bd90919063ffffffff16565b9050600061297b87896129bd90919063ffffffff16565b905060006129a48261299685876126ff90919063ffffffff16565b6126ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156129d05760009050612a32565b600082846129de91906138b0565b90508284826129ed9190613813565b14612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a249061397c565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a72578082015181840152602081019050612a57565b83811115612a81576000848401525b50505050565b6000601f19601f8301169050919050565b6000612aa382612a38565b612aad8185612a43565b9350612abd818560208601612a54565b612ac681612a87565b840191505092915050565b60006020820190508181036000830152612aeb8184612a98565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3282612b07565b9050919050565b612b4281612b27565b8114612b4d57600080fd5b50565b600081359050612b5f81612b39565b92915050565b6000819050919050565b612b7881612b65565b8114612b8357600080fd5b50565b600081359050612b9581612b6f565b92915050565b60008060408385031215612bb257612bb1612afd565b5b6000612bc085828601612b50565b9250506020612bd185828601612b86565b9150509250929050565b60008115159050919050565b612bf081612bdb565b82525050565b6000602082019050612c0b6000830184612be7565b92915050565b600060208284031215612c2757612c26612afd565b5b6000612c3584828501612b50565b91505092915050565b612c4781612b65565b82525050565b6000602082019050612c626000830184612c3e565b92915050565b600080600060608486031215612c8157612c80612afd565b5b6000612c8f86828701612b50565b9350506020612ca086828701612b50565b9250506040612cb186828701612b86565b9150509250925092565b600060ff82169050919050565b612cd181612cbb565b82525050565b6000602082019050612cec6000830184612cc8565b92915050565b612cfb81612bdb565b8114612d0657600080fd5b50565b600081359050612d1881612cf2565b92915050565b600060208284031215612d3457612d33612afd565b5b6000612d4284828501612d09565b91505092915050565b612d5481612b27565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612db282612a87565b810181811067ffffffffffffffff82111715612dd157612dd0612d7a565b5b80604052505050565b6000612de4612af3565b9050612df08282612da9565b919050565b600067ffffffffffffffff821115612e1057612e0f612d7a565b5b602082029050602081019050919050565b600080fd5b6000612e39612e3484612df5565b612dda565b90508083825260208201905060208402830185811115612e5c57612e5b612e21565b5b835b81811015612e855780612e718882612b50565b845260208401935050602081019050612e5e565b5050509392505050565b600082601f830112612ea457612ea3612d75565b5b8135612eb4848260208601612e26565b91505092915050565b600060208284031215612ed357612ed2612afd565b5b600082013567ffffffffffffffff811115612ef157612ef0612b02565b5b612efd84828501612e8f565b91505092915050565b600060208284031215612f1c57612f1b612afd565b5b6000612f2a84828501612b86565b91505092915050565b60008060408385031215612f4a57612f49612afd565b5b6000612f5885828601612b50565b9250506020612f6985828601612b50565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fa9602083612a43565b9150612fb482612f73565b602082019050919050565b60006020820190508181036000830152612fd881612f9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061304882612b65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307b5761307a61300e565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006130bc601783612a43565b91506130c782613086565b602082019050919050565b600060208201905081810360008301526130eb816130af565b9050919050565b60008151905061310181612b39565b92915050565b60006020828403121561311d5761311c612afd565b5b600061312b848285016130f2565b91505092915050565b60006040820190506131496000830185612d4b565b6131566020830184612d4b565b9392505050565b6000819050919050565b6000819050919050565b600061318c6131876131828461315d565b613167565b612b65565b9050919050565b61319c81613171565b82525050565b600060c0820190506131b76000830189612d4b565b6131c46020830188612c3e565b6131d16040830187613193565b6131de6060830186613193565b6131eb6080830185612d4b565b6131f860a0830184612c3e565b979650505050505050565b60008151905061321281612b6f565b92915050565b60008060006060848603121561323157613230612afd565b5b600061323f86828701613203565b935050602061325086828701613203565b925050604061326186828701613203565b9150509250925092565b60006040820190506132806000830185612d4b565b61328d6020830184612c3e565b9392505050565b6000815190506132a381612cf2565b92915050565b6000602082840312156132bf576132be612afd565b5b60006132cd84828501613294565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613332602483612a43565b915061333d826132d6565b604082019050919050565b6000602082019050818103600083015261336181613325565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133c4602283612a43565b91506133cf82613368565b604082019050919050565b600060208201905081810360008301526133f3816133b7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613456602583612a43565b9150613461826133fa565b604082019050919050565b6000602082019050818103600083015261348581613449565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134e8602383612a43565b91506134f38261348c565b604082019050919050565b60006020820190508181036000830152613517816134db565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061357a602983612a43565b91506135858261351e565b604082019050919050565b600060208201905081810360008301526135a98161356d565b9050919050565b60006135bb82612b65565b91506135c683612b65565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135fb576135fa61300e565b5b828201905092915050565b600061361182612b65565b915061361c83612b65565b92508282101561362f5761362e61300e565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613696602a83612a43565b91506136a18261363a565b604082019050919050565b600060208201905081810360008301526136c581613689565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61370181612b27565b82525050565b600061371383836136f8565b60208301905092915050565b6000602082019050919050565b6000613737826136cc565b61374181856136d7565b935061374c836136e8565b8060005b8381101561377d5781516137648882613707565b975061376f8361371f565b925050600181019050613750565b5085935050505092915050565b600060a08201905061379f6000830188612c3e565b6137ac6020830187613193565b81810360408301526137be818661372c565b90506137cd6060830185612d4b565b6137da6080830184612c3e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061381e82612b65565b915061382983612b65565b925082613839576138386137e4565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061387a601b83612a43565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b60006138bb82612b65565b91506138c683612b65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138ff576138fe61300e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613966602183612a43565b91506139718261390a565b604082019050919050565b6000602082019050818103600083015261399581613959565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a788fba46f82ab29c5c6103dc9c2285e69bd5c255fffc3a21ec4ba4ebf85dee264736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063c2d0ffca1161006f578063c2d0ffca1461043f578063c3c8cd8014610468578063c9567bf91461047f578063cc653b4414610496578063dd62ed3e146104d3578063ff872602146105105761014b565b8063715018a6146103435780638da5cb5b1461035a57806395d89b4114610385578063a9059cbb146103b0578063b515566a146103ed578063bc337182146104165761014b565b8063273123b711610108578063273123b714610249578063313ce5671461027257806351fa79531461029d5780635932ead1146102c65780636fc3eaec146102ef57806370a08231146103065761014b565b806306fdde0314610150578063095ea7b31461017b57806310736fb5146101b857806318160ddd146101e157806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610527565b6040516101729190612ad1565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612b9b565b610564565b6040516101af9190612bf6565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612c11565b610582565b005b3480156101ed57600080fd5b506101f6610672565b6040516102039190612c4d565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612c68565b610683565b6040516102409190612bf6565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612c11565b61075c565b005b34801561027e57600080fd5b5061028761084c565b6040516102949190612cd7565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612c11565b610855565b005b3480156102d257600080fd5b506102ed60048036038101906102e89190612d1e565b610945565b005b3480156102fb57600080fd5b506103046109f7565b005b34801561031257600080fd5b5061032d60048036038101906103289190612c11565b610a69565b60405161033a9190612c4d565b60405180910390f35b34801561034f57600080fd5b50610358610aba565b005b34801561036657600080fd5b5061036f610c0d565b60405161037c9190612d5a565b60405180910390f35b34801561039157600080fd5b5061039a610c36565b6040516103a79190612ad1565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190612b9b565b610c73565b6040516103e49190612bf6565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190612ebd565b610c91565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f06565b610dbb565b005b34801561044b57600080fd5b5061046660048036038101906104619190612f06565b610e5a565b005b34801561047457600080fd5b5061047d610ef9565b005b34801561048b57600080fd5b50610494610f73565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612c11565b6114d0565b6040516104ca9190612c4d565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190612f33565b611519565b6040516105079190612c4d565b60405180910390f35b34801561051c57600080fd5b506105256115a0565b005b60606040518060400160405280600981526020017f4f6b616d6920496e750000000000000000000000000000000000000000000000815250905090565b6000610578610571611647565b848461164f565b6001905092915050565b61058a611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90612fbf565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000683635c9adc5dea00000905090565b600061069084848461181a565b6107518461069c611647565b61074c8560405180606001604052806028815260200161399d60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610702611647565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed39092919063ffffffff16565b61164f565b600190509392505050565b610764611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e890612fbf565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b61085d611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e190612fbf565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61094d611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190612fbf565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a38611647565b73ffffffffffffffffffffffffffffffffffffffff1614610a5857600080fd5b6000479050610a6681611f37565b50565b6000610ab3600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612032565b9050919050565b610ac2611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690612fbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4f4b414d49000000000000000000000000000000000000000000000000000000815250905090565b6000610c87610c80611647565b848461181a565b6001905092915050565b610c99611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d90612fbf565b60405180910390fd5b60005b8151811015610db757600160076000848481518110610d4b57610d4a612fdf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610daf9061303d565b915050610d29565b5050565b610dc3611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790612fbf565b60405180910390fd5b8060118190555050565b610e62611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690612fbf565b60405180910390fd5b8060118190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3a611647565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a57600080fd5b6000610f6530610a69565b9050610f70816120a0565b50565b610f7b611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90612fbf565b60405180910390fd5b601060149054906101000a900460ff1615611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f906130d2565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110e830600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061164f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561112e57600080fd5b505afa158015611142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111669190613107565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c857600080fd5b505afa1580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190613107565b6040518363ffffffff1660e01b815260040161121d929190613134565b602060405180830381600087803b15801561123757600080fd5b505af115801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f9190613107565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112f830610a69565b600080611303610c0d565b426040518863ffffffff1660e01b8152600401611325969594939291906131a2565b6060604051808303818588803b15801561133e57600080fd5b505af1158015611352573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113779190613218565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff0219169083151502179055506801158e460913d000006011819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161147a92919061326b565b602060405180830381600087803b15801561149457600080fd5b505af11580156114a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cc91906132a9565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115a8611647565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c90612fbf565b60405180910390fd5b683635c9adc5dea00000601181905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906133da565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161180d9190612c4d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561188a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118819061346c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f1906134fe565b60405180910390fd5b6000811161193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490613590565b60405180910390fd5b61194683612328565b611a17576000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156119e757504262015180600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e491906135b0565b10155b15611a01576001600b819055506019600c81905550611a12565b6001600b819055506008600c819055505b611ab5565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611aa45742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600b819055506008600c819055505b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b18576000600c819055506000600b819055505b611b20610c0d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750611b5e610c0d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ec357600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c375750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c4057600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ceb5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d415750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d595750601060179054906101000a900460ff165b15611e0957601154811115611d6d57600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611db857600080fd5b601e42611dc591906135b0565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611e1430610a69565b9050601060159054906101000a900460ff16158015611e815750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e995750601060169054906101000a900460ff165b15611ec157611ea7816120a0565b60004790506000811115611ebf57611ebe47611f37565b5b505b505b611ece838383612382565b505050565b6000838311158290611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f129190612ad1565b60405180910390fd5b5060008385611f2a9190613606565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f8760028461239290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fb2573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61200360028461239290919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561202e573d6000803e3d6000fd5b5050565b6000600954821115612079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612070906136ac565b60405180910390fd5b60006120836123dc565b9050612098818461239290919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120d8576120d7612d7a565b5b6040519080825280602002602001820160405280156121065781602001602082028036833780820191505090505b509050308160008151811061211e5761211d612fdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190613107565b8160018151811061220c5761220b612fdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227330600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164f565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122d795949392919061378a565b600060405180830381600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61238d838383612407565b505050565b60006123d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d2565b905092915050565b60008060006123e9612635565b91509150612400818361239290919063ffffffff16565b9250505090565b60008060008060008061241987612697565b95509550955095509550955061247786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612558816127a7565b6125628483612864565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125bf9190612c4d565b60405180910390a3505050505050505050565b60008083118290612619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126109190612ad1565b60405180910390fd5b50600083856126289190613813565b9050809150509392505050565b600080600060095490506000683635c9adc5dea00000905061266b683635c9adc5dea0000060095461239290919063ffffffff16565b82101561268a57600954683635c9adc5dea00000935093505050612693565b81819350935050505b9091565b60008060008060008060008060006126b48a600b54600c5461289e565b92509250925060006126c46123dc565b905060008060006126d78e878787612934565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061274183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ed3565b905092915050565b600080828461275891906135b0565b90508381101561279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279490613890565b60405180910390fd5b8091505092915050565b60006127b16123dc565b905060006127c882846129bd90919063ffffffff16565b905061281c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612879826009546126ff90919063ffffffff16565b60098190555061289481600a5461274990919063ffffffff16565b600a819055505050565b6000806000806128ca60646128bc888a6129bd90919063ffffffff16565b61239290919063ffffffff16565b905060006128f460646128e6888b6129bd90919063ffffffff16565b61239290919063ffffffff16565b9050600061291d8261290f858c6126ff90919063ffffffff16565b6126ff90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061294d85896129bd90919063ffffffff16565b9050600061296486896129bd90919063ffffffff16565b9050600061297b87896129bd90919063ffffffff16565b905060006129a48261299685876126ff90919063ffffffff16565b6126ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156129d05760009050612a32565b600082846129de91906138b0565b90508284826129ed9190613813565b14612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a249061397c565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a72578082015181840152602081019050612a57565b83811115612a81576000848401525b50505050565b6000601f19601f8301169050919050565b6000612aa382612a38565b612aad8185612a43565b9350612abd818560208601612a54565b612ac681612a87565b840191505092915050565b60006020820190508181036000830152612aeb8184612a98565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3282612b07565b9050919050565b612b4281612b27565b8114612b4d57600080fd5b50565b600081359050612b5f81612b39565b92915050565b6000819050919050565b612b7881612b65565b8114612b8357600080fd5b50565b600081359050612b9581612b6f565b92915050565b60008060408385031215612bb257612bb1612afd565b5b6000612bc085828601612b50565b9250506020612bd185828601612b86565b9150509250929050565b60008115159050919050565b612bf081612bdb565b82525050565b6000602082019050612c0b6000830184612be7565b92915050565b600060208284031215612c2757612c26612afd565b5b6000612c3584828501612b50565b91505092915050565b612c4781612b65565b82525050565b6000602082019050612c626000830184612c3e565b92915050565b600080600060608486031215612c8157612c80612afd565b5b6000612c8f86828701612b50565b9350506020612ca086828701612b50565b9250506040612cb186828701612b86565b9150509250925092565b600060ff82169050919050565b612cd181612cbb565b82525050565b6000602082019050612cec6000830184612cc8565b92915050565b612cfb81612bdb565b8114612d0657600080fd5b50565b600081359050612d1881612cf2565b92915050565b600060208284031215612d3457612d33612afd565b5b6000612d4284828501612d09565b91505092915050565b612d5481612b27565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612db282612a87565b810181811067ffffffffffffffff82111715612dd157612dd0612d7a565b5b80604052505050565b6000612de4612af3565b9050612df08282612da9565b919050565b600067ffffffffffffffff821115612e1057612e0f612d7a565b5b602082029050602081019050919050565b600080fd5b6000612e39612e3484612df5565b612dda565b90508083825260208201905060208402830185811115612e5c57612e5b612e21565b5b835b81811015612e855780612e718882612b50565b845260208401935050602081019050612e5e565b5050509392505050565b600082601f830112612ea457612ea3612d75565b5b8135612eb4848260208601612e26565b91505092915050565b600060208284031215612ed357612ed2612afd565b5b600082013567ffffffffffffffff811115612ef157612ef0612b02565b5b612efd84828501612e8f565b91505092915050565b600060208284031215612f1c57612f1b612afd565b5b6000612f2a84828501612b86565b91505092915050565b60008060408385031215612f4a57612f49612afd565b5b6000612f5885828601612b50565b9250506020612f6985828601612b50565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fa9602083612a43565b9150612fb482612f73565b602082019050919050565b60006020820190508181036000830152612fd881612f9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061304882612b65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307b5761307a61300e565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006130bc601783612a43565b91506130c782613086565b602082019050919050565b600060208201905081810360008301526130eb816130af565b9050919050565b60008151905061310181612b39565b92915050565b60006020828403121561311d5761311c612afd565b5b600061312b848285016130f2565b91505092915050565b60006040820190506131496000830185612d4b565b6131566020830184612d4b565b9392505050565b6000819050919050565b6000819050919050565b600061318c6131876131828461315d565b613167565b612b65565b9050919050565b61319c81613171565b82525050565b600060c0820190506131b76000830189612d4b565b6131c46020830188612c3e565b6131d16040830187613193565b6131de6060830186613193565b6131eb6080830185612d4b565b6131f860a0830184612c3e565b979650505050505050565b60008151905061321281612b6f565b92915050565b60008060006060848603121561323157613230612afd565b5b600061323f86828701613203565b935050602061325086828701613203565b925050604061326186828701613203565b9150509250925092565b60006040820190506132806000830185612d4b565b61328d6020830184612c3e565b9392505050565b6000815190506132a381612cf2565b92915050565b6000602082840312156132bf576132be612afd565b5b60006132cd84828501613294565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613332602483612a43565b915061333d826132d6565b604082019050919050565b6000602082019050818103600083015261336181613325565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133c4602283612a43565b91506133cf82613368565b604082019050919050565b600060208201905081810360008301526133f3816133b7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613456602583612a43565b9150613461826133fa565b604082019050919050565b6000602082019050818103600083015261348581613449565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134e8602383612a43565b91506134f38261348c565b604082019050919050565b60006020820190508181036000830152613517816134db565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061357a602983612a43565b91506135858261351e565b604082019050919050565b600060208201905081810360008301526135a98161356d565b9050919050565b60006135bb82612b65565b91506135c683612b65565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135fb576135fa61300e565b5b828201905092915050565b600061361182612b65565b915061361c83612b65565b92508282101561362f5761362e61300e565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613696602a83612a43565b91506136a18261363a565b604082019050919050565b600060208201905081810360008301526136c581613689565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61370181612b27565b82525050565b600061371383836136f8565b60208301905092915050565b6000602082019050919050565b6000613737826136cc565b61374181856136d7565b935061374c836136e8565b8060005b8381101561377d5781516137648882613707565b975061376f8361371f565b925050600181019050613750565b5085935050505092915050565b600060a08201905061379f6000830188612c3e565b6137ac6020830187613193565b81810360408301526137be818661372c565b90506137cd6060830185612d4b565b6137da6080830184612c3e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061381e82612b65565b915061382983612b65565b925082613839576138386137e4565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061387a601b83612a43565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b60006138bb82612b65565b91506138c683612b65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138ff576138fe61300e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613966602183612a43565b91506139718261390a565b604082019050919050565b6000602082019050818103600083015261399581613959565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a788fba46f82ab29c5c6103dc9c2285e69bd5c255fffc3a21ec4ba4ebf85dee264736f6c63430008090033

Deployed Bytecode Sourcemap

3617:11713:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5553:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6533:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9802:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5830:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6702:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11831:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5739:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9928:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7023:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13313:194;;;;;;;;;;;;;:::i;:::-;;6061:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2696:148;;;;;;;;;;;;;:::i;:::-;;2482:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5644:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6207:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11549:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7138:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12809:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13106:195;;;;;;;;;;;;;:::i;:::-;;10719:818;;;;;;;;;;;;;:::i;:::-;;5937:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6382:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11725:94;;;;;;;;;;;;;:::i;:::-;;5553:83;5590:13;5623:5;;;;;;;;;;;;;;;;;5616:12;;5553:83;:::o;6533:161::-;6608:4;6625:39;6634:12;:10;:12::i;:::-;6648:7;6657:6;6625:8;:39::i;:::-;6682:4;6675:11;;6533:161;;;;:::o;9802:114::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9904:4:::1;9873:18;:28;9892:8;9873:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9802:114:::0;:::o;5830:95::-;5883:7;4169:12;5903:14;;5830:95;:::o;6702:313::-;6800:4;6817:36;6827:6;6835:9;6846:6;6817:9;:36::i;:::-;6864:121;6873:6;6881:12;:10;:12::i;:::-;6895:89;6933:6;6895:89;;;;;;;;;;;;;;;;;:11;:19;6907:6;6895:19;;;;;;;;;;;;;;;:33;6915:12;:10;:12::i;:::-;6895:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6864:8;:121::i;:::-;7003:4;6996:11;;6702:313;;;;;:::o;11831:88::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11906:5:::1;11891:4;:12;11896:6;11891:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11831:88:::0;:::o;5739:83::-;5780:5;4578:1;5798:16;;5739:83;:::o;9928:118::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10033:5:::1;10002:18;:28;10021:8;10002:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;9928:118:::0;:::o;7023:103::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7113:5:::1;7095:15;;:23;;;;;;;;;;;;;;;;;;7023:103:::0;:::o;13313:194::-;13379:15;;;;;;;;;;;13363:31;;:12;:10;:12::i;:::-;:31;;;13355:40;;;;;;13406:26;13435:21;13406:50;;13467:32;13480:18;13467:12;:32::i;:::-;13344:163;13313:194::o;6061:138::-;6127:7;6154:37;6174:7;:16;6182:7;6174:16;;;;;;;;;;;;;;;;6154:19;:37::i;:::-;6147:44;;6061:138;;;:::o;2696:148::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2803:1:::1;2766:40;;2787:6;::::0;::::1;;;;;;;;2766:40;;;;;;;;;;;;2834:1;2817:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2696:148::o:0;2482:79::-;2520:7;2547:6;;;;;;;;;;;2540:13;;2482:79;:::o;5644:87::-;5683:13;5716:7;;;;;;;;;;;;;;;;;5709:14;;5644:87;:::o;6207:167::-;6285:4;6302:42;6312:12;:10;:12::i;:::-;6326:9;6337:6;6302:9;:42::i;:::-;6362:4;6355:11;;6207:167;;;;:::o;11549:164::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11623:6:::1;11618:88;11639:5;:12;11635:1;:16;11618:88;;;11690:4;11673;:14;11678:5;11684:1;11678:8;;;;;;;;:::i;:::-;;;;;;;;11673:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11653:3;;;;;:::i;:::-;;;;11618:88;;;;11549:164:::0;:::o;7138:123::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7233:20:::1;7218:12;:35;;;;7138:123:::0;:::o;12809:89::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12887:3:::1;12872:12;:18;;;;12809:89:::0;:::o;13106:195::-;13172:15;;;;;;;;;;;13156:31;;:12;:10;:12::i;:::-;:31;;;13148:40;;;;;;13199:23;13225:24;13243:4;13225:9;:24::i;:::-;13199:50;;13260:33;13277:15;13260:16;:33::i;:::-;13137:164;13106:195::o;10719:818::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10783:11:::1;;;;;;;;;;;10782:12;10774:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10832:35;10889:42;10832:100;;10961:16;10943:15;;:34;;;;;;;;;;;;;;;;;;10988:58;11005:4;11020:15;;;;;;;;;;;4169:12;10988:8;:58::i;:::-;11091:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11073:56;;;11138:4;11145:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11073:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11057:13;;:112;;;;;;;;;;;;;;;;;;11180:15;;;;;;;;;;;:31;;;11219:21;11250:4;11256:24;11274:4;11256:9;:24::i;:::-;11281:1;11283::::0;11285:7:::1;:5;:7::i;:::-;11293:15;11180:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11334:4;11320:11;;:18;;;;;;;;;;;;;;;;;;11367:4;11349:15;;:22;;;;;;;;;;;;;;;;;;11397:21;11382:12;:36;;;;11443:4;11429:11;;:18;;;;;;;;;;;;;;;;;;11465:13;;;;;;;;;;;11458:29;;;11496:15;;;;;;;;;;;11514:14;11458:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10763:774;10719:818::o:0;5937:116::-;6002:7;6029;:16;6037:7;6029:16;;;;;;;;;;;;;;;;6022:23;;5937:116;;;:::o;6382:143::-;6463:7;6490:11;:18;6502:5;6490:18;;;;;;;;;;;;;;;:27;6509:7;6490:27;;;;;;;;;;;;;;;;6483:34;;6382:143;;;;:::o;11725:94::-;2619:12;:10;:12::i;:::-;2609:22;;:6;;;;;;;;;;:22;;;2601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11799:12:::1;11784;:27;;;;11725:94::o:0;200:98::-;253:7;280:10;273:17;;200:98;:::o;7531:335::-;7641:1;7624:19;;:5;:19;;;;7616:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7722:1;7703:21;;:7;:21;;;;7695:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7804:6;7774:11;:18;7786:5;7774:18;;;;;;;;;;;;;;;:27;7793:7;7774:27;;;;;;;;;;;;;;;:36;;;;7842:7;7826:32;;7835:5;7826:32;;;7851:6;7826:32;;;;;;:::i;:::-;;;;;;;;7531:335;;;:::o;7874:1916::-;7978:1;7962:18;;:4;:18;;;;7954:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8055:1;8041:16;;:2;:16;;;;8033:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8125:1;8116:6;:10;8108:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8204:12;8211:4;8204:6;:12::i;:::-;8199:536;;8311:1;8294:7;:13;8302:4;8294:13;;;;;;;;;;;;;;;;:18;;:86;;;;;8364:15;8351:8;8334:7;:13;8342:4;8334:13;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:45;;8294:86;8290:260;;;8414:1;8402:9;:13;;;;8446:2;8434:9;:14;;;;8290:260;;;8501:1;8489:9;:13;;;;8533:1;8521:9;:13;;;;8290:260;8199:536;;;8601:1;8586:7;:11;8594:2;8586:11;;;;;;;;;;;;;;;;:16;8582:86;;;8637:15;8623:7;:11;8631:2;8623:11;;;;;;;;;;;;;;;:29;;;;8582:86;8694:1;8682:9;:13;;;;8722:1;8710:9;:13;;;;8199:536;8759:18;:22;8778:2;8759:22;;;;;;;;;;;;;;;;;;;;;;;;;8755:96;;;8810:1;8798:9;:13;;;;8838:1;8826:9;:13;;;;8755:96;8883:7;:5;:7::i;:::-;8875:15;;:4;:15;;;;:32;;;;;8900:7;:5;:7::i;:::-;8894:13;;:2;:13;;;;8875:32;8871:867;;;8933:4;:10;8938:4;8933:10;;;;;;;;;;;;;;;;;;;;;;;;;8932:11;:24;;;;;8948:4;:8;8953:2;8948:8;;;;;;;;;;;;;;;;;;;;;;;;;8947:9;8932:24;8924:33;;;;;;8984:13;;;;;;;;;;;8976:21;;:4;:21;;;:55;;;;;9015:15;;;;;;;;;;;9001:30;;:2;:30;;;;8976:55;:83;;;;;9037:18;:22;9056:2;9037:22;;;;;;;;;;;;;;;;;;;;;;;;;9035:24;8976:83;:102;;;;;9063:15;;;;;;;;;;;8976:102;8972:325;;;9146:12;;9136:6;:22;;9128:31;;;;;;9201:15;9186:8;:12;9195:2;9186:12;;;;;;;;;;;;;;;;:30;9178:39;;;;;;9270:10;9251:15;:30;;;;:::i;:::-;9236:8;:12;9245:2;9236:12;;;;;;;;;;;;;;;:45;;;;8972:325;9339:28;9370:24;9388:4;9370:9;:24::i;:::-;9339:55;;9414:6;;;;;;;;;;;9413:7;:32;;;;;9432:13;;;;;;;;;;;9424:21;;:4;:21;;;;9413:32;:47;;;;;9449:11;;;;;;;;;;;9413:47;9409:318;;;9481:38;9498:20;9481:16;:38::i;:::-;9538:26;9567:21;9538:50;;9631:1;9610:18;:22;9607:105;;;9657:35;9670:21;9657:12;:35::i;:::-;9607:105;9462:265;9409:318;8909:829;8871:867;9752:30;9767:4;9772:2;9775:6;9752:14;:30::i;:::-;7874:1916;;;:::o;1337:190::-;1423:7;1456:1;1451;:6;;1459:12;1443:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1483:9;1499:1;1495;:5;;;;:::i;:::-;1483:17;;1518:1;1511:8;;;1337:190;;;;;:::o;10553:154::-;10610:15;;;;;;;;;;;:24;;:39;10635:13;10646:1;10635:6;:10;;:13;;;;:::i;:::-;10610:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10660:15;;;;;;;;;;;:24;;:39;10685:13;10696:1;10685:6;:10;;:13;;;;:::i;:::-;10660:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10553:154;:::o;7269:254::-;7336:7;7375;;7364;:18;;7356:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7440:19;7463:10;:8;:10::i;:::-;7440:33;;7491:24;7503:11;7491:7;:11;;:24;;;;:::i;:::-;7484:31;;;7269:254;;;:::o;10054:483::-;4963:4;4954:6;;:13;;;;;;;;;;;;;;;;;;10132:21:::1;10170:1;10156:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10132:40;;10201:4;10183;10188:1;10183:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10227:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10217:4;10222:1;10217:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10260:62;10277:4;10292:15;;;;;;;;;;;10310:11;10260:8;:62::i;:::-;10333:15;;;;;;;;;;;:66;;;10414:11;10440:1;10456:4;10483;10503:15;10333:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10121:416;4999:5:::0;4990:6;;:14;;;;;;;;;;;;;;;;;;10054:483;:::o;14776:111::-;14831:4;14866:13;;;;;;;;;;;14855:24;;:7;:24;;;14848:31;;14776:111;;;:::o;11935:146::-;12029:44;12047:6;12055:9;12066:6;12029:17;:44::i;:::-;11935:146;;;:::o;1789:132::-;1847:7;1874:39;1878:1;1881;1874:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1867:46;;1789:132;;;;:::o;14894:163::-;14935:7;14956:15;14973;14992:19;:17;:19::i;:::-;14955:56;;;;15029:20;15041:7;15029;:11;;:20;;;;:::i;:::-;15022:27;;;;14894:163;:::o;12089:488::-;12188:15;12205:23;12230:12;12244:23;12269:12;12283:13;12300:19;12311:7;12300:10;:19::i;:::-;12187:132;;;;;;;;;;;;12348:28;12368:7;12348;:15;12356:6;12348:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12330:7;:15;12338:6;12330:15;;;;;;;;;;;;;;;:46;;;;12408:39;12431:15;12408:7;:18;12416:9;12408:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12387:7;:18;12395:9;12387:18;;;;;;;;;;;;;;;:60;;;;12459:16;12469:5;12459:9;:16::i;:::-;12486:23;12498:4;12504;12486:11;:23::i;:::-;12542:9;12525:44;;12534:6;12525:44;;;12553:15;12525:44;;;;;;:::i;:::-;;;;;;;;12176:401;;;;;;12089:488;;;:::o;1929:189::-;2015:7;2047:1;2043;:5;2050:12;2035:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2074:9;2090:1;2086;:5;;;;:::i;:::-;2074:17;;2109:1;2102:8;;;1929:189;;;;;:::o;15065:262::-;15115:7;15124;15144:15;15162:7;;15144:25;;15180:15;4169:12;15180:25;;15236:20;4169:12;15236:7;;:11;;:20;;;;:::i;:::-;15226:7;:30;15222:61;;;15266:7;;4169:12;15258:25;;;;;;;;15222:61;15302:7;15311;15294:25;;;;;;15065:262;;;:::o;13521:471::-;13580:7;13589;13598;13607;13616;13625;13646:23;13671:12;13685:13;13702:42;13714:7;13723:9;;13734;;13702:11;:42::i;:::-;13645:99;;;;;;13755:19;13778:10;:8;:10::i;:::-;13755:33;;13800:15;13817:23;13842:12;13858:46;13870:7;13879:4;13885:5;13892:11;13858;:46::i;:::-;13799:105;;;;;;13923:7;13932:15;13949:4;13955:15;13972:4;13978:5;13915:69;;;;;;;;;;;;;;;;;;;13521:471;;;;;;;:::o;1193:136::-;1251:7;1278:43;1282:1;1285;1278:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1271:50;;1193:136;;;;:::o;1006:179::-;1064:7;1084:9;1100:1;1096;:5;;;;:::i;:::-;1084:17;;1125:1;1120;:6;;1112:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:1;1169:8;;;1006:179;;;;:::o;12585:212::-;12638:19;12661:10;:8;:10::i;:::-;12638:33;;12682:13;12698:22;12708:11;12698:5;:9;;:22;;;;:::i;:::-;12682:38;;12756:33;12783:5;12756:7;:22;12772:4;12756:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12731:7;:22;12747:4;12731:22;;;;;;;;;;;;;;;:58;;;;12627:170;;12585:212;:::o;12910:147::-;12988:17;13000:4;12988:7;;:11;;:17;;;;:::i;:::-;12978:7;:27;;;;13029:20;13044:4;13029:10;;:14;;:20;;;;:::i;:::-;13016:10;:33;;;;12910:147;;:::o;14000:351::-;14093:7;14102;14111;14131:12;14146:28;14170:3;14146:19;14158:6;14146:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14131:43;;14185:13;14201:29;14226:3;14201:20;14213:7;14201;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14185:45;;14241:23;14267:28;14289:5;14267:17;14279:4;14267:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14241:54;;14314:15;14331:4;14337:5;14306:37;;;;;;;;;14000:351;;;;;;;:::o;14359:409::-;14469:7;14478;14487;14507:15;14525:24;14537:11;14525:7;:11;;:24;;;;:::i;:::-;14507:42;;14560:12;14575:21;14584:11;14575:4;:8;;:21;;;;:::i;:::-;14560:36;;14607:13;14623:22;14633:11;14623:5;:9;;:22;;;;:::i;:::-;14607:38;;14656:23;14682:28;14704:5;14682:17;14694:4;14682:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14656:54;;14729:7;14738:15;14755:4;14721:39;;;;;;;;;;14359:409;;;;;;;;:::o;1535:246::-;1593:7;1622:1;1617;:6;1613:47;;;1647:1;1640:8;;;;1613:47;1670:9;1686:1;1682;:5;;;;:::i;:::-;1670:17;;1715:1;1710;1706;:5;;;;:::i;:::-;:10;1698:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1772:1;1765:8;;;1535:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:323::-;5553:6;5602:2;5590:9;5581:7;5577:23;5573:32;5570:119;;;5608:79;;:::i;:::-;5570:119;5728:1;5753:50;5795:7;5786:6;5775:9;5771:22;5753:50;:::i;:::-;5743:60;;5699:114;5497:323;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:117::-;6287:1;6284;6277:12;6301:180;6349:77;6346:1;6339:88;6446:4;6443:1;6436:15;6470:4;6467:1;6460:15;6487:281;6570:27;6592:4;6570:27;:::i;:::-;6562:6;6558:40;6700:6;6688:10;6685:22;6664:18;6652:10;6649:34;6646:62;6643:88;;;6711:18;;:::i;:::-;6643:88;6751:10;6747:2;6740:22;6530:238;6487:281;;:::o;6774:129::-;6808:6;6835:20;;:::i;:::-;6825:30;;6864:33;6892:4;6884:6;6864:33;:::i;:::-;6774:129;;;:::o;6909:311::-;6986:4;7076:18;7068:6;7065:30;7062:56;;;7098:18;;:::i;:::-;7062:56;7148:4;7140:6;7136:17;7128:25;;7208:4;7202;7198:15;7190:23;;6909:311;;;:::o;7226:117::-;7335:1;7332;7325:12;7366:710;7462:5;7487:81;7503:64;7560:6;7503:64;:::i;:::-;7487:81;:::i;:::-;7478:90;;7588:5;7617:6;7610:5;7603:21;7651:4;7644:5;7640:16;7633:23;;7704:4;7696:6;7692:17;7684:6;7680:30;7733:3;7725:6;7722:15;7719:122;;;7752:79;;:::i;:::-;7719:122;7867:6;7850:220;7884:6;7879:3;7876:15;7850:220;;;7959:3;7988:37;8021:3;8009:10;7988:37;:::i;:::-;7983:3;7976:50;8055:4;8050:3;8046:14;8039:21;;7926:144;7910:4;7905:3;7901:14;7894:21;;7850:220;;;7854:21;7468:608;;7366:710;;;;;:::o;8099:370::-;8170:5;8219:3;8212:4;8204:6;8200:17;8196:27;8186:122;;8227:79;;:::i;:::-;8186:122;8344:6;8331:20;8369:94;8459:3;8451:6;8444:4;8436:6;8432:17;8369:94;:::i;:::-;8360:103;;8176:293;8099:370;;;;:::o;8475:539::-;8559:6;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8762:1;8751:9;8747:17;8734:31;8792:18;8784:6;8781:30;8778:117;;;8814:79;;:::i;:::-;8778:117;8919:78;8989:7;8980:6;8969:9;8965:22;8919:78;:::i;:::-;8909:88;;8705:302;8475:539;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:474::-;9423:6;9431;9480:2;9468:9;9459:7;9455:23;9451:32;9448:119;;;9486:79;;:::i;:::-;9448:119;9606:1;9631:53;9676:7;9667:6;9656:9;9652:22;9631:53;:::i;:::-;9621:63;;9577:117;9733:2;9759:53;9804:7;9795:6;9784:9;9780:22;9759:53;:::i;:::-;9749:63;;9704:118;9355:474;;;;;:::o;9835:182::-;9975:34;9971:1;9963:6;9959:14;9952:58;9835:182;:::o;10023:366::-;10165:3;10186:67;10250:2;10245:3;10186:67;:::i;:::-;10179:74;;10262:93;10351:3;10262:93;:::i;:::-;10380:2;10375:3;10371:12;10364:19;;10023:366;;;:::o;10395:419::-;10561:4;10599:2;10588:9;10584:18;10576:26;;10648:9;10642:4;10638:20;10634:1;10623:9;10619:17;10612:47;10676:131;10802:4;10676:131;:::i;:::-;10668:139;;10395:419;;;:::o;10820:180::-;10868:77;10865:1;10858:88;10965:4;10962:1;10955:15;10989:4;10986:1;10979:15;11006:180;11054:77;11051:1;11044:88;11151:4;11148:1;11141:15;11175:4;11172:1;11165:15;11192:233;11231:3;11254:24;11272:5;11254:24;:::i;:::-;11245:33;;11300:66;11293:5;11290:77;11287:103;;;11370:18;;:::i;:::-;11287:103;11417:1;11410:5;11406:13;11399:20;;11192:233;;;:::o;11431:173::-;11571:25;11567:1;11559:6;11555:14;11548:49;11431:173;:::o;11610:366::-;11752:3;11773:67;11837:2;11832:3;11773:67;:::i;:::-;11766:74;;11849:93;11938:3;11849:93;:::i;:::-;11967:2;11962:3;11958:12;11951:19;;11610:366;;;:::o;11982:419::-;12148:4;12186:2;12175:9;12171:18;12163:26;;12235:9;12229:4;12225:20;12221:1;12210:9;12206:17;12199:47;12263:131;12389:4;12263:131;:::i;:::-;12255:139;;11982:419;;;:::o;12407:143::-;12464:5;12495:6;12489:13;12480:22;;12511:33;12538:5;12511:33;:::i;:::-;12407:143;;;;:::o;12556:351::-;12626:6;12675:2;12663:9;12654:7;12650:23;12646:32;12643:119;;;12681:79;;:::i;:::-;12643:119;12801:1;12826:64;12882:7;12873:6;12862:9;12858:22;12826:64;:::i;:::-;12816:74;;12772:128;12556:351;;;;:::o;12913:332::-;13034:4;13072:2;13061:9;13057:18;13049:26;;13085:71;13153:1;13142:9;13138:17;13129:6;13085:71;:::i;:::-;13166:72;13234:2;13223:9;13219:18;13210:6;13166:72;:::i;:::-;12913:332;;;;;:::o;13251:85::-;13296:7;13325:5;13314:16;;13251:85;;;:::o;13342:60::-;13370:3;13391:5;13384:12;;13342:60;;;:::o;13408:158::-;13466:9;13499:61;13517:42;13526:32;13552:5;13526:32;:::i;:::-;13517:42;:::i;:::-;13499:61;:::i;:::-;13486:74;;13408:158;;;:::o;13572:147::-;13667:45;13706:5;13667:45;:::i;:::-;13662:3;13655:58;13572:147;;:::o;13725:807::-;13974:4;14012:3;14001:9;13997:19;13989:27;;14026:71;14094:1;14083:9;14079:17;14070:6;14026:71;:::i;:::-;14107:72;14175:2;14164:9;14160:18;14151:6;14107:72;:::i;:::-;14189:80;14265:2;14254:9;14250:18;14241:6;14189:80;:::i;:::-;14279;14355:2;14344:9;14340:18;14331:6;14279:80;:::i;:::-;14369:73;14437:3;14426:9;14422:19;14413:6;14369:73;:::i;:::-;14452;14520:3;14509:9;14505:19;14496:6;14452:73;:::i;:::-;13725:807;;;;;;;;;:::o;14538:143::-;14595:5;14626:6;14620:13;14611:22;;14642:33;14669:5;14642:33;:::i;:::-;14538:143;;;;:::o;14687:663::-;14775:6;14783;14791;14840:2;14828:9;14819:7;14815:23;14811:32;14808:119;;;14846:79;;:::i;:::-;14808:119;14966:1;14991:64;15047:7;15038:6;15027:9;15023:22;14991:64;:::i;:::-;14981:74;;14937:128;15104:2;15130:64;15186:7;15177:6;15166:9;15162:22;15130:64;:::i;:::-;15120:74;;15075:129;15243:2;15269:64;15325:7;15316:6;15305:9;15301:22;15269:64;:::i;:::-;15259:74;;15214:129;14687:663;;;;;:::o;15356:332::-;15477:4;15515:2;15504:9;15500:18;15492:26;;15528:71;15596:1;15585:9;15581:17;15572:6;15528:71;:::i;:::-;15609:72;15677:2;15666:9;15662:18;15653:6;15609:72;:::i;:::-;15356:332;;;;;:::o;15694:137::-;15748:5;15779:6;15773:13;15764:22;;15795:30;15819:5;15795:30;:::i;:::-;15694:137;;;;:::o;15837:345::-;15904:6;15953:2;15941:9;15932:7;15928:23;15924:32;15921:119;;;15959:79;;:::i;:::-;15921:119;16079:1;16104:61;16157:7;16148:6;16137:9;16133:22;16104:61;:::i;:::-;16094:71;;16050:125;15837:345;;;;:::o;16188:223::-;16328:34;16324:1;16316:6;16312:14;16305:58;16397:6;16392:2;16384:6;16380:15;16373:31;16188:223;:::o;16417:366::-;16559:3;16580:67;16644:2;16639:3;16580:67;:::i;:::-;16573:74;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16417:366;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:221::-;17354:34;17350:1;17342:6;17338:14;17331:58;17423:4;17418:2;17410:6;17406:15;17399:29;17214:221;:::o;17441:366::-;17583:3;17604:67;17668:2;17663:3;17604:67;:::i;:::-;17597:74;;17680:93;17769:3;17680:93;:::i;:::-;17798:2;17793:3;17789:12;17782:19;;17441:366;;;:::o;17813:419::-;17979:4;18017:2;18006:9;18002:18;17994:26;;18066:9;18060:4;18056:20;18052:1;18041:9;18037:17;18030:47;18094:131;18220:4;18094:131;:::i;:::-;18086:139;;17813:419;;;:::o;18238:224::-;18378:34;18374:1;18366:6;18362:14;18355:58;18447:7;18442:2;18434:6;18430:15;18423:32;18238:224;:::o;18468:366::-;18610:3;18631:67;18695:2;18690:3;18631:67;:::i;:::-;18624:74;;18707:93;18796:3;18707:93;:::i;:::-;18825:2;18820:3;18816:12;18809:19;;18468:366;;;:::o;18840:419::-;19006:4;19044:2;19033:9;19029:18;19021:26;;19093:9;19087:4;19083:20;19079:1;19068:9;19064:17;19057:47;19121:131;19247:4;19121:131;:::i;:::-;19113:139;;18840:419;;;:::o;19265:222::-;19405:34;19401:1;19393:6;19389:14;19382:58;19474:5;19469:2;19461:6;19457:15;19450:30;19265:222;:::o;19493:366::-;19635:3;19656:67;19720:2;19715:3;19656:67;:::i;:::-;19649:74;;19732:93;19821:3;19732:93;:::i;:::-;19850:2;19845:3;19841:12;19834:19;;19493:366;;;:::o;19865:419::-;20031:4;20069:2;20058:9;20054:18;20046:26;;20118:9;20112:4;20108:20;20104:1;20093:9;20089:17;20082:47;20146:131;20272:4;20146:131;:::i;:::-;20138:139;;19865:419;;;:::o;20290:228::-;20430:34;20426:1;20418:6;20414:14;20407:58;20499:11;20494:2;20486:6;20482:15;20475:36;20290:228;:::o;20524:366::-;20666:3;20687:67;20751:2;20746:3;20687:67;:::i;:::-;20680:74;;20763:93;20852:3;20763:93;:::i;:::-;20881:2;20876:3;20872:12;20865:19;;20524:366;;;:::o;20896:419::-;21062:4;21100:2;21089:9;21085:18;21077:26;;21149:9;21143:4;21139:20;21135:1;21124:9;21120:17;21113:47;21177:131;21303:4;21177:131;:::i;:::-;21169:139;;20896:419;;;:::o;21321:305::-;21361:3;21380:20;21398:1;21380:20;:::i;:::-;21375:25;;21414:20;21432:1;21414:20;:::i;:::-;21409:25;;21568:1;21500:66;21496:74;21493:1;21490:81;21487:107;;;21574:18;;:::i;:::-;21487:107;21618:1;21615;21611:9;21604:16;;21321:305;;;;:::o;21632:191::-;21672:4;21692:20;21710:1;21692:20;:::i;:::-;21687:25;;21726:20;21744:1;21726:20;:::i;:::-;21721:25;;21765:1;21762;21759:8;21756:34;;;21770:18;;:::i;:::-;21756:34;21815:1;21812;21808:9;21800:17;;21632:191;;;;:::o;21829:229::-;21969:34;21965:1;21957:6;21953:14;21946:58;22038:12;22033:2;22025:6;22021:15;22014:37;21829:229;:::o;22064:366::-;22206:3;22227:67;22291:2;22286:3;22227:67;:::i;:::-;22220:74;;22303:93;22392:3;22303:93;:::i;:::-;22421:2;22416:3;22412:12;22405:19;;22064:366;;;:::o;22436:419::-;22602:4;22640:2;22629:9;22625:18;22617:26;;22689:9;22683:4;22679:20;22675:1;22664:9;22660:17;22653:47;22717:131;22843:4;22717:131;:::i;:::-;22709:139;;22436:419;;;:::o;22861:114::-;22928:6;22962:5;22956:12;22946:22;;22861:114;;;:::o;22981:184::-;23080:11;23114:6;23109:3;23102:19;23154:4;23149:3;23145:14;23130:29;;22981:184;;;;:::o;23171:132::-;23238:4;23261:3;23253:11;;23291:4;23286:3;23282:14;23274:22;;23171:132;;;:::o;23309:108::-;23386:24;23404:5;23386:24;:::i;:::-;23381:3;23374:37;23309:108;;:::o;23423:179::-;23492:10;23513:46;23555:3;23547:6;23513:46;:::i;:::-;23591:4;23586:3;23582:14;23568:28;;23423:179;;;;:::o;23608:113::-;23678:4;23710;23705:3;23701:14;23693:22;;23608:113;;;:::o;23757:732::-;23876:3;23905:54;23953:5;23905:54;:::i;:::-;23975:86;24054:6;24049:3;23975:86;:::i;:::-;23968:93;;24085:56;24135:5;24085:56;:::i;:::-;24164:7;24195:1;24180:284;24205:6;24202:1;24199:13;24180:284;;;24281:6;24275:13;24308:63;24367:3;24352:13;24308:63;:::i;:::-;24301:70;;24394:60;24447:6;24394:60;:::i;:::-;24384:70;;24240:224;24227:1;24224;24220:9;24215:14;;24180:284;;;24184:14;24480:3;24473:10;;23881:608;;;23757:732;;;;:::o;24495:831::-;24758:4;24796:3;24785:9;24781:19;24773:27;;24810:71;24878:1;24867:9;24863:17;24854:6;24810:71;:::i;:::-;24891:80;24967:2;24956:9;24952:18;24943:6;24891:80;:::i;:::-;25018:9;25012:4;25008:20;25003:2;24992:9;24988:18;24981:48;25046:108;25149:4;25140:6;25046:108;:::i;:::-;25038:116;;25164:72;25232:2;25221:9;25217:18;25208:6;25164:72;:::i;:::-;25246:73;25314:3;25303:9;25299:19;25290:6;25246:73;:::i;:::-;24495:831;;;;;;;;:::o;25332:180::-;25380:77;25377:1;25370:88;25477:4;25474:1;25467:15;25501:4;25498:1;25491:15;25518:185;25558:1;25575:20;25593:1;25575:20;:::i;:::-;25570:25;;25609:20;25627:1;25609:20;:::i;:::-;25604:25;;25648:1;25638:35;;25653:18;;:::i;:::-;25638:35;25695:1;25692;25688:9;25683:14;;25518:185;;;;:::o;25709:177::-;25849:29;25845:1;25837:6;25833:14;25826:53;25709:177;:::o;25892:366::-;26034:3;26055:67;26119:2;26114:3;26055:67;:::i;:::-;26048:74;;26131:93;26220:3;26131:93;:::i;:::-;26249:2;26244:3;26240:12;26233:19;;25892:366;;;:::o;26264:419::-;26430:4;26468:2;26457:9;26453:18;26445:26;;26517:9;26511:4;26507:20;26503:1;26492:9;26488:17;26481:47;26545:131;26671:4;26545:131;:::i;:::-;26537:139;;26264:419;;;:::o;26689:348::-;26729:7;26752:20;26770:1;26752:20;:::i;:::-;26747:25;;26786:20;26804:1;26786:20;:::i;:::-;26781:25;;26974:1;26906:66;26902:74;26899:1;26896:81;26891:1;26884:9;26877:17;26873:105;26870:131;;;26981:18;;:::i;:::-;26870:131;27029:1;27026;27022:9;27011:20;;26689:348;;;;:::o;27043:220::-;27183:34;27179:1;27171:6;27167:14;27160:58;27252:3;27247:2;27239:6;27235:15;27228:28;27043:220;:::o;27269:366::-;27411:3;27432:67;27496:2;27491:3;27432:67;:::i;:::-;27425:74;;27508:93;27597:3;27508:93;:::i;:::-;27626:2;27621:3;27617:12;27610:19;;27269:366;;;:::o;27641:419::-;27807:4;27845:2;27834:9;27830:18;27822:26;;27894:9;27888:4;27884:20;27880:1;27869:9;27865:17;27858:47;27922:131;28048:4;27922:131;:::i;:::-;27914:139;;27641:419;;;:::o

Swarm Source

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