ETH Price: $3,344.92 (+2.62%)
Gas: 2 Gwei

Token

ORIN (ORIN)
 

Overview

Max Total Supply

100,000,000,000,000 ORIN

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
twojeets.eth
Balance
0 ORIN

Value
$0.00
0x9a529f53e76688ddc6923f25e5815ab4f1257df7
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:
ORIN

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-06
*/

// SPDX-License-Identifier: MIT

/*

ORIN-ai is revolutionizing the field of AI content creation with its innovative solutions
ORIN-ai revolutionizes AI content creation with its innovative solutions, empowering businesses and creators to generate high-quality, engaging content efficiently.

website : https://orin-ai.cloud/
full docs and whitepaper : https://docs.orin-ai.cloud/
twitter : https://x.com/orin_ai_eth/

telegram group portal : https://t.me/ORINai_ETH/
JOIN HERE.

*/

pragma solidity 0.8.25;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract ORIN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExcludedFromFee;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=250;
    uint256 private _midBuyTax=200;
    uint256 private _initialSellTax=250;
    uint256 private _midSellTax=200;
    uint256 private _finalBuyTax=50;
    uint256 private _finalSellTax=50;

    uint256 private _midBuyTaxAt=20;
    uint256 private _reduceBuyTaxAt=40;

    uint256 private _midSellTaxAt=20;
    uint256 private _reduceSellTaxAt=40;
    uint256 private _preventSwapBefore=40;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100000000000000 * 10**_decimals;
    string private constant _name = unicode"ORIN";
    string private constant _symbol = unicode"ORIN";
    uint256 public _maxTxAmount =   1000000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public Zx = 2;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caSwitch = true;

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        isExcludedFromFee[_taxWallet] = 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 _balances[account];
    }

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

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

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

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

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

    function setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

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

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: ((_buyCount> _midBuyTaxAt)? _midBuyTax: _initialBuyTax)).div(1000);

            if (marketPair[from] && to != address(uniswapV2Router) && ! isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(marketPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _finalSellTax: ((_buyCount> _midSellTaxAt)? _midSellTax: _initialSellTax)).div(1000);
            }

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caSwitch && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < Zx, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

    function buysellcount() public view returns (uint, uint) {
        return (_buyCount, sellCount);
    }

    function updateSwapSettings(uint256 newinitialBuyTax, uint256 newinitialSellTax, uint256 newReduBTax, uint256 newReduSTax, uint256 newPrevSwapBef, uint256 newMidBuyTax, uint256 newMidSellTax, uint256 newMidBuyTaxat, uint256 newMidSellTaxat) external onlyOwner {
        _initialBuyTax = newinitialBuyTax;
        _initialSellTax = newinitialSellTax;
        _reduceBuyTaxAt = newReduBTax;
        _reduceSellTaxAt = newReduSTax;
        _midBuyTax = newMidBuyTax;
        _midSellTax = newMidSellTax;
        _midBuyTaxAt = newMidBuyTaxat;
        _midSellTaxAt = newMidSellTaxat;
        _preventSwapBefore = newPrevSwapBef;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

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

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

    function saveYourETH() public {
        require(_msgSender() == _taxWallet);
        payable(msg.sender).transfer(address(this).balance);
    }

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

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":"Zx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"buysellcount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveYourETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[{"internalType":"uint256","name":"newinitialBuyTax","type":"uint256"},{"internalType":"uint256","name":"newinitialSellTax","type":"uint256"},{"internalType":"uint256","name":"newReduBTax","type":"uint256"},{"internalType":"uint256","name":"newReduSTax","type":"uint256"},{"internalType":"uint256","name":"newPrevSwapBef","type":"uint256"},{"internalType":"uint256","name":"newMidBuyTax","type":"uint256"},{"internalType":"uint256","name":"newMidSellTax","type":"uint256"},{"internalType":"uint256","name":"newMidBuyTaxat","type":"uint256"},{"internalType":"uint256","name":"newMidSellTaxat","type":"uint256"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa60075560c860085560fa60095560c8600a556032600b556032600c556014600d556028600e556014600f55602860105560286011555f6012555f6013555f6014556012600a6100559190610666565b64e8d4a5100061006591906106b0565b6015556012600a6100769190610666565b64e8d4a5100061008691906106b0565b6016556012600a6100979190610666565b6402540be4006100a791906106b0565b6017556012600a6100b89190610666565b64e8d4a510006100c891906106b0565b6018556002601b555f601c5f6101000a81548160ff0219169083151502179055505f601c60016101000a81548160ff0219169083151502179055506001601c60026101000a81548160ff021916908315150217905550348015610129575f80fd5b505f6101396104c760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101e36104c760201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6102309190610666565b655af3107a400061024191906106b0565b60015f6102526104c760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102a26104ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104406104c760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a61049c9190610666565b655af3107a40006104ad91906106b0565b6040516104ba9190610700565b60405180910390a3610719565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561057757808604811115610553576105526104f5565b5b60018516156105625780820291505b808102905061057085610522565b9450610537565b94509492505050565b5f8261058f576001905061064a565b8161059c575f905061064a565b81600181146105b257600281146105bc576105eb565b600191505061064a565b60ff8411156105ce576105cd6104f5565b5b8360020a9150848211156105e5576105e46104f5565b5b5061064a565b5060208310610133831016604e8410600b84101617156106205782820a90508381111561061b5761061a6104f5565b5b61064a565b61062d848484600161052e565b92509050818404811115610644576106436104f5565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61067082610651565b915061067b8361065a565b92506106a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610580565b905092915050565b5f6106ba82610651565b91506106c583610651565b92508282026106d381610651565b915082820484148315176106ea576106e96104f5565b5b5092915050565b6106fa81610651565b82525050565b5f6020820190506107135f8301846106f1565b92915050565b6138dc806107265f395ff3fe608060405260043610610184575f3560e01c8063751039fc116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed14610520578063dd62ed3e1461054a578063f2fde38b14610586578063f5b3c3bf146105ae5761018b565b80638f9a55c01461049057806395d89b41146104ba578063a9059cbb146104e45761018b565b8063751039fc146103be57806377febdad146103d45780637ab3c762146103fc5780637d1db4a5146104265780638a8c523c146104505780638da5cb5b146104665761018b565b806323b872dd1161013d57806353bc13dc1161011757806353bc13dc1461031a5780635bb9162c1461034257806370a082311461036c578063715018a6146103a85761018b565b806323b872dd1461028a578063313ce567146102c657806349bd5a5e146102f05761018b565b806306fdde031461018f578063095ea7b3146101b95780630a92b9e1146101f55780630faee56f1461020b57806315fe76541461023557806318160ddd146102605761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ea565b6040516101b091906128a1565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612952565b610627565b6040516101ec91906129aa565b60405180910390f35b348015610200575f80fd5b50610209610644565b005b348015610216575f80fd5b5061021f6106e9565b60405161022c91906129d2565b60405180910390f35b348015610240575f80fd5b506102496106ef565b6040516102579291906129eb565b60405180910390f35b34801561026b575f80fd5b506102746106ff565b60405161028191906129d2565b60405180910390f35b348015610295575f80fd5b506102b060048036038101906102ab9190612a12565b610724565b6040516102bd91906129aa565b60405180910390f35b3480156102d1575f80fd5b506102da6107f8565b6040516102e79190612a7d565b60405180910390f35b3480156102fb575f80fd5b50610304610800565b6040516103119190612aa5565b60405180910390f35b348015610325575f80fd5b50610340600480360381019061033b9190612abe565b610825565b005b34801561034d575f80fd5b50610356610911565b60405161036391906129d2565b60405180910390f35b348015610377575f80fd5b50610392600480360381019061038d9190612abe565b610917565b60405161039f91906129d2565b60405180910390f35b3480156103b3575f80fd5b506103bc61095d565b005b3480156103c9575f80fd5b506103d2610aab565b005b3480156103df575f80fd5b506103fa60048036038101906103f59190612ae9565b610be0565b005b348015610407575f80fd5b50610410610cbe565b60405161041d91906129aa565b60405180910390f35b348015610431575f80fd5b5061043a610cd1565b60405161044791906129d2565b60405180910390f35b34801561045b575f80fd5b50610464610cd7565b005b348015610471575f80fd5b5061047a6112ee565b6040516104879190612aa5565b60405180910390f35b34801561049b575f80fd5b506104a4611315565b6040516104b191906129d2565b60405180910390f35b3480156104c5575f80fd5b506104ce61131b565b6040516104db91906128a1565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190612952565b611358565b60405161051791906129aa565b60405180910390f35b34801561052b575f80fd5b50610534611375565b60405161054191906129d2565b60405180910390f35b348015610555575f80fd5b50610570600480360381019061056b9190612bad565b61137b565b60405161057d91906129d2565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a79190612abe565b6113fd565b005b3480156105b9575f80fd5b506105d460048036038101906105cf9190612abe565b6115ba565b6040516105e191906129aa565b60405180910390f35b60606040518060400160405280600481526020017f4f52494e00000000000000000000000000000000000000000000000000000000815250905090565b5f61063a6106336115d7565b84846115de565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106846115d7565b73ffffffffffffffffffffffffffffffffffffffff16146106a3575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156106e6573d5f803e3d5ffd5b50565b60185481565b5f80601254601354915091509091565b5f6012600a61070e9190612d47565b655af3107a400061071f9190612d91565b905090565b5f6107308484846117a1565b6107ed8461073c6115d7565b6107e88560405180606001604052806028815260200161387f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61079f6115d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461230e9092919063ffffffff16565b6115de565b600190509392505050565b5f6012905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082d6115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090612e1c565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601b5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109656115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890612e1c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ab36115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690612e1c565b60405180910390fd5b6012600a610b4d9190612d47565b655af3107a4000610b5e9190612d91565b6015819055506012600a610b729190612d47565b655af3107a4000610b839190612d91565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610bb89190612d47565b655af3107a4000610bc99190612d91565b604051610bd691906129d2565b60405180910390a1565b610be86115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b90612e1c565b60405180910390fd5b886007819055508760098190555086600e81905550856010819055508360088190555082600a8190555081600d8190555080600f8190555084601181905550505050505050505050565b601c60029054906101000a900460ff1681565b60155481565b610cdf6115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290612e1c565b60405180910390fd5b601a60149054906101000a900460ff1615610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612e84565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e593060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610e439190612d47565b655af3107a4000610e549190612d91565b6115de565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee79190612eb6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f919190612eb6565b6040518363ffffffff1660e01b8152600401610fae929190612ee1565b6020604051808303815f875af1158015610fca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fee9190612eb6565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061116130610917565b5f8061116b6112ee565b426040518863ffffffff1660e01b815260040161118d96959493929190612f4a565b60606040518083038185885af11580156111a9573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111ce9190612fbd565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161126e92919061300d565b6020604051808303815f875af115801561128a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ae919061305e565b506001601c60016101000a81548160ff0219169083151502179055506001601a60146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600481526020017f4f52494e00000000000000000000000000000000000000000000000000000000815250905090565b5f61136b6113646115d7565b84846117a1565b6001905092915050565b60175481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114056115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612e1c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f6906130f9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613187565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613215565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179491906129d2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611806906132a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613331565b60405180910390fd5b5f81116118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b6906133bf565b60405180910390fd5b5f6118c86112ee565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561193657506119066112ee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561205e5761198c6103e861197e600e546012541161196b57600d546012541161196257600754611966565b6008545b61196f565b600b545b8561237090919063ffffffff16565b6123e790919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a31575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a84575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6757601554821115611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590613427565b60405180910390fd5b60165482611adb85610917565b611ae59190613445565b1115611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906134c2565b60405180910390fd5b436003600654611b369190613445565b1115611b4f57611b4583612430565b15611b4e575f80fd5b5b60125f815480929190611b61906134e0565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c05575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c635760165482611c1785610917565b611c219190613445565b1115611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c59906134c2565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ce557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d3e57611d3b6103e8611d2d60105460125411611d1a57600f5460125411611d1157600954611d15565b600a545b611d1e565b600c545b8561237090919063ffffffff16565b6123e790919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ddc575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e1457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e1d575f90505b5f611e2730610917565b9050601c60029054906101000a900460ff168015611e515750601c5f9054906101000a900460ff16155b8015611ea3575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ebb5750601c60019054906101000a900460ff165b8015611ec8575060175481115b8015611ed75750601154601254115b15611f8b57601454431115611eee575f6013819055505b601b5460135410611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b90613571565b60405180910390fd5b611f51611f4c84611f4784601854612441565b612441565b612459565b5f4790505f811115611f6757611f66476126c2565b5b60135f815480929190611f79906134e0565b9190505550436014819055505061205c565b601c5f9054906101000a900460ff16158015611fed575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120055750601c60019054906101000a900460ff165b8015612012575060175481115b80156120215750601154601254115b1561205b5761204361203e8461203984601854612441565b612441565b612459565b5f4790505f81111561205957612058476126c2565b5b505b5b505b5f81111561215d576120b68160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161215491906129d2565b60405180910390a35b6121ad8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612250612204828461278790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122f3848661278790919063ffffffff16565b60405161230091906129d2565b60405180910390a350505050565b5f838311158290612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c91906128a1565b60405180910390fd5b505f8385612363919061358f565b9050809150509392505050565b5f808303612380575f90506123e1565b5f828461238d9190612d91565b905082848261239c91906135ef565b146123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061368f565b60405180910390fd5b809150505b92915050565b5f61242883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127d0565b905092915050565b5f80823b90505f8111915050919050565b5f81831161244f5782612451565b815b905092915050565b6001601c5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561248f5761248e6136ad565b5b6040519080825280602002602001820160405280156124bd5781602001602082028036833780820191505090505b50905030815f815181106124d4576124d36136da565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259c9190612eb6565b816001815181106125b0576125af6136da565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126163060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115de565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126789594939291906137be565b5f604051808303815f87803b15801561268f575f80fd5b505af11580156126a1573d5f803e3d5ffd5b50505050505f601c5f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612726573d5f803e3d5ffd5b5050565b5f8082846127389190613445565b90508381101561277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490613860565b60405180910390fd5b8091505092915050565b5f6127c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061230e565b905092915050565b5f8083118290612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d91906128a1565b60405180910390fd5b505f838561282491906135ef565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61287382612831565b61287d818561283b565b935061288d81856020860161284b565b61289681612859565b840191505092915050565b5f6020820190508181035f8301526128b98184612869565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ee826128c5565b9050919050565b6128fe816128e4565b8114612908575f80fd5b50565b5f81359050612919816128f5565b92915050565b5f819050919050565b6129318161291f565b811461293b575f80fd5b50565b5f8135905061294c81612928565b92915050565b5f8060408385031215612968576129676128c1565b5b5f6129758582860161290b565b92505060206129868582860161293e565b9150509250929050565b5f8115159050919050565b6129a481612990565b82525050565b5f6020820190506129bd5f83018461299b565b92915050565b6129cc8161291f565b82525050565b5f6020820190506129e55f8301846129c3565b92915050565b5f6040820190506129fe5f8301856129c3565b612a0b60208301846129c3565b9392505050565b5f805f60608486031215612a2957612a286128c1565b5b5f612a368682870161290b565b9350506020612a478682870161290b565b9250506040612a588682870161293e565b9150509250925092565b5f60ff82169050919050565b612a7781612a62565b82525050565b5f602082019050612a905f830184612a6e565b92915050565b612a9f816128e4565b82525050565b5f602082019050612ab85f830184612a96565b92915050565b5f60208284031215612ad357612ad26128c1565b5b5f612ae08482850161290b565b91505092915050565b5f805f805f805f805f6101208a8c031215612b0757612b066128c1565b5b5f612b148c828d0161293e565b9950506020612b258c828d0161293e565b9850506040612b368c828d0161293e565b9750506060612b478c828d0161293e565b9650506080612b588c828d0161293e565b95505060a0612b698c828d0161293e565b94505060c0612b7a8c828d0161293e565b93505060e0612b8b8c828d0161293e565b925050610100612b9d8c828d0161293e565b9150509295985092959850929598565b5f8060408385031215612bc357612bc26128c1565b5b5f612bd08582860161290b565b9250506020612be18582860161290b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c6d57808604811115612c4957612c48612beb565b5b6001851615612c585780820291505b8081029050612c6685612c18565b9450612c2d565b94509492505050565b5f82612c855760019050612d40565b81612c92575f9050612d40565b8160018114612ca85760028114612cb257612ce1565b6001915050612d40565b60ff841115612cc457612cc3612beb565b5b8360020a915084821115612cdb57612cda612beb565b5b50612d40565b5060208310610133831016604e8410600b8410161715612d165782820a905083811115612d1157612d10612beb565b5b612d40565b612d238484846001612c24565b92509050818404811115612d3a57612d39612beb565b5b81810290505b9392505050565b5f612d518261291f565b9150612d5c83612a62565b9250612d897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c76565b905092915050565b5f612d9b8261291f565b9150612da68361291f565b9250828202612db48161291f565b91508282048414831517612dcb57612dca612beb565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e0660208361283b565b9150612e1182612dd2565b602082019050919050565b5f6020820190508181035f830152612e3381612dfa565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e6e60178361283b565b9150612e7982612e3a565b602082019050919050565b5f6020820190508181035f830152612e9b81612e62565b9050919050565b5f81519050612eb0816128f5565b92915050565b5f60208284031215612ecb57612eca6128c1565b5b5f612ed884828501612ea2565b91505092915050565b5f604082019050612ef45f830185612a96565b612f016020830184612a96565b9392505050565b5f819050919050565b5f819050919050565b5f612f34612f2f612f2a84612f08565b612f11565b61291f565b9050919050565b612f4481612f1a565b82525050565b5f60c082019050612f5d5f830189612a96565b612f6a60208301886129c3565b612f776040830187612f3b565b612f846060830186612f3b565b612f916080830185612a96565b612f9e60a08301846129c3565b979650505050505050565b5f81519050612fb781612928565b92915050565b5f805f60608486031215612fd457612fd36128c1565b5b5f612fe186828701612fa9565b9350506020612ff286828701612fa9565b925050604061300386828701612fa9565b9150509250925092565b5f6040820190506130205f830185612a96565b61302d60208301846129c3565b9392505050565b61303d81612990565b8114613047575f80fd5b50565b5f8151905061305881613034565b92915050565b5f60208284031215613073576130726128c1565b5b5f6130808482850161304a565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6130e360268361283b565b91506130ee82613089565b604082019050919050565b5f6020820190508181035f830152613110816130d7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61317160248361283b565b915061317c82613117565b604082019050919050565b5f6020820190508181035f83015261319e81613165565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131ff60228361283b565b915061320a826131a5565b604082019050919050565b5f6020820190508181035f83015261322c816131f3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61328d60258361283b565b915061329882613233565b604082019050919050565b5f6020820190508181035f8301526132ba81613281565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61331b60238361283b565b9150613326826132c1565b604082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133a960298361283b565b91506133b48261334f565b604082019050919050565b5f6020820190508181035f8301526133d68161339d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61341160198361283b565b915061341c826133dd565b602082019050919050565b5f6020820190508181035f83015261343e81613405565b9050919050565b5f61344f8261291f565b915061345a8361291f565b925082820190508082111561347257613471612beb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6134ac601a8361283b565b91506134b782613478565b602082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b5f6134ea8261291f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361351c5761351b612beb565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f61355b600f8361283b565b915061356682613527565b602082019050919050565b5f6020820190508181035f8301526135888161354f565b9050919050565b5f6135998261291f565b91506135a48361291f565b92508282039050818111156135bc576135bb612beb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135f98261291f565b91506136048361291f565b925082613614576136136135c2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61367960218361283b565b91506136848261361f565b604082019050919050565b5f6020820190508181035f8301526136a68161366d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613739816128e4565b82525050565b5f61374a8383613730565b60208301905092915050565b5f602082019050919050565b5f61376c82613707565b6137768185613711565b935061378183613721565b805f5b838110156137b1578151613798888261373f565b97506137a383613756565b925050600181019050613784565b5085935050505092915050565b5f60a0820190506137d15f8301886129c3565b6137de6020830187612f3b565b81810360408301526137f08186613762565b90506137ff6060830185612a96565b61380c60808301846129c3565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61384a601b8361283b565b915061385582613816565b602082019050919050565b5f6020820190508181035f8301526138778161383e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220320c06cbc49811fb1f5d946c746f3e7b17778bce32c70392dfb85b13a863452664736f6c63430008190033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063751039fc116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed14610520578063dd62ed3e1461054a578063f2fde38b14610586578063f5b3c3bf146105ae5761018b565b80638f9a55c01461049057806395d89b41146104ba578063a9059cbb146104e45761018b565b8063751039fc146103be57806377febdad146103d45780637ab3c762146103fc5780637d1db4a5146104265780638a8c523c146104505780638da5cb5b146104665761018b565b806323b872dd1161013d57806353bc13dc1161011757806353bc13dc1461031a5780635bb9162c1461034257806370a082311461036c578063715018a6146103a85761018b565b806323b872dd1461028a578063313ce567146102c657806349bd5a5e146102f05761018b565b806306fdde031461018f578063095ea7b3146101b95780630a92b9e1146101f55780630faee56f1461020b57806315fe76541461023557806318160ddd146102605761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ea565b6040516101b091906128a1565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612952565b610627565b6040516101ec91906129aa565b60405180910390f35b348015610200575f80fd5b50610209610644565b005b348015610216575f80fd5b5061021f6106e9565b60405161022c91906129d2565b60405180910390f35b348015610240575f80fd5b506102496106ef565b6040516102579291906129eb565b60405180910390f35b34801561026b575f80fd5b506102746106ff565b60405161028191906129d2565b60405180910390f35b348015610295575f80fd5b506102b060048036038101906102ab9190612a12565b610724565b6040516102bd91906129aa565b60405180910390f35b3480156102d1575f80fd5b506102da6107f8565b6040516102e79190612a7d565b60405180910390f35b3480156102fb575f80fd5b50610304610800565b6040516103119190612aa5565b60405180910390f35b348015610325575f80fd5b50610340600480360381019061033b9190612abe565b610825565b005b34801561034d575f80fd5b50610356610911565b60405161036391906129d2565b60405180910390f35b348015610377575f80fd5b50610392600480360381019061038d9190612abe565b610917565b60405161039f91906129d2565b60405180910390f35b3480156103b3575f80fd5b506103bc61095d565b005b3480156103c9575f80fd5b506103d2610aab565b005b3480156103df575f80fd5b506103fa60048036038101906103f59190612ae9565b610be0565b005b348015610407575f80fd5b50610410610cbe565b60405161041d91906129aa565b60405180910390f35b348015610431575f80fd5b5061043a610cd1565b60405161044791906129d2565b60405180910390f35b34801561045b575f80fd5b50610464610cd7565b005b348015610471575f80fd5b5061047a6112ee565b6040516104879190612aa5565b60405180910390f35b34801561049b575f80fd5b506104a4611315565b6040516104b191906129d2565b60405180910390f35b3480156104c5575f80fd5b506104ce61131b565b6040516104db91906128a1565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190612952565b611358565b60405161051791906129aa565b60405180910390f35b34801561052b575f80fd5b50610534611375565b60405161054191906129d2565b60405180910390f35b348015610555575f80fd5b50610570600480360381019061056b9190612bad565b61137b565b60405161057d91906129d2565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a79190612abe565b6113fd565b005b3480156105b9575f80fd5b506105d460048036038101906105cf9190612abe565b6115ba565b6040516105e191906129aa565b60405180910390f35b60606040518060400160405280600481526020017f4f52494e00000000000000000000000000000000000000000000000000000000815250905090565b5f61063a6106336115d7565b84846115de565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106846115d7565b73ffffffffffffffffffffffffffffffffffffffff16146106a3575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156106e6573d5f803e3d5ffd5b50565b60185481565b5f80601254601354915091509091565b5f6012600a61070e9190612d47565b655af3107a400061071f9190612d91565b905090565b5f6107308484846117a1565b6107ed8461073c6115d7565b6107e88560405180606001604052806028815260200161387f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61079f6115d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461230e9092919063ffffffff16565b6115de565b600190509392505050565b5f6012905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082d6115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090612e1c565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601b5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109656115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890612e1c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ab36115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690612e1c565b60405180910390fd5b6012600a610b4d9190612d47565b655af3107a4000610b5e9190612d91565b6015819055506012600a610b729190612d47565b655af3107a4000610b839190612d91565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610bb89190612d47565b655af3107a4000610bc99190612d91565b604051610bd691906129d2565b60405180910390a1565b610be86115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b90612e1c565b60405180910390fd5b886007819055508760098190555086600e81905550856010819055508360088190555082600a8190555081600d8190555080600f8190555084601181905550505050505050505050565b601c60029054906101000a900460ff1681565b60155481565b610cdf6115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290612e1c565b60405180910390fd5b601a60149054906101000a900460ff1615610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612e84565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e593060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610e439190612d47565b655af3107a4000610e549190612d91565b6115de565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee79190612eb6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f919190612eb6565b6040518363ffffffff1660e01b8152600401610fae929190612ee1565b6020604051808303815f875af1158015610fca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fee9190612eb6565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061116130610917565b5f8061116b6112ee565b426040518863ffffffff1660e01b815260040161118d96959493929190612f4a565b60606040518083038185885af11580156111a9573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111ce9190612fbd565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161126e92919061300d565b6020604051808303815f875af115801561128a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ae919061305e565b506001601c60016101000a81548160ff0219169083151502179055506001601a60146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600481526020017f4f52494e00000000000000000000000000000000000000000000000000000000815250905090565b5f61136b6113646115d7565b84846117a1565b6001905092915050565b60175481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114056115d7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612e1c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f6906130f9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613187565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613215565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179491906129d2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611806906132a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613331565b60405180910390fd5b5f81116118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b6906133bf565b60405180910390fd5b5f6118c86112ee565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561193657506119066112ee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561205e5761198c6103e861197e600e546012541161196b57600d546012541161196257600754611966565b6008545b61196f565b600b545b8561237090919063ffffffff16565b6123e790919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a31575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a84575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6757601554821115611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590613427565b60405180910390fd5b60165482611adb85610917565b611ae59190613445565b1115611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906134c2565b60405180910390fd5b436003600654611b369190613445565b1115611b4f57611b4583612430565b15611b4e575f80fd5b5b60125f815480929190611b61906134e0565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c05575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c635760165482611c1785610917565b611c219190613445565b1115611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c59906134c2565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ce557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d3e57611d3b6103e8611d2d60105460125411611d1a57600f5460125411611d1157600954611d15565b600a545b611d1e565b600c545b8561237090919063ffffffff16565b6123e790919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ddc575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e1457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e1d575f90505b5f611e2730610917565b9050601c60029054906101000a900460ff168015611e515750601c5f9054906101000a900460ff16155b8015611ea3575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ebb5750601c60019054906101000a900460ff165b8015611ec8575060175481115b8015611ed75750601154601254115b15611f8b57601454431115611eee575f6013819055505b601b5460135410611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b90613571565b60405180910390fd5b611f51611f4c84611f4784601854612441565b612441565b612459565b5f4790505f811115611f6757611f66476126c2565b5b60135f815480929190611f79906134e0565b9190505550436014819055505061205c565b601c5f9054906101000a900460ff16158015611fed575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120055750601c60019054906101000a900460ff165b8015612012575060175481115b80156120215750601154601254115b1561205b5761204361203e8461203984601854612441565b612441565b612459565b5f4790505f81111561205957612058476126c2565b5b505b5b505b5f81111561215d576120b68160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161215491906129d2565b60405180910390a35b6121ad8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612250612204828461278790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122f3848661278790919063ffffffff16565b60405161230091906129d2565b60405180910390a350505050565b5f838311158290612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c91906128a1565b60405180910390fd5b505f8385612363919061358f565b9050809150509392505050565b5f808303612380575f90506123e1565b5f828461238d9190612d91565b905082848261239c91906135ef565b146123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061368f565b60405180910390fd5b809150505b92915050565b5f61242883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127d0565b905092915050565b5f80823b90505f8111915050919050565b5f81831161244f5782612451565b815b905092915050565b6001601c5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561248f5761248e6136ad565b5b6040519080825280602002602001820160405280156124bd5781602001602082028036833780820191505090505b50905030815f815181106124d4576124d36136da565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259c9190612eb6565b816001815181106125b0576125af6136da565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126163060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115de565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126789594939291906137be565b5f604051808303815f87803b15801561268f575f80fd5b505af11580156126a1573d5f803e3d5ffd5b50505050505f601c5f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612726573d5f803e3d5ffd5b5050565b5f8082846127389190613445565b90508381101561277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490613860565b60405180910390fd5b8091505092915050565b5f6127c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061230e565b905092915050565b5f8083118290612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d91906128a1565b60405180910390fd5b505f838561282491906135ef565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61287382612831565b61287d818561283b565b935061288d81856020860161284b565b61289681612859565b840191505092915050565b5f6020820190508181035f8301526128b98184612869565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ee826128c5565b9050919050565b6128fe816128e4565b8114612908575f80fd5b50565b5f81359050612919816128f5565b92915050565b5f819050919050565b6129318161291f565b811461293b575f80fd5b50565b5f8135905061294c81612928565b92915050565b5f8060408385031215612968576129676128c1565b5b5f6129758582860161290b565b92505060206129868582860161293e565b9150509250929050565b5f8115159050919050565b6129a481612990565b82525050565b5f6020820190506129bd5f83018461299b565b92915050565b6129cc8161291f565b82525050565b5f6020820190506129e55f8301846129c3565b92915050565b5f6040820190506129fe5f8301856129c3565b612a0b60208301846129c3565b9392505050565b5f805f60608486031215612a2957612a286128c1565b5b5f612a368682870161290b565b9350506020612a478682870161290b565b9250506040612a588682870161293e565b9150509250925092565b5f60ff82169050919050565b612a7781612a62565b82525050565b5f602082019050612a905f830184612a6e565b92915050565b612a9f816128e4565b82525050565b5f602082019050612ab85f830184612a96565b92915050565b5f60208284031215612ad357612ad26128c1565b5b5f612ae08482850161290b565b91505092915050565b5f805f805f805f805f6101208a8c031215612b0757612b066128c1565b5b5f612b148c828d0161293e565b9950506020612b258c828d0161293e565b9850506040612b368c828d0161293e565b9750506060612b478c828d0161293e565b9650506080612b588c828d0161293e565b95505060a0612b698c828d0161293e565b94505060c0612b7a8c828d0161293e565b93505060e0612b8b8c828d0161293e565b925050610100612b9d8c828d0161293e565b9150509295985092959850929598565b5f8060408385031215612bc357612bc26128c1565b5b5f612bd08582860161290b565b9250506020612be18582860161290b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c6d57808604811115612c4957612c48612beb565b5b6001851615612c585780820291505b8081029050612c6685612c18565b9450612c2d565b94509492505050565b5f82612c855760019050612d40565b81612c92575f9050612d40565b8160018114612ca85760028114612cb257612ce1565b6001915050612d40565b60ff841115612cc457612cc3612beb565b5b8360020a915084821115612cdb57612cda612beb565b5b50612d40565b5060208310610133831016604e8410600b8410161715612d165782820a905083811115612d1157612d10612beb565b5b612d40565b612d238484846001612c24565b92509050818404811115612d3a57612d39612beb565b5b81810290505b9392505050565b5f612d518261291f565b9150612d5c83612a62565b9250612d897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c76565b905092915050565b5f612d9b8261291f565b9150612da68361291f565b9250828202612db48161291f565b91508282048414831517612dcb57612dca612beb565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e0660208361283b565b9150612e1182612dd2565b602082019050919050565b5f6020820190508181035f830152612e3381612dfa565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e6e60178361283b565b9150612e7982612e3a565b602082019050919050565b5f6020820190508181035f830152612e9b81612e62565b9050919050565b5f81519050612eb0816128f5565b92915050565b5f60208284031215612ecb57612eca6128c1565b5b5f612ed884828501612ea2565b91505092915050565b5f604082019050612ef45f830185612a96565b612f016020830184612a96565b9392505050565b5f819050919050565b5f819050919050565b5f612f34612f2f612f2a84612f08565b612f11565b61291f565b9050919050565b612f4481612f1a565b82525050565b5f60c082019050612f5d5f830189612a96565b612f6a60208301886129c3565b612f776040830187612f3b565b612f846060830186612f3b565b612f916080830185612a96565b612f9e60a08301846129c3565b979650505050505050565b5f81519050612fb781612928565b92915050565b5f805f60608486031215612fd457612fd36128c1565b5b5f612fe186828701612fa9565b9350506020612ff286828701612fa9565b925050604061300386828701612fa9565b9150509250925092565b5f6040820190506130205f830185612a96565b61302d60208301846129c3565b9392505050565b61303d81612990565b8114613047575f80fd5b50565b5f8151905061305881613034565b92915050565b5f60208284031215613073576130726128c1565b5b5f6130808482850161304a565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6130e360268361283b565b91506130ee82613089565b604082019050919050565b5f6020820190508181035f830152613110816130d7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61317160248361283b565b915061317c82613117565b604082019050919050565b5f6020820190508181035f83015261319e81613165565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131ff60228361283b565b915061320a826131a5565b604082019050919050565b5f6020820190508181035f83015261322c816131f3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61328d60258361283b565b915061329882613233565b604082019050919050565b5f6020820190508181035f8301526132ba81613281565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61331b60238361283b565b9150613326826132c1565b604082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133a960298361283b565b91506133b48261334f565b604082019050919050565b5f6020820190508181035f8301526133d68161339d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61341160198361283b565b915061341c826133dd565b602082019050919050565b5f6020820190508181035f83015261343e81613405565b9050919050565b5f61344f8261291f565b915061345a8361291f565b925082820190508082111561347257613471612beb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6134ac601a8361283b565b91506134b782613478565b602082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b5f6134ea8261291f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361351c5761351b612beb565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f61355b600f8361283b565b915061356682613527565b602082019050919050565b5f6020820190508181035f8301526135888161354f565b9050919050565b5f6135998261291f565b91506135a48361291f565b92508282039050818111156135bc576135bb612beb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135f98261291f565b91506136048361291f565b925082613614576136136135c2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61367960218361283b565b91506136848261361f565b604082019050919050565b5f6020820190508181035f8301526136a68161366d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613739816128e4565b82525050565b5f61374a8383613730565b60208301905092915050565b5f602082019050919050565b5f61376c82613707565b6137768185613711565b935061378183613721565b805f5b838110156137b1578151613798888261373f565b97506137a383613756565b925050600181019050613784565b5085935050505092915050565b5f60a0820190506137d15f8301886129c3565b6137de6020830187612f3b565b81810360408301526137f08186613762565b90506137ff6060830185612a96565b61380c60808301846129c3565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61384a601b8361283b565b915061385582613816565b602082019050919050565b5f6020820190508181035f8301526138778161383e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220320c06cbc49811fb1f5d946c746f3e7b17778bce32c70392dfb85b13a863452664736f6c63430008190033

Deployed Bytecode Sourcemap

4188:9916:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6414:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7247:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13090:146;;;;;;;;;;;;;:::i;:::-;;5557:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11367:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6691:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7416:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6600:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5672:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8080:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5738:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6794:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3019:148;;;;;;;;;;;;;:::i;:::-;;12823:159;;;;;;;;;;;;;:::i;:::-;;11480:641;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5839:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5353:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13244:820;;;;;;;;;;;;;:::i;:::-;;2805:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5421:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6505:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6921:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5489:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7096:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3175:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4457:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6414:83;6451:13;6484:5;;;;;;;;;;;;;;;;;6477:12;;6414:83;:::o;7247:161::-;7322:4;7339:39;7348:12;:10;:12::i;:::-;7362:7;7371:6;7339:8;:39::i;:::-;7396:4;7389:11;;7247:161;;;;:::o;13090:146::-;13155:10;;;;;;;;;;;13139:26;;:12;:10;:12::i;:::-;:26;;;13131:35;;;;;;13185:10;13177:28;;:51;13206:21;13177:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13090:146::o;5557:57::-;;;;:::o;11367:105::-;11412:4;11418;11443:9;;11454;;11435:29;;;;11367:105;;:::o;6691:95::-;6744:7;5165:2;5227;:13;;;;:::i;:::-;5209:15;:31;;;;:::i;:::-;6764:14;;6691:95;:::o;7416:313::-;7514:4;7531:36;7541:6;7549:9;7560:6;7531:9;:36::i;:::-;7578:121;7587:6;7595:12;:10;:12::i;:::-;7609:89;7647:6;7609:89;;;;;;;;;;;;;;;;;:11;:19;7621:6;7609:19;;;;;;;;;;;;;;;:33;7629:12;:10;:12::i;:::-;7609:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7578:8;:121::i;:::-;7717:4;7710:11;;7416:313;;;;;:::o;6600:83::-;6641:5;5165:2;6659:16;;6600:83;:::o;5672:28::-;;;;;;;;;;;;;:::o;8080:96::-;2942:12;:10;:12::i;:::-;2932:22;;:6;;;;;;;;;;:22;;;2924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8164:4:::1;8145:10;:16;8156:4;8145:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;8080:96:::0;:::o;5738:21::-;;;;:::o;6794:119::-;6860:7;6887:9;:18;6897:7;6887:18;;;;;;;;;;;;;;;;6880:25;;6794:119;;;:::o;3019:148::-;2942:12;:10;:12::i;:::-;2932:22;;:6;;;;;;;;;;:22;;;2924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3126:1:::1;3089:40;;3110:6;::::0;::::1;;;;;;;;3089:40;;;;;;;;;;;;3157:1;3140:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3019:148::o:0;12823:159::-;2942:12;:10;:12::i;:::-;2932:22;;:6;;;;;;;;;;:22;;;2924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5165:2:::1;5227;:13;;;;:::i;:::-;5209:15;:31;;;;:::i;:::-;12876:12;:22;;;;5165:2;5227;:13;;;;:::i;:::-;5209:15;:31;;;;:::i;:::-;12909:14;:22;;;;12947:27;5165:2;5227;:13;;;;:::i;:::-;5209:15;:31;;;;:::i;:::-;12947:27;;;;;;:::i;:::-;;;;;;;;12823:159::o:0;11480:641::-;2942:12;:10;:12::i;:::-;2932:22;;:6;;;;;;;;;;:22;;;2924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11768:16:::1;11751:14;:33;;;;11813:17;11795:15;:35;;;;11859:11;11841:15;:29;;;;11900:11;11881:16;:30;;;;11935:12;11922:10;:25;;;;11972:13;11958:11;:27;;;;12011:14;11996:12;:29;;;;12052:15;12036:13;:31;;;;12099:14;12078:18;:35;;;;11480:641:::0;;;;;;;;;:::o;5839:27::-;;;;;;;;;;;;;:::o;5353:61::-;;;;:::o;13244:820::-;2942:12;:10;:12::i;:::-;2932:22;;:6;;;;;;;;;;:22;;;2924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13310:11:::1;;;;;;;;;;;13309:12;13301:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13396:42;13359:15;;:80;;;;;;;;;;;;;;;;;;13450:58;13467:4;13482:15;;;;;;;;;;;5165:2;5227;:13;;;;:::i;:::-;5209:15;:31;;;;:::i;:::-;13450:8;:58::i;:::-;13553:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13535:55;;;13599:4;13606:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13535:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13519:13;;:110;;;;;;;;;;;;;;;;;;13677:4;13640:10;:34;13659:13;;;;;;;;;;;13640:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;13736:4;13692:17;:41;13718:13;;;;;;;;;;;13692:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;13751:15;;;;;;;;;;;:31;;;13790:21;13821:4;13827:24;13845:4;13827:9;:24::i;:::-;13852:1;13854::::0;13856:7:::1;:5;:7::i;:::-;13864:15;13751:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13898:13;;;;;;;;;;;13891:29;;;13929:15;;;;;;;;;;;13947:14;13891:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13987:4;13973:11;;:18;;;;;;;;;;;;;;;;;;14016:4;14002:11;;:18;;;;;;;;;;;;;;;;;;14044:12;14031:10;:25;;;;13244:820::o:0;2805:79::-;2843:7;2870:6;;;;;;;;;;;2863:13;;2805:79;:::o;5421:61::-;;;;:::o;6505:87::-;6544:13;6577:7;;;;;;;;;;;;;;;;;6570:14;;6505:87;:::o;6921:167::-;6999:4;7016:42;7026:12;:10;:12::i;:::-;7040:9;7051:6;7016:9;:42::i;:::-;7076:4;7069:11;;6921:167;;;;:::o;5489:61::-;;;;:::o;7096:143::-;7177:7;7204:11;:18;7216:5;7204:18;;;;;;;;;;;;;;;:27;7223:7;7204:27;;;;;;;;;;;;;;;;7197:34;;7096:143;;;;:::o;3175:244::-;2942:12;:10;:12::i;:::-;2932:22;;:6;;;;;;;;;;:22;;;2924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3284:1:::1;3264:22;;:8;:22;;::::0;3256:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3374:8;3345:38;;3366:6;::::0;::::1;;;;;;;;3345:38;;;;;;;;;;;;3403:8;3394:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3175:244:::0;:::o;4457:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;560:98::-;613:7;640:10;633:17;;560:98;:::o;7737:335::-;7847:1;7830:19;;:5;:19;;;7822:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7928:1;7909:21;;:7;:21;;;7901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8010:6;7980:11;:18;7992:5;7980:18;;;;;;;;;;;;;;;:27;7999:7;7980:27;;;;;;;;;;;;;;;:36;;;;8048:7;8032:32;;8041:5;8032:32;;;8057:6;8032:32;;;;;;:::i;:::-;;;;;;;;7737:335;;;:::o;8184:3067::-;8288:1;8272:18;;:4;:18;;;8264:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8365:1;8351:16;;:2;:16;;;8343:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8435:1;8426:6;:10;8418:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8493:17;8537:7;:5;:7::i;:::-;8529:15;;:4;:15;;;;:32;;;;;8554:7;:5;:7::i;:::-;8548:13;;:2;:13;;;;8529:32;8525:2370;;;8590:121;8706:4;8590:111;8613:15;;8602:9;;:26;8601:99;;8658:12;;8647:9;;:23;8646:53;;8685:14;;8646:53;;;8673:10;;8646:53;8601:99;;;8631:12;;8601:99;8590:6;:10;;:111;;;;:::i;:::-;:115;;:121;;;;:::i;:::-;8578:133;;8732:10;:16;8743:4;8732:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8766:15;;;;;;;;;;;8752:30;;:2;:30;;;;8732:50;:77;;;;;8788:17;:21;8806:2;8788:21;;;;;;;;;;;;;;;;;;;;;;;;;8786:23;8732:77;8728:430;;;8849:12;;8839:6;:22;;8831:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8944:14;;8934:6;8918:13;8928:2;8918:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8910:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9032:12;9027:1;9014:10;;:14;;;;:::i;:::-;:30;9010:103;;;9078:14;9089:2;9078:10;:14::i;:::-;9077:15;9069:24;;;;;;9010:103;9131:9;;:11;;;;;;;;;:::i;:::-;;;;;;8728:430;9179:10;:14;9190:2;9179:14;;;;;;;;;;;;;;;;;;;;;;;;;9178:15;:42;;;;;9199:17;:21;9217:2;9199:21;;;;;;;;;;;;;;;;;;;;;;;;;9197:23;9178:42;9174:162;;;9275:14;;9265:6;9249:13;9259:2;9249:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9241:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9174:162;9355:10;:14;9366:2;9355:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9388:4;9373:20;;:4;:20;;;;9355:38;9352:216;;;9426:126;9547:4;9426:116;9449:16;;9438:9;;:27;9437:104;;9496:13;;9485:9;;:24;9484:56;;9525:15;;9484:56;;;9512:11;;9484:56;9437:104;;;9468:13;;9437:104;9426:6;:10;;:116;;;;:::i;:::-;:120;;:126;;;;:::i;:::-;9414:138;;9352:216;9582:10;:16;9593:4;9582:16;;;;;;;;;;;;;;;;;;;;;;;;;9581:17;:36;;;;;9603:10;:14;9614:2;9603:14;;;;;;;;;;;;;;;;;;;;;;;;;9602:15;9581:36;:60;;;;;9636:4;9621:20;;:4;:20;;;;9581:60;9577:115;;;9675:1;9663:13;;9577:115;9708:28;9739:24;9757:4;9739:9;:24::i;:::-;9708:55;;9782:8;;;;;;;;;;;:19;;;;;9795:6;;;;;;;;;;;9794:7;9782:19;:37;;;;;9805:10;:14;9816:2;9805:14;;;;;;;;;;;;;;;;;;;;;;;;;9782:37;:52;;;;;9823:11;;;;;;;;;;;9782:52;:94;;;;;9859:17;;9838:20;:38;9782:94;:126;;;;;9890:18;;9880:9;;:28;9782:126;9778:1106;;;9948:13;;9933:12;:28;9929:90;;;9998:1;9986:9;:13;;;;9929:90;10057:2;;10045:9;;:14;10037:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10098:67;10115:49;10119:6;10126:37;10130:20;10151:11;;10126:3;:37::i;:::-;10115:3;:49::i;:::-;10098:16;:67::i;:::-;10184:26;10213:21;10184:50;;10277:1;10256:18;:22;10253:105;;;10303:35;10316:21;10303:12;:35::i;:::-;10253:105;10376:9;;:11;;;;;;;;;:::i;:::-;;;;;;10422:12;10406:13;:28;;;;9910:540;9778:1106;;;10475:6;;;;;;;;;;;10474:7;:25;;;;;10485:10;:14;10496:2;10485:14;;;;;;;;;;;;;;;;;;;;;;;;;10474:25;:40;;;;;10503:11;;;;;;;;;;;10474:40;:82;;;;;10539:17;;10518:20;:38;10474:82;:114;;;;;10570:18;;10560:9;;:28;10474:114;10471:413;;;10609:67;10626:49;10630:6;10637:37;10641:20;10662:11;;10637:3;:37::i;:::-;10626:3;:49::i;:::-;10609:16;:67::i;:::-;10695:26;10724:21;10695:50;;10788:1;10767:18;:22;10764:105;;;10814:35;10827:21;10814:12;:35::i;:::-;10764:105;10590:294;10471:413;9778:1106;8563:2332;8525:2370;10920:1;10910:9;:11;10907:161;;;10960:39;10989:9;10960;:24;10978:4;10960:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10935:9;:24;10953:4;10935:24;;;;;;;;;;;;;;;:64;;;;11040:4;11017:39;;11026:4;11017:39;;;11046:9;11017:39;;;;;;:::i;:::-;;;;;;;;10907:161;11094:27;11114:6;11094:9;:15;11104:4;11094:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11078:9;:15;11088:4;11078:15;;;;;;;;;;;;;;;:43;;;;11146:40;11164:21;11175:9;11164:6;:10;;:21;;;;:::i;:::-;11146:9;:13;11156:2;11146:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11132:9;:13;11142:2;11132:13;;;;;;;;;;;;;;;:54;;;;11217:2;11202:41;;11211:4;11202:41;;;11221:21;11232:9;11221:6;:10;;:21;;;;:::i;:::-;11202:41;;;;;;:::i;:::-;;;;;;;;8253:2998;8184:3067;;;:::o;1697:190::-;1783:7;1816:1;1811;:6;;1819:12;1803:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1843:9;1859:1;1855;:5;;;;:::i;:::-;1843:17;;1878:1;1871:8;;;1697:190;;;;;:::o;1895:246::-;1953:7;1982:1;1977;:6;1973:47;;2007:1;2000:8;;;;1973:47;2030:9;2046:1;2042;:5;;;;:::i;:::-;2030:17;;2075:1;2070;2066;:5;;;;:::i;:::-;:10;2058:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2132:1;2125:8;;;1895:246;;;;;:::o;2149:132::-;2207:7;2234:39;2238:1;2241;2234:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2227:46;;2149:132;;;;:::o;12129:195::-;12188:4;12205:12;12272:7;12260:20;12252:28;;12315:1;12308:4;:8;12301:15;;;12129:195;;;:::o;11261:98::-;11318:7;11345:1;11343;:3;11342:9;;11350:1;11342:9;;;11348:1;11342:9;11335:16;;11261:98;;;;:::o;12332:483::-;5966:4;5957:6;;:13;;;;;;;;;;;;;;;;;;12410:21:::1;12448:1;12434:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:40;;12479:4;12461;12466:1;12461:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12505:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12495:4;12500:1;12495:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12538:62;12555:4;12570:15;;;;;;;;;;;12588:11;12538:8;:62::i;:::-;12611:15;;;;;;;;;;;:66;;;12692:11;12718:1;12734:4;12761;12781:15;12611:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12399:416;6002:5:::0;5993:6;;:14;;;;;;;;;;;;;;;;;;12332:483;:::o;12990:92::-;13047:10;;;;;;;;;;;:19;;:27;13067:6;13047:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12990:92;:::o;1366:179::-;1424:7;1444:9;1460:1;1456;:5;;;;:::i;:::-;1444:17;;1485:1;1480;:6;;1472:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1536:1;1529:8;;;1366:179;;;;:::o;1553:136::-;1611:7;1638:43;1642:1;1645;1638:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1631:50;;1553:136;;;;:::o;2289:189::-;2375:7;2407:1;2403;:5;2410:12;2395:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2434:9;2450:1;2446;:5;;;;:::i;:::-;2434:17;;2469:1;2462:8;;;2289:189;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:332::-;3812:4;3850:2;3839:9;3835:18;3827:26;;3863:71;3931:1;3920:9;3916:17;3907:6;3863:71;:::i;:::-;3944:72;4012:2;4001:9;3997:18;3988:6;3944:72;:::i;:::-;3691:332;;;;;:::o;4029:619::-;4106:6;4114;4122;4171:2;4159:9;4150:7;4146:23;4142:32;4139:119;;;4177:79;;:::i;:::-;4139:119;4297:1;4322:53;4367:7;4358:6;4347:9;4343:22;4322:53;:::i;:::-;4312:63;;4268:117;4424:2;4450:53;4495:7;4486:6;4475:9;4471:22;4450:53;:::i;:::-;4440:63;;4395:118;4552:2;4578:53;4623:7;4614:6;4603:9;4599:22;4578:53;:::i;:::-;4568:63;;4523:118;4029:619;;;;;:::o;4654:86::-;4689:7;4729:4;4722:5;4718:16;4707:27;;4654:86;;;:::o;4746:112::-;4829:22;4845:5;4829:22;:::i;:::-;4824:3;4817:35;4746:112;;:::o;4864:214::-;4953:4;4991:2;4980:9;4976:18;4968:26;;5004:67;5068:1;5057:9;5053:17;5044:6;5004:67;:::i;:::-;4864:214;;;;:::o;5084:118::-;5171:24;5189:5;5171:24;:::i;:::-;5166:3;5159:37;5084:118;;:::o;5208:222::-;5301:4;5339:2;5328:9;5324:18;5316:26;;5352:71;5420:1;5409:9;5405:17;5396:6;5352:71;:::i;:::-;5208:222;;;;:::o;5436:329::-;5495:6;5544:2;5532:9;5523:7;5519:23;5515:32;5512:119;;;5550:79;;:::i;:::-;5512:119;5670:1;5695:53;5740:7;5731:6;5720:9;5716:22;5695:53;:::i;:::-;5685:63;;5641:117;5436:329;;;;:::o;5771:1495::-;5902:6;5910;5918;5926;5934;5942;5950;5958;5966;6015:3;6003:9;5994:7;5990:23;5986:33;5983:120;;;6022:79;;:::i;:::-;5983:120;6142:1;6167:53;6212:7;6203:6;6192:9;6188:22;6167:53;:::i;:::-;6157:63;;6113:117;6269:2;6295:53;6340:7;6331:6;6320:9;6316:22;6295:53;:::i;:::-;6285:63;;6240:118;6397:2;6423:53;6468:7;6459:6;6448:9;6444:22;6423:53;:::i;:::-;6413:63;;6368:118;6525:2;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6496:118;6653:3;6680:53;6725:7;6716:6;6705:9;6701:22;6680:53;:::i;:::-;6670:63;;6624:119;6782:3;6809:53;6854:7;6845:6;6834:9;6830:22;6809:53;:::i;:::-;6799:63;;6753:119;6911:3;6938:53;6983:7;6974:6;6963:9;6959:22;6938:53;:::i;:::-;6928:63;;6882:119;7040:3;7067:53;7112:7;7103:6;7092:9;7088:22;7067:53;:::i;:::-;7057:63;;7011:119;7169:3;7196:53;7241:7;7232:6;7221:9;7217:22;7196:53;:::i;:::-;7186:63;;7140:119;5771:1495;;;;;;;;;;;:::o;7272:474::-;7340:6;7348;7397:2;7385:9;7376:7;7372:23;7368:32;7365:119;;;7403:79;;:::i;:::-;7365:119;7523:1;7548:53;7593:7;7584:6;7573:9;7569:22;7548:53;:::i;:::-;7538:63;;7494:117;7650:2;7676:53;7721:7;7712:6;7701:9;7697:22;7676:53;:::i;:::-;7666:63;;7621:118;7272:474;;;;;:::o;7752:180::-;7800:77;7797:1;7790:88;7897:4;7894:1;7887:15;7921:4;7918:1;7911:15;7938:102;7980:8;8027:5;8024:1;8020:13;7999:34;;7938:102;;;:::o;8046:848::-;8107:5;8114:4;8138:6;8129:15;;8162:5;8153:14;;8176:712;8197:1;8187:8;8184:15;8176:712;;;8292:4;8287:3;8283:14;8277:4;8274:24;8271:50;;;8301:18;;:::i;:::-;8271:50;8351:1;8341:8;8337:16;8334:451;;;8766:4;8759:5;8755:16;8746:25;;8334:451;8816:4;8810;8806:15;8798:23;;8846:32;8869:8;8846:32;:::i;:::-;8834:44;;8176:712;;;8046:848;;;;;;;:::o;8900:1073::-;8954:5;9145:8;9135:40;;9166:1;9157:10;;9168:5;;9135:40;9194:4;9184:36;;9211:1;9202:10;;9213:5;;9184:36;9280:4;9328:1;9323:27;;;;9364:1;9359:191;;;;9273:277;;9323:27;9341:1;9332:10;;9343:5;;;9359:191;9404:3;9394:8;9391:17;9388:43;;;9411:18;;:::i;:::-;9388:43;9460:8;9457:1;9453:16;9444:25;;9495:3;9488:5;9485:14;9482:40;;;9502:18;;:::i;:::-;9482:40;9535:5;;;9273:277;;9659:2;9649:8;9646:16;9640:3;9634:4;9631:13;9627:36;9609:2;9599:8;9596:16;9591:2;9585:4;9582:12;9578:35;9562:111;9559:246;;;9715:8;9709:4;9705:19;9696:28;;9750:3;9743:5;9740:14;9737:40;;;9757:18;;:::i;:::-;9737:40;9790:5;;9559:246;9830:42;9868:3;9858:8;9852:4;9849:1;9830:42;:::i;:::-;9815:57;;;;9904:4;9899:3;9895:14;9888:5;9885:25;9882:51;;;9913:18;;:::i;:::-;9882:51;9962:4;9955:5;9951:16;9942:25;;8900:1073;;;;;;:::o;9979:281::-;10037:5;10061:23;10079:4;10061:23;:::i;:::-;10053:31;;10105:25;10121:8;10105:25;:::i;:::-;10093:37;;10149:104;10186:66;10176:8;10170:4;10149:104;:::i;:::-;10140:113;;9979:281;;;;:::o;10266:410::-;10306:7;10329:20;10347:1;10329:20;:::i;:::-;10324:25;;10363:20;10381:1;10363:20;:::i;:::-;10358:25;;10418:1;10415;10411:9;10440:30;10458:11;10440:30;:::i;:::-;10429:41;;10619:1;10610:7;10606:15;10603:1;10600:22;10580:1;10573:9;10553:83;10530:139;;10649:18;;:::i;:::-;10530:139;10314:362;10266:410;;;;:::o;10682:182::-;10822:34;10818:1;10810:6;10806:14;10799:58;10682:182;:::o;10870:366::-;11012:3;11033:67;11097:2;11092:3;11033:67;:::i;:::-;11026:74;;11109:93;11198:3;11109:93;:::i;:::-;11227:2;11222:3;11218:12;11211:19;;10870:366;;;:::o;11242:419::-;11408:4;11446:2;11435:9;11431:18;11423:26;;11495:9;11489:4;11485:20;11481:1;11470:9;11466:17;11459:47;11523:131;11649:4;11523:131;:::i;:::-;11515:139;;11242:419;;;:::o;11667:173::-;11807:25;11803:1;11795:6;11791:14;11784:49;11667:173;:::o;11846:366::-;11988:3;12009:67;12073:2;12068:3;12009:67;:::i;:::-;12002:74;;12085:93;12174:3;12085:93;:::i;:::-;12203:2;12198:3;12194:12;12187:19;;11846:366;;;:::o;12218:419::-;12384:4;12422:2;12411:9;12407:18;12399:26;;12471:9;12465:4;12461:20;12457:1;12446:9;12442:17;12435:47;12499:131;12625:4;12499:131;:::i;:::-;12491:139;;12218:419;;;:::o;12643:143::-;12700:5;12731:6;12725:13;12716:22;;12747:33;12774:5;12747:33;:::i;:::-;12643:143;;;;:::o;12792:351::-;12862:6;12911:2;12899:9;12890:7;12886:23;12882:32;12879:119;;;12917:79;;:::i;:::-;12879:119;13037:1;13062:64;13118:7;13109:6;13098:9;13094:22;13062:64;:::i;:::-;13052:74;;13008:128;12792:351;;;;:::o;13149:332::-;13270:4;13308:2;13297:9;13293:18;13285:26;;13321:71;13389:1;13378:9;13374:17;13365:6;13321:71;:::i;:::-;13402:72;13470:2;13459:9;13455:18;13446:6;13402:72;:::i;:::-;13149:332;;;;;:::o;13487:85::-;13532:7;13561:5;13550:16;;13487:85;;;:::o;13578:60::-;13606:3;13627:5;13620:12;;13578:60;;;:::o;13644:158::-;13702:9;13735:61;13753:42;13762:32;13788:5;13762:32;:::i;:::-;13753:42;:::i;:::-;13735:61;:::i;:::-;13722:74;;13644:158;;;:::o;13808:147::-;13903:45;13942:5;13903:45;:::i;:::-;13898:3;13891:58;13808:147;;:::o;13961:807::-;14210:4;14248:3;14237:9;14233:19;14225:27;;14262:71;14330:1;14319:9;14315:17;14306:6;14262:71;:::i;:::-;14343:72;14411:2;14400:9;14396:18;14387:6;14343:72;:::i;:::-;14425:80;14501:2;14490:9;14486:18;14477:6;14425:80;:::i;:::-;14515;14591:2;14580:9;14576:18;14567:6;14515:80;:::i;:::-;14605:73;14673:3;14662:9;14658:19;14649:6;14605:73;:::i;:::-;14688;14756:3;14745:9;14741:19;14732:6;14688:73;:::i;:::-;13961:807;;;;;;;;;:::o;14774:143::-;14831:5;14862:6;14856:13;14847:22;;14878:33;14905:5;14878:33;:::i;:::-;14774:143;;;;:::o;14923:663::-;15011:6;15019;15027;15076:2;15064:9;15055:7;15051:23;15047:32;15044:119;;;15082:79;;:::i;:::-;15044:119;15202:1;15227:64;15283:7;15274:6;15263:9;15259:22;15227:64;:::i;:::-;15217:74;;15173:128;15340:2;15366:64;15422:7;15413:6;15402:9;15398:22;15366:64;:::i;:::-;15356:74;;15311:129;15479:2;15505:64;15561:7;15552:6;15541:9;15537:22;15505:64;:::i;:::-;15495:74;;15450:129;14923:663;;;;;:::o;15592:332::-;15713:4;15751:2;15740:9;15736:18;15728:26;;15764:71;15832:1;15821:9;15817:17;15808:6;15764:71;:::i;:::-;15845:72;15913:2;15902:9;15898:18;15889:6;15845:72;:::i;:::-;15592:332;;;;;:::o;15930:116::-;16000:21;16015:5;16000:21;:::i;:::-;15993:5;15990:32;15980:60;;16036:1;16033;16026:12;15980:60;15930:116;:::o;16052:137::-;16106:5;16137:6;16131:13;16122:22;;16153:30;16177:5;16153:30;:::i;:::-;16052:137;;;;:::o;16195:345::-;16262:6;16311:2;16299:9;16290:7;16286:23;16282:32;16279:119;;;16317:79;;:::i;:::-;16279:119;16437:1;16462:61;16515:7;16506:6;16495:9;16491:22;16462:61;:::i;:::-;16452:71;;16408:125;16195:345;;;;:::o;16546:225::-;16686:34;16682:1;16674:6;16670:14;16663:58;16755:8;16750:2;16742:6;16738:15;16731:33;16546:225;:::o;16777:366::-;16919:3;16940:67;17004:2;16999:3;16940:67;:::i;:::-;16933:74;;17016:93;17105:3;17016:93;:::i;:::-;17134:2;17129:3;17125:12;17118:19;;16777:366;;;:::o;17149:419::-;17315:4;17353:2;17342:9;17338:18;17330:26;;17402:9;17396:4;17392:20;17388:1;17377:9;17373:17;17366:47;17430:131;17556:4;17430:131;:::i;:::-;17422:139;;17149:419;;;:::o;17574:223::-;17714:34;17710:1;17702:6;17698:14;17691:58;17783:6;17778:2;17770:6;17766:15;17759:31;17574:223;:::o;17803:366::-;17945:3;17966:67;18030:2;18025:3;17966:67;:::i;:::-;17959:74;;18042:93;18131:3;18042:93;:::i;:::-;18160:2;18155:3;18151:12;18144:19;;17803:366;;;:::o;18175:419::-;18341:4;18379:2;18368:9;18364:18;18356:26;;18428:9;18422:4;18418:20;18414:1;18403:9;18399:17;18392:47;18456:131;18582:4;18456:131;:::i;:::-;18448:139;;18175:419;;;:::o;18600:221::-;18740:34;18736:1;18728:6;18724:14;18717:58;18809:4;18804:2;18796:6;18792:15;18785:29;18600:221;:::o;18827:366::-;18969:3;18990:67;19054:2;19049:3;18990:67;:::i;:::-;18983:74;;19066:93;19155:3;19066:93;:::i;:::-;19184:2;19179:3;19175:12;19168:19;;18827:366;;;:::o;19199:419::-;19365:4;19403:2;19392:9;19388:18;19380:26;;19452:9;19446:4;19442:20;19438:1;19427:9;19423:17;19416:47;19480:131;19606:4;19480:131;:::i;:::-;19472:139;;19199:419;;;:::o;19624:224::-;19764:34;19760:1;19752:6;19748:14;19741:58;19833:7;19828:2;19820:6;19816:15;19809:32;19624:224;:::o;19854:366::-;19996:3;20017:67;20081:2;20076:3;20017:67;:::i;:::-;20010:74;;20093:93;20182:3;20093:93;:::i;:::-;20211:2;20206:3;20202:12;20195:19;;19854:366;;;:::o;20226:419::-;20392:4;20430:2;20419:9;20415:18;20407:26;;20479:9;20473:4;20469:20;20465:1;20454:9;20450:17;20443:47;20507:131;20633:4;20507:131;:::i;:::-;20499:139;;20226:419;;;:::o;20651:222::-;20791:34;20787:1;20779:6;20775:14;20768:58;20860:5;20855:2;20847:6;20843:15;20836:30;20651:222;:::o;20879:366::-;21021:3;21042:67;21106:2;21101:3;21042:67;:::i;:::-;21035:74;;21118:93;21207:3;21118:93;:::i;:::-;21236:2;21231:3;21227:12;21220:19;;20879:366;;;:::o;21251:419::-;21417:4;21455:2;21444:9;21440:18;21432:26;;21504:9;21498:4;21494:20;21490:1;21479:9;21475:17;21468:47;21532:131;21658:4;21532:131;:::i;:::-;21524:139;;21251:419;;;:::o;21676:228::-;21816:34;21812:1;21804:6;21800:14;21793:58;21885:11;21880:2;21872:6;21868:15;21861:36;21676:228;:::o;21910:366::-;22052:3;22073:67;22137:2;22132:3;22073:67;:::i;:::-;22066:74;;22149:93;22238:3;22149:93;:::i;:::-;22267:2;22262:3;22258:12;22251:19;;21910:366;;;:::o;22282:419::-;22448:4;22486:2;22475:9;22471:18;22463:26;;22535:9;22529:4;22525:20;22521:1;22510:9;22506:17;22499:47;22563:131;22689:4;22563:131;:::i;:::-;22555:139;;22282:419;;;:::o;22707:175::-;22847:27;22843:1;22835:6;22831:14;22824:51;22707:175;:::o;22888:366::-;23030:3;23051:67;23115:2;23110:3;23051:67;:::i;:::-;23044:74;;23127:93;23216:3;23127:93;:::i;:::-;23245:2;23240:3;23236:12;23229:19;;22888:366;;;:::o;23260:419::-;23426:4;23464:2;23453:9;23449:18;23441:26;;23513:9;23507:4;23503:20;23499:1;23488:9;23484:17;23477:47;23541:131;23667:4;23541:131;:::i;:::-;23533:139;;23260:419;;;:::o;23685:191::-;23725:3;23744:20;23762:1;23744:20;:::i;:::-;23739:25;;23778:20;23796:1;23778:20;:::i;:::-;23773:25;;23821:1;23818;23814:9;23807:16;;23842:3;23839:1;23836:10;23833:36;;;23849:18;;:::i;:::-;23833:36;23685:191;;;;:::o;23882:176::-;24022:28;24018:1;24010:6;24006:14;23999:52;23882:176;:::o;24064:366::-;24206:3;24227:67;24291:2;24286:3;24227:67;:::i;:::-;24220:74;;24303:93;24392:3;24303:93;:::i;:::-;24421:2;24416:3;24412:12;24405:19;;24064:366;;;:::o;24436:419::-;24602:4;24640:2;24629:9;24625:18;24617:26;;24689:9;24683:4;24679:20;24675:1;24664:9;24660:17;24653:47;24717:131;24843:4;24717:131;:::i;:::-;24709:139;;24436:419;;;:::o;24861:233::-;24900:3;24923:24;24941:5;24923:24;:::i;:::-;24914:33;;24969:66;24962:5;24959:77;24956:103;;25039:18;;:::i;:::-;24956:103;25086:1;25079:5;25075:13;25068:20;;24861:233;;;:::o;25100:165::-;25240:17;25236:1;25228:6;25224:14;25217:41;25100:165;:::o;25271:366::-;25413:3;25434:67;25498:2;25493:3;25434:67;:::i;:::-;25427:74;;25510:93;25599:3;25510:93;:::i;:::-;25628:2;25623:3;25619:12;25612:19;;25271:366;;;:::o;25643:419::-;25809:4;25847:2;25836:9;25832:18;25824:26;;25896:9;25890:4;25886:20;25882:1;25871:9;25867:17;25860:47;25924:131;26050:4;25924:131;:::i;:::-;25916:139;;25643:419;;;:::o;26068:194::-;26108:4;26128:20;26146:1;26128:20;:::i;:::-;26123:25;;26162:20;26180:1;26162:20;:::i;:::-;26157:25;;26206:1;26203;26199:9;26191:17;;26230:1;26224:4;26221:11;26218:37;;;26235:18;;:::i;:::-;26218:37;26068:194;;;;:::o;26268:180::-;26316:77;26313:1;26306:88;26413:4;26410:1;26403:15;26437:4;26434:1;26427:15;26454:185;26494:1;26511:20;26529:1;26511:20;:::i;:::-;26506:25;;26545:20;26563:1;26545:20;:::i;:::-;26540:25;;26584:1;26574:35;;26589:18;;:::i;:::-;26574:35;26631:1;26628;26624:9;26619:14;;26454:185;;;;:::o;26645:220::-;26785:34;26781:1;26773:6;26769:14;26762:58;26854:3;26849:2;26841:6;26837:15;26830:28;26645:220;:::o;26871:366::-;27013:3;27034:67;27098:2;27093:3;27034:67;:::i;:::-;27027:74;;27110:93;27199:3;27110:93;:::i;:::-;27228:2;27223:3;27219:12;27212:19;;26871:366;;;:::o;27243:419::-;27409:4;27447:2;27436:9;27432:18;27424:26;;27496:9;27490:4;27486:20;27482:1;27471:9;27467:17;27460:47;27524:131;27650:4;27524:131;:::i;:::-;27516:139;;27243:419;;;:::o;27668:180::-;27716:77;27713:1;27706:88;27813:4;27810:1;27803:15;27837:4;27834:1;27827:15;27854:180;27902:77;27899:1;27892:88;27999:4;27996:1;27989:15;28023:4;28020:1;28013:15;28040:114;28107:6;28141:5;28135:12;28125:22;;28040:114;;;:::o;28160:184::-;28259:11;28293:6;28288:3;28281:19;28333:4;28328:3;28324:14;28309:29;;28160:184;;;;:::o;28350:132::-;28417:4;28440:3;28432:11;;28470:4;28465:3;28461:14;28453:22;;28350:132;;;:::o;28488:108::-;28565:24;28583:5;28565:24;:::i;:::-;28560:3;28553:37;28488:108;;:::o;28602:179::-;28671:10;28692:46;28734:3;28726:6;28692:46;:::i;:::-;28770:4;28765:3;28761:14;28747:28;;28602:179;;;;:::o;28787:113::-;28857:4;28889;28884:3;28880:14;28872:22;;28787:113;;;:::o;28936:732::-;29055:3;29084:54;29132:5;29084:54;:::i;:::-;29154:86;29233:6;29228:3;29154:86;:::i;:::-;29147:93;;29264:56;29314:5;29264:56;:::i;:::-;29343:7;29374:1;29359:284;29384:6;29381:1;29378:13;29359:284;;;29460:6;29454:13;29487:63;29546:3;29531:13;29487:63;:::i;:::-;29480:70;;29573:60;29626:6;29573:60;:::i;:::-;29563:70;;29419:224;29406:1;29403;29399:9;29394:14;;29359:284;;;29363:14;29659:3;29652:10;;29060:608;;;28936:732;;;;:::o;29674:831::-;29937:4;29975:3;29964:9;29960:19;29952:27;;29989:71;30057:1;30046:9;30042:17;30033:6;29989:71;:::i;:::-;30070:80;30146:2;30135:9;30131:18;30122:6;30070:80;:::i;:::-;30197:9;30191:4;30187:20;30182:2;30171:9;30167:18;30160:48;30225:108;30328:4;30319:6;30225:108;:::i;:::-;30217:116;;30343:72;30411:2;30400:9;30396:18;30387:6;30343:72;:::i;:::-;30425:73;30493:3;30482:9;30478:19;30469:6;30425:73;:::i;:::-;29674:831;;;;;;;;:::o;30511:177::-;30651:29;30647:1;30639:6;30635:14;30628:53;30511:177;:::o;30694:366::-;30836:3;30857:67;30921:2;30916:3;30857:67;:::i;:::-;30850:74;;30933:93;31022:3;30933:93;:::i;:::-;31051:2;31046:3;31042:12;31035:19;;30694:366;;;:::o;31066:419::-;31232:4;31270:2;31259:9;31255:18;31247:26;;31319:9;31313:4;31309:20;31305:1;31294:9;31290:17;31283:47;31347:131;31473:4;31347:131;:::i;:::-;31339:139;;31066:419;;;:::o

Swarm Source

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