ETH Price: $2,642.26 (-1.38%)

Token

CortanaNaturalLanguageGeneration (CNLG)
 

Overview

Max Total Supply

100,000,000 CNLG

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 CNLG

Value
$0.00
0x202cf6f11290b0403eb0fb0e9e1bbae68da52810
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:
cortanaERC

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-24
*/

/**
Cortana Natural Language Generation by Microsoft 
Telegram: https://t.me/cortanaERC
Website: at launch
Twitter: https://twitter.com/cortananlg
Medium : https://medium.com/@cortananlg/cortananaturallanguagegeneration-45193bc3674a
Whitepaper : https://cortananaturallanguagegeneration.gitbook.io/cortananaturallanguagegeneration/
Cortana available at : http://t.me/cortananlp_bot
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract cortanaERC is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "CortanaNaturalLanguageGeneration";
    string private constant _symbol = "CNLG";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 50;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell =50;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0x62D0f4F698876665872d061Bb64AF28Ae5057EAB);
    address payable private _marketingAddress = payable(0x62D0f4F698876665872d061Bb64AF28Ae5057EAB);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal*5/100;
    uint256 public _swapTokensAtAmount = _tTotal/1000;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return 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 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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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 (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*3)
            {
                contractTokenBalance = _swapTokensAtAmount*3;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 50000000000000000) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 {
        _marketingAddress.transfer(amount);
    }

    function manualsend() external {
        sendETHToFee(address(this).balance);
    }

    function manualSwap(uint256 percent) external onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapamount = contractTokenBalance*percent/100;
        swapTokensForEth(swapamount);
    }

    function toggleSwap (bool _swapEnabled) external onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    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 _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        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 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).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 _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);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 25);
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount >= _tTotal/100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
         require (_maxWalletSize >= _tTotal/100);
    }

}

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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c9190620006df565b6000196200002b919062000746565b600655600060085560326009556000600a556032600b55600a54600c55600b54600d55600c54600e55600d54600f557362d0f4f698876665872d061bb64af28ae5057eab601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507362d0f4f698876665872d061bb64af28ae5057eab601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555067016345785d8a00006014556064600567016345785d8a00006200017a919062000781565b620001869190620007cc565b6015556103e867016345785d8a0000620001a19190620007cc565b601655348015620001b157600080fd5b506000620001c46200067560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002796200067560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038391906200086e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041191906200086e565b6040518363ffffffff1660e01b815260040162000430929190620008b1565b6020604051808303816000875af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047691906200086e565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc6200067d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005ff6200067560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006669190620008ef565b60405180910390a3506200090c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006ec82620006a6565b9150620006f983620006a6565b9250826200070c576200070b620006b0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200075382620006a6565b91506200076083620006a6565b92508282039050818111156200077b576200077a62000717565b5b92915050565b60006200078e82620006a6565b91506200079b83620006a6565b9250828202620007ab81620006a6565b91508282048414831517620007c557620007c462000717565b5b5092915050565b6000620007d982620006a6565b9150620007e683620006a6565b925082620007f957620007f8620006b0565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008368262000809565b9050919050565b620008488162000829565b81146200085457600080fd5b50565b60008151905062000868816200083d565b92915050565b60006020828403121562000887576200088662000804565b5b6000620008978482850162000857565b91505092915050565b620008ab8162000829565b82525050565b6000604082019050620008c86000830185620008a0565b620008d76020830184620008a0565b9392505050565b620008e981620006a6565b82525050565b6000602082019050620009066000830184620008de565b92915050565b613304806200091c6000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a2a957bb1161006f578063a2a957bb14610435578063a9059cbb1461045e578063b70143c91461049b578063dd62ed3e146104c4578063ea1644d514610501578063f2fde38b1461052a5761014b565b8063715018a61461034957806374010ece146103605780637d1db4a5146103895780638da5cb5b146103b45780638f9a55c0146103df57806395d89b411461040a5761014b565b80632fd689e3116101085780632fd689e31461024b578063313ce5671461027657806349bd5a5e146102a15780636d8aa8f8146102cc5780636fc3eaec146102f557806370a082311461030c5761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610553565b604051610172919061249f565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061255a565b610590565b6040516101af91906125b5565b60405180910390f35b3480156101c457600080fd5b506101cd6105ae565b6040516101da919061262f565b60405180910390f35b3480156101ef57600080fd5b506101f86105d4565b6040516102059190612659565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190612674565b6105e4565b60405161024291906125b5565b60405180910390f35b34801561025757600080fd5b506102606106bd565b60405161026d9190612659565b60405180910390f35b34801561028257600080fd5b5061028b6106c3565b60405161029891906126e3565b60405180910390f35b3480156102ad57600080fd5b506102b66106cc565b6040516102c3919061270d565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612754565b6106f2565b005b34801561030157600080fd5b5061030a6107a4565b005b34801561031857600080fd5b50610333600480360381019061032e9190612781565b6107af565b6040516103409190612659565b60405180910390f35b34801561035557600080fd5b5061035e610800565b005b34801561036c57600080fd5b50610387600480360381019061038291906127ae565b610953565b005b34801561039557600080fd5b5061039e610a34565b6040516103ab9190612659565b60405180910390f35b3480156103c057600080fd5b506103c9610a3a565b6040516103d6919061270d565b60405180910390f35b3480156103eb57600080fd5b506103f4610a63565b6040516104019190612659565b60405180910390f35b34801561041657600080fd5b5061041f610a69565b60405161042c919061249f565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127db565b610aa6565b005b34801561046a57600080fd5b506104856004803603810190610480919061255a565b610b94565b60405161049291906125b5565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906127ae565b610bb2565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190612842565b610c7e565b6040516104f89190612659565b60405180910390f35b34801561050d57600080fd5b50610528600480360381019061052391906127ae565b610d05565b005b34801561053657600080fd5b50610551600480360381019061054c9190612781565b610de6565b005b60606040518060400160405280602081526020017f436f7274616e614e61747572616c4c616e677561676547656e65726174696f6e815250905090565b60006105a461059d610fa7565b8484610faf565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006105f1848484611178565b6106b2846105fd610fa7565b6106ad856040518060600160405280602881526020016132a760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610663610fa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119389092919063ffffffff16565b610faf565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106fa610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e906128ce565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b6107ad4761199c565b565b60006107f9600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a08565b9050919050565b610808610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c906128ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61095b610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906128ce565b60405180910390fd5b60648167016345785d8a00006109fe919061291d565b610a08919061298e565b601481905550606467016345785d8a0000610a23919061298e565b6014541015610a3157600080fd5b50565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f434e4c4700000000000000000000000000000000000000000000000000000000815250905090565b610aae610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b32906128ce565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506019600b54600954600a54600854610b6f91906129bf565b610b7991906129bf565b610b8391906129bf565b1115610b8e57600080fd5b50505050565b6000610ba8610ba1610fa7565b8484611178565b6001905092915050565b610bba610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e906128ce565b60405180910390fd5b6000610c52306107af565b9050600060648383610c64919061291d565b610c6e919061298e565b9050610c7981611a76565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d0d610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906128ce565b60405180910390fd5b60648167016345785d8a0000610db0919061291d565b610dba919061298e565b601581905550606467016345785d8a0000610dd5919061298e565b6015541015610de357600080fd5b50565b610dee610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e72906128ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612a65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590612af7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490612b89565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161116b9190612659565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90612c1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d90612cad565b60405180910390fd5b60008111611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129090612d3f565b60405180910390fd5b6112a1610a3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130f57506112df610a3a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561163757601360149054906101000a900460ff1661139e57611330610a3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461139d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139490612dd1565b60405180910390fd5b5b6014548111156113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da90612e3d565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114905760155481611445846107af565b61144f91906129bf565b1061148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148690612ecf565b60405180910390fd5b5b600061149b306107af565b90506000601654821015905060036016546114b6919061291d565b82106114ce5760036016546114cb919061291d565b91505b8080156114e85750601360159054906101000a900460ff16155b80156115425750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561155a5750601360169054906101000a900460ff165b80156115b05750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116065750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116345761161482611a76565b600047905066b1a2bc2ec50000811115611632576116318161199c565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116de5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117915750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117905750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561179f5760009050611926565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561184a5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561186257600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561190d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561192557600a54600c81905550600b54600d819055505b5b61193284848484611cef565b50505050565b6000838311158290611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977919061249f565b60405180910390fd5b506000838561198f9190612eef565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a04573d6000803e3d6000fd5b5050565b6000600654821115611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612f95565b60405180910390fd5b6000611a59611d1c565b9050611a6e8184611d4790919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611aae57611aad612fb5565b5b604051908082528060200260200182016040528015611adc5781602001602082028036833780820191505090505b5090503081600081518110611af457611af3612fe4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbf9190613028565b81600181518110611bd357611bd2612fe4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c3a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610faf565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c9e95949392919061314e565b600060405180830381600087803b158015611cb857600080fd5b505af1158015611ccc573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611cfd57611cfc611d91565b5b611d08848484611dce565b80611d1657611d15611f99565b5b50505050565b6000806000611d29611fad565b91509150611d408183611d4790919063ffffffff16565b9250505090565b6000611d8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061200c565b905092915050565b6000600c54148015611da557506000600d54145b611dcc57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611de08761206f565b955095509550955095509550611e3e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f1f8161217f565b611f29848361223c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f869190612659565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a00009050611fe167016345785d8a0000600654611d4790919063ffffffff16565b821015611fff5760065467016345785d8a0000935093505050612008565b81819350935050505b9091565b60008083118290612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a919061249f565b60405180910390fd5b5060008385612062919061298e565b9050809150509392505050565b600080600080600080600080600061208c8a600c54600d54612276565b925092509250600061209c611d1c565b905060008060006120af8e87878761230c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061211983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611938565b905092915050565b600080828461213091906129bf565b905083811015612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c906131f4565b60405180910390fd5b8091505092915050565b6000612189611d1c565b905060006121a0828461239590919063ffffffff16565b90506121f481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612251826006546120d790919063ffffffff16565b60068190555061226c8160075461212190919063ffffffff16565b6007819055505050565b6000806000806122a26064612294888a61239590919063ffffffff16565b611d4790919063ffffffff16565b905060006122cc60646122be888b61239590919063ffffffff16565b611d4790919063ffffffff16565b905060006122f5826122e7858c6120d790919063ffffffff16565b6120d790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612325858961239590919063ffffffff16565b9050600061233c868961239590919063ffffffff16565b90506000612353878961239590919063ffffffff16565b9050600061237c8261236e85876120d790919063ffffffff16565b6120d790919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036123a75760009050612409565b600082846123b5919061291d565b90508284826123c4919061298e565b14612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb90613286565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561244957808201518184015260208101905061242e565b60008484015250505050565b6000601f19601f8301169050919050565b60006124718261240f565b61247b818561241a565b935061248b81856020860161242b565b61249481612455565b840191505092915050565b600060208201905081810360008301526124b98184612466565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124f1826124c6565b9050919050565b612501816124e6565b811461250c57600080fd5b50565b60008135905061251e816124f8565b92915050565b6000819050919050565b61253781612524565b811461254257600080fd5b50565b6000813590506125548161252e565b92915050565b60008060408385031215612571576125706124c1565b5b600061257f8582860161250f565b925050602061259085828601612545565b9150509250929050565b60008115159050919050565b6125af8161259a565b82525050565b60006020820190506125ca60008301846125a6565b92915050565b6000819050919050565b60006125f56125f06125eb846124c6565b6125d0565b6124c6565b9050919050565b6000612607826125da565b9050919050565b6000612619826125fc565b9050919050565b6126298161260e565b82525050565b60006020820190506126446000830184612620565b92915050565b61265381612524565b82525050565b600060208201905061266e600083018461264a565b92915050565b60008060006060848603121561268d5761268c6124c1565b5b600061269b8682870161250f565b93505060206126ac8682870161250f565b92505060406126bd86828701612545565b9150509250925092565b600060ff82169050919050565b6126dd816126c7565b82525050565b60006020820190506126f860008301846126d4565b92915050565b612707816124e6565b82525050565b600060208201905061272260008301846126fe565b92915050565b6127318161259a565b811461273c57600080fd5b50565b60008135905061274e81612728565b92915050565b60006020828403121561276a576127696124c1565b5b60006127788482850161273f565b91505092915050565b600060208284031215612797576127966124c1565b5b60006127a58482850161250f565b91505092915050565b6000602082840312156127c4576127c36124c1565b5b60006127d284828501612545565b91505092915050565b600080600080608085870312156127f5576127f46124c1565b5b600061280387828801612545565b945050602061281487828801612545565b935050604061282587828801612545565b925050606061283687828801612545565b91505092959194509250565b60008060408385031215612859576128586124c1565b5b60006128678582860161250f565b92505060206128788582860161250f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128b860208361241a565b91506128c382612882565b602082019050919050565b600060208201905081810360008301526128e7816128ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292882612524565b915061293383612524565b925082820261294181612524565b91508282048414831517612958576129576128ee565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299982612524565b91506129a483612524565b9250826129b4576129b361295f565b5b828204905092915050565b60006129ca82612524565b91506129d583612524565b92508282019050808211156129ed576129ec6128ee565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a4f60268361241a565b9150612a5a826129f3565b604082019050919050565b60006020820190508181036000830152612a7e81612a42565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ae160248361241a565b9150612aec82612a85565b604082019050919050565b60006020820190508181036000830152612b1081612ad4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7360228361241a565b9150612b7e82612b17565b604082019050919050565b60006020820190508181036000830152612ba281612b66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c0560258361241a565b9150612c1082612ba9565b604082019050919050565b60006020820190508181036000830152612c3481612bf8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c9760238361241a565b9150612ca282612c3b565b604082019050919050565b60006020820190508181036000830152612cc681612c8a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d2960298361241a565b9150612d3482612ccd565b604082019050919050565b60006020820190508181036000830152612d5881612d1c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612dbb603f8361241a565b9150612dc682612d5f565b604082019050919050565b60006020820190508181036000830152612dea81612dae565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612e27601c8361241a565b9150612e3282612df1565b602082019050919050565b60006020820190508181036000830152612e5681612e1a565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612eb960238361241a565b9150612ec482612e5d565b604082019050919050565b60006020820190508181036000830152612ee881612eac565b9050919050565b6000612efa82612524565b9150612f0583612524565b9250828203905081811115612f1d57612f1c6128ee565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612f7f602a8361241a565b9150612f8a82612f23565b604082019050919050565b60006020820190508181036000830152612fae81612f72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613022816124f8565b92915050565b60006020828403121561303e5761303d6124c1565b5b600061304c84828501613013565b91505092915050565b6000819050919050565b600061307a61307561307084613055565b6125d0565b612524565b9050919050565b61308a8161305f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130c5816124e6565b82525050565b60006130d783836130bc565b60208301905092915050565b6000602082019050919050565b60006130fb82613090565b613105818561309b565b9350613110836130ac565b8060005b8381101561314157815161312888826130cb565b9750613133836130e3565b925050600181019050613114565b5085935050505092915050565b600060a082019050613163600083018861264a565b6131706020830187613081565b818103604083015261318281866130f0565b905061319160608301856126fe565b61319e608083018461264a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006131de601b8361241a565b91506131e9826131a8565b602082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061327060218361241a565b915061327b82613214565b604082019050919050565b6000602082019050818103600083015261329f81613263565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202acca1c2996f80b19a4df2c665875e72db6c664830038197e101c510ec89beee64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a2a957bb1161006f578063a2a957bb14610435578063a9059cbb1461045e578063b70143c91461049b578063dd62ed3e146104c4578063ea1644d514610501578063f2fde38b1461052a5761014b565b8063715018a61461034957806374010ece146103605780637d1db4a5146103895780638da5cb5b146103b45780638f9a55c0146103df57806395d89b411461040a5761014b565b80632fd689e3116101085780632fd689e31461024b578063313ce5671461027657806349bd5a5e146102a15780636d8aa8f8146102cc5780636fc3eaec146102f557806370a082311461030c5761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610553565b604051610172919061249f565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061255a565b610590565b6040516101af91906125b5565b60405180910390f35b3480156101c457600080fd5b506101cd6105ae565b6040516101da919061262f565b60405180910390f35b3480156101ef57600080fd5b506101f86105d4565b6040516102059190612659565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190612674565b6105e4565b60405161024291906125b5565b60405180910390f35b34801561025757600080fd5b506102606106bd565b60405161026d9190612659565b60405180910390f35b34801561028257600080fd5b5061028b6106c3565b60405161029891906126e3565b60405180910390f35b3480156102ad57600080fd5b506102b66106cc565b6040516102c3919061270d565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612754565b6106f2565b005b34801561030157600080fd5b5061030a6107a4565b005b34801561031857600080fd5b50610333600480360381019061032e9190612781565b6107af565b6040516103409190612659565b60405180910390f35b34801561035557600080fd5b5061035e610800565b005b34801561036c57600080fd5b50610387600480360381019061038291906127ae565b610953565b005b34801561039557600080fd5b5061039e610a34565b6040516103ab9190612659565b60405180910390f35b3480156103c057600080fd5b506103c9610a3a565b6040516103d6919061270d565b60405180910390f35b3480156103eb57600080fd5b506103f4610a63565b6040516104019190612659565b60405180910390f35b34801561041657600080fd5b5061041f610a69565b60405161042c919061249f565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127db565b610aa6565b005b34801561046a57600080fd5b506104856004803603810190610480919061255a565b610b94565b60405161049291906125b5565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906127ae565b610bb2565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190612842565b610c7e565b6040516104f89190612659565b60405180910390f35b34801561050d57600080fd5b50610528600480360381019061052391906127ae565b610d05565b005b34801561053657600080fd5b50610551600480360381019061054c9190612781565b610de6565b005b60606040518060400160405280602081526020017f436f7274616e614e61747572616c4c616e677561676547656e65726174696f6e815250905090565b60006105a461059d610fa7565b8484610faf565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006105f1848484611178565b6106b2846105fd610fa7565b6106ad856040518060600160405280602881526020016132a760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610663610fa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119389092919063ffffffff16565b610faf565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106fa610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e906128ce565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b6107ad4761199c565b565b60006107f9600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a08565b9050919050565b610808610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c906128ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61095b610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906128ce565b60405180910390fd5b60648167016345785d8a00006109fe919061291d565b610a08919061298e565b601481905550606467016345785d8a0000610a23919061298e565b6014541015610a3157600080fd5b50565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f434e4c4700000000000000000000000000000000000000000000000000000000815250905090565b610aae610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b32906128ce565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506019600b54600954600a54600854610b6f91906129bf565b610b7991906129bf565b610b8391906129bf565b1115610b8e57600080fd5b50505050565b6000610ba8610ba1610fa7565b8484611178565b6001905092915050565b610bba610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e906128ce565b60405180910390fd5b6000610c52306107af565b9050600060648383610c64919061291d565b610c6e919061298e565b9050610c7981611a76565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d0d610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906128ce565b60405180910390fd5b60648167016345785d8a0000610db0919061291d565b610dba919061298e565b601581905550606467016345785d8a0000610dd5919061298e565b6015541015610de357600080fd5b50565b610dee610fa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e72906128ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612a65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590612af7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490612b89565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161116b9190612659565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90612c1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d90612cad565b60405180910390fd5b60008111611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129090612d3f565b60405180910390fd5b6112a1610a3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130f57506112df610a3a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561163757601360149054906101000a900460ff1661139e57611330610a3a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461139d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139490612dd1565b60405180910390fd5b5b6014548111156113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da90612e3d565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114905760155481611445846107af565b61144f91906129bf565b1061148f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148690612ecf565b60405180910390fd5b5b600061149b306107af565b90506000601654821015905060036016546114b6919061291d565b82106114ce5760036016546114cb919061291d565b91505b8080156114e85750601360159054906101000a900460ff16155b80156115425750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561155a5750601360169054906101000a900460ff165b80156115b05750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116065750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116345761161482611a76565b600047905066b1a2bc2ec50000811115611632576116318161199c565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116de5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117915750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117905750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561179f5760009050611926565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561184a5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561186257600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561190d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561192557600a54600c81905550600b54600d819055505b5b61193284848484611cef565b50505050565b6000838311158290611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977919061249f565b60405180910390fd5b506000838561198f9190612eef565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a04573d6000803e3d6000fd5b5050565b6000600654821115611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612f95565b60405180910390fd5b6000611a59611d1c565b9050611a6e8184611d4790919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611aae57611aad612fb5565b5b604051908082528060200260200182016040528015611adc5781602001602082028036833780820191505090505b5090503081600081518110611af457611af3612fe4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbf9190613028565b81600181518110611bd357611bd2612fe4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c3a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610faf565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c9e95949392919061314e565b600060405180830381600087803b158015611cb857600080fd5b505af1158015611ccc573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611cfd57611cfc611d91565b5b611d08848484611dce565b80611d1657611d15611f99565b5b50505050565b6000806000611d29611fad565b91509150611d408183611d4790919063ffffffff16565b9250505090565b6000611d8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061200c565b905092915050565b6000600c54148015611da557506000600d54145b611dcc57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611de08761206f565b955095509550955095509550611e3e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f1f8161217f565b611f29848361223c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f869190612659565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a00009050611fe167016345785d8a0000600654611d4790919063ffffffff16565b821015611fff5760065467016345785d8a0000935093505050612008565b81819350935050505b9091565b60008083118290612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a919061249f565b60405180910390fd5b5060008385612062919061298e565b9050809150509392505050565b600080600080600080600080600061208c8a600c54600d54612276565b925092509250600061209c611d1c565b905060008060006120af8e87878761230c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061211983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611938565b905092915050565b600080828461213091906129bf565b905083811015612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c906131f4565b60405180910390fd5b8091505092915050565b6000612189611d1c565b905060006121a0828461239590919063ffffffff16565b90506121f481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612251826006546120d790919063ffffffff16565b60068190555061226c8160075461212190919063ffffffff16565b6007819055505050565b6000806000806122a26064612294888a61239590919063ffffffff16565b611d4790919063ffffffff16565b905060006122cc60646122be888b61239590919063ffffffff16565b611d4790919063ffffffff16565b905060006122f5826122e7858c6120d790919063ffffffff16565b6120d790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612325858961239590919063ffffffff16565b9050600061233c868961239590919063ffffffff16565b90506000612353878961239590919063ffffffff16565b9050600061237c8261236e85876120d790919063ffffffff16565b6120d790919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036123a75760009050612409565b600082846123b5919061291d565b90508284826123c4919061298e565b14612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb90613286565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561244957808201518184015260208101905061242e565b60008484015250505050565b6000601f19601f8301169050919050565b60006124718261240f565b61247b818561241a565b935061248b81856020860161242b565b61249481612455565b840191505092915050565b600060208201905081810360008301526124b98184612466565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124f1826124c6565b9050919050565b612501816124e6565b811461250c57600080fd5b50565b60008135905061251e816124f8565b92915050565b6000819050919050565b61253781612524565b811461254257600080fd5b50565b6000813590506125548161252e565b92915050565b60008060408385031215612571576125706124c1565b5b600061257f8582860161250f565b925050602061259085828601612545565b9150509250929050565b60008115159050919050565b6125af8161259a565b82525050565b60006020820190506125ca60008301846125a6565b92915050565b6000819050919050565b60006125f56125f06125eb846124c6565b6125d0565b6124c6565b9050919050565b6000612607826125da565b9050919050565b6000612619826125fc565b9050919050565b6126298161260e565b82525050565b60006020820190506126446000830184612620565b92915050565b61265381612524565b82525050565b600060208201905061266e600083018461264a565b92915050565b60008060006060848603121561268d5761268c6124c1565b5b600061269b8682870161250f565b93505060206126ac8682870161250f565b92505060406126bd86828701612545565b9150509250925092565b600060ff82169050919050565b6126dd816126c7565b82525050565b60006020820190506126f860008301846126d4565b92915050565b612707816124e6565b82525050565b600060208201905061272260008301846126fe565b92915050565b6127318161259a565b811461273c57600080fd5b50565b60008135905061274e81612728565b92915050565b60006020828403121561276a576127696124c1565b5b60006127788482850161273f565b91505092915050565b600060208284031215612797576127966124c1565b5b60006127a58482850161250f565b91505092915050565b6000602082840312156127c4576127c36124c1565b5b60006127d284828501612545565b91505092915050565b600080600080608085870312156127f5576127f46124c1565b5b600061280387828801612545565b945050602061281487828801612545565b935050604061282587828801612545565b925050606061283687828801612545565b91505092959194509250565b60008060408385031215612859576128586124c1565b5b60006128678582860161250f565b92505060206128788582860161250f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128b860208361241a565b91506128c382612882565b602082019050919050565b600060208201905081810360008301526128e7816128ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292882612524565b915061293383612524565b925082820261294181612524565b91508282048414831517612958576129576128ee565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299982612524565b91506129a483612524565b9250826129b4576129b361295f565b5b828204905092915050565b60006129ca82612524565b91506129d583612524565b92508282019050808211156129ed576129ec6128ee565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a4f60268361241a565b9150612a5a826129f3565b604082019050919050565b60006020820190508181036000830152612a7e81612a42565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ae160248361241a565b9150612aec82612a85565b604082019050919050565b60006020820190508181036000830152612b1081612ad4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7360228361241a565b9150612b7e82612b17565b604082019050919050565b60006020820190508181036000830152612ba281612b66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c0560258361241a565b9150612c1082612ba9565b604082019050919050565b60006020820190508181036000830152612c3481612bf8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c9760238361241a565b9150612ca282612c3b565b604082019050919050565b60006020820190508181036000830152612cc681612c8a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d2960298361241a565b9150612d3482612ccd565b604082019050919050565b60006020820190508181036000830152612d5881612d1c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612dbb603f8361241a565b9150612dc682612d5f565b604082019050919050565b60006020820190508181036000830152612dea81612dae565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612e27601c8361241a565b9150612e3282612df1565b602082019050919050565b60006020820190508181036000830152612e5681612e1a565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612eb960238361241a565b9150612ec482612e5d565b604082019050919050565b60006020820190508181036000830152612ee881612eac565b9050919050565b6000612efa82612524565b9150612f0583612524565b9250828203905081811115612f1d57612f1c6128ee565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612f7f602a8361241a565b9150612f8a82612f23565b604082019050919050565b60006020820190508181036000830152612fae81612f72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613022816124f8565b92915050565b60006020828403121561303e5761303d6124c1565b5b600061304c84828501613013565b91505092915050565b6000819050919050565b600061307a61307561307084613055565b6125d0565b612524565b9050919050565b61308a8161305f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130c5816124e6565b82525050565b60006130d783836130bc565b60208301905092915050565b6000602082019050919050565b60006130fb82613090565b613105818561309b565b9350613110836130ac565b8060005b8381101561314157815161312888826130cb565b9750613133836130e3565b925050600181019050613114565b5085935050505092915050565b600060a082019050613163600083018861264a565b6131706020830187613081565b818103604083015261318281866130f0565b905061319160608301856126fe565b61319e608083018461264a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006131de601b8361241a565b91506131e9826131a8565b602082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061327060218361241a565b915061327b82613214565b604082019050919050565b6000602082019050818103600083015261329f81613263565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202acca1c2996f80b19a4df2c665875e72db6c664830038197e101c510ec89beee64736f6c63430008130033

Deployed Bytecode Sourcemap

4462:12503:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6828:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7753:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5741:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7105:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7954:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6034:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7014:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5789:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12682:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12348:85;;;;;;;;;;;;;:::i;:::-;;7208:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1949:148;;;;;;;;;;;;;:::i;:::-;;16606:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5938:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1735:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5982:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6919:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16192:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7354:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12441:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7561:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16782:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2105:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6828:83;6865:13;6898:5;;;;;;;;;;;;;;;;;6891:12;;6828:83;:::o;7753:193::-;7855:4;7877:39;7886:12;:10;:12::i;:::-;7900:7;7909:6;7877:8;:39::i;:::-;7934:4;7927:11;;7753:193;;;;:::o;5741:41::-;;;;;;;;;;;;;:::o;7105:95::-;7158:7;5035:17;7178:14;;7105:95;:::o;7954:446::-;8086:4;8103:36;8113:6;8121:9;8132:6;8103:9;:36::i;:::-;8150:220;8173:6;8194:12;:10;:12::i;:::-;8221:138;8277:6;8221:138;;;;;;;;;;;;;;;;;:11;:19;8233:6;8221:19;;;;;;;;;;;;;;;:33;8241:12;:10;:12::i;:::-;8221:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8150:8;:220::i;:::-;8388:4;8381:11;;7954:446;;;;;:::o;6034:49::-;;;;:::o;7014:83::-;7055:5;4709:1;7073:16;;7014:83;:::o;5789:28::-;;;;;;;;;;;;;:::o;12682:104::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:12:::1;12752:11;;:26;;;;;;;;;;;;;;;;;;12682:104:::0;:::o;12348:85::-;12390:35;12403:21;12390:12;:35::i;:::-;12348:85::o;7208:138::-;7274:7;7301:37;7321:7;:16;7329:7;7321:16;;;;;;;;;;;;;;;;7301:19;:37::i;:::-;7294:44;;7208:138;;;:::o;1949:148::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2056:1:::1;2019:40;;2040:6;::::0;::::1;;;;;;;;2019:40;;;;;;;;;;;;2087:1;2070:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1949:148::o:0;16606:168::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16715:3:::1;16703:11;5035:17;16695:19;;;;:::i;:::-;:23;;;;:::i;:::-;16680:12;:38;;;;16762:3;5035:17;16754:11;;;;:::i;:::-;16738:12;;:27;;16729:37;;;::::0;::::1;;16606:168:::0;:::o;5938:37::-;;;;:::o;1735:79::-;1773:7;1800:6;;;;;;;;;;;1793:13;;1735:79;:::o;5982:45::-;;;;:::o;6919:87::-;6958:13;6991:7;;;;;;;;;;;;;;;;;6984:14;;6919:87;:::o;16192:375::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16343:13:::1;16326:14;:30;;;;16385:14;16367:15;:32;;;;16425:11;16410:12;:26;;;;16463:12;16447:13;:28;;;;16556:2;16539:13;;16526:12;;16510:15;;16495:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16486:73;;;::::0;::::1;;16192:375:::0;;;;:::o;7354:199::-;7459:4;7481:42;7491:12;:10;:12::i;:::-;7505:9;7516:6;7481:9;:42::i;:::-;7541:4;7534:11;;7354:199;;;;:::o;12441:233::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12508:28:::1;12539:24;12557:4;12539:9;:24::i;:::-;12508:55;;12574:18;12624:3;12616:7;12595:20;:28;;;;:::i;:::-;:32;;;;:::i;:::-;12574:53;;12638:28;12655:10;12638:16;:28::i;:::-;12497:177;;12441:233:::0;:::o;7561:184::-;7678:7;7710:11;:18;7722:5;7710:18;;;;;;;;;;;;;;;:27;7729:7;7710:27;;;;;;;;;;;;;;;;7703:34;;7561:184;;;;:::o;16782:178::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16898:3:::1;16884:13;5035:17;16876:21;;;;:::i;:::-;:25;;;;:::i;:::-;16859:14;:42;;;;16948:3;5035:17;16940:11;;;;:::i;:::-;16922:14;;:29;;16913:39;;;::::0;::::1;;16782:178:::0;:::o;2105:244::-;1872:12;:10;:12::i;:::-;1862:22;;:6;;;;;;;;;;:22;;;1854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2214:1:::1;2194:22;;:8;:22;;::::0;2186:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:8;2275:38;;2296:6;::::0;::::1;;;;;;;;2275:38;;;;;;;;;;;;2333:8;2324:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2105:244:::0;:::o;494:98::-;547:7;574:10;567:17;;494:98;:::o;9091:369::-;9235:1;9218:19;;:5;:19;;;9210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9316:1;9297:21;;:7;:21;;;9289:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9398:6;9368:11;:18;9380:5;9368:18;;;;;;;;;;;;;;;:27;9387:7;9368:27;;;;;;;;;;;;;;;:36;;;;9436:7;9420:32;;9429:5;9420:32;;;9445:6;9420:32;;;;;;:::i;:::-;;;;;;;;9091:369;;;:::o;9468:2274::-;9606:1;9590:18;;:4;:18;;;9582:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9683:1;9669:16;;:2;:16;;;9661:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9753:1;9744:6;:10;9736:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9825:7;:5;:7::i;:::-;9817:15;;:4;:15;;;;:32;;;;;9842:7;:5;:7::i;:::-;9836:13;;:2;:13;;;;9817:32;9813:1203;;;9906:11;;;;;;;;;;;9901:144;;9954:7;:5;:7::i;:::-;9946:15;;:4;:15;;;9938:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9901:144;10079:12;;10069:6;:22;;10061:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10150:13;;;;;;;;;;;10144:19;;:2;:19;;;10141:146;;10217:14;;10208:6;10192:13;10202:2;10192:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10184:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10141:146;10303:28;10334:24;10352:4;10334:9;:24::i;:::-;10303:55;;10373:12;10412:19;;10388:20;:43;;10373:58;;10495:1;10475:19;;:21;;;;:::i;:::-;10451:20;:45;10448:142;;10573:1;10553:19;;:21;;;;:::i;:::-;10530:44;;10448:142;10610:7;:18;;;;;10622:6;;;;;;;;;;;10621:7;10610:18;:43;;;;;10640:13;;;;;;;;;;;10632:21;;:4;:21;;;;10610:43;:58;;;;;10657:11;;;;;;;;;;;10610:58;:87;;;;;10673:18;:24;10692:4;10673:24;;;;;;;;;;;;;;;;;;;;;;;;;10672:25;10610:87;:114;;;;;10702:18;:22;10721:2;10702:22;;;;;;;;;;;;;;;;;;;;;;;;;10701:23;10610:114;10606:399;;;10745:38;10762:20;10745:16;:38::i;:::-;10802:26;10831:21;10802:50;;10896:17;10875:18;:38;10871:119;;;10938:32;10951:18;10938:12;:32::i;:::-;10871:119;10726:279;10606:399;9851:1165;;9813:1203;11028:12;11043:4;11028:19;;11092:18;:24;11111:4;11092:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11120:18;:22;11139:2;11120:22;;;;;;;;;;;;;;;;;;;;;;;;;11092:50;11091:102;;;;11156:13;;;;;;;;;;;11148:21;;:4;:21;;;;:44;;;;;11179:13;;;;;;;;;;;11173:19;;:2;:19;;;;11148:44;11091:102;11087:594;;;11220:5;11210:15;;11087:594;;;11303:13;;;;;;;;;;;11295:21;;:4;:21;;;:55;;;;;11334:15;;;;;;;;;;;11320:30;;:2;:30;;;;11295:55;11292:162;;;11383:14;;11371:9;:26;;;;11426:12;;11416:7;:22;;;;11292:162;11513:13;;;;;;;;;;;11507:19;;:2;:19;;;:55;;;;;11546:15;;;;;;;;;;;11530:32;;:4;:32;;;;11507:55;11503:165;;;11595:15;;11583:9;:27;;;;11639:13;;11629:7;:23;;;;11503:165;11087:594;11693:41;11708:4;11714:2;11718:6;11726:7;11693:14;:41::i;:::-;9571:2171;9468:2274;;;:::o;2713:224::-;2833:7;2866:1;2861;:6;;2869:12;2853:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2893:9;2909:1;2905;:5;;;;:::i;:::-;2893:17;;2928:1;2921:8;;;2713:224;;;;;:::o;12241:99::-;12298:17;;;;;;;;;;;:26;;:34;12325:6;12298:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12241:99;:::o;8408:323::-;8503:7;8561;;8550;:18;;8528:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8649:19;8671:10;:8;:10::i;:::-;8649:32;;8699:24;8711:11;8699:7;:11;;:24;;;;:::i;:::-;8692:31;;;8408:323;;;:::o;11750:483::-;6186:4;6177:6;;:13;;;;;;;;;;;;;;;;;;11828:21:::1;11866:1;11852:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11828:40;;11897:4;11879;11884:1;11879:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11923:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11913:4;11918:1;11913:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11956:62;11973:4;11988:15;;;;;;;;;;;12006:11;11956:8;:62::i;:::-;12029:15;;;;;;;;;;;:66;;;12110:11;12136:1;12152:4;12179;12199:15;12029:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11817:416;6222:5:::0;6213:6;;:14;;;;;;;;;;;;;;;;;;11750:483;:::o;12794:282::-;12950:7;12945:28;;12959:14;:12;:14::i;:::-;12945:28;12984:44;13002:6;13010:9;13021:6;12984:17;:44::i;:::-;13044:7;13039:29;;13053:15;:13;:15::i;:::-;13039:29;12794:282;;;;:::o;15755:164::-;15797:7;15818:15;15835;15854:19;:17;:19::i;:::-;15817:56;;;;15891:20;15903:7;15891;:11;;:20;;;;:::i;:::-;15884:27;;;;15755:164;:::o;3199:132::-;3257:7;3284:39;3288:1;3291;3284:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3277:46;;3199:132;;;;:::o;8739:219::-;8799:1;8786:9;;:14;:30;;;;;8815:1;8804:7;;:12;8786:30;8818:7;8782:43;8857:9;;8837:17;:29;;;;8895:7;;8877:15;:25;;;;8927:1;8915:9;:13;;;;8949:1;8939:7;:11;;;;8739:219;:::o;13084:610::-;13231:15;13261:23;13299:12;13326:23;13364:12;13391:13;13418:19;13429:7;13418:10;:19::i;:::-;13216:221;;;;;;;;;;;;13466:28;13486:7;13466;:15;13474:6;13466:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13448:7;:15;13456:6;13448:15;;;;;;;;;;;;;;;:46;;;;13526:39;13549:15;13526:7;:18;13534:9;13526:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13505:7;:18;13513:9;13505:18;;;;;;;;;;;;;;;:60;;;;13576:16;13586:5;13576:9;:16::i;:::-;13603:23;13615:4;13621;13603:11;:23::i;:::-;13659:9;13642:44;;13651:6;13642:44;;;13670:15;13642:44;;;;;;:::i;:::-;;;;;;;;13205:489;;;;;;13084:610;;;:::o;8966:117::-;9022:17;;9010:9;:29;;;;9060:15;;9050:7;:25;;;;8966:117::o;15927:257::-;15978:7;15987;16007:15;16025:7;;16007:25;;16043:15;5035:17;16043:25;;16093:20;5035:17;16093:7;;:11;;:20;;;;:::i;:::-;16083:7;:30;16079:61;;;16123:7;;5035:17;16115:25;;;;;;;;16079:61;16159:7;16168;16151:25;;;;;;15927:257;;;:::o;3339:223::-;3459:7;3491:1;3487;:5;3494:12;3479:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3518:9;3534:1;3530;:5;;;;:::i;:::-;3518:17;;3553:1;3546:8;;;3339:223;;;;;:::o;14113:615::-;14213:7;14235;14257;14279;14301;14323;14359:23;14384:12;14398:13;14428:40;14440:7;14449:9;;14460:7;;14428:11;:40::i;:::-;14358:110;;;;;;14479:19;14501:10;:8;:10::i;:::-;14479:32;;14523:15;14540:23;14565:12;14594:46;14606:7;14615:4;14621:5;14628:11;14594;:46::i;:::-;14522:118;;;;;;14659:7;14668:15;14685:4;14691:15;14708:4;14714:5;14651:69;;;;;;;;;;;;;;;;;;;14113:615;;;;;;;:::o;2569:136::-;2627:7;2654:43;2658:1;2661;2654:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2647:50;;2569:136;;;;:::o;2382:179::-;2440:7;2460:9;2476:1;2472;:5;;;;:::i;:::-;2460:17;;2501:1;2496;:6;;2488:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2552:1;2545:8;;;2382:179;;;;:::o;13702:211::-;13755:19;13777:10;:8;:10::i;:::-;13755:32;;13798:13;13814:22;13824:11;13814:5;:9;;:22;;;;:::i;:::-;13798:38;;13872:33;13899:5;13872:7;:22;13888:4;13872:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13847:7;:22;13863:4;13847:22;;;;;;;;;;;;;;;:58;;;;13744:169;;13702:211;:::o;13921:147::-;13999:17;14011:4;13999:7;;:11;;:17;;;;:::i;:::-;13989:7;:27;;;;14040:20;14055:4;14040:10;;:14;;:20;;;;:::i;:::-;14027:10;:33;;;;13921:147;;:::o;14736:469::-;14905:7;14927;14949;14984:12;14999:30;15025:3;14999:21;15011:8;14999:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14984:45;;15040:13;15056:28;15080:3;15056:19;15068:6;15056:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15040:44;;15095:23;15121:28;15143:5;15121:17;15133:4;15121:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15095:54;;15168:15;15185:4;15191:5;15160:37;;;;;;;;;14736:469;;;;;;;:::o;15213:534::-;15407:7;15429;15451;15486:15;15504:24;15516:11;15504:7;:11;;:24;;;;:::i;:::-;15486:42;;15539:12;15554:21;15563:11;15554:4;:8;;:21;;;;:::i;:::-;15539:36;;15586:13;15602:22;15612:11;15602:5;:9;;:22;;;;:::i;:::-;15586:38;;15635:23;15661:28;15683:5;15661:17;15673:4;15661:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15635:54;;15708:7;15717:15;15734:4;15700:39;;;;;;;;;;15213:534;;;;;;;;:::o;2945:246::-;3003:7;3032:1;3027;:6;3023:47;;3057:1;3050:8;;;;3023:47;3080:9;3096:1;3092;:5;;;;:::i;:::-;3080:17;;3125:1;3120;3116;:5;;;;:::i;:::-;:10;3108:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3182:1;3175:8;;;2945: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::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:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:180::-;9722:77;9719:1;9712:88;9819:4;9816:1;9809:15;9843:4;9840:1;9833:15;9860:410;9900:7;9923:20;9941:1;9923:20;:::i;:::-;9918:25;;9957:20;9975:1;9957:20;:::i;:::-;9952:25;;10012:1;10009;10005:9;10034:30;10052:11;10034:30;:::i;:::-;10023:41;;10213:1;10204:7;10200:15;10197:1;10194:22;10174:1;10167:9;10147:83;10124:139;;10243:18;;:::i;:::-;10124:139;9908:362;9860:410;;;;:::o;10276:180::-;10324:77;10321:1;10314:88;10421:4;10418:1;10411:15;10445:4;10442:1;10435:15;10462:185;10502:1;10519:20;10537:1;10519:20;:::i;:::-;10514:25;;10553:20;10571:1;10553:20;:::i;:::-;10548:25;;10592:1;10582:35;;10597:18;;:::i;:::-;10582:35;10639:1;10636;10632:9;10627:14;;10462:185;;;;:::o;10653:191::-;10693:3;10712:20;10730:1;10712:20;:::i;:::-;10707:25;;10746:20;10764:1;10746:20;:::i;:::-;10741:25;;10789:1;10786;10782:9;10775:16;;10810:3;10807:1;10804:10;10801:36;;;10817:18;;:::i;:::-;10801:36;10653:191;;;;:::o;10850:225::-;10990:34;10986:1;10978:6;10974:14;10967:58;11059:8;11054:2;11046:6;11042:15;11035:33;10850:225;:::o;11081:366::-;11223:3;11244:67;11308:2;11303:3;11244:67;:::i;:::-;11237:74;;11320:93;11409:3;11320:93;:::i;:::-;11438:2;11433:3;11429:12;11422:19;;11081:366;;;:::o;11453:419::-;11619:4;11657:2;11646:9;11642:18;11634:26;;11706:9;11700:4;11696:20;11692:1;11681:9;11677:17;11670:47;11734:131;11860:4;11734:131;:::i;:::-;11726:139;;11453:419;;;:::o;11878:223::-;12018:34;12014:1;12006:6;12002:14;11995:58;12087:6;12082:2;12074:6;12070:15;12063:31;11878:223;:::o;12107:366::-;12249:3;12270:67;12334:2;12329:3;12270:67;:::i;:::-;12263:74;;12346:93;12435:3;12346:93;:::i;:::-;12464:2;12459:3;12455:12;12448:19;;12107:366;;;:::o;12479:419::-;12645:4;12683:2;12672:9;12668:18;12660:26;;12732:9;12726:4;12722:20;12718:1;12707:9;12703:17;12696:47;12760:131;12886:4;12760:131;:::i;:::-;12752:139;;12479:419;;;:::o;12904:221::-;13044:34;13040:1;13032:6;13028:14;13021:58;13113:4;13108:2;13100:6;13096:15;13089:29;12904:221;:::o;13131:366::-;13273:3;13294:67;13358:2;13353:3;13294:67;:::i;:::-;13287:74;;13370:93;13459:3;13370:93;:::i;:::-;13488:2;13483:3;13479:12;13472:19;;13131:366;;;:::o;13503:419::-;13669:4;13707:2;13696:9;13692:18;13684:26;;13756:9;13750:4;13746:20;13742:1;13731:9;13727:17;13720:47;13784:131;13910:4;13784:131;:::i;:::-;13776:139;;13503:419;;;:::o;13928:224::-;14068:34;14064:1;14056:6;14052:14;14045:58;14137:7;14132:2;14124:6;14120:15;14113:32;13928:224;:::o;14158:366::-;14300:3;14321:67;14385:2;14380:3;14321:67;:::i;:::-;14314:74;;14397:93;14486:3;14397:93;:::i;:::-;14515:2;14510:3;14506:12;14499:19;;14158:366;;;:::o;14530:419::-;14696:4;14734:2;14723:9;14719:18;14711:26;;14783:9;14777:4;14773:20;14769:1;14758:9;14754:17;14747:47;14811:131;14937:4;14811:131;:::i;:::-;14803:139;;14530:419;;;:::o;14955:222::-;15095:34;15091:1;15083:6;15079:14;15072:58;15164:5;15159:2;15151:6;15147:15;15140:30;14955:222;:::o;15183:366::-;15325:3;15346:67;15410:2;15405:3;15346:67;:::i;:::-;15339:74;;15422:93;15511:3;15422:93;:::i;:::-;15540:2;15535:3;15531:12;15524:19;;15183:366;;;:::o;15555:419::-;15721:4;15759:2;15748:9;15744:18;15736:26;;15808:9;15802:4;15798:20;15794:1;15783:9;15779:17;15772:47;15836:131;15962:4;15836:131;:::i;:::-;15828:139;;15555:419;;;:::o;15980:228::-;16120:34;16116:1;16108:6;16104:14;16097:58;16189:11;16184:2;16176:6;16172:15;16165:36;15980:228;:::o;16214:366::-;16356:3;16377:67;16441:2;16436:3;16377:67;:::i;:::-;16370:74;;16453:93;16542:3;16453:93;:::i;:::-;16571:2;16566:3;16562:12;16555:19;;16214:366;;;:::o;16586:419::-;16752:4;16790:2;16779:9;16775:18;16767:26;;16839:9;16833:4;16829:20;16825:1;16814:9;16810:17;16803:47;16867:131;16993:4;16867:131;:::i;:::-;16859:139;;16586:419;;;:::o;17011:250::-;17151:34;17147:1;17139:6;17135:14;17128:58;17220:33;17215:2;17207:6;17203:15;17196:58;17011:250;:::o;17267:366::-;17409:3;17430:67;17494:2;17489:3;17430:67;:::i;:::-;17423:74;;17506:93;17595:3;17506:93;:::i;:::-;17624:2;17619:3;17615:12;17608:19;;17267:366;;;:::o;17639:419::-;17805:4;17843:2;17832:9;17828:18;17820:26;;17892:9;17886:4;17882:20;17878:1;17867:9;17863:17;17856:47;17920:131;18046:4;17920:131;:::i;:::-;17912:139;;17639:419;;;:::o;18064:178::-;18204:30;18200:1;18192:6;18188:14;18181:54;18064:178;:::o;18248:366::-;18390:3;18411:67;18475:2;18470:3;18411:67;:::i;:::-;18404:74;;18487:93;18576:3;18487:93;:::i;:::-;18605:2;18600:3;18596:12;18589:19;;18248:366;;;:::o;18620:419::-;18786:4;18824:2;18813:9;18809:18;18801:26;;18873:9;18867:4;18863:20;18859:1;18848:9;18844:17;18837:47;18901:131;19027:4;18901:131;:::i;:::-;18893:139;;18620:419;;;:::o;19045:222::-;19185:34;19181:1;19173:6;19169:14;19162:58;19254:5;19249:2;19241:6;19237:15;19230:30;19045:222;:::o;19273:366::-;19415:3;19436:67;19500:2;19495:3;19436:67;:::i;:::-;19429:74;;19512:93;19601:3;19512:93;:::i;:::-;19630:2;19625:3;19621:12;19614:19;;19273:366;;;:::o;19645:419::-;19811:4;19849:2;19838:9;19834:18;19826:26;;19898:9;19892:4;19888:20;19884:1;19873:9;19869:17;19862:47;19926:131;20052:4;19926:131;:::i;:::-;19918:139;;19645:419;;;:::o;20070:194::-;20110:4;20130:20;20148:1;20130:20;:::i;:::-;20125:25;;20164:20;20182:1;20164:20;:::i;:::-;20159:25;;20208:1;20205;20201:9;20193:17;;20232:1;20226:4;20223:11;20220:37;;;20237:18;;:::i;:::-;20220:37;20070:194;;;;:::o;20270:229::-;20410:34;20406:1;20398:6;20394:14;20387:58;20479:12;20474:2;20466:6;20462:15;20455:37;20270:229;:::o;20505:366::-;20647:3;20668:67;20732:2;20727:3;20668:67;:::i;:::-;20661:74;;20744:93;20833:3;20744:93;:::i;:::-;20862:2;20857:3;20853:12;20846:19;;20505:366;;;:::o;20877:419::-;21043:4;21081:2;21070:9;21066:18;21058:26;;21130:9;21124:4;21120:20;21116:1;21105:9;21101:17;21094:47;21158:131;21284:4;21158:131;:::i;:::-;21150:139;;20877:419;;;:::o;21302:180::-;21350:77;21347:1;21340:88;21447:4;21444:1;21437:15;21471:4;21468:1;21461:15;21488:180;21536:77;21533:1;21526:88;21633:4;21630:1;21623:15;21657:4;21654:1;21647:15;21674:143;21731:5;21762:6;21756:13;21747:22;;21778:33;21805:5;21778:33;:::i;:::-;21674:143;;;;:::o;21823:351::-;21893:6;21942:2;21930:9;21921:7;21917:23;21913:32;21910:119;;;21948:79;;:::i;:::-;21910:119;22068:1;22093:64;22149:7;22140:6;22129:9;22125:22;22093:64;:::i;:::-;22083:74;;22039:128;21823:351;;;;:::o;22180:85::-;22225:7;22254:5;22243:16;;22180:85;;;:::o;22271:158::-;22329:9;22362:61;22380:42;22389:32;22415:5;22389:32;:::i;:::-;22380:42;:::i;:::-;22362:61;:::i;:::-;22349:74;;22271:158;;;:::o;22435:147::-;22530:45;22569:5;22530:45;:::i;:::-;22525:3;22518:58;22435:147;;:::o;22588:114::-;22655:6;22689:5;22683:12;22673:22;;22588:114;;;:::o;22708:184::-;22807:11;22841:6;22836:3;22829:19;22881:4;22876:3;22872:14;22857:29;;22708:184;;;;:::o;22898:132::-;22965:4;22988:3;22980:11;;23018:4;23013:3;23009:14;23001:22;;22898:132;;;:::o;23036:108::-;23113:24;23131:5;23113:24;:::i;:::-;23108:3;23101:37;23036:108;;:::o;23150:179::-;23219:10;23240:46;23282:3;23274:6;23240:46;:::i;:::-;23318:4;23313:3;23309:14;23295:28;;23150:179;;;;:::o;23335:113::-;23405:4;23437;23432:3;23428:14;23420:22;;23335:113;;;:::o;23484:732::-;23603:3;23632:54;23680:5;23632:54;:::i;:::-;23702:86;23781:6;23776:3;23702:86;:::i;:::-;23695:93;;23812:56;23862:5;23812:56;:::i;:::-;23891:7;23922:1;23907:284;23932:6;23929:1;23926:13;23907:284;;;24008:6;24002:13;24035:63;24094:3;24079:13;24035:63;:::i;:::-;24028:70;;24121:60;24174:6;24121:60;:::i;:::-;24111:70;;23967:224;23954:1;23951;23947:9;23942:14;;23907:284;;;23911:14;24207:3;24200:10;;23608:608;;;23484:732;;;;:::o;24222:831::-;24485:4;24523:3;24512:9;24508:19;24500:27;;24537:71;24605:1;24594:9;24590:17;24581:6;24537:71;:::i;:::-;24618:80;24694:2;24683:9;24679:18;24670:6;24618:80;:::i;:::-;24745:9;24739:4;24735:20;24730:2;24719:9;24715:18;24708:48;24773:108;24876:4;24867:6;24773:108;:::i;:::-;24765:116;;24891:72;24959:2;24948:9;24944:18;24935:6;24891:72;:::i;:::-;24973:73;25041:3;25030:9;25026:19;25017:6;24973:73;:::i;:::-;24222:831;;;;;;;;:::o;25059:177::-;25199:29;25195:1;25187:6;25183:14;25176:53;25059:177;:::o;25242:366::-;25384:3;25405:67;25469:2;25464:3;25405:67;:::i;:::-;25398:74;;25481:93;25570:3;25481:93;:::i;:::-;25599:2;25594:3;25590:12;25583:19;;25242:366;;;:::o;25614:419::-;25780:4;25818:2;25807:9;25803:18;25795:26;;25867:9;25861:4;25857:20;25853:1;25842:9;25838:17;25831:47;25895:131;26021:4;25895:131;:::i;:::-;25887:139;;25614:419;;;:::o;26039:220::-;26179:34;26175:1;26167:6;26163:14;26156:58;26248:3;26243:2;26235:6;26231:15;26224:28;26039:220;:::o;26265:366::-;26407:3;26428:67;26492:2;26487:3;26428:67;:::i;:::-;26421:74;;26504:93;26593:3;26504:93;:::i;:::-;26622:2;26617:3;26613:12;26606:19;;26265:366;;;:::o;26637:419::-;26803:4;26841:2;26830:9;26826:18;26818:26;;26890:9;26884:4;26880:20;26876:1;26865:9;26861:17;26854:47;26918:131;27044:4;26918:131;:::i;:::-;26910:139;;26637:419;;;:::o

Swarm Source

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