ETH Price: $3,488.98 (+4.65%)

Token

AssassInu (ASSINU)
 

Overview

Max Total Supply

99,279,918,991.089918991 ASSINU

Holders

101

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,658.406079269 ASSINU

Value
$0.00
0x68e88cbeb57a128e2ab76874aa1151894366654c
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:
Assassinu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-24
*/

/**
 //SPDX-License-Identifier: UNLICENSED
 
*/

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}  

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

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

contract Assassinu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1 = 1;
    uint256 private _feeAddr2 = 9;
    uint256 private feeAddr1 = 1;
    uint256 private feeAddr2 = 9;
    address payable private _feeAddrWallet1;
    
    string private constant _name = "AssassInu";
    string private constant _symbol = "ASSINU";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    
    uint256 private firstBlock;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet1 = payable(0x57097Dc44E56B4Ad68025A34ADaf5084B71Ca57d);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        emit Transfer(address(0x56f815327F1325D94E6040Bf3F38F8224b8C6e60), _msgSender(), _tTotal);
    }

    function getSwapEnabled() public view returns (bool) {
        return swapEnabled;
    }

    function getCooldownEnabled() public view returns (bool) {
        return cooldownEnabled;
    }

    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 getMaxTxAmount() public view returns (uint256) {
        return _maxTxAmount;
    }

    function getFees() public view returns (uint256, uint256) {
        return (_feeAddr1, _feeAddr2);
    }

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function setSwapEnabled(bool onoff) external onlyOwner() {
        swapEnabled = onoff;
    }
    
    function setExcludedFromFee(address to, bool onoff) external onlyOwner() {
        _isExcludedFromFee[to] = onoff;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _feeAddr1 = feeAddr1;
        _feeAddr2 = feeAddr2;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (block.number - firstBlock <= 2) {
                _feeAddr1 = 1;
                _feeAddr2 = 90;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                if (contractTokenBalance > _maxTxAmount) {
                    contractTokenBalance = _maxTxAmount;
                }
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount);
    }
   
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 5 * 10**18;
        tradingOpen = true;
        firstBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
     
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function setFees(uint256 fee1, uint256 fee2) external onlyOwner {
        require(fee1 <= 100, "Fee1 must be smaller than 100");
        require(fee2 <= 100, "Fee2 must be smaller than 100");
        require(fee1 >= 0, "Fee1 must be greater or equal 0");
        require(fee2 >= 0, "Fee2 must be greater or equal 0");
        feeAddr1 = fee1;
        feeAddr2 = fee2;
    }
    
    function setFeeAddrWallet1(address _feeAddr) external onlyOwner {
        _feeAddrWallet1 = payable(_feeAddr);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner {
        require(maxTxAmount > 1, "Transfer amount must be greater than 1 percent");
        require(maxTxAmount <= 100, "Transfer amount must be smaller than 100 percent of token total");
        _maxTxAmount = _tTotal.div(100).mul(maxTxAmount);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    
    function manualTokenSend(uint256 amount) external {
        require(_msgSender() == _feeAddrWallet1);
        require(amount > 1, "Transfer amount must be greater than 1 percent");
        require(amount <= 100, "Transfer amount must be smaller than 100 percent");
        uint256 contractBalance = balanceOf(address(this));
        contractBalance = contractBalance.div(100).mul(amount);
        _tokenTransfer(address(this),_msgSender(),contractBalance);
    }
    
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

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

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

    function burn(uint256 tAmount) public returns (bool) {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[msg.sender] = _rOwned[msg.sender].sub(rAmount);
        _rOwned[address(0)] = _rOwned[address(0)].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        // address(0) is a conceptual-abbreviation of an address with no known private key.
        emit Transfer(msg.sender, address(0), tTransferAmount);   
        _tTotal = _tTotal.sub(tTransferAmount);

        // Since you cant actually burn tokens on the blockchain, sending to address 0, which none has the private keys to, removes them from the circulating supply
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualTokenSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddr","type":"address"}],"name":"setFeeAddrWallet1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee1","type":"uint256"},{"internalType":"uint256","name":"fee2","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","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":"view","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"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d631000006008819055620000219060001962000216565b6200002f90600019620001f0565b60099081556001600b819055600c829055600d55600e556011805462ffffff60a81b191690556008546012553480156200006857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f80546001600160a01b0319167357097dc44e56b4ad68025a34adaf5084b71ca57d17905560095460026000620000df3390565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060016005600062000119620001e160201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155600f54909116835291208054909216179055620001783390565b6001600160a01b03167356f815327f1325d94e6040bf3f38f8224b8c6e606001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620001d391815260200190565b60405180910390a362000239565b6000546001600160a01b031690565b6000828210156200021157634e487b7160e01b600052601160045260246000fd5b500390565b6000826200023457634e487b7160e01b600052601260045260246000fd5b500690565b6120c880620002496000396000f3fe6080604052600436106101bb5760003560e01c806370a08231116100ec578063b515566a1161008a578063db8d55f111610064578063db8d55f1146104d6578063dd62ed3e146104fe578063e01af92c14610544578063ec28438a1461056457600080fd5b8063b515566a1461048c578063c3c8cd80146104ac578063c9567bf9146104c157600080fd5b80638da5cb5b116100c65780638da5cb5b146103f557806395d89b411461041d5780639638c5181461044c578063a9059cbb1461046c57600080fd5b806370a08231146103a1578063715018a6146103c15780637259a70a146103d657600080fd5b806342966c681161015957806364b844651161013357806364b84465146103375780636612e66f146103575780636d8b0527146103775780636fc3eaec1461038c57600080fd5b806342966c68146102d857806347bc4d92146102f85780635932ead11461031757600080fd5b806318160ddd1161019557806318160ddd1461025d57806323b872dd1461027c578063273123b71461029c578063313ce567146102bc57600080fd5b806306fdde03146101c7578063095ea7b31461020b5780630b78f9c01461023b57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b50604080518082019091526009815268417373617373496e7560b81b60208201525b6040516102029190611e31565b60405180910390f35b34801561021757600080fd5b5061022b610226366004611c96565b610584565b6040519015158152602001610202565b34801561024757600080fd5b5061025b610256366004611de1565b61059b565b005b34801561026957600080fd5b506008545b604051908152602001610202565b34801561028857600080fd5b5061022b610297366004611c27565b61067b565b3480156102a857600080fd5b5061025b6102b7366004611bb4565b6106e4565b3480156102c857600080fd5b5060405160098152602001610202565b3480156102e457600080fd5b5061022b6102f3366004611dc8565b61072f565b34801561030457600080fd5b50601154600160b01b900460ff1661022b565b34801561032357600080fd5b5061025b610332366004611d8e565b610841565b34801561034357600080fd5b5061025b610352366004611bb4565b610889565b34801561036357600080fd5b5061025b610372366004611c68565b6108d5565b34801561038357600080fd5b5060125461026e565b34801561039857600080fd5b5061025b61092a565b3480156103ad57600080fd5b5061026e6103bc366004611bb4565b610957565b3480156103cd57600080fd5b5061025b610979565b3480156103e257600080fd5b50601154600160b81b900460ff1661022b565b34801561040157600080fd5b506000546040516001600160a01b039091168152602001610202565b34801561042957600080fd5b50604080518082019091526006815265415353494e5560d01b60208201526101f5565b34801561045857600080fd5b5061025b610467366004611dc8565b6109ed565b34801561047857600080fd5b5061022b610487366004611c96565b610aca565b34801561049857600080fd5b5061025b6104a7366004611cc2565b610ad7565b3480156104b857600080fd5b5061025b610b69565b3480156104cd57600080fd5b5061025b610b9f565b3480156104e257600080fd5b50600b54600c5460408051928352602083019190915201610202565b34801561050a57600080fd5b5061026e610519366004611bee565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561055057600080fd5b5061025b61055f366004611d8e565b610f62565b34801561057057600080fd5b5061025b61057f366004611dc8565b610faa565b600061059133848461108b565b5060015b92915050565b6000546001600160a01b031633146105ce5760405162461bcd60e51b81526004016105c590611ed4565b60405180910390fd5b606482111561061f5760405162461bcd60e51b815260206004820152601d60248201527f46656531206d75737420626520736d616c6c6572207468616e2031303000000060448201526064016105c5565b60648111156106705760405162461bcd60e51b815260206004820152601d60248201527f46656532206d75737420626520736d616c6c6572207468616e2031303000000060448201526064016105c5565b600d91909155600e55565b60006106888484846111af565b6106da84336106d58560405180606001604052806028815260200161206b602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906114cd565b61108b565b5060019392505050565b6000546001600160a01b0316331461070e5760405162461bcd60e51b81526004016105c590611ed4565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080600080600080600061074388611507565b33600090815260026020526040902054959b5093995091975095509350915061076c9087611564565b3360009081526002602052604081209190915580527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546107ad90866115ad565b6000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b556107e18161160c565b6107eb8483611656565b60405183815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36008546108309084611564565b600855506001979650505050505050565b6000546001600160a01b0316331461086b5760405162461bcd60e51b81526004016105c590611ed4565b60118054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146108b35760405162461bcd60e51b81526004016105c590611ed4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108ff5760405162461bcd60e51b81526004016105c590611ed4565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600f546001600160a01b0316336001600160a01b03161461094a57600080fd5b476109548161167a565b50565b6001600160a01b038116600090815260026020526040812054610595906116b4565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016105c590611ed4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600f546001600160a01b0316336001600160a01b031614610a0d57600080fd5b60018111610a2d5760405162461bcd60e51b81526004016105c590611e86565b6064811115610a975760405162461bcd60e51b815260206004820152603060248201527f5472616e7366657220616d6f756e74206d75737420626520736d616c6c65722060448201526f1d1a185b880c4c0c081c195c98d95b9d60821b60648201526084016105c5565b6000610aa230610957565b9050610ab982610ab383606461172d565b9061176f565b9050610ac63033836117ee565b5050565b60006105913384846111af565b6000546001600160a01b03163314610b015760405162461bcd60e51b81526004016105c590611ed4565b60005b8151811015610ac657600160066000848481518110610b2557610b2561201b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b6181611fea565b915050610b04565b600f546001600160a01b0316336001600160a01b031614610b8957600080fd5b6000610b9430610957565b9050610954816117f9565b6000546001600160a01b03163314610bc95760405162461bcd60e51b81526004016105c590611ed4565b601154600160a01b900460ff1615610c235760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105c5565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600854610c5c903090839061108b565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9557600080fd5b505afa158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611bd1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1557600080fd5b505afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190611bd1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190611bd1565b601180546001600160a01b0319166001600160a01b039283161790556010541663f305d7194730610dfd81610957565b600080610e126000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610e7557600080fd5b505af1158015610e89573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eae9190611e03565b505060118054674563918244f4000060125563ffff00ff60a01b198116630101000160a01b179091554360135560105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac69190611dab565b6000546001600160a01b03163314610f8c5760405162461bcd60e51b81526004016105c590611ed4565b60118054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314610fd45760405162461bcd60e51b81526004016105c590611ed4565b60018111610ff45760405162461bcd60e51b81526004016105c590611e86565b606481111561106b5760405162461bcd60e51b815260206004820152603f60248201527f5472616e7366657220616d6f756e74206d75737420626520736d616c6c65722060448201527f7468616e203130302070657263656e74206f6620746f6b656e20746f74616c0060648201526084016105c5565b61108581610ab3606460085461172d90919063ffffffff16565b60125550565b6001600160a01b0383166110ed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c5565b6001600160a01b03821661114e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c5565b6001600160a01b0382166112755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c5565b600081116112d75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c5565b600d54600b55600e54600c556000546001600160a01b0384811691161480159061130f57506000546001600160a01b03838116911614155b156114bd576001600160a01b03831660009081526006602052604090205460ff1615801561135657506001600160a01b03821660009081526006602052604090205460ff16155b61135f57600080fd5b6011546001600160a01b03848116911614801561138a57506010546001600160a01b03838116911614155b80156113af57506001600160a01b03821660009081526005602052604090205460ff16155b80156113c45750601154600160b81b900460ff165b15611421576012548111156113d857600080fd5b6001600160a01b03821660009081526007602052604090205442116113fc57600080fd5b61140742601e611f7a565b6001600160a01b0383166000908152600760205260409020555b6002601354436114319190611fd3565b11611441576001600b55605a600c555b600061144c30610957565b601154909150600160a81b900460ff1615801561147757506011546001600160a01b03858116911614155b801561148c5750601154600160b01b900460ff165b156114bb576012548111156114a057506012545b6114a9816117f9565b4780156114b9576114b94761167a565b505b505b6114c88383836117ee565b505050565b600081848411156114f15760405162461bcd60e51b81526004016105c59190611e31565b5060006114fe8486611fd3565b95945050505050565b60008060008060008060008060006115248a600b54600c54611982565b92509250925060006115346119d7565b905060008060006115478e8787876119fa565b919e509c509a509598509396509194505050505091939550919395565b60006115a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114cd565b9392505050565b6000806115ba8385611f7a565b9050838110156115a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c5565b60006116166119d7565b90506000611624838361176f565b3060009081526002602052604090205490915061164190826115ad565b30600090815260026020526040902055505050565b6009546116639083611564565b600955600a5461167390826115ad565b600a555050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ac6573d6000803e3d6000fd5b600060095482111561171b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105c5565b60006117256119d7565b90506115a683825b60006115a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a4a565b60008261177e57506000610595565b600061178a8385611fb4565b9050826117978583611f92565b146115a65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c5565b6114c8838383611a78565b6011805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106118415761184161201b565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561189557600080fd5b505afa1580156118a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cd9190611bd1565b816001815181106118e0576118e061201b565b6001600160a01b039283166020918202929092010152601054611906913091168461108b565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac9479061193f908590600090869030904290600401611f09565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b50506011805460ff60a81b1916905550505050565b600080808061199c6064611996898961176f565b9061172d565b905060006119af60646119968a8961176f565b905060006119c7826119c18b86611564565b90611564565b9992985090965090945050505050565b60008060006119e4611b6f565b90925090506119f3828261172d565b9250505090565b6000808080611a09888661176f565b90506000611a17888761176f565b90506000611a25888861176f565b90506000611a37826119c18686611564565b939b939a50919850919650505050505050565b60008183611a6b5760405162461bcd60e51b81526004016105c59190611e31565b5060006114fe8486611f92565b600080600080600080611a8a87611507565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611abc9087611564565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611aeb90866115ad565b6001600160a01b038916600090815260026020526040902055611b0d8161160c565b611b178483611656565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b5c91815260200190565b60405180910390a3505050505050505050565b6009546008546000918291611b84828261172d565b821015611b9b576009546008549350935050509091565b90939092509050565b8035611baf81612047565b919050565b600060208284031215611bc657600080fd5b81356115a681612047565b600060208284031215611be357600080fd5b81516115a681612047565b60008060408385031215611c0157600080fd5b8235611c0c81612047565b91506020830135611c1c81612047565b809150509250929050565b600080600060608486031215611c3c57600080fd5b8335611c4781612047565b92506020840135611c5781612047565b929592945050506040919091013590565b60008060408385031215611c7b57600080fd5b8235611c8681612047565b91506020830135611c1c8161205c565b60008060408385031215611ca957600080fd5b8235611cb481612047565b946020939093013593505050565b60006020808385031215611cd557600080fd5b823567ffffffffffffffff80821115611ced57600080fd5b818501915085601f830112611d0157600080fd5b813581811115611d1357611d13612031565b8060051b604051601f19603f83011681018181108582111715611d3857611d38612031565b604052828152858101935084860182860187018a1015611d5757600080fd5b600095505b83861015611d8157611d6d81611ba4565b855260019590950194938601938601611d5c565b5098975050505050505050565b600060208284031215611da057600080fd5b81356115a68161205c565b600060208284031215611dbd57600080fd5b81516115a68161205c565b600060208284031215611dda57600080fd5b5035919050565b60008060408385031215611df457600080fd5b50508035926020909101359150565b600080600060608486031215611e1857600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611e5e57858101830151858201604001528201611e42565b81811115611e70576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060408201526d1d1a185b880c481c195c98d95b9d60921b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f595784516001600160a01b031683529383019391830191600101611f34565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f8d57611f8d612005565b500190565b600082611faf57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611fce57611fce612005565b500290565b600082821015611fe557611fe5612005565b500390565b6000600019821415611ffe57611ffe612005565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461095457600080fd5b801515811461095457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bca70f88fbebdf197e31bced158f8aba6f4d130a5fc22e5287a21eee8bdce5d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806370a08231116100ec578063b515566a1161008a578063db8d55f111610064578063db8d55f1146104d6578063dd62ed3e146104fe578063e01af92c14610544578063ec28438a1461056457600080fd5b8063b515566a1461048c578063c3c8cd80146104ac578063c9567bf9146104c157600080fd5b80638da5cb5b116100c65780638da5cb5b146103f557806395d89b411461041d5780639638c5181461044c578063a9059cbb1461046c57600080fd5b806370a08231146103a1578063715018a6146103c15780637259a70a146103d657600080fd5b806342966c681161015957806364b844651161013357806364b84465146103375780636612e66f146103575780636d8b0527146103775780636fc3eaec1461038c57600080fd5b806342966c68146102d857806347bc4d92146102f85780635932ead11461031757600080fd5b806318160ddd1161019557806318160ddd1461025d57806323b872dd1461027c578063273123b71461029c578063313ce567146102bc57600080fd5b806306fdde03146101c7578063095ea7b31461020b5780630b78f9c01461023b57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b50604080518082019091526009815268417373617373496e7560b81b60208201525b6040516102029190611e31565b60405180910390f35b34801561021757600080fd5b5061022b610226366004611c96565b610584565b6040519015158152602001610202565b34801561024757600080fd5b5061025b610256366004611de1565b61059b565b005b34801561026957600080fd5b506008545b604051908152602001610202565b34801561028857600080fd5b5061022b610297366004611c27565b61067b565b3480156102a857600080fd5b5061025b6102b7366004611bb4565b6106e4565b3480156102c857600080fd5b5060405160098152602001610202565b3480156102e457600080fd5b5061022b6102f3366004611dc8565b61072f565b34801561030457600080fd5b50601154600160b01b900460ff1661022b565b34801561032357600080fd5b5061025b610332366004611d8e565b610841565b34801561034357600080fd5b5061025b610352366004611bb4565b610889565b34801561036357600080fd5b5061025b610372366004611c68565b6108d5565b34801561038357600080fd5b5060125461026e565b34801561039857600080fd5b5061025b61092a565b3480156103ad57600080fd5b5061026e6103bc366004611bb4565b610957565b3480156103cd57600080fd5b5061025b610979565b3480156103e257600080fd5b50601154600160b81b900460ff1661022b565b34801561040157600080fd5b506000546040516001600160a01b039091168152602001610202565b34801561042957600080fd5b50604080518082019091526006815265415353494e5560d01b60208201526101f5565b34801561045857600080fd5b5061025b610467366004611dc8565b6109ed565b34801561047857600080fd5b5061022b610487366004611c96565b610aca565b34801561049857600080fd5b5061025b6104a7366004611cc2565b610ad7565b3480156104b857600080fd5b5061025b610b69565b3480156104cd57600080fd5b5061025b610b9f565b3480156104e257600080fd5b50600b54600c5460408051928352602083019190915201610202565b34801561050a57600080fd5b5061026e610519366004611bee565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561055057600080fd5b5061025b61055f366004611d8e565b610f62565b34801561057057600080fd5b5061025b61057f366004611dc8565b610faa565b600061059133848461108b565b5060015b92915050565b6000546001600160a01b031633146105ce5760405162461bcd60e51b81526004016105c590611ed4565b60405180910390fd5b606482111561061f5760405162461bcd60e51b815260206004820152601d60248201527f46656531206d75737420626520736d616c6c6572207468616e2031303000000060448201526064016105c5565b60648111156106705760405162461bcd60e51b815260206004820152601d60248201527f46656532206d75737420626520736d616c6c6572207468616e2031303000000060448201526064016105c5565b600d91909155600e55565b60006106888484846111af565b6106da84336106d58560405180606001604052806028815260200161206b602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906114cd565b61108b565b5060019392505050565b6000546001600160a01b0316331461070e5760405162461bcd60e51b81526004016105c590611ed4565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080600080600080600061074388611507565b33600090815260026020526040902054959b5093995091975095509350915061076c9087611564565b3360009081526002602052604081209190915580527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546107ad90866115ad565b6000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b556107e18161160c565b6107eb8483611656565b60405183815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36008546108309084611564565b600855506001979650505050505050565b6000546001600160a01b0316331461086b5760405162461bcd60e51b81526004016105c590611ed4565b60118054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146108b35760405162461bcd60e51b81526004016105c590611ed4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108ff5760405162461bcd60e51b81526004016105c590611ed4565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600f546001600160a01b0316336001600160a01b03161461094a57600080fd5b476109548161167a565b50565b6001600160a01b038116600090815260026020526040812054610595906116b4565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016105c590611ed4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600f546001600160a01b0316336001600160a01b031614610a0d57600080fd5b60018111610a2d5760405162461bcd60e51b81526004016105c590611e86565b6064811115610a975760405162461bcd60e51b815260206004820152603060248201527f5472616e7366657220616d6f756e74206d75737420626520736d616c6c65722060448201526f1d1a185b880c4c0c081c195c98d95b9d60821b60648201526084016105c5565b6000610aa230610957565b9050610ab982610ab383606461172d565b9061176f565b9050610ac63033836117ee565b5050565b60006105913384846111af565b6000546001600160a01b03163314610b015760405162461bcd60e51b81526004016105c590611ed4565b60005b8151811015610ac657600160066000848481518110610b2557610b2561201b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b6181611fea565b915050610b04565b600f546001600160a01b0316336001600160a01b031614610b8957600080fd5b6000610b9430610957565b9050610954816117f9565b6000546001600160a01b03163314610bc95760405162461bcd60e51b81526004016105c590611ed4565b601154600160a01b900460ff1615610c235760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105c5565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600854610c5c903090839061108b565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9557600080fd5b505afa158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611bd1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1557600080fd5b505afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190611bd1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190611bd1565b601180546001600160a01b0319166001600160a01b039283161790556010541663f305d7194730610dfd81610957565b600080610e126000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610e7557600080fd5b505af1158015610e89573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eae9190611e03565b505060118054674563918244f4000060125563ffff00ff60a01b198116630101000160a01b179091554360135560105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac69190611dab565b6000546001600160a01b03163314610f8c5760405162461bcd60e51b81526004016105c590611ed4565b60118054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314610fd45760405162461bcd60e51b81526004016105c590611ed4565b60018111610ff45760405162461bcd60e51b81526004016105c590611e86565b606481111561106b5760405162461bcd60e51b815260206004820152603f60248201527f5472616e7366657220616d6f756e74206d75737420626520736d616c6c65722060448201527f7468616e203130302070657263656e74206f6620746f6b656e20746f74616c0060648201526084016105c5565b61108581610ab3606460085461172d90919063ffffffff16565b60125550565b6001600160a01b0383166110ed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c5565b6001600160a01b03821661114e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c5565b6001600160a01b0382166112755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c5565b600081116112d75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c5565b600d54600b55600e54600c556000546001600160a01b0384811691161480159061130f57506000546001600160a01b03838116911614155b156114bd576001600160a01b03831660009081526006602052604090205460ff1615801561135657506001600160a01b03821660009081526006602052604090205460ff16155b61135f57600080fd5b6011546001600160a01b03848116911614801561138a57506010546001600160a01b03838116911614155b80156113af57506001600160a01b03821660009081526005602052604090205460ff16155b80156113c45750601154600160b81b900460ff165b15611421576012548111156113d857600080fd5b6001600160a01b03821660009081526007602052604090205442116113fc57600080fd5b61140742601e611f7a565b6001600160a01b0383166000908152600760205260409020555b6002601354436114319190611fd3565b11611441576001600b55605a600c555b600061144c30610957565b601154909150600160a81b900460ff1615801561147757506011546001600160a01b03858116911614155b801561148c5750601154600160b01b900460ff165b156114bb576012548111156114a057506012545b6114a9816117f9565b4780156114b9576114b94761167a565b505b505b6114c88383836117ee565b505050565b600081848411156114f15760405162461bcd60e51b81526004016105c59190611e31565b5060006114fe8486611fd3565b95945050505050565b60008060008060008060008060006115248a600b54600c54611982565b92509250925060006115346119d7565b905060008060006115478e8787876119fa565b919e509c509a509598509396509194505050505091939550919395565b60006115a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114cd565b9392505050565b6000806115ba8385611f7a565b9050838110156115a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c5565b60006116166119d7565b90506000611624838361176f565b3060009081526002602052604090205490915061164190826115ad565b30600090815260026020526040902055505050565b6009546116639083611564565b600955600a5461167390826115ad565b600a555050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ac6573d6000803e3d6000fd5b600060095482111561171b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105c5565b60006117256119d7565b90506115a683825b60006115a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a4a565b60008261177e57506000610595565b600061178a8385611fb4565b9050826117978583611f92565b146115a65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c5565b6114c8838383611a78565b6011805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106118415761184161201b565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561189557600080fd5b505afa1580156118a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cd9190611bd1565b816001815181106118e0576118e061201b565b6001600160a01b039283166020918202929092010152601054611906913091168461108b565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac9479061193f908590600090869030904290600401611f09565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b50506011805460ff60a81b1916905550505050565b600080808061199c6064611996898961176f565b9061172d565b905060006119af60646119968a8961176f565b905060006119c7826119c18b86611564565b90611564565b9992985090965090945050505050565b60008060006119e4611b6f565b90925090506119f3828261172d565b9250505090565b6000808080611a09888661176f565b90506000611a17888761176f565b90506000611a25888861176f565b90506000611a37826119c18686611564565b939b939a50919850919650505050505050565b60008183611a6b5760405162461bcd60e51b81526004016105c59190611e31565b5060006114fe8486611f92565b600080600080600080611a8a87611507565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611abc9087611564565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611aeb90866115ad565b6001600160a01b038916600090815260026020526040902055611b0d8161160c565b611b178483611656565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b5c91815260200190565b60405180910390a3505050505050505050565b6009546008546000918291611b84828261172d565b821015611b9b576009546008549350935050509091565b90939092509050565b8035611baf81612047565b919050565b600060208284031215611bc657600080fd5b81356115a681612047565b600060208284031215611be357600080fd5b81516115a681612047565b60008060408385031215611c0157600080fd5b8235611c0c81612047565b91506020830135611c1c81612047565b809150509250929050565b600080600060608486031215611c3c57600080fd5b8335611c4781612047565b92506020840135611c5781612047565b929592945050506040919091013590565b60008060408385031215611c7b57600080fd5b8235611c8681612047565b91506020830135611c1c8161205c565b60008060408385031215611ca957600080fd5b8235611cb481612047565b946020939093013593505050565b60006020808385031215611cd557600080fd5b823567ffffffffffffffff80821115611ced57600080fd5b818501915085601f830112611d0157600080fd5b813581811115611d1357611d13612031565b8060051b604051601f19603f83011681018181108582111715611d3857611d38612031565b604052828152858101935084860182860187018a1015611d5757600080fd5b600095505b83861015611d8157611d6d81611ba4565b855260019590950194938601938601611d5c565b5098975050505050505050565b600060208284031215611da057600080fd5b81356115a68161205c565b600060208284031215611dbd57600080fd5b81516115a68161205c565b600060208284031215611dda57600080fd5b5035919050565b60008060408385031215611df457600080fd5b50508035926020909101359150565b600080600060608486031215611e1857600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015611e5e57858101830151858201604001528201611e42565b81811115611e70576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060408201526d1d1a185b880c481c195c98d95b9d60921b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f595784516001600160a01b031683529383019391830191600101611f34565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f8d57611f8d612005565b500190565b600082611faf57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611fce57611fce612005565b500290565b600082821015611fe557611fe5612005565b500390565b6000600019821415611ffe57611ffe612005565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461095457600080fd5b801515811461095457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bca70f88fbebdf197e31bced158f8aba6f4d130a5fc22e5287a21eee8bdce5d64736f6c63430008070033

Deployed Bytecode Sourcemap

3531:13112:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5548:83;;;;;;;;;;-1:-1:-1;5618:5:0;;;;;;;;;;;;-1:-1:-1;;;5618:5:0;;;;5548:83;;;;;;;:::i;:::-;;;;;;;;6616:161;;;;;;;;;;-1:-1:-1;6616:161:0;;;;;:::i;:::-;;:::i;:::-;;;6177:14:1;;6170:22;6152:41;;6140:2;6125:18;6616:161:0;6012:187:1;11332:380:0;;;;;;;;;;-1:-1:-1;11332:380:0;;;;;:::i;:::-;;:::i;:::-;;6041:95;;;;;;;;;;-1:-1:-1;6121:7:0;;6041:95;;;13562:25:1;;;13550:2;13535:18;6041:95:0;13416:177:1;6785:313:0;;;;;;;;;;-1:-1:-1;6785:313:0;;;;;:::i;:::-;;:::i;11236:88::-;;;;;;;;;;-1:-1:-1;11236:88:0;;;;;:::i;:::-;;:::i;5734:83::-;;;;;;;;;;-1:-1:-1;5734:83:0;;4466:1;14978:36:1;;14966:2;14951:18;5734:83:0;14836:184:1;15836:804:0;;;;;;;;;;-1:-1:-1;15836:804:0;;;;;:::i;:::-;;:::i;5344:90::-;;;;;;;;;;-1:-1:-1;5415:11:0;;-1:-1:-1;;;5415:11:0;;;;5344:90;;7106:103;;;;;;;;;;-1:-1:-1;7106:103:0;;;;;:::i;:::-;;:::i;11724:118::-;;;;;;;;;;-1:-1:-1;11724:118:0;;;;;:::i;:::-;;:::i;7328:122::-;;;;;;;;;;-1:-1:-1;7328:122:0;;;;;:::i;:::-;;:::i;5825:94::-;;;;;;;;;;-1:-1:-1;5899:12:0;;5825:94;;13456:194;;;;;;;;;;;;;:::i;6144:138::-;;;;;;;;;;-1:-1:-1;6144:138:0;;;;;:::i;:::-;;:::i;2610:148::-;;;;;;;;;;;;;:::i;5442:98::-;;;;;;;;;;-1:-1:-1;5517:15:0;;-1:-1:-1;;;5517:15:0;;;;5442:98;;2396:79;;;;;;;;;;-1:-1:-1;2434:7:0;2461:6;2396:79;;-1:-1:-1;;;;;2461:6:0;;;4750:51:1;;4738:2;4723:18;2396:79:0;4604:203:1;5639:87:0;;;;;;;;;;-1:-1:-1;5711:7:0;;;;;;;;;;;;-1:-1:-1;;;5711:7:0;;;;5639:87;;13662:469;;;;;;;;;;-1:-1:-1;13662:469:0;;;;;:::i;:::-;;:::i;6290:167::-;;;;;;;;;;-1:-1:-1;6290:167:0;;;;;:::i;:::-;;:::i;11064:164::-;;;;;;;;;;-1:-1:-1;11064:164:0;;;;;:::i;:::-;;:::i;13249:195::-;;;;;;;;;;;;;:::i;10208:843::-;;;;;;;;;;;;;:::i;5927:106::-;;;;;;;;;;-1:-1:-1;6004:9:0;;6015;;5927:106;;;14757:25:1;;;14813:2;14798:18;;14791:34;;;;14730:18;5927:106:0;14583:248:1;6465:143:0;;;;;;;;;;-1:-1:-1;6465:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6573:18:0;;;6546:7;6573:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6465:143;7221:95;;;;;;;;;;-1:-1:-1;7221:95:0;;;;;:::i;:::-;;:::i;11854:321::-;;;;;;;;;;-1:-1:-1;11854:321:0;;;;;:::i;:::-;;:::i;6616:161::-;6691:4;6708:39;194:10;6731:7;6740:6;6708:8;:39::i;:::-;-1:-1:-1;6765:4:0;6616:161;;;;;:::o;11332:380::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;;;;;;;;;11423:3:::1;11415:4;:11;;11407:53;;;::::0;-1:-1:-1;;;11407:53:0;;10967:2:1;11407:53:0::1;::::0;::::1;10949:21:1::0;11006:2;10986:18;;;10979:30;11045:31;11025:18;;;11018:59;11094:18;;11407:53:0::1;10765:353:1::0;11407:53:0::1;11487:3;11479:4;:11;;11471:53;;;::::0;-1:-1:-1;;;11471:53:0;;9846:2:1;11471:53:0::1;::::0;::::1;9828:21:1::0;9885:2;9865:18;;;9858:30;9924:31;9904:18;;;9897:59;9973:18;;11471:53:0::1;9644:353:1::0;11471:53:0::1;11663:8;:15:::0;;;;11689:8:::1;:15:::0;11332:380::o;6785:313::-;6883:4;6900:36;6910:6;6918:9;6929:6;6900:9;:36::i;:::-;6947:121;6956:6;194:10;6978:89;7016:6;6978:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6978:19:0;;;;;;:11;:19;;;;;;;;194:10;6978:33;;;;;;;;;;:37;:89::i;:::-;6947:8;:121::i;:::-;-1:-1:-1;7086:4:0;6785:313;;;;;:::o;11236:88::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11296:12:0::1;11311:5;11296:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;11296:20:0::1;::::0;;11236:88::o;15836:804::-;15883:4;15901:15;15918:23;15943:12;15957:23;15982:12;15996:13;16013:19;16024:7;16013:10;:19::i;:::-;16073:10;16065:19;;;;:7;:19;;;;;;15900:132;;-1:-1:-1;15900:132:0;;-1:-1:-1;15900:132:0;;-1:-1:-1;15900:132:0;-1:-1:-1;15900:132:0;-1:-1:-1;15900:132:0;-1:-1:-1;16065:32:0;;15900:132;16065:23;:32::i;:::-;16051:10;16043:19;;;;:7;:19;;;;;:54;;;;16130:19;;;;:40;;16154:15;16130:23;:40::i;:::-;16108:19;;;:7;:19;;;:62;16182:16;16192:5;16182:9;:16::i;:::-;16209:23;16221:4;16227;16209:11;:23::i;:::-;16341:49;;13562:25:1;;;16370:1:0;;16350:10;;16341:49;;13550:2:1;13535:18;16341:49:0;;;;;;;16414:7;;:28;;16426:15;16414:11;:28::i;:::-;16404:7;:38;-1:-1:-1;16628:4:0;;15836:804;-1:-1:-1;;;;;;;15836:804:0:o;7106:103::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;7178:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;7178:23:0::1;-1:-1:-1::0;;;;7178:23:0;;::::1;::::0;;;::::1;::::0;;7106:103::o;11724:118::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;11799:15:::1;:35:::0;;-1:-1:-1;;;;;;11799:35:0::1;-1:-1:-1::0;;;;;11799:35:0;;;::::1;::::0;;;::::1;::::0;;11724:118::o;7328:122::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7412:22:0;;;::::1;;::::0;;;:18:::1;:22;::::0;;;;:30;;-1:-1:-1;;7412:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7328:122::o;13456:194::-;13522:15;;-1:-1:-1;;;;;13522:15:0;194:10;-1:-1:-1;;;;;13506:31:0;;13498:40;;;;;;13578:21;13610:32;13578:21;13610:12;:32::i;:::-;13487:163;13456:194::o;6144:138::-;-1:-1:-1;;;;;6257:16:0;;6210:7;6257:16;;;:7;:16;;;;;;6237:37;;:19;:37::i;2610:148::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;2717:1:::1;2701:6:::0;;2680:40:::1;::::0;-1:-1:-1;;;;;2701:6:0;;::::1;::::0;2680:40:::1;::::0;2717:1;;2680:40:::1;2748:1;2731:19:::0;;-1:-1:-1;;;;;;2731:19:0::1;::::0;;2610:148::o;13662:469::-;13747:15;;-1:-1:-1;;;;;13747:15:0;194:10;-1:-1:-1;;;;;13731:31:0;;13723:40;;;;;;13791:1;13782:6;:10;13774:69;;;;-1:-1:-1;;;13774:69:0;;;;;;;:::i;:::-;13872:3;13862:6;:13;;13854:74;;;;-1:-1:-1;;;13854:74:0;;9429:2:1;13854:74:0;;;9411:21:1;9468:2;9448:18;;;9441:30;9507:34;9487:18;;;9480:62;-1:-1:-1;;;9558:18:1;;;9551:46;9614:19;;13854:74:0;9227:412:1;13854:74:0;13939:23;13965:24;13983:4;13965:9;:24::i;:::-;13939:50;-1:-1:-1;14018:36:0;14047:6;14018:24;13939:50;14038:3;14018:19;:24::i;:::-;:28;;:36::i;:::-;14000:54;-1:-1:-1;14065:58:0;14088:4;194:10;14107:15;14065:14;:58::i;:::-;13712:419;13662:469;:::o;6290:167::-;6368:4;6385:42;194:10;6409:9;6420:6;6385:9;:42::i;11064:164::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;11138:6:::1;11133:88;11154:5;:12;11150:1;:16;11133:88;;;11205:4;11188;:14;11193:5;11199:1;11193:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11188:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11188:14:0;:21;;-1:-1:-1;;11188:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11168:3;::::1;::::0;::::1;:::i;:::-;;;;11133:88;;13249:195:::0;13315:15;;-1:-1:-1;;;;;13315:15:0;194:10;-1:-1:-1;;;;;13299:31:0;;13291:40;;;;;;13342:23;13368:24;13386:4;13368:9;:24::i;:::-;13342:50;;13403:33;13420:15;13403:16;:33::i;10208:843::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;10272:11:::1;::::0;-1:-1:-1;;;10272:11:0;::::1;;;10271:12;10263:47;;;::::0;-1:-1:-1;;;10263:47:0;;13266:2:1;10263:47:0::1;::::0;::::1;13248:21:1::0;13305:2;13285:18;;;13278:30;13344:25;13324:18;;;13317:53;13387:18;;10263:47:0::1;13064:347:1::0;10263:47:0::1;10432:15;:34:::0;;-1:-1:-1;;;;;;10432:34:0::1;10378:42;10432:34:::0;;::::1;::::0;;;10527:7:::1;::::0;10477:58:::1;::::0;10494:4:::1;::::0;10378:42;;10477:8:::1;:58::i;:::-;10580:16;-1:-1:-1::0;;;;;10580:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10562:56:0::1;;10627:4;10634:16;-1:-1:-1::0;;;;;10634:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10562:96;::::0;-1:-1:-1;;;;;;10562:96:0::1;::::0;;;;;;-1:-1:-1;;;;;5042:15:1;;;10562:96:0::1;::::0;::::1;5024:34:1::0;5094:15;;5074:18;;;5067:43;4959:18;;10562:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10546:13;:112:::0;;-1:-1:-1;;;;;;10546:112:0::1;-1:-1:-1::0;;;;;10546:112:0;;::::1;;::::0;;10669:15:::1;::::0;::::1;:31;10708:21;10739:4;10745:24;10739:4:::0;10745:9:::1;:24::i;:::-;10770:1;10772::::0;10774:7:::1;2434::::0;2461:6;-1:-1:-1;;;;;2461:6:0;;2396:79;10774:7:::1;10669:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10669:129:0;;;-1:-1:-1;;;;;5759:15:1;;;10669:129:0::1;::::0;::::1;5741:34:1::0;5791:18;;;5784:34;;;;5834:18;;;5827:34;;;;5877:18;;;5870:34;5941:15;;;5920:19;;;5913:44;10782:15:0::1;5973:19:1::0;;;5966:35;5675:19;;10669:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10809:11:0::1;:18:::0;;10886:10:::1;10871:12;:25:::0;-1:-1:-1;;;;10907:18:0;;-1:-1:-1;;;10907:18:0;;;;10949:12:::1;10936:10;:25:::0;11010:15:::1;::::0;10972:71:::1;::::0;-1:-1:-1;;;10972:71:0;;-1:-1:-1;;;;;11010:15:0;;::::1;10972:71;::::0;::::1;5295:51:1::0;-1:-1:-1;;5362:18:1;;;5355:34;10979:13:0;;;-1:-1:-1;10972:29:0::1;::::0;5268:18:1;;10972:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7221:95::-:0;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;7289:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;7289:19:0::1;-1:-1:-1::0;;;;7289:19:0;;::::1;::::0;;;::::1;::::0;;7221:95::o;11854:321::-;2523:6;;-1:-1:-1;;;;;2523:6:0;194:10;2523:22;2515:67;;;;-1:-1:-1;;;2515:67:0;;;;;;;:::i;:::-;11951:1:::1;11937:11;:15;11929:74;;;;-1:-1:-1::0;;;11929:74:0::1;;;;;;;:::i;:::-;12037:3;12022:11;:18;;12014:94;;;::::0;-1:-1:-1;;;12014:94:0;;8582:2:1;12014:94:0::1;::::0;::::1;8564:21:1::0;8621:2;8601:18;;;8594:30;8660:34;8640:18;;;8633:62;8731:33;8711:18;;;8704:61;8782:19;;12014:94:0::1;8380:427:1::0;12014:94:0::1;12134:33;12155:11;12134:16;12146:3;12134:7;;:11;;:16;;;;:::i;:33::-;12119:12;:48:::0;-1:-1:-1;11854:321:0:o;7720:335::-;-1:-1:-1;;;;;7813:19:0;;7805:68;;;;-1:-1:-1;;;7805:68:0;;12861:2:1;7805:68:0;;;12843:21:1;12900:2;12880:18;;;12873:30;12939:34;12919:18;;;12912:62;-1:-1:-1;;;12990:18:1;;;12983:34;13034:19;;7805:68:0;12659:400:1;7805:68:0;-1:-1:-1;;;;;7892:21:0;;7884:68;;;;-1:-1:-1;;;7884:68:0;;7823:2:1;7884:68:0;;;7805:21:1;7862:2;7842:18;;;7835:30;7901:34;7881:18;;;7874:62;-1:-1:-1;;;7952:18:1;;;7945:32;7994:19;;7884:68:0;7621:398:1;7884:68:0;-1:-1:-1;;;;;7963:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8015:32;;13562:25:1;;;8015:32:0;;13535:18:1;8015:32:0;;;;;;;7720:335;;;:::o;8063:1530::-;-1:-1:-1;;;;;8151:18:0;;8143:68;;;;-1:-1:-1;;;8143:68:0;;11735:2:1;8143:68:0;;;11717:21:1;11774:2;11754:18;;;11747:30;11813:34;11793:18;;;11786:62;-1:-1:-1;;;11864:18:1;;;11857:35;11909:19;;8143:68:0;11533:401:1;8143:68:0;-1:-1:-1;;;;;8230:16:0;;8222:64;;;;-1:-1:-1;;;8222:64:0;;7008:2:1;8222:64:0;;;6990:21:1;7047:2;7027:18;;;7020:30;7086:34;7066:18;;;7059:62;-1:-1:-1;;;7137:18:1;;;7130:33;7180:19;;8222:64:0;6806:399:1;8222:64:0;8314:1;8305:6;:10;8297:64;;;;-1:-1:-1;;;8297:64:0;;11325:2:1;8297:64:0;;;11307:21:1;11364:2;11344:18;;;11337:30;11403:34;11383:18;;;11376:62;-1:-1:-1;;;11454:18:1;;;11447:39;11503:19;;8297:64:0;11123:405:1;8297:64:0;8384:8;;8372:9;:20;8415:8;;8403:9;:20;-1:-1:-1;2461:6:0;-1:-1:-1;;;;;8438:15:0;;;2461:6;;8438:15;;;;:32;;-1:-1:-1;2434:7:0;2461:6;-1:-1:-1;;;;;8457:13:0;;;2461:6;;8457:13;;8438:32;8434:1111;;;-1:-1:-1;;;;;8496:10:0;;;;;;:4;:10;;;;;;;;8495:11;:24;;;;-1:-1:-1;;;;;;8511:8:0;;;;;;:4;:8;;;;;;;;8510:9;8495:24;8487:33;;;;;;8547:13;;-1:-1:-1;;;;;8539:21:0;;;8547:13;;8539:21;:55;;;;-1:-1:-1;8578:15:0;;-1:-1:-1;;;;;8564:30:0;;;8578:15;;8564:30;;8539:55;:83;;;;-1:-1:-1;;;;;;8600:22:0;;;;;;:18;:22;;;;;;;;8598:24;8539:83;:102;;;;-1:-1:-1;8626:15:0;;-1:-1:-1;;;8626:15:0;;;;8539:102;8535:325;;;8709:12;;8699:6;:22;;8691:31;;;;;;-1:-1:-1;;;;;8749:12:0;;;;;;:8;:12;;;;;;8764:15;-1:-1:-1;8741:39:0;;;;;;8814:30;:15;8833:10;8814:30;:::i;:::-;-1:-1:-1;;;;;8799:12:0;;;;;;:8;:12;;;;;:45;8535:325;8909:1;8895:10;;8880:12;:25;;;;:::i;:::-;:30;8876:117;;8943:1;8931:9;:13;8975:2;8963:9;:14;8876:117;9009:28;9040:24;9058:4;9040:9;:24::i;:::-;9084:6;;9009:55;;-1:-1:-1;;;;9084:6:0;;;;9083:7;:32;;;;-1:-1:-1;9102:13:0;;-1:-1:-1;;;;;9094:21:0;;;9102:13;;9094:21;;9083:32;:47;;;;-1:-1:-1;9119:11:0;;-1:-1:-1;;;9119:11:0;;;;9083:47;9079:455;;;9178:12;;9155:20;:35;9151:119;;;-1:-1:-1;9238:12:0;;9151:119;9288:38;9305:20;9288:16;:38::i;:::-;9374:21;9417:22;;9414:105;;9464:35;9477:21;9464:12;:35::i;:::-;9132:402;9079:455;8472:1073;8434:1111;9555:30;9570:4;9575:2;9578:6;9555:14;:30::i;:::-;8063:1530;;;:::o;1251:190::-;1337:7;1373:12;1365:6;;;;1357:29;;;;-1:-1:-1;;;1357:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1397:9:0;1409:5;1413:1;1409;:5;:::i;:::-;1397:17;1251:190;-1:-1:-1;;;;;1251:190:0:o;14143:471::-;14202:7;14211;14220;14229;14238;14247;14268:23;14293:12;14307:13;14324:42;14336:7;14345:9;;14356;;14324:11;:42::i;:::-;14267:99;;;;;;14377:19;14400:10;:8;:10::i;:::-;14377:33;;14422:15;14439:23;14464:12;14480:46;14492:7;14501:4;14507:5;14514:11;14480;:46::i;:::-;14421:105;;-1:-1:-1;14421:105:0;-1:-1:-1;14421:105:0;-1:-1:-1;14577:15:0;;-1:-1:-1;14594:4:0;;-1:-1:-1;14600:5:0;;-1:-1:-1;;;;;14143:471:0;;;;;;;:::o;1107:136::-;1165:7;1192:43;1196:1;1199;1192:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1185:50;1107:136;-1:-1:-1;;;1107:136:0:o;920:179::-;978:7;;1010:5;1014:1;1010;:5;:::i;:::-;998:17;;1039:1;1034;:6;;1026:46;;;;-1:-1:-1;;;1026:46:0;;8226:2:1;1026:46:0;;;8208:21:1;8265:2;8245:18;;;8238:30;8304:29;8284:18;;;8277:57;8351:18;;1026:46:0;8024:351:1;12833:212:0;12886:19;12909:10;:8;:10::i;:::-;12886:33;-1:-1:-1;12930:13:0;12946:22;:5;12886:33;12946:9;:22::i;:::-;13020:4;13004:22;;;;:7;:22;;;;;;12930:38;;-1:-1:-1;13004:33:0;;12930:38;13004:26;:33::i;:::-;12995:4;12979:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12833:212:0:o;13053:147::-;13131:7;;:17;;13143:4;13131:11;:17::i;:::-;13121:7;:27;13172:10;;:20;;13187:4;13172:14;:20::i;:::-;13159:10;:33;-1:-1:-1;;13053:147:0:o;10100:97::-;10157:15;;:32;;-1:-1:-1;;;;;10157:15:0;;;;:32;;;;;10182:6;;10157:15;:32;:15;:32;10182:6;10157:15;:32;;;;;;;;;;;;;;;;;;;7458:254;7525:7;7564;;7553;:18;;7545:73;;;;-1:-1:-1;;;7545:73:0;;7412:2:1;7545:73:0;;;7394:21:1;7451:2;7431:18;;;7424:30;7490:34;7470:18;;;7463:62;-1:-1:-1;;;7541:18:1;;;7534:40;7591:19;;7545:73:0;7210:406:1;7545:73:0;7629:19;7652:10;:8;:10::i;:::-;7629:33;-1:-1:-1;7680:24:0;:7;7629:33;1703:132;1761:7;1788:39;1792:1;1795;1788:39;;;;;;;;;;;;;;;;;:3;:39::i;1449:246::-;1507:7;1531:6;1527:47;;-1:-1:-1;1561:1:0;1554:8;;1527:47;1584:9;1596:5;1600:1;1596;:5;:::i;:::-;1584:17;-1:-1:-1;1629:1:0;1620:5;1624:1;1584:17;1620:5;:::i;:::-;:10;1612:56;;;;-1:-1:-1;;;1612:56:0;;10204:2:1;1612:56:0;;;10186:21:1;10243:2;10223:18;;;10216:30;10282:34;10262:18;;;10255:62;-1:-1:-1;;;10333:18:1;;;10326:31;10374:19;;1612:56:0;10002:397:1;12183:146:0;12277:44;12295:6;12303:9;12314:6;12277:17;:44::i;9601:483::-;4878:6;:13;;-1:-1:-1;;;;4878:13:0;-1:-1:-1;;;4878:13:0;;;9703:16:::1;::::0;;9717:1:::1;9703:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9703:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9703:16:0::1;9679:40;;9748:4;9730;9735:1;9730:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9730:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9774:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9774:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9730:7;;9774:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9764:4;9769:1;9764:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9764:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9839:15:::1;::::0;9807:62:::1;::::0;9824:4:::1;::::0;9839:15:::1;9857:11:::0;9807:8:::1;:62::i;:::-;9880:15;::::0;:196:::1;::::0;-1:-1:-1;;;9880:196:0;;-1:-1:-1;;;;;9880:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9961:11;;9880:15:::1;::::0;10003:4;;10030::::1;::::0;10050:15:::1;::::0;9880:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4914:6:0;:14;;-1:-1:-1;;;;4914:14:0;;;-1:-1:-1;;;;9601:483:0:o;14622:351::-;14715:7;;;;14768:28;14792:3;14768:19;:7;14780:6;14768:11;:19::i;:::-;:23;;:28::i;:::-;14753:43;-1:-1:-1;14807:13:0;14823:29;14848:3;14823:20;:7;14835;14823:11;:20::i;:29::-;14807:45;-1:-1:-1;14863:23:0;14889:28;14807:45;14889:17;:7;14901:4;14889:11;:17::i;:::-;:21;;:28::i;:::-;14863:54;14953:4;;-1:-1:-1;14959:5:0;;-1:-1:-1;14622:351:0;;-1:-1:-1;;;;;14622:351:0:o;15395:163::-;15436:7;15457:15;15474;15493:19;:17;:19::i;:::-;15456:56;;-1:-1:-1;15456:56:0;-1:-1:-1;15530:20:0;15456:56;;15530:11;:20::i;:::-;15523:27;;;;15395:163;:::o;14981:409::-;15091:7;;;;15147:24;:7;15159:11;15147;:24::i;:::-;15129:42;-1:-1:-1;15182:12:0;15197:21;:4;15206:11;15197:8;:21::i;:::-;15182:36;-1:-1:-1;15229:13:0;15245:22;:5;15255:11;15245:9;:22::i;:::-;15229:38;-1:-1:-1;15278:23:0;15304:28;15229:38;15304:17;:7;15316:4;15304:11;:17::i;:28::-;15351:7;;;;-1:-1:-1;15377:4:0;;-1:-1:-1;14981:409:0;;-1:-1:-1;;;;;;;14981:409:0:o;1843:189::-;1929:7;1964:12;1957:5;1949:28;;;;-1:-1:-1;;;1949:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1988:9:0;2000:5;2004:1;2000;:5;:::i;12337:488::-;12436:15;12453:23;12478:12;12492:23;12517:12;12531:13;12548:19;12559:7;12548:10;:19::i;:::-;-1:-1:-1;;;;;12596:15:0;;;;;;:7;:15;;;;;;12435:132;;-1:-1:-1;12435:132:0;;-1:-1:-1;12435:132:0;;-1:-1:-1;12435:132:0;-1:-1:-1;12435:132:0;-1:-1:-1;12435:132:0;-1:-1:-1;12596:28:0;;12435:132;12596:19;:28::i;:::-;-1:-1:-1;;;;;12578:15:0;;;;;;;:7;:15;;;;;;:46;;;;12656:18;;;;;;;:39;;12679:15;12656:22;:39::i;:::-;-1:-1:-1;;;;;12635:18:0;;;;;;:7;:18;;;;;:60;12707:16;12717:5;12707:9;:16::i;:::-;12734:23;12746:4;12752;12734:11;:23::i;:::-;12790:9;-1:-1:-1;;;;;12773:44:0;12782:6;-1:-1:-1;;;;;12773:44:0;;12801:15;12773:44;;;;13562:25:1;;13550:2;13535:18;;13416:177;12773:44:0;;;;;;;;12424:401;;;;;;12337:488;;;:::o;15566:262::-;15663:7;;15699;;15616;;;;15737:20;15663:7;15699;15737:11;:20::i;:::-;15727:7;:30;15723:61;;;15767:7;;15776;;15759:25;;;;;;15566:262;;:::o;15723:61::-;15803:7;;15812;;-1:-1:-1;15566:262:0;-1:-1:-1;15566:262:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:247::-;212:6;265:2;253:9;244:7;240:23;236:32;233:52;;;281:1;278;271:12;233:52;320:9;307:23;339:31;364:5;339:31;:::i;405:251::-;475:6;528:2;516:9;507:7;503:23;499:32;496:52;;;544:1;541;534:12;496:52;576:9;570:16;595:31;620:5;595:31;:::i;661:388::-;729:6;737;790:2;778:9;769:7;765:23;761:32;758:52;;;806:1;803;796:12;758:52;845:9;832:23;864:31;889:5;864:31;:::i;:::-;914:5;-1:-1:-1;971:2:1;956:18;;943:32;984:33;943:32;984:33;:::i;:::-;1036:7;1026:17;;;661:388;;;;;:::o;1054:456::-;1131:6;1139;1147;1200:2;1188:9;1179:7;1175:23;1171:32;1168:52;;;1216:1;1213;1206:12;1168:52;1255:9;1242:23;1274:31;1299:5;1274:31;:::i;:::-;1324:5;-1:-1:-1;1381:2:1;1366:18;;1353:32;1394:33;1353:32;1394:33;:::i;:::-;1054:456;;1446:7;;-1:-1:-1;;;1500:2:1;1485:18;;;;1472:32;;1054:456::o;1515:382::-;1580:6;1588;1641:2;1629:9;1620:7;1616:23;1612:32;1609:52;;;1657:1;1654;1647:12;1609:52;1696:9;1683:23;1715:31;1740:5;1715:31;:::i;:::-;1765:5;-1:-1:-1;1822:2:1;1807:18;;1794:32;1835:30;1794:32;1835:30;:::i;1902:315::-;1970:6;1978;2031:2;2019:9;2010:7;2006:23;2002:32;1999:52;;;2047:1;2044;2037:12;1999:52;2086:9;2073:23;2105:31;2130:5;2105:31;:::i;:::-;2155:5;2207:2;2192:18;;;;2179:32;;-1:-1:-1;;;1902:315:1:o;2222:1132::-;2306:6;2337:2;2380;2368:9;2359:7;2355:23;2351:32;2348:52;;;2396:1;2393;2386:12;2348:52;2436:9;2423:23;2465:18;2506:2;2498:6;2495:14;2492:34;;;2522:1;2519;2512:12;2492:34;2560:6;2549:9;2545:22;2535:32;;2605:7;2598:4;2594:2;2590:13;2586:27;2576:55;;2627:1;2624;2617:12;2576:55;2663:2;2650:16;2685:2;2681;2678:10;2675:36;;;2691:18;;:::i;:::-;2737:2;2734:1;2730:10;2769:2;2763:9;2832:2;2828:7;2823:2;2819;2815:11;2811:25;2803:6;2799:38;2887:6;2875:10;2872:22;2867:2;2855:10;2852:18;2849:46;2846:72;;;2898:18;;:::i;:::-;2934:2;2927:22;2984:18;;;3018:15;;;;-1:-1:-1;3053:11:1;;;3083;;;3079:20;;3076:33;-1:-1:-1;3073:53:1;;;3122:1;3119;3112:12;3073:53;3144:1;3135:10;;3154:169;3168:2;3165:1;3162:9;3154:169;;;3225:23;3244:3;3225:23;:::i;:::-;3213:36;;3186:1;3179:9;;;;;3269:12;;;;3301;;3154:169;;;-1:-1:-1;3342:6:1;2222:1132;-1:-1:-1;;;;;;;;2222:1132:1:o;3359:241::-;3415:6;3468:2;3456:9;3447:7;3443:23;3439:32;3436:52;;;3484:1;3481;3474:12;3436:52;3523:9;3510:23;3542:28;3564:5;3542:28;:::i;3605:245::-;3672:6;3725:2;3713:9;3704:7;3700:23;3696:32;3693:52;;;3741:1;3738;3731:12;3693:52;3773:9;3767:16;3792:28;3814:5;3792:28;:::i;3855:180::-;3914:6;3967:2;3955:9;3946:7;3942:23;3938:32;3935:52;;;3983:1;3980;3973:12;3935:52;-1:-1:-1;4006:23:1;;3855:180;-1:-1:-1;3855:180:1:o;4040:248::-;4108:6;4116;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;-1:-1:-1;;4208:23:1;;;4278:2;4263:18;;;4250:32;;-1:-1:-1;4040:248:1:o;4293:306::-;4381:6;4389;4397;4450:2;4438:9;4429:7;4425:23;4421:32;4418:52;;;4466:1;4463;4456:12;4418:52;4495:9;4489:16;4479:26;;4545:2;4534:9;4530:18;4524:25;4514:35;;4589:2;4578:9;4574:18;4568:25;4558:35;;4293:306;;;;;:::o;6204:597::-;6316:4;6345:2;6374;6363:9;6356:21;6406:6;6400:13;6449:6;6444:2;6433:9;6429:18;6422:34;6474:1;6484:140;6498:6;6495:1;6492:13;6484:140;;;6593:14;;;6589:23;;6583:30;6559:17;;;6578:2;6555:26;6548:66;6513:10;;6484:140;;;6642:6;6639:1;6636:13;6633:91;;;6712:1;6707:2;6698:6;6687:9;6683:22;6679:31;6672:42;6633:91;-1:-1:-1;6785:2:1;6764:15;-1:-1:-1;;6760:29:1;6745:45;;;;6792:2;6741:54;;6204:597;-1:-1:-1;;;6204:597:1:o;8812:410::-;9014:2;8996:21;;;9053:2;9033:18;;;9026:30;9092:34;9087:2;9072:18;;9065:62;-1:-1:-1;;;9158:2:1;9143:18;;9136:44;9212:3;9197:19;;8812:410::o;10404:356::-;10606:2;10588:21;;;10625:18;;;10618:30;10684:34;10679:2;10664:18;;10657:62;10751:2;10736:18;;10404:356::o;13598:980::-;13860:4;13908:3;13897:9;13893:19;13939:6;13928:9;13921:25;13965:2;14003:6;13998:2;13987:9;13983:18;13976:34;14046:3;14041:2;14030:9;14026:18;14019:31;14070:6;14105;14099:13;14136:6;14128;14121:22;14174:3;14163:9;14159:19;14152:26;;14213:2;14205:6;14201:15;14187:29;;14234:1;14244:195;14258:6;14255:1;14252:13;14244:195;;;14323:13;;-1:-1:-1;;;;;14319:39:1;14307:52;;14414:15;;;;14379:12;;;;14355:1;14273:9;14244:195;;;-1:-1:-1;;;;;;;14495:32:1;;;;14490:2;14475:18;;14468:60;-1:-1:-1;;;14559:3:1;14544:19;14537:35;14456:3;13598:980;-1:-1:-1;;;13598:980:1:o;15025:128::-;15065:3;15096:1;15092:6;15089:1;15086:13;15083:39;;;15102:18;;:::i;:::-;-1:-1:-1;15138:9:1;;15025:128::o;15158:217::-;15198:1;15224;15214:132;;15268:10;15263:3;15259:20;15256:1;15249:31;15303:4;15300:1;15293:15;15331:4;15328:1;15321:15;15214:132;-1:-1:-1;15360:9:1;;15158:217::o;15380:168::-;15420:7;15486:1;15482;15478:6;15474:14;15471:1;15468:21;15463:1;15456:9;15449:17;15445:45;15442:71;;;15493:18;;:::i;:::-;-1:-1:-1;15533:9:1;;15380:168::o;15553:125::-;15593:4;15621:1;15618;15615:8;15612:34;;;15626:18;;:::i;:::-;-1:-1:-1;15663:9:1;;15553:125::o;15683:135::-;15722:3;-1:-1:-1;;15743:17:1;;15740:43;;;15763:18;;:::i;:::-;-1:-1:-1;15810:1:1;15799:13;;15683:135::o;15823:127::-;15884:10;15879:3;15875:20;15872:1;15865:31;15915:4;15912:1;15905:15;15939:4;15936:1;15929:15;15955:127;16016:10;16011:3;16007:20;16004:1;15997:31;16047:4;16044:1;16037:15;16071:4;16068:1;16061:15;16087:127;16148:10;16143:3;16139:20;16136:1;16129:31;16179:4;16176:1;16169:15;16203:4;16200:1;16193:15;16219:131;-1:-1:-1;;;;;16294:31:1;;16284:42;;16274:70;;16340:1;16337;16330:12;16355:118;16441:5;16434:13;16427:21;16420:5;16417:32;16407:60;;16463:1;16460;16453:12

Swarm Source

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