ETH Price: $2,584.06 (-2.02%)

Token

SailorBot (SAILOR)
 

Overview

Max Total Supply

10,000,000 SAILOR

Holders

75

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000010459097 SAILOR

Value
$0.00
0x009bf51bebf5d63abccca6afbff04f0f52122562
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:
SailBot

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-04
*/

/*
$SAILOR
https://twitter.com/SailorBots  
https://web.sailor.bet/ 
https://t.me/sailorbotss  
DEV:HVM
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.20;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "E0");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "E1");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "E2");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "E3");
    }
 
    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, "E4");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "E5");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract SailBot is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _balances;
    string private constant _name = "SailorBot";
    string private constant _symbol = "SAILOR";
    uint8 private constant _decimals = 18;
 

    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _totalSupply = 10000000 * 10**18;
    uint256 private _feeTotal;
    uint256 private _feeOnBuy = 5;  
    uint256 private _feeOnSell = 5;
 
    //Original Fee
    uint256 private _fee = _feeOnSell;
 
    uint256 private _previousFee = _fee;
 
    mapping(address => bool) public bots; 
    mapping (address => uint256) public _buyMap;
    
    address payable private _marketingAddress = payable(0xE9605349d928AFcD31891768B0d00979a97E0D8E);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 150000 * 10**18; 
    uint256 public _maxWalletSize = 150000 * 10**18; 
    uint256 public _swapTokensAtAmount = 100 * 10**18;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
        _balances[owner()] = _totalSupply;
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // uniswapV2Router = _uniswapV2Router;
        // uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        //     .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function initUniSwap() public onlyOwner {
        if (uniswapV2Pair != address(0)) {
            return;
        }
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        address tmp = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
        if (tmp != address(0)) {
            uniswapV2Pair = tmp;
        } else {
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        }
        
    }
 
    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 _totalSupply;
    }
 
    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,
                "E6"
            )
        );
        return true;
    }
 

 
    function removeAllFee() private {
        if (_fee == 0) return;
 
        _previousFee = _fee;
 
        _fee = 0;
    }
 
    function restoreAllFee() private {
        _fee = _previousFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "E7");
        require(spender != address(0), "E8");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "E9");
        require(to != address(0), "E10");
        require(amount > 0, "E11");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "E12");
            }
            require(amount <= _maxTxAmount, "E13");
            require(!bots[from] && !bots[to], "E14");
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "E15");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee();
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _fee = _feeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _fee = _feeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee() private {
        bool success;
        (success, ) = address(_marketingAddress).call{
            value: address(this).balance
        }("");
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee();
        }
    }
 
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function isBot(address addr) public view returns (bool) {
        return bots[addr];
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 amount
    ) private {

        uint256 fee = amount.mul(_fee).div(100);
        uint256 transferAmount = amount.sub(fee);

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(transferAmount);
        if (fee > 0) {
            _feeTotal = _feeTotal.add(fee);
            _balances[address(this)] =  _balances[address(this)].add(fee);
        }
       
        
        emit Transfer(sender, recipient, transferAmount);
    }
 
 
    receive() external payable {}
 
    function setFee(uint256 feeOnBuy, uint256 feeOnSell) public onlyOwner {
        require(feeOnBuy >= 0 && feeOnBuy <= 20, "E16");
        require(feeOnSell >= 0 && feeOnSell <= 20, "E17");

        _feeOnBuy = feeOnBuy;
        _feeOnSell = feeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 

    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function isExcludedFromFee(address addr) public view returns (bool) {
        return _isExcludedFromFee[addr];
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            _transfer(from, addresses[i], amounts[i] * (10**18));
        }
    }

    function getInfo() public view returns(bool[2] memory, uint256[8] memory, address) {
        bool[2] memory bargs;
        uint256[8] memory uargs;
        bargs[0] = tradingOpen;
        bargs[1] = swapEnabled;
        uargs[0] = _feeOnBuy;
        uargs[1] = _feeOnSell;
        uargs[2] = _maxTxAmount;
        uargs[3] = _maxWalletSize;
        uargs[4] = _feeTotal;
        uargs[5] = _swapTokensAtAmount;

        uint256 ethBalance = address(this).balance;
        uargs[6] = ethBalance;
        uint256 contractTokenBalance = balanceOf(address(this));
        uargs[7] = contractTokenBalance;

        
        return (bargs,uargs,_marketingAddress);
    }

     function setMarketAddr(address payable addr) public onlyOwner {
        if (_marketingAddress == addr) {
            return;
        }

        _marketingAddress = addr;
        _isExcludedFromFee[_marketingAddress] = 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":"","type":"address"}],"name":"_buyMap","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"bool[2]","name":"","type":"bool[2]"},{"internalType":"uint256[8]","name":"","type":"uint256[8]"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initUniSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"name":"setMarketAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600681905560078190556008819055600955600c80546001600160a01b03191673e9605349d928afcd31891768b0d00979a97e0d8e179055600e805461ffff60a81b1916600160b01b179055691fc3842bd1f071c00000600f81905560105568056bc75e2d631000006011553480156200007f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506a084595161401484a00000060036000620000e46000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200011e620001dc60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155600c549091168352912080549092161790556200017d3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a084595161401484a000000604051620001ce91815260200190565b60405180910390a3620001eb565b6000546001600160a01b031690565b61212880620001fb6000396000f3fe6080604052600436106102125760003560e01c806370a082311161011857806398a5c315116100a0578063c492f0461161006f578063c492f04614610687578063cb7dc8bf146106a7578063dd62ed3e146106bc578063ea1644d514610702578063f2fde38b1461072257600080fd5b806398a5c31514610602578063a9059cbb14610622578063bfd7928414610642578063c3c8cd801461067257600080fd5b80637f2feddc116100e75780637f2feddc146105525780638da5cb5b1461057f5780638f70ccf71461059d5780638f9a55c0146105bd57806395d89b41146105d357600080fd5b806370a08231146104d1578063715018a61461050757806374010ece1461051c5780637d1db4a51461053c57600080fd5b806349bd5a5e1161019b5780635a9b0b891161016a5780635a9b0b8914610438578063672434821461045c5780636b9990531461047c5780636d8aa8f81461049c5780636fc3eaec146104bc57600080fd5b806349bd5a5e1461039f57806351d31822146103bf57806352f7c988146103df5780635342acb4146103ff57600080fd5b806318160ddd116101e257806318160ddd146102ec57806323b872dd146103145780632fd689e314610334578063313ce5671461034a5780633bbac5791461036657600080fd5b8062b8cf2a1461021e57806306fdde0314610240578063095ea7b3146102845780631694505e146102b457600080fd5b3661021957005b600080fd5b34801561022a57600080fd5b5061023e610239366004611bea565b610742565b005b34801561024c57600080fd5b5060408051808201909152600981526814d85a5b1bdc909bdd60ba1b60208201525b60405161027b9190611caf565b60405180910390f35b34801561029057600080fd5b506102a461029f366004611cfd565b6107e1565b604051901515815260200161027b565b3480156102c057600080fd5b50600d546102d4906001600160a01b031681565b6040516001600160a01b03909116815260200161027b565b3480156102f857600080fd5b506a084595161401484a0000005b60405190815260200161027b565b34801561032057600080fd5b506102a461032f366004611d29565b6107f8565b34801561034057600080fd5b5061030660115481565b34801561035657600080fd5b506040516012815260200161027b565b34801561037257600080fd5b506102a4610381366004611d6a565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156103ab57600080fd5b50600e546102d4906001600160a01b031681565b3480156103cb57600080fd5b5061023e6103da366004611d6a565b610887565b3480156103eb57600080fd5b5061023e6103fa366004611d87565b610901565b34801561040b57600080fd5b506102a461041a366004611d6a565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561044457600080fd5b5061044d6109a4565b60405161027b93929190611da9565b34801561046857600080fd5b5061023e610477366004611e67565b610a4e565b34801561048857600080fd5b5061023e610497366004611d6a565b610ae7565b3480156104a857600080fd5b5061023e6104b7366004611ee3565b610b32565b3480156104c857600080fd5b5061023e610b7a565b3480156104dd57600080fd5b506103066104ec366004611d6a565b6001600160a01b031660009081526003602052604090205490565b34801561051357600080fd5b5061023e610ba9565b34801561052857600080fd5b5061023e610537366004611efe565b610c1d565b34801561054857600080fd5b50610306600f5481565b34801561055e57600080fd5b5061030661056d366004611d6a565b600b6020526000908152604090205481565b34801561058b57600080fd5b506000546001600160a01b03166102d4565b3480156105a957600080fd5b5061023e6105b8366004611ee3565b610c4c565b3480156105c957600080fd5b5061030660105481565b3480156105df57600080fd5b5060408051808201909152600681526529a0a4a627a960d11b602082015261026e565b34801561060e57600080fd5b5061023e61061d366004611efe565b610c94565b34801561062e57600080fd5b506102a461063d366004611cfd565b610cc3565b34801561064e57600080fd5b506102a461065d366004611d6a565b600a6020526000908152604090205460ff1681565b34801561067e57600080fd5b5061023e610cd0565b34801561069357600080fd5b5061023e6106a2366004611f17565b610d09565b3480156106b357600080fd5b5061023e610daa565b3480156106c857600080fd5b506103066106d7366004611f6b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561070e57600080fd5b5061023e61071d366004611efe565b6110ec565b34801561072e57600080fd5b5061023e61073d366004611d6a565b61111b565b6000546001600160a01b031633146107755760405162461bcd60e51b815260040161076c90611fa4565b60405180910390fd5b60005b81518110156107dd576001600a600084848151811061079957610799611fc0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107d581611fec565b915050610778565b5050565b60006107ee3384846111db565b5060015b92915050565b60006108058484846112b2565b61087d84336108788560405180604001604052806002815260200161229b60f11b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006108573390565b6001600160a01b0316815260208101919091526040016000205491906116d9565b6111db565b5060019392505050565b6000546001600160a01b031633146108b15760405162461bcd60e51b815260040161076c90611fa4565b600c546001600160a01b038281169116146108fe57600c80546001600160a01b0319166001600160a01b0383169081179091556000908152600460205260409020805460ff191660011790555b50565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161076c90611fa4565b60148211156109625760405162461bcd60e51b815260206004820152600360248201526222989b60e91b604482015260640161076c565b60148111156109995760405162461bcd60e51b815260206004820152600360248201526245313760e81b604482015260640161076c565b600691909155600755565b6109ac611b72565b6109b4611b90565b60006109be611b72565b6109c6611b90565b600e5460ff600160a01b8204811615158452600160b01b909104161515602080840191909152600654825260075482820152600f546040808401919091526010546060840152600554608084015260115460a08401524760c0840152306000908152600390925290205460e0820152600c5491959094506001600160a01b0390911692509050565b8215801590610a5c57508083145b610a6557600080fd5b3360005b84811015610adf57610acd82878784818110610a8757610a87611fc0565b9050602002016020810190610a9c9190611d6a565b868685818110610aae57610aae611fc0565b90506020020135670de0b6b3a7640000610ac89190612005565b6112b2565b80610ad781611fec565b915050610a69565b505050505050565b6000546001600160a01b03163314610b115760405162461bcd60e51b815260040161076c90611fa4565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b03163314610b5c5760405162461bcd60e51b815260040161076c90611fa4565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b600c546001600160a01b0316336001600160a01b031614610b9a57600080fd5b4780156108fe576108fe611713565b6000546001600160a01b03163314610bd35760405162461bcd60e51b815260040161076c90611fa4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c475760405162461bcd60e51b815260040161076c90611fa4565b600f55565b6000546001600160a01b03163314610c765760405162461bcd60e51b815260040161076c90611fa4565b600e8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610cbe5760405162461bcd60e51b815260040161076c90611fa4565b601155565b60006107ee3384846112b2565b600c546001600160a01b0316336001600160a01b031614610cf057600080fd5b306000908152600360205260409020546108fe81611760565b6000546001600160a01b03163314610d335760405162461bcd60e51b815260040161076c90611fa4565b60005b82811015610da4578160046000868685818110610d5557610d55611fc0565b9050602002016020810190610d6a9190611d6a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d9c81611fec565b915050610d36565b50505050565b6000546001600160a01b03163314610dd45760405162461bcd60e51b815260040161076c90611fa4565b600e546001600160a01b03166110ea57600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051600091839163c45a0155916004808201926020929091908290030181865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e71919061201c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee2919061201c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061201c565b90506001600160a01b03811615610f8357600e80546001600160a01b0383166001600160a01b03199091161790555050565b816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe5919061201c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611056919061201c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061201c565b600e80546001600160a01b0319166001600160a01b039290921691909117905550505b565b6000546001600160a01b031633146111165760405162461bcd60e51b815260040161076c90611fa4565b601055565b6000546001600160a01b031633146111455760405162461bcd60e51b815260040161076c90611fa4565b6001600160a01b0381166111805760405162461bcd60e51b8152602060048201526002602482015261453160f01b604482015260640161076c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112165760405162461bcd60e51b8152602060048201526002602482015261453760f01b604482015260640161076c565b6001600160a01b0382166112515760405162461bcd60e51b815260206004820152600260248201526108a760f31b604482015260640161076c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112ed5760405162461bcd60e51b8152602060048201526002602482015261453960f01b604482015260640161076c565b6001600160a01b0382166113295760405162461bcd60e51b815260206004820152600360248201526204531360ec1b604482015260640161076c565b6000811161135f5760405162461bcd60e51b815260206004820152600360248201526245313160e81b604482015260640161076c565b6000546001600160a01b0384811691161480159061138b57506000546001600160a01b03838116911614155b156115de57600e54600160a01b900460ff166113e4576000546001600160a01b038481169116146113e45760405162461bcd60e51b815260206004820152600360248201526222989960e91b604482015260640161076c565b600f5481111561141c5760405162461bcd60e51b815260206004820152600360248201526245313360e81b604482015260640161076c565b6001600160a01b0383166000908152600a602052604090205460ff1615801561145e57506001600160a01b0382166000908152600a602052604090205460ff16155b6114905760405162461bcd60e51b8152602060048201526003602482015262114c4d60ea1b604482015260640161076c565b600e546001600160a01b0383811691161461150557601054816114c8846001600160a01b031660009081526003602052604090205490565b6114d29190612039565b106115055760405162461bcd60e51b815260206004820152600360248201526245313560e81b604482015260640161076c565b30600090815260036020526040902054601154600f549082101590821061152c57600f5491505b8080156115435750600e54600160a81b900460ff16155b801561155d5750600e546001600160a01b03868116911614155b80156115725750600e54600160b01b900460ff165b801561159757506001600160a01b03851660009081526004602052604090205460ff16155b80156115bc57506001600160a01b03841660009081526004602052604090205460ff16155b156115db576115ca82611760565b4780156115d9576115d9611713565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff168061162057506001600160a01b03831660009081526004602052604090205460ff165b806116525750600e546001600160a01b038581169116148015906116525750600e546001600160a01b03848116911614155b1561165f575060006116cd565b600e546001600160a01b03858116911614801561168a5750600d546001600160a01b03848116911614155b15611696576006546008555b600e546001600160a01b0384811691161480156116c15750600d546001600160a01b03858116911614155b156116cd576007546008555b610da4848484846118da565b600081848411156116fd5760405162461bcd60e51b815260040161076c9190611caf565b50600061170a848661204c565b95945050505050565b600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610da4576040519150601f19603f3d011682016040523d82523d6000602084013e610da4565b600e805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106117a8576117a8611fc0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061201c565b8160018151811061183857611838611fc0565b6001600160a01b039283166020918202929092010152600d5461185e91309116846111db565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061189790859060009086903090429060040161205f565b600060405180830381600087803b1580156118b157600080fd5b505af11580156118c5573d6000803e3d6000fd5b5050600e805460ff60a81b1916905550505050565b806118e7576118e7611902565b6118f284848461191b565b80610da457610da4600954600855565b60085460000361190e57565b6008805460095560009055565b600061193d606461193760085485611a4e90919063ffffffff16565b90611ab2565b9050600061194b8383611ad9565b6001600160a01b0386166000908152600360205260409020549091506119719084611ad9565b6001600160a01b0380871660009081526003602052604080822093909355908616815220546119a09082611b00565b6001600160a01b03851660009081526003602052604090205581156119fa576005546119cc9083611b00565b600555306000908152600360205260409020546119e99083611b00565b306000908152600360205260409020555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a3f91815260200190565b60405180910390a35050505050565b600082600003611a60575060006107f2565b6000611a6c8385612005565b905082611a7985836120d0565b14611aab5760405162461bcd60e51b8152602060048201526002602482015261114d60f21b604482015260640161076c565b9392505050565b6000611aab838360405180604001604052806002815260200161453560f01b815250611b44565b6000611aab838360405180604001604052806002815260200161453360f01b8152506116d9565b600080611b0d8385612039565b905083811015611aab5760405162461bcd60e51b8152602060048201526002602482015261229960f11b604482015260640161076c565b60008183611b655760405162461bcd60e51b815260040161076c9190611caf565b50600061170a84866120d0565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108fe57600080fd5b8035611be581611bc5565b919050565b60006020808385031215611bfd57600080fd5b823567ffffffffffffffff80821115611c1557600080fd5b818501915085601f830112611c2957600080fd5b813581811115611c3b57611c3b611baf565b8060051b604051601f19603f83011681018181108582111715611c6057611c60611baf565b604052918252848201925083810185019188831115611c7e57600080fd5b938501935b82851015611ca357611c9485611bda565b84529385019392850192611c83565b98975050505050505050565b600060208083528351808285015260005b81811015611cdc57858101830151858201604001528201611cc0565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611d1057600080fd5b8235611d1b81611bc5565b946020939093013593505050565b600080600060608486031215611d3e57600080fd5b8335611d4981611bc5565b92506020840135611d5981611bc5565b929592945050506040919091013590565b600060208284031215611d7c57600080fd5b8135611aab81611bc5565b60008060408385031215611d9a57600080fd5b50508035926020909101359150565b6101608101818560005b6002811015611dd45781511515835260209283019290910190600101611db3565b505050604082018460005b6008811015611dfe578151835260209283019290910190600101611ddf565b5050506001600160a01b0392909216610140919091015292915050565b60008083601f840112611e2d57600080fd5b50813567ffffffffffffffff811115611e4557600080fd5b6020830191508360208260051b8501011115611e6057600080fd5b9250929050565b60008060008060408587031215611e7d57600080fd5b843567ffffffffffffffff80821115611e9557600080fd5b611ea188838901611e1b565b90965094506020870135915080821115611eba57600080fd5b50611ec787828801611e1b565b95989497509550505050565b80358015158114611be557600080fd5b600060208284031215611ef557600080fd5b611aab82611ed3565b600060208284031215611f1057600080fd5b5035919050565b600080600060408486031215611f2c57600080fd5b833567ffffffffffffffff811115611f4357600080fd5b611f4f86828701611e1b565b9094509250611f62905060208501611ed3565b90509250925092565b60008060408385031215611f7e57600080fd5b8235611f8981611bc5565b91506020830135611f9981611bc5565b809150509250929050565b602080825260029082015261045360f41b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ffe57611ffe611fd6565b5060010190565b80820281158282048414176107f2576107f2611fd6565b60006020828403121561202e57600080fd5b8151611aab81611bc5565b808201808211156107f2576107f2611fd6565b818103818111156107f2576107f2611fd6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120af5784516001600160a01b03168352938301939183019160010161208a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000826120ed57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220428b3843bfb30a20cf0c1ee80361db7b13fbfa7469c910a35abcc0d5c28b4e9064736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102125760003560e01c806370a082311161011857806398a5c315116100a0578063c492f0461161006f578063c492f04614610687578063cb7dc8bf146106a7578063dd62ed3e146106bc578063ea1644d514610702578063f2fde38b1461072257600080fd5b806398a5c31514610602578063a9059cbb14610622578063bfd7928414610642578063c3c8cd801461067257600080fd5b80637f2feddc116100e75780637f2feddc146105525780638da5cb5b1461057f5780638f70ccf71461059d5780638f9a55c0146105bd57806395d89b41146105d357600080fd5b806370a08231146104d1578063715018a61461050757806374010ece1461051c5780637d1db4a51461053c57600080fd5b806349bd5a5e1161019b5780635a9b0b891161016a5780635a9b0b8914610438578063672434821461045c5780636b9990531461047c5780636d8aa8f81461049c5780636fc3eaec146104bc57600080fd5b806349bd5a5e1461039f57806351d31822146103bf57806352f7c988146103df5780635342acb4146103ff57600080fd5b806318160ddd116101e257806318160ddd146102ec57806323b872dd146103145780632fd689e314610334578063313ce5671461034a5780633bbac5791461036657600080fd5b8062b8cf2a1461021e57806306fdde0314610240578063095ea7b3146102845780631694505e146102b457600080fd5b3661021957005b600080fd5b34801561022a57600080fd5b5061023e610239366004611bea565b610742565b005b34801561024c57600080fd5b5060408051808201909152600981526814d85a5b1bdc909bdd60ba1b60208201525b60405161027b9190611caf565b60405180910390f35b34801561029057600080fd5b506102a461029f366004611cfd565b6107e1565b604051901515815260200161027b565b3480156102c057600080fd5b50600d546102d4906001600160a01b031681565b6040516001600160a01b03909116815260200161027b565b3480156102f857600080fd5b506a084595161401484a0000005b60405190815260200161027b565b34801561032057600080fd5b506102a461032f366004611d29565b6107f8565b34801561034057600080fd5b5061030660115481565b34801561035657600080fd5b506040516012815260200161027b565b34801561037257600080fd5b506102a4610381366004611d6a565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156103ab57600080fd5b50600e546102d4906001600160a01b031681565b3480156103cb57600080fd5b5061023e6103da366004611d6a565b610887565b3480156103eb57600080fd5b5061023e6103fa366004611d87565b610901565b34801561040b57600080fd5b506102a461041a366004611d6a565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561044457600080fd5b5061044d6109a4565b60405161027b93929190611da9565b34801561046857600080fd5b5061023e610477366004611e67565b610a4e565b34801561048857600080fd5b5061023e610497366004611d6a565b610ae7565b3480156104a857600080fd5b5061023e6104b7366004611ee3565b610b32565b3480156104c857600080fd5b5061023e610b7a565b3480156104dd57600080fd5b506103066104ec366004611d6a565b6001600160a01b031660009081526003602052604090205490565b34801561051357600080fd5b5061023e610ba9565b34801561052857600080fd5b5061023e610537366004611efe565b610c1d565b34801561054857600080fd5b50610306600f5481565b34801561055e57600080fd5b5061030661056d366004611d6a565b600b6020526000908152604090205481565b34801561058b57600080fd5b506000546001600160a01b03166102d4565b3480156105a957600080fd5b5061023e6105b8366004611ee3565b610c4c565b3480156105c957600080fd5b5061030660105481565b3480156105df57600080fd5b5060408051808201909152600681526529a0a4a627a960d11b602082015261026e565b34801561060e57600080fd5b5061023e61061d366004611efe565b610c94565b34801561062e57600080fd5b506102a461063d366004611cfd565b610cc3565b34801561064e57600080fd5b506102a461065d366004611d6a565b600a6020526000908152604090205460ff1681565b34801561067e57600080fd5b5061023e610cd0565b34801561069357600080fd5b5061023e6106a2366004611f17565b610d09565b3480156106b357600080fd5b5061023e610daa565b3480156106c857600080fd5b506103066106d7366004611f6b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561070e57600080fd5b5061023e61071d366004611efe565b6110ec565b34801561072e57600080fd5b5061023e61073d366004611d6a565b61111b565b6000546001600160a01b031633146107755760405162461bcd60e51b815260040161076c90611fa4565b60405180910390fd5b60005b81518110156107dd576001600a600084848151811061079957610799611fc0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107d581611fec565b915050610778565b5050565b60006107ee3384846111db565b5060015b92915050565b60006108058484846112b2565b61087d84336108788560405180604001604052806002815260200161229b60f11b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006108573390565b6001600160a01b0316815260208101919091526040016000205491906116d9565b6111db565b5060019392505050565b6000546001600160a01b031633146108b15760405162461bcd60e51b815260040161076c90611fa4565b600c546001600160a01b038281169116146108fe57600c80546001600160a01b0319166001600160a01b0383169081179091556000908152600460205260409020805460ff191660011790555b50565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161076c90611fa4565b60148211156109625760405162461bcd60e51b815260206004820152600360248201526222989b60e91b604482015260640161076c565b60148111156109995760405162461bcd60e51b815260206004820152600360248201526245313760e81b604482015260640161076c565b600691909155600755565b6109ac611b72565b6109b4611b90565b60006109be611b72565b6109c6611b90565b600e5460ff600160a01b8204811615158452600160b01b909104161515602080840191909152600654825260075482820152600f546040808401919091526010546060840152600554608084015260115460a08401524760c0840152306000908152600390925290205460e0820152600c5491959094506001600160a01b0390911692509050565b8215801590610a5c57508083145b610a6557600080fd5b3360005b84811015610adf57610acd82878784818110610a8757610a87611fc0565b9050602002016020810190610a9c9190611d6a565b868685818110610aae57610aae611fc0565b90506020020135670de0b6b3a7640000610ac89190612005565b6112b2565b80610ad781611fec565b915050610a69565b505050505050565b6000546001600160a01b03163314610b115760405162461bcd60e51b815260040161076c90611fa4565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b03163314610b5c5760405162461bcd60e51b815260040161076c90611fa4565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b600c546001600160a01b0316336001600160a01b031614610b9a57600080fd5b4780156108fe576108fe611713565b6000546001600160a01b03163314610bd35760405162461bcd60e51b815260040161076c90611fa4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c475760405162461bcd60e51b815260040161076c90611fa4565b600f55565b6000546001600160a01b03163314610c765760405162461bcd60e51b815260040161076c90611fa4565b600e8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610cbe5760405162461bcd60e51b815260040161076c90611fa4565b601155565b60006107ee3384846112b2565b600c546001600160a01b0316336001600160a01b031614610cf057600080fd5b306000908152600360205260409020546108fe81611760565b6000546001600160a01b03163314610d335760405162461bcd60e51b815260040161076c90611fa4565b60005b82811015610da4578160046000868685818110610d5557610d55611fc0565b9050602002016020810190610d6a9190611d6a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d9c81611fec565b915050610d36565b50505050565b6000546001600160a01b03163314610dd45760405162461bcd60e51b815260040161076c90611fa4565b600e546001600160a01b03166110ea57600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051600091839163c45a0155916004808201926020929091908290030181865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e71919061201c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee2919061201c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061201c565b90506001600160a01b03811615610f8357600e80546001600160a01b0383166001600160a01b03199091161790555050565b816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe5919061201c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611056919061201c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061201c565b600e80546001600160a01b0319166001600160a01b039290921691909117905550505b565b6000546001600160a01b031633146111165760405162461bcd60e51b815260040161076c90611fa4565b601055565b6000546001600160a01b031633146111455760405162461bcd60e51b815260040161076c90611fa4565b6001600160a01b0381166111805760405162461bcd60e51b8152602060048201526002602482015261453160f01b604482015260640161076c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112165760405162461bcd60e51b8152602060048201526002602482015261453760f01b604482015260640161076c565b6001600160a01b0382166112515760405162461bcd60e51b815260206004820152600260248201526108a760f31b604482015260640161076c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112ed5760405162461bcd60e51b8152602060048201526002602482015261453960f01b604482015260640161076c565b6001600160a01b0382166113295760405162461bcd60e51b815260206004820152600360248201526204531360ec1b604482015260640161076c565b6000811161135f5760405162461bcd60e51b815260206004820152600360248201526245313160e81b604482015260640161076c565b6000546001600160a01b0384811691161480159061138b57506000546001600160a01b03838116911614155b156115de57600e54600160a01b900460ff166113e4576000546001600160a01b038481169116146113e45760405162461bcd60e51b815260206004820152600360248201526222989960e91b604482015260640161076c565b600f5481111561141c5760405162461bcd60e51b815260206004820152600360248201526245313360e81b604482015260640161076c565b6001600160a01b0383166000908152600a602052604090205460ff1615801561145e57506001600160a01b0382166000908152600a602052604090205460ff16155b6114905760405162461bcd60e51b8152602060048201526003602482015262114c4d60ea1b604482015260640161076c565b600e546001600160a01b0383811691161461150557601054816114c8846001600160a01b031660009081526003602052604090205490565b6114d29190612039565b106115055760405162461bcd60e51b815260206004820152600360248201526245313560e81b604482015260640161076c565b30600090815260036020526040902054601154600f549082101590821061152c57600f5491505b8080156115435750600e54600160a81b900460ff16155b801561155d5750600e546001600160a01b03868116911614155b80156115725750600e54600160b01b900460ff165b801561159757506001600160a01b03851660009081526004602052604090205460ff16155b80156115bc57506001600160a01b03841660009081526004602052604090205460ff16155b156115db576115ca82611760565b4780156115d9576115d9611713565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff168061162057506001600160a01b03831660009081526004602052604090205460ff165b806116525750600e546001600160a01b038581169116148015906116525750600e546001600160a01b03848116911614155b1561165f575060006116cd565b600e546001600160a01b03858116911614801561168a5750600d546001600160a01b03848116911614155b15611696576006546008555b600e546001600160a01b0384811691161480156116c15750600d546001600160a01b03858116911614155b156116cd576007546008555b610da4848484846118da565b600081848411156116fd5760405162461bcd60e51b815260040161076c9190611caf565b50600061170a848661204c565b95945050505050565b600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610da4576040519150601f19603f3d011682016040523d82523d6000602084013e610da4565b600e805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106117a8576117a8611fc0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061201c565b8160018151811061183857611838611fc0565b6001600160a01b039283166020918202929092010152600d5461185e91309116846111db565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061189790859060009086903090429060040161205f565b600060405180830381600087803b1580156118b157600080fd5b505af11580156118c5573d6000803e3d6000fd5b5050600e805460ff60a81b1916905550505050565b806118e7576118e7611902565b6118f284848461191b565b80610da457610da4600954600855565b60085460000361190e57565b6008805460095560009055565b600061193d606461193760085485611a4e90919063ffffffff16565b90611ab2565b9050600061194b8383611ad9565b6001600160a01b0386166000908152600360205260409020549091506119719084611ad9565b6001600160a01b0380871660009081526003602052604080822093909355908616815220546119a09082611b00565b6001600160a01b03851660009081526003602052604090205581156119fa576005546119cc9083611b00565b600555306000908152600360205260409020546119e99083611b00565b306000908152600360205260409020555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a3f91815260200190565b60405180910390a35050505050565b600082600003611a60575060006107f2565b6000611a6c8385612005565b905082611a7985836120d0565b14611aab5760405162461bcd60e51b8152602060048201526002602482015261114d60f21b604482015260640161076c565b9392505050565b6000611aab838360405180604001604052806002815260200161453560f01b815250611b44565b6000611aab838360405180604001604052806002815260200161453360f01b8152506116d9565b600080611b0d8385612039565b905083811015611aab5760405162461bcd60e51b8152602060048201526002602482015261229960f11b604482015260640161076c565b60008183611b655760405162461bcd60e51b815260040161076c9190611caf565b50600061170a84866120d0565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108fe57600080fd5b8035611be581611bc5565b919050565b60006020808385031215611bfd57600080fd5b823567ffffffffffffffff80821115611c1557600080fd5b818501915085601f830112611c2957600080fd5b813581811115611c3b57611c3b611baf565b8060051b604051601f19603f83011681018181108582111715611c6057611c60611baf565b604052918252848201925083810185019188831115611c7e57600080fd5b938501935b82851015611ca357611c9485611bda565b84529385019392850192611c83565b98975050505050505050565b600060208083528351808285015260005b81811015611cdc57858101830151858201604001528201611cc0565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611d1057600080fd5b8235611d1b81611bc5565b946020939093013593505050565b600080600060608486031215611d3e57600080fd5b8335611d4981611bc5565b92506020840135611d5981611bc5565b929592945050506040919091013590565b600060208284031215611d7c57600080fd5b8135611aab81611bc5565b60008060408385031215611d9a57600080fd5b50508035926020909101359150565b6101608101818560005b6002811015611dd45781511515835260209283019290910190600101611db3565b505050604082018460005b6008811015611dfe578151835260209283019290910190600101611ddf565b5050506001600160a01b0392909216610140919091015292915050565b60008083601f840112611e2d57600080fd5b50813567ffffffffffffffff811115611e4557600080fd5b6020830191508360208260051b8501011115611e6057600080fd5b9250929050565b60008060008060408587031215611e7d57600080fd5b843567ffffffffffffffff80821115611e9557600080fd5b611ea188838901611e1b565b90965094506020870135915080821115611eba57600080fd5b50611ec787828801611e1b565b95989497509550505050565b80358015158114611be557600080fd5b600060208284031215611ef557600080fd5b611aab82611ed3565b600060208284031215611f1057600080fd5b5035919050565b600080600060408486031215611f2c57600080fd5b833567ffffffffffffffff811115611f4357600080fd5b611f4f86828701611e1b565b9094509250611f62905060208501611ed3565b90509250925092565b60008060408385031215611f7e57600080fd5b8235611f8981611bc5565b91506020830135611f9981611bc5565b809150509250929050565b602080825260029082015261045360f41b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ffe57611ffe611fd6565b5060010190565b80820281158282048414176107f2576107f2611fd6565b60006020828403121561202e57600080fd5b8151611aab81611bc5565b808201808211156107f2576107f2611fd6565b818103818111156107f2576107f2611fd6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120af5784516001600160a01b03168352938301939183019160010161208a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000826120ed57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220428b3843bfb30a20cf0c1ee80361db7b13fbfa7469c910a35abcc0d5c28b4e9064736f6c63430008140033

Deployed Bytecode Sourcemap

4109:11763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12041:169;;;;;;;;;;-1:-1:-1;12041:169:0;;;;;:::i;:::-;;:::i;:::-;;6768:83;;;;;;;;;;-1:-1:-1;6838:5:0;;;;;;;;;;;;-1:-1:-1;;;6838:5:0;;;;6768:83;;;;;;;:::i;:::-;;;;;;;;7686:193;;;;;;;;;;-1:-1:-1;7686:193:0;;;;;:::i;:::-;;:::i;:::-;;;2585:14:1;;2578:22;2560:41;;2548:2;2533:18;7686:193:0;2420:187:1;5016:41:0;;;;;;;;;;-1:-1:-1;5016:41:0;;;;-1:-1:-1;;;;;5016:41:0;;;;;;-1:-1:-1;;;;;2802:32:1;;;2784:51;;2772:2;2757:18;5016:41:0;2612:229:1;7048:100:0;;;;;;;;;;-1:-1:-1;4569:17:0;7048:100;;;2992:25:1;;;2980:2;2965:18;7048:100:0;2846:177:1;7888:408:0;;;;;;;;;;-1:-1:-1;7888:408:0;;;;;:::i;:::-;;:::i;5316:49::-;;;;;;;;;;;;;;;;6956:83;;;;;;;;;;-1:-1:-1;6956:83:0;;4457:2;3631:36:1;;3619:2;3604:18;6956:83:0;3489:184:1;12319:92:0;;;;;;;;;;-1:-1:-1;12319:92:0;;;;;:::i;:::-;-1:-1:-1;;;;;12393:10:0;12369:4;12393:10;;;:4;:10;;;;;;;;;12319:92;5064:28;;;;;;;;;;-1:-1:-1;5064:28:0;;;;-1:-1:-1;;;;;5064:28:0;;;15631:236;;;;;;;;;;-1:-1:-1;15631:236:0;;;;;:::i;:::-;;:::i;13362:262::-;;;;;;;;;;-1:-1:-1;13362:262:0;;;;;:::i;:::-;;:::i;14221:118::-;;;;;;;;;;-1:-1:-1;14221:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;14307:24:0;14283:4;14307:24;;;:18;:24;;;;;;;;;14221:118;14939:683;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;14590:341::-;;;;;;;;;;-1:-1:-1;14590:341:0;;;;;:::i;:::-;;:::i;12219:92::-;;;;;;;;;;-1:-1:-1;12219:92:0;;;;;:::i;:::-;;:::i;13827:101::-;;;;;;;;;;-1:-1:-1;13827:101:0;;;;;:::i;:::-;;:::i;11800:232::-;;;;;;;;;;;;;:::i;7157:119::-;;;;;;;;;;-1:-1:-1;7157:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7250:18:0;7223:7;7250:18;;;:9;:18;;;;;;;7157:119;1655:148;;;;;;;;;;;;;:::i;13968:121::-;;;;;;;;;;-1:-1:-1;13968:121:0;;;;;:::i;:::-;;:::i;5208:45::-;;;;;;;;;;;;;;;;4855:43;;;;;;;;;;-1:-1:-1;4855:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1469:79;;;;;;;;;;-1:-1:-1;1507:7:0;1534:6;-1:-1:-1;;;;;1534:6:0;1469:79;;11484:101;;;;;;;;;;-1:-1:-1;11484:101:0;;;;;:::i;:::-;;:::i;5261:47::-;;;;;;;;;;;;;;;;6860:87;;;;;;;;;;-1:-1:-1;6932:7:0;;;;;;;;;;;;-1:-1:-1;;;6932:7:0;;;;6860:87;;13677:139;;;;;;;;;;-1:-1:-1;13677:139:0;;;;;:::i;:::-;;:::i;7285:199::-;;;;;;;;;;-1:-1:-1;7285:199:0;;;;;:::i;:::-;;:::i;4811:36::-;;;;;;;;;;-1:-1:-1;4811:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11594:197;;;;;;;;;;;;;:::i;14348:234::-;;;;;;;;;;-1:-1:-1;14348:234:0;;;;;:::i;:::-;;:::i;6127:632::-;;;;;;;;;;;;;:::i;7493:184::-;;;;;;;;;;-1:-1:-1;7493:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7642:18:0;;;7610:7;7642:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7493:184;14098:115;;;;;;;;;;-1:-1:-1;14098:115:0;;;;;:::i;:::-;;:::i;1812:208::-;;;;;;;;;;-1:-1:-1;1812:208:0;;;;;:::i;:::-;;:::i;12041:169::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;;;;;;;;;12117:9:::1;12112:91;12136:5;:12;12132:1;:16;12112:91;;;12187:4;12170;:14;12175:5;12181:1;12175:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12170:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12170:14:0;:21;;-1:-1:-1;;12170:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12150:3;::::1;::::0;::::1;:::i;:::-;;;;12112:91;;;;12041:169:::0;:::o;7686:193::-;7788:4;7810:39;298:10;7833:7;7842:6;7810:8;:39::i;:::-;-1:-1:-1;7867:4:0;7686:193;;;;;:::o;7888:408::-;8020:4;8037:36;8047:6;8055:9;8066:6;8037:9;:36::i;:::-;8084:182;8107:6;298:10;8155:100;8211:6;8155:100;;;;;;;;;;;;;-1:-1:-1;;;8155:100:0;;;:11;:19;8167:6;-1:-1:-1;;;;;8155:19:0;-1:-1:-1;;;;;8155:19:0;;;;;;;;;;;;:33;8175:12;298:10;;218:98;8175:12;-1:-1:-1;;;;;8155:33:0;;;;;;;;;;;;-1:-1:-1;8155:33:0;;;:100;:37;:100::i;:::-;8084:8;:182::i;:::-;-1:-1:-1;8284:4:0;7888:408;;;;;:::o;15631:236::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;15708:17:::1;::::0;-1:-1:-1;;;;;15708:25:0;;::::1;:17:::0;::::1;15704:64:::0;15750:7:::1;15704:64;15780:17;:24:::0;;-1:-1:-1;;;;;;15780:24:0::1;-1:-1:-1::0;;;;;15780:24:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;15815:37:0;;;:18:::1;:37;::::0;;;;:44;;-1:-1:-1;;15815:44:0::1;-1:-1:-1::0;15815:44:0::1;::::0;;1637:1:::1;15631:236:::0;:::o;13362:262::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;13480:2:::1;13468:8;:14;;13443:47;;;::::0;-1:-1:-1;;;13443:47:0;;9193:2:1;13443:47:0::1;::::0;::::1;9175:21:1::0;9232:1;9212:18;;;9205:29;-1:-1:-1;;;9250:18:1;;;9243:33;9293:18;;13443:47:0::1;8991:326:1::0;13443:47:0::1;13540:2;13527:9;:15;;13501:49;;;::::0;-1:-1:-1;;;13501:49:0;;9524:2:1;13501:49:0::1;::::0;::::1;9506:21:1::0;9563:1;9543:18;;;9536:29;-1:-1:-1;;;9581:18:1;;;9574:33;9624:18;;13501:49:0::1;9322:326:1::0;13501:49:0::1;13563:9;:20:::0;;;;13594:10:::1;:22:::0;13362:262::o;14939:683::-;14978:14;;:::i;:::-;14994:17;;:::i;:::-;15013:7;15033:20;;:::i;:::-;15064:23;;:::i;:::-;15109:11;;;-1:-1:-1;;;15109:11:0;;;;15098:22;;;;-1:-1:-1;;;15142:11:0;;;;15131:22;;15098:8;15131;;;:22;;;;15175:9;;15164:20;;15206:10;;15195:8;;;:21;15238:12;;15227:8;;;;:23;;;;15272:14;;15261:8;;;:25;15308:9;;15297:8;;;:20;15339:19;;15328:8;;;:30;15392:21;15424:8;;;:21;15505:4;-1:-1:-1;7250:18:0;;;15267:1;7250:18;;;;;;15522:8;;;:31;15596:17;;15098:22;;15164:20;;-1:-1:-1;;;;;;15596:17:0;;;;-1:-1:-1;15098:22:0;-1:-1:-1;14939:683:0:o;14590:341::-;14693:20;;;;;:58;;-1:-1:-1;14717:34:0;;;14693:58;14685:67;;;;;;14778:10;14763:12;14801:123;14818:20;;;14801:123;;;14860:52;14870:4;14876:9;;14886:1;14876:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14890:7;;14898:1;14890:10;;;;;;;:::i;:::-;;;;;;;14904:6;14890:21;;;;:::i;:::-;14860:9;:52::i;:::-;14840:3;;;;:::i;:::-;;;;14801:123;;;;14674:257;14590:341;;;;:::o;12219:92::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12283:12:0::1;12298:5;12283:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;12283:20:0::1;::::0;;12219:92::o;13827:101::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;13894:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;13894:26:0::1;-1:-1:-1::0;;;;13894:26:0;;::::1;::::0;;;::::1;::::0;;13827:101::o;11800:232::-;11866:17;;-1:-1:-1;;;;;11866:17:0;298:10;-1:-1:-1;;;;;11850:33:0;;11842:42;;;;;;11924:21;11960:22;;11956:69;;11999:14;:12;:14::i;1655:148::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;1762:1:::1;1746:6:::0;;1725:40:::1;::::0;-1:-1:-1;;;;;1746:6:0;;::::1;::::0;1725:40:::1;::::0;1762:1;;1725:40:::1;1793:1;1776:19:::0;;-1:-1:-1;;;;;;1776:19:0::1;::::0;;1655:148::o;13968:121::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;14045:12:::1;:26:::0;13968:121::o;11484:101::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;11551:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;11551:26:0::1;-1:-1:-1::0;;;;11551:26:0;;::::1;::::0;;;::::1;::::0;;11484:101::o;13677:139::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;13768:19:::1;:40:::0;13677:139::o;7285:199::-;7390:4;7412:42;298:10;7436:9;7447:6;7412:9;:42::i;11594:197::-;11660:17;;-1:-1:-1;;;;;11660:17:0;298:10;-1:-1:-1;;;;;11644:33:0;;11636:42;;;;;;11733:4;11689:23;7250:18;;;:9;:18;;;;;;11750:33;7250:18;11750:16;:33::i;14348:234::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;14465:9:::1;14461:114;14480:19:::0;;::::1;14461:114;;;14555:8;14521:18;:31;14540:8;;14549:1;14540:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14521:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14521:31:0;:42;;-1:-1:-1;;14521:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14501:3;::::1;::::0;::::1;:::i;:::-;;;;14461:114;;;;14348:234:::0;;;:::o;6127:632::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;6182:13:::1;::::0;-1:-1:-1;;;;;6182:13:0::1;6226:7;6178:66;6365:15;:34:::0;;-1:-1:-1;;;;;;6365:34:0::1;6311:42;6365:34:::0;;::::1;::::0;;;6442:26:::1;::::0;;-1:-1:-1;;;6442:26:0;;;;6254:35:::1;::::0;6311:42;;6442:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;6311:42;6442:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6424:53:0::1;;6486:4;6493:16;-1:-1:-1::0;;;;;6493:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6424:93;::::0;-1:-1:-1;;;;;;6424:93:0::1;::::0;;;;;;-1:-1:-1;;;;;10312:15:1;;;6424:93:0::1;::::0;::::1;10294:34:1::0;10364:15;;10344:18;;;10337:43;10229:18;;6424:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6410:107:::0;-1:-1:-1;;;;;;6532:17:0;::::1;::::0;6528:214:::1;;6566:13;:19:::0;;-1:-1:-1;;;;;6566:19:0;::::1;-1:-1:-1::0;;;;;;6566:19:0;;::::1;;::::0;;12112:91:::1;12041:169:::0;:::o;6528:214::-:1;6652:16;-1:-1:-1::0;;;;;6652:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6634:56:0::1;;6699:4;6706:16;-1:-1:-1::0;;;;;6706:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6634:96;::::0;-1:-1:-1;;;;;;6634:96:0::1;::::0;;;;;;-1:-1:-1;;;;;10312:15:1;;;6634:96:0::1;::::0;::::1;10294:34:1::0;10364:15;;10344:18;;;10337:43;10229:18;;6634:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6618:13;:112:::0;;-1:-1:-1;;;;;;6618:112:0::1;-1:-1:-1::0;;;;;6618:112:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;1637:1:0::1;6127:632::o:0;14098:115::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;14175:14:::1;:30:::0;14098:115::o;1812:208::-;1597:6;;-1:-1:-1;;;;;1597:6:0;298:10;1597:22;1589:37;;;;-1:-1:-1;;;1589:37:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1901:22:0;::::1;1893:37;;;::::0;-1:-1:-1;;;1893:37:0;;10593:2:1;1893:37:0::1;::::0;::::1;10575:21:1::0;10632:1;10612:18;;;10605:29;-1:-1:-1;;;10650:18:1;;;10643:32;10692:18;;1893:37:0::1;10391:325:1::0;1893:37:0::1;1967:6;::::0;;1946:38:::1;::::0;-1:-1:-1;;;;;1946:38:0;;::::1;::::0;1967:6;::::1;::::0;1946:38:::1;::::0;::::1;1995:6;:17:::0;;-1:-1:-1;;;;;;1995:17:0::1;-1:-1:-1::0;;;;;1995:17:0;;;::::1;::::0;;;::::1;::::0;;1812:208::o;8526:303::-;-1:-1:-1;;;;;8653:19:0;;8645:34;;;;-1:-1:-1;;;8645:34:0;;10923:2:1;8645:34:0;;;10905:21:1;10962:1;10942:18;;;10935:29;-1:-1:-1;;;10980:18:1;;;10973:32;11022:18;;8645:34:0;10721:325:1;8645:34:0;-1:-1:-1;;;;;8698:21:0;;8690:36;;;;-1:-1:-1;;;8690:36:0;;11253:2:1;8690:36:0;;;11235:21:1;11292:1;11272:18;;;11265:29;-1:-1:-1;;;11310:18:1;;;11303:32;11352:18;;8690:36:0;11051:325:1;8690:36:0;-1:-1:-1;;;;;8737:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8789:32;;2992:25:1;;;8789:32:0;;2965:18:1;8789:32:0;;;;;;;8526:303;;;:::o;8838:1959::-;-1:-1:-1;;;;;8960:18:0;;8952:33;;;;-1:-1:-1;;;8952:33:0;;11583:2:1;8952:33:0;;;11565:21:1;11622:1;11602:18;;;11595:29;-1:-1:-1;;;11640:18:1;;;11633:32;11682:18;;8952:33:0;11381:325:1;8952:33:0;-1:-1:-1;;;;;9004:16:0;;8996:32;;;;-1:-1:-1;;;8996:32:0;;11913:2:1;8996:32:0;;;11895:21:1;11952:1;11932:18;;;11925:29;-1:-1:-1;;;11970:18:1;;;11963:33;12013:18;;8996:32:0;11711:326:1;8996:32:0;9056:1;9047:6;:10;9039:26;;;;-1:-1:-1;;;9039:26:0;;12244:2:1;9039:26:0;;;12226:21:1;12283:1;12263:18;;;12256:29;-1:-1:-1;;;12301:18:1;;;12294:33;12344:18;;9039:26:0;12042:326:1;9039:26:0;1507:7;1534:6;-1:-1:-1;;;;;9083:15:0;;;1534:6;;9083:15;;;;:32;;-1:-1:-1;1507:7:0;1534:6;-1:-1:-1;;;;;9102:13:0;;;1534:6;;9102:13;;9083:32;9079:1089;;;9173:11;;-1:-1:-1;;;9173:11:0;;;;9168:84;;1507:7;1534:6;-1:-1:-1;;;;;9213:15:0;;;1534:6;;9213:15;9205:31;;;;-1:-1:-1;;;9205:31:0;;12575:2:1;9205:31:0;;;12557:21:1;12614:1;12594:18;;;12587:29;-1:-1:-1;;;12632:18:1;;;12625:33;12675:18;;9205:31:0;12373:326:1;9205:31:0;9284:12;;9274:6;:22;;9266:38;;;;-1:-1:-1;;;9266:38:0;;12906:2:1;9266:38:0;;;12888:21:1;12945:1;12925:18;;;12918:29;-1:-1:-1;;;12963:18:1;;;12956:33;13006:18;;9266:38:0;12704:326:1;9266:38:0;-1:-1:-1;;;;;9328:10:0;;;;;;:4;:10;;;;;;;;9327:11;:24;;;;-1:-1:-1;;;;;;9343:8:0;;;;;;:4;:8;;;;;;;;9342:9;9327:24;9319:40;;;;-1:-1:-1;;;9319:40:0;;13237:2:1;9319:40:0;;;13219:21:1;13276:1;13256:18;;;13249:29;-1:-1:-1;;;13294:18:1;;;13287:33;13337:18;;9319:40:0;13035:326:1;9319:40:0;9383:13;;-1:-1:-1;;;;;9377:19:0;;;9383:13;;9377:19;9374:114;;9450:14;;9441:6;9425:13;9435:2;-1:-1:-1;;;;;7250:18:0;7223:7;7250:18;;;:9;:18;;;;;;;7157:119;9425:13;:22;;;;:::i;:::-;:39;9417:55;;;;-1:-1:-1;;;9417:55:0;;13698:2:1;9417:55:0;;;13680:21:1;13737:1;13717:18;;;13710:29;-1:-1:-1;;;13755:18:1;;;13748:33;13798:18;;9417:55:0;13496:326:1;9417:55:0;9554:4;9505:28;7250:18;;;:9;:18;;;;;;9614:19;;9678:12;;9590:43;;;;;9654:36;;9651:124;;9747:12;;9724:35;;9651:124;9796:7;:18;;;;-1:-1:-1;9808:6:0;;-1:-1:-1;;;9808:6:0;;;;9807:7;9796:18;:43;;;;-1:-1:-1;9826:13:0;;-1:-1:-1;;;;;9818:21:0;;;9826:13;;9818:21;;9796:43;:58;;;;-1:-1:-1;9843:11:0;;-1:-1:-1;;;9843:11:0;;;;9796:58;:87;;;;-1:-1:-1;;;;;;9859:24:0;;;;;;:18;:24;;;;;;;;9858:25;9796:87;:114;;;;-1:-1:-1;;;;;;9888:22:0;;;;;;:18;:22;;;;;;;;9887:23;9796:114;9792:365;;;9931:38;9948:20;9931:16;:38::i;:::-;10017:21;10061:22;;10057:85;;10108:14;:12;:14::i;:::-;9912:245;9792:365;9117:1051;;9079:1089;-1:-1:-1;;;;;10246:24:0;;10181:12;10246:24;;;:18;:24;;;;;;10196:4;;10246:24;;;:50;;-1:-1:-1;;;;;;10274:22:0;;;;;;:18;:22;;;;;;;;10246:50;10245:102;;;-1:-1:-1;10310:13:0;;-1:-1:-1;;;;;10302:21:0;;;10310:13;;10302:21;;;;:44;;-1:-1:-1;10333:13:0;;-1:-1:-1;;;;;10327:19:0;;;10333:13;;10327:19;;10302:44;10241:494;;;-1:-1:-1;10374:5:0;10241:494;;;10458:13;;-1:-1:-1;;;;;10450:21:0;;;10458:13;;10450:21;:55;;;;-1:-1:-1;10489:15:0;;-1:-1:-1;;;;;10475:30:0;;;10489:15;;10475:30;;10450:55;10447:111;;;10533:9;;10526:4;:16;10447:111;10618:13;;-1:-1:-1;;;;;10612:19:0;;;10618:13;;10612:19;:55;;;;-1:-1:-1;10651:15:0;;-1:-1:-1;;;;;10635:32:0;;;10651:15;;10635:32;;10612:55;10608:113;;;10695:10;;10688:4;:17;10608:113;10748:41;10763:4;10769:2;10773:6;10781:7;10748:14;:41::i;2335:224::-;2455:7;2491:12;2483:6;;;;2475:29;;;;-1:-1:-1;;;2475:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2515:9:0;2527:5;2531:1;2527;:5;:::i;:::-;2515:17;2335:224;-1:-1:-1;;;;;2335:224:0:o;11298:177::-;11386:17;;11378:89;;11341:12;;-1:-1:-1;;;;;11386:17:0;;11431:21;;11341:12;11378:89;11341:12;11378:89;11431:21;11386:17;11378:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10806:483;5460:6;:13;;-1:-1:-1;;;;5460:13:0;-1:-1:-1;;;5460:13:0;;;10908:16:::1;::::0;;10922:1:::1;10908:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10908:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10908:16:0::1;10884:40;;10953:4;10935;10940:1;10935:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10935:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10979:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10979:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10935:7;;10979:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10969:4;10974:1;10969:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10969:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11044:15:::1;::::0;11012:62:::1;::::0;11029:4:::1;::::0;11044:15:::1;11062:11:::0;11012:8:::1;:62::i;:::-;11085:15;::::0;:196:::1;::::0;-1:-1:-1;;;11085:196:0;;-1:-1:-1;;;;;11085:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11166:11;;11085:15:::1;::::0;11208:4;;11235::::1;::::0;11255:15:::1;::::0;11085:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5496:6:0;:14;;-1:-1:-1;;;;5496:14:0;;;-1:-1:-1;;;;10806:483:0:o;12420:282::-;12576:7;12571:28;;12585:14;:12;:14::i;:::-;12610:44;12628:6;12636:9;12647:6;12610:17;:44::i;:::-;12670:7;12665:29;;12679:15;8497:12;;8490:4;:19;8446:71;8310:127;8357:4;;8365:1;8357:9;8353:22;;8310:127::o;8353:22::-;8403:4;;;8388:12;:19;-1:-1:-1;8421:8:0;;8310:127::o;12711:601::-;12844:11;12858:25;12879:3;12858:16;12869:4;;12858:6;:10;;:16;;;;:::i;:::-;:20;;:25::i;:::-;12844:39;-1:-1:-1;12894:22:0;12919:15;:6;12844:39;12919:10;:15::i;:::-;-1:-1:-1;;;;;12967:17:0;;;;;;:9;:17;;;;;;12894:40;;-1:-1:-1;12967:29:0;;12989:6;12967:21;:29::i;:::-;-1:-1:-1;;;;;12947:17:0;;;;;;;:9;:17;;;;;;:49;;;;13030:20;;;;;;;:40;;13055:14;13030:24;:40::i;:::-;-1:-1:-1;;;;;13007:20:0;;;;;;:9;:20;;;;;:63;13085:7;;13081:146;;13121:9;;:18;;13135:3;13121:13;:18::i;:::-;13109:9;:30;13200:4;13182:24;;;;:9;:24;;;;;;:33;;13211:3;13182:28;:33::i;:::-;13172:4;13154:24;;;;:9;:24;;;;;:61;13081:146;13278:9;-1:-1:-1;;;;;13261:43:0;13270:6;-1:-1:-1;;;;;13261:43:0;;13289:14;13261:43;;;;2992:25:1;;2980:2;2965:18;;2846:177;13261:43:0;;;;;;;;12831:481;;12711:601;;;:::o;2568:215::-;2626:7;2650:1;2655;2650:6;2646:47;;-1:-1:-1;2680:1:0;2673:8;;2646:47;2703:9;2715:5;2719:1;2715;:5;:::i;:::-;2703:17;-1:-1:-1;2748:1:0;2739:5;2743:1;2703:17;2739:5;:::i;:::-;:10;2731:25;;;;-1:-1:-1;;;2731:25:0;;15579:2:1;2731:25:0;;;15561:21:1;15618:1;15598:18;;;15591:29;-1:-1:-1;;;15636:18:1;;;15629:32;15678:18;;2731:25:0;15377:325:1;2731:25:0;2774:1;2568:215;-1:-1:-1;;;2568:215:0:o;2792:108::-;2850:7;2877:15;2881:1;2884;2877:15;;;;;;;;;;;;;-1:-1:-1;;;2877:15:0;;;:3;:15::i;2218:108::-;2276:7;2303:15;2307:1;2310;2303:15;;;;;;;;;;;;;-1:-1:-1;;;2303:15:0;;;:3;:15::i;2055:154::-;2113:7;;2145:5;2149:1;2145;:5;:::i;:::-;2133:17;;2174:1;2169;:6;;2161:21;;;;-1:-1:-1;;;2161:21:0;;15909:2:1;2161:21:0;;;15891::1;15948:1;15928:18;;;15921:29;-1:-1:-1;;;15966:18:1;;;15959:32;16008:18;;2161:21:0;15707:325:1;2909:223:0;3029:7;3064:12;3057:5;3049:28;;;;-1:-1:-1;;;3049:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3088:9:0;3100:5;3104:1;3100;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:548::-;1659:4;1688:2;1717;1706:9;1699:21;1749:6;1743:13;1792:6;1787:2;1776:9;1772:18;1765:34;1817:1;1827:140;1841:6;1838:1;1835:13;1827:140;;;1936:14;;;1932:23;;1926:30;1902:17;;;1921:2;1898:26;1891:66;1856:10;;1827:140;;;1831:3;2016:1;2011:2;2002:6;1991:9;1987:22;1983:31;1976:42;2086:2;2079;2075:7;2070:2;2062:6;2058:15;2054:29;2043:9;2039:45;2035:54;2027:62;;;;1547:548;;;;:::o;2100:315::-;2168:6;2176;2229:2;2217:9;2208:7;2204:23;2200:32;2197:52;;;2245:1;2242;2235:12;2197:52;2284:9;2271:23;2303:31;2328:5;2303:31;:::i;:::-;2353:5;2405:2;2390:18;;;;2377:32;;-1:-1:-1;;;2100:315:1:o;3028:456::-;3105:6;3113;3121;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3229:9;3216:23;3248:31;3273:5;3248:31;:::i;:::-;3298:5;-1:-1:-1;3355:2:1;3340:18;;3327:32;3368:33;3327:32;3368:33;:::i;:::-;3028:456;;3420:7;;-1:-1:-1;;;3474:2:1;3459:18;;;;3446:32;;3028:456::o;3678:247::-;3737:6;3790:2;3778:9;3769:7;3765:23;3761:32;3758:52;;;3806:1;3803;3796:12;3758:52;3845:9;3832:23;3864:31;3889:5;3864:31;:::i;4398:248::-;4466:6;4474;4527:2;4515:9;4506:7;4502:23;4498:32;4495:52;;;4543:1;4540;4533:12;4495:52;-1:-1:-1;;4566:23:1;;;4636:2;4621:18;;;4608:32;;-1:-1:-1;4398:248:1:o;4651:1013::-;4927:3;4912:19;;4916:9;5008:6;4885:4;5042:210;5056:4;5053:1;5050:11;5042:210;;;5129:13;;5122:21;5115:29;5103:42;;5168:4;5192:12;;;;5227:15;;;;5076:1;5069:9;5042:210;;;5046:3;;;5289:2;5278:9;5274:18;5340:6;5366:1;5376:212;5392:4;5387:3;5384:13;5376:212;;;5457:15;;5443:30;;5496:4;5522:14;;;;5561:17;;;;5416:1;5407:11;5376:212;;;-1:-1:-1;;;;;;;;5625:32:1;;;;5619:3;5604:19;;;;5597:61;4651:1013;;-1:-1:-1;;4651:1013:1:o;5669:367::-;5732:8;5742:6;5796:3;5789:4;5781:6;5777:17;5773:27;5763:55;;5814:1;5811;5804:12;5763:55;-1:-1:-1;5837:20:1;;5880:18;5869:30;;5866:50;;;5912:1;5909;5902:12;5866:50;5949:4;5941:6;5937:17;5925:29;;6009:3;6002:4;5992:6;5989:1;5985:14;5977:6;5973:27;5969:38;5966:47;5963:67;;;6026:1;6023;6016:12;5963:67;5669:367;;;;;:::o;6041:773::-;6163:6;6171;6179;6187;6240:2;6228:9;6219:7;6215:23;6211:32;6208:52;;;6256:1;6253;6246:12;6208:52;6296:9;6283:23;6325:18;6366:2;6358:6;6355:14;6352:34;;;6382:1;6379;6372:12;6352:34;6421:70;6483:7;6474:6;6463:9;6459:22;6421:70;:::i;:::-;6510:8;;-1:-1:-1;6395:96:1;-1:-1:-1;6598:2:1;6583:18;;6570:32;;-1:-1:-1;6614:16:1;;;6611:36;;;6643:1;6640;6633:12;6611:36;;6682:72;6746:7;6735:8;6724:9;6720:24;6682:72;:::i;:::-;6041:773;;;;-1:-1:-1;6773:8:1;-1:-1:-1;;;;6041:773:1:o;6819:160::-;6884:20;;6940:13;;6933:21;6923:32;;6913:60;;6969:1;6966;6959:12;6984:180;7040:6;7093:2;7081:9;7072:7;7068:23;7064:32;7061:52;;;7109:1;7106;7099:12;7061:52;7132:26;7148:9;7132:26;:::i;7169:180::-;7228:6;7281:2;7269:9;7260:7;7256:23;7252:32;7249:52;;;7297:1;7294;7287:12;7249:52;-1:-1:-1;7320:23:1;;7169:180;-1:-1:-1;7169:180:1:o;7354:505::-;7446:6;7454;7462;7515:2;7503:9;7494:7;7490:23;7486:32;7483:52;;;7531:1;7528;7521:12;7483:52;7571:9;7558:23;7604:18;7596:6;7593:30;7590:50;;;7636:1;7633;7626:12;7590:50;7675:70;7737:7;7728:6;7717:9;7713:22;7675:70;:::i;:::-;7764:8;;-1:-1:-1;7649:96:1;-1:-1:-1;7818:35:1;;-1:-1:-1;7849:2:1;7834:18;;7818:35;:::i;:::-;7808:45;;7354:505;;;;;:::o;7864:388::-;7932:6;7940;7993:2;7981:9;7972:7;7968:23;7964:32;7961:52;;;8009:1;8006;7999:12;7961:52;8048:9;8035:23;8067:31;8092:5;8067:31;:::i;:::-;8117:5;-1:-1:-1;8174:2:1;8159:18;;8146:32;8187:33;8146:32;8187:33;:::i;:::-;8239:7;8229:17;;;7864:388;;;;;:::o;8257:325::-;8459:2;8441:21;;;8498:1;8478:18;;;8471:29;-1:-1:-1;;;8531:2:1;8516:18;;8509:32;8573:2;8558:18;;8257:325::o;8587:127::-;8648:10;8643:3;8639:20;8636:1;8629:31;8679:4;8676:1;8669:15;8703:4;8700:1;8693:15;8719:127;8780:10;8775:3;8771:20;8768:1;8761:31;8811:4;8808:1;8801:15;8835:4;8832:1;8825:15;8851:135;8890:3;8911:17;;;8908:43;;8931:18;;:::i;:::-;-1:-1:-1;8978:1:1;8967:13;;8851:135::o;9653:168::-;9726:9;;;9757;;9774:15;;;9768:22;;9754:37;9744:71;;9795:18;;:::i;9826:251::-;9896:6;9949:2;9937:9;9928:7;9924:23;9920:32;9917:52;;;9965:1;9962;9955:12;9917:52;9997:9;9991:16;10016:31;10041:5;10016:31;:::i;13366:125::-;13431:9;;;13452:10;;;13449:36;;;13465:18;;:::i;13827:128::-;13894:9;;;13915:11;;;13912:37;;;13929:18;;:::i;14170:980::-;14432:4;14480:3;14469:9;14465:19;14511:6;14500:9;14493:25;14537:2;14575:6;14570:2;14559:9;14555:18;14548:34;14618:3;14613:2;14602:9;14598:18;14591:31;14642:6;14677;14671:13;14708:6;14700;14693:22;14746:3;14735:9;14731:19;14724:26;;14785:2;14777:6;14773:15;14759:29;;14806:1;14816:195;14830:6;14827:1;14824:13;14816:195;;;14895:13;;-1:-1:-1;;;;;14891:39:1;14879:52;;14986:15;;;;14951:12;;;;14927:1;14845:9;14816:195;;;-1:-1:-1;;;;;;;15067:32:1;;;;15062:2;15047:18;;15040:60;-1:-1:-1;;;15131:3:1;15116:19;15109:35;15028:3;14170:980;-1:-1:-1;;;14170:980:1:o;15155:217::-;15195:1;15221;15211:132;;15265:10;15260:3;15256:20;15253:1;15246:31;15300:4;15297:1;15290:15;15328:4;15325:1;15318:15;15211:132;-1:-1:-1;15357:9:1;;15155:217::o

Swarm Source

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