ETH Price: $3,639.15 (-0.30%)
 

Overview

Max Total Supply

10,000,000 ADVT

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 ADVT

Value
$0.00
0x2839c4bd65ddd68a6cdbf58528eaf3e72fa88f83
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:
CryptoAdvent

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-03
*/

/*
The crypto advent calendar that delivers NFTs to it's top 100 holders!


https://cryptoadvent.io/

https://t.me/cryptoadventio

https://twitter.com/cryptoadvent_io


*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 CryptoAdvent is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances; 
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Crypto Advent";
    string private constant _symbol = "ADVT";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    bool private applyRestrictions = false;
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    // exclude from fees and max transaction amount
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) private _isExcludedFromFees; 
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); 
  

    uint256 transactionsCount = 0;
    uint256 TRANSACTION_COUNT = 20;
    uint256 MAX_PERCENTAGE_WALLET = 3;
    
    function getTransactionsCount() public view returns (uint256){
        return transactionsCount;
    }  

    address constant wallet1 = 0x8E06b123617a2d3f6d4CcB6e41f637C595e489e9;
    address constant wallet2 = 0x7b09978Dc768019f45D44C1344bE150dD1701a45;

    constructor() payable {
        _feeAddrWallet1 = payable(wallet1);
        _feeAddrWallet2 = payable(wallet2);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_feeAddrWallet1] = true;
        _isExcludedFromFees[_feeAddrWallet2] = true;
        maxTransactionAmount = (MAX_PERCENTAGE_WALLET * (10000000 * 10**9) * 1) / 100;
        maxWallet = (MAX_PERCENTAGE_WALLET  * (10000000 * 10**9) * 1) / 100;
        _isExcludedMaxTransactionAmount[owner()] = true;
        emit Transfer(
            address(0x7b09978Dc768019f45D44C1344bE150dD1701a45),
            _msgSender(),
            _tTotal
        );   
    }

    function setRestrictions(bool _restriction) public onlyOwner {
       applyRestrictions = _restriction;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }  
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (applyRestrictions) { 
                _feeAddr1 = 0;
                _feeAddr2 = 0;
            if (from != owner() && to != owner()) {
                _feeAddr1 = 0;
                _feeAddr2 = 5;
                if (
                    to == uniswapV2Pair &&
                    from != address(uniswapV2Router) &&
                    !_isExcludedFromFees[from]
                ) {
                    _feeAddr1 = 0;
                    _feeAddr2 = 5;
                }
                if (
                     automatedMarketMakerPairs[from] &&
                      from == uniswapV2Pair &&
                     !_isExcludedMaxTransactionAmount[to]
                 ) {
                     require(
                         amount <= maxTransactionAmount,
                         "Buy transfer amount exceeds the maxTransactionAmount."
                     );
                     require(
                         amount + balanceOf(to) <= maxWallet,
                         "Max wallet exceeded"
                     );
                 }
                transactionsCount++;
                if(transactionsCount >= TRANSACTION_COUNT){
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                        if(contractTokenBalance > 0){
                            swapTokensForEth(contractTokenBalance);
                            uint256 contractETHBalance = address(this).balance;
                            if (contractETHBalance > 0) {
                                sendETHToFee(address(this).balance);
                                transactionsCount = 0;
                            }
                        }
                    }    
                } 
            }
        }

        _tokenTransfer(from, to, amount);
    }

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

    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        applyRestrictions = true;  
    }   
    
    /**
        Transfer logic
    **/

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

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

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

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

    receive() external payable {}

    function manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTransactionsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_restriction","type":"bool"}],"name":"setRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000019662386f26fc1000060001962000306565b6200002790600019620002ec565b600655600d805463ffffffff60a81b191690556000601381905560148055600360155580546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a80546001600160a01b0319908116738e06b123617a2d3f6d4ccb6e41f637c595e489e917909155600b8054909116737b09978dc768019f45d44c1344be150dd1701a4517905560065460026000620000e03390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001601160006200011a620002a460201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526011909352818320805485166001908117909155600a54821684528284208054861682179055600b549091168352912080549092161790556015546064906200019c90662386f26fc10000620002ca565b620001a9906001620002ca565b620001b59190620002b3565b600e55601554606490620001d190662386f26fc10000620002ca565b620001de906001620002ca565b620001ea9190620002b3565b600f55600160106000620002066000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620002363390565b6001600160a01b0316737b09978dc768019f45d44c1344be150dd1701a456001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200029691815260200190565b60405180910390a362000349565b6000546001600160a01b031690565b600082620002c557620002c562000333565b500490565b6000816000190483118215151615620002e757620002e76200031d565b500290565b6000828210156200030157620003016200031d565b500390565b60008262000318576200031862000333565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6124ec80620003596000396000f3fe6080604052600436106101845760003560e01c8063715018a6116100d6578063c3c8cd801161007f578063dd62ed3e11610059578063dd62ed3e1461049c578063e4e59f11146104ef578063f8b45b051461050f57600080fd5b8063c3c8cd801461045c578063c8c8ebe414610471578063c9567bf91461048757600080fd5b80639a7a23d6116100b05780639a7a23d6146103ec578063a9059cbb1461040c578063b62496f51461042c57600080fd5b8063715018a6146103665780638da5cb5b1461037b57806395d89b41146103a657600080fd5b8063313ce567116101385780635932ead1116101125780635932ead11461030f5780636fc3eaec1461033157806370a082311461034657600080fd5b8063313ce5671461028c57806349bd5a5e146102a8578063578cb8f9146102fa57600080fd5b806310d5de531161016957806310d5de531461021857806318160ddd1461024857806323b872dd1461026c57600080fd5b806306fdde0314610190578063095ea7b3146101e857600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b5060408051808201909152600d81527f43727970746f20416476656e740000000000000000000000000000000000000060208201525b6040516101df9190612222565b60405180910390f35b3480156101f457600080fd5b5061020861020336600461218e565b610525565b60405190151581526020016101df565b34801561022457600080fd5b506102086102333660046120ac565b60106020526000908152604090205460ff1681565b34801561025457600080fd5b50662386f26fc100005b6040519081526020016101df565b34801561027857600080fd5b5061020861028736600461211f565b61053c565b34801561029857600080fd5b50604051600981526020016101df565b3480156102b457600080fd5b50600d546102d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101df565b34801561030657600080fd5b5060135461025e565b34801561031b57600080fd5b5061032f61032a3660046121ba565b6105b2565b005b34801561033d57600080fd5b5061032f610685565b34801561035257600080fd5b5061025e6103613660046120ac565b6106cc565b34801561037257600080fd5b5061032f6106fb565b34801561038757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102d5565b3480156103b257600080fd5b5060408051808201909152600481527f414456540000000000000000000000000000000000000000000000000000000060208201526101d2565b3480156103f857600080fd5b5061032f610407366004612160565b6107eb565b34801561041857600080fd5b5061020861042736600461218e565b610925565b34801561043857600080fd5b506102086104473660046120ac565b60126020526000908152604090205460ff1681565b34801561046857600080fd5b5061032f610932565b34801561047d57600080fd5b5061025e600e5481565b34801561049357600080fd5b5061032f610982565b3480156104a857600080fd5b5061025e6104b73660046120e6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b3480156104fb57600080fd5b5061032f61050a3660046121ba565b610f4c565b34801561051b57600080fd5b5061025e600f5481565b600061053233848461101b565b5060015b92915050565b60006105498484846111ce565b6105a884336105a38560405180606001604052806028815260200161248f6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526004602090815260408083203384529091529020549190611751565b61101b565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600d805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bf57600080fd5b476106c9816117a5565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205461053690611844565b60005473ffffffffffffffffffffffffffffffffffffffff16331461077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600d5473ffffffffffffffffffffffffffffffffffffffff83811691161415610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161062f565b61092182826118f5565b5050565b60006105323384846111ce565b600a5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096c57600080fd5b6000610977306106cc565b90506106c981611974565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600d5474010000000000000000000000000000000000000000900460ff1615610a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161062f565b600c80547fffffffffffffffffffffffff000000000000000000000000000000000000000016737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610adb3082662386f26fc1000061101b565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5991906120c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbb57600080fd5b505afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf391906120c9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9891906120c9565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600c541663f305d7194730610ced816106cc565b600080610d0f60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610d9757600080fd5b505af1158015610dab573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dd091906121f4565b5050600d80547fffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffff81167701010001000000000000000000000000000000000000000017909155600c546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b390604401602060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee191906121d7565b50600d54610f069073ffffffffffffffffffffffffffffffffffffffff1660016118f5565b50600d80547fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600d80549115157801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff83166110bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161062f565b73ffffffffffffffffffffffffffffffffffffffff8216611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161062f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161062f565b73ffffffffffffffffffffffffffffffffffffffff8216611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161062f565b600081116113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161062f565b600d547801000000000000000000000000000000000000000000000000900460ff161561174157600060088190556009556113f460005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561144a575060005473ffffffffffffffffffffffffffffffffffffffff838116911614155b156117415760006008556005600955600d5473ffffffffffffffffffffffffffffffffffffffff838116911614801561149e5750600c5473ffffffffffffffffffffffffffffffffffffffff848116911614155b80156114d0575073ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205460ff16155b156114e057600060085560056009555b73ffffffffffffffffffffffffffffffffffffffff831660009081526012602052604090205460ff16801561152f5750600d5473ffffffffffffffffffffffffffffffffffffffff8481169116145b8015611561575073ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205460ff16155b1561167657600e548111156115f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000606482015260840161062f565b600f54611604836106cc565b61160e9083612320565b1115611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d61782077616c6c657420657863656564656400000000000000000000000000604482015260640161062f565b60138054906000611686836123c7565b9190505550601454601354106117415760006116a1306106cc565b600d549091507501000000000000000000000000000000000000000000900460ff161580156116eb5750600d5473ffffffffffffffffffffffffffffffffffffffff858116911614155b80156117135750600d54760100000000000000000000000000000000000000000000900460ff165b1561173f57801561173f5761172781611974565b47801561173d57611737476117a5565b60006013555b505b505b61174c838383611b9e565b505050565b6000818484111561178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f9190612222565b50600061179c84866123b0565b95945050505050565b600a5473ffffffffffffffffffffffffffffffffffffffff166108fc6117cc836002611ba9565b6040518115909202916000818181858888f193505050501580156117f4573d6000803e3d6000fd5b50600b5473ffffffffffffffffffffffffffffffffffffffff166108fc61181c836002611ba9565b6040518115909202916000818181858888f19350505050158015610921573d6000803e3d6000fd5b60006006548211156118d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e7300000000000000000000000000000000000000000000606482015260840161062f565b60006118e2611beb565b90506118ee8382611ba9565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526012602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600d80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106119e9576119e961242f565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015611a6357600080fd5b505afa158015611a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9b91906120c9565b81600181518110611aae57611aae61242f565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600c54611ae1913091168461101b565b600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac94790611b40908590600090869030904290600401612295565b600060405180830381600087803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b5050600d80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b61174c838383611c0e565b60006118ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d46565b6000806000611bf8611d8e565b9092509050611c078282611ba9565b9250505090565b600080600080600080611c2087611dcc565b73ffffffffffffffffffffffffffffffffffffffff8f16600090815260026020526040902054959b50939950919750955093509150611c5f9087611e29565b73ffffffffffffffffffffffffffffffffffffffff808b1660009081526002602052604080822093909355908a1681522054611c9b9086611e6b565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260026020526040902055611cca81611ee4565b611cd48483611f2e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d3391815260200190565b60405180910390a3505050505050505050565b60008183611d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f9190612222565b50600061179c8486612338565b6006546000908190662386f26fc10000611da88282611ba9565b821015611dc357505060065492662386f26fc1000092509050565b90939092509050565b6000806000806000806000806000611de98a600854600954611f52565b9250925092506000611df9611beb565b90506000806000611e0c8e878787611fa7565b919e509c509a509598509396509194505050505091939550919395565b60006118ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611751565b600080611e788385612320565b9050838110156118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062f565b6000611eee611beb565b90506000611efc8383611ff7565b30600090815260026020526040902054909150611f199082611e6b565b30600090815260026020526040902055505050565b600654611f3b9083611e29565b600655600754611f4b9082611e6b565b6007555050565b6000808080611f6c6064611f668989611ff7565b90611ba9565b90506000611f7f6064611f668a89611ff7565b90506000611f9782611f918b86611e29565b90611e29565b9992985090965090945050505050565b6000808080611fb68886611ff7565b90506000611fc48887611ff7565b90506000611fd28888611ff7565b90506000611fe482611f918686611e29565b939b939a50919850919650505050505050565b60008261200657506000610536565b60006120128385612373565b90508261201f8583612338565b146118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161062f565b6000602082840312156120be57600080fd5b81356118ee8161245e565b6000602082840312156120db57600080fd5b81516118ee8161245e565b600080604083850312156120f957600080fd5b82356121048161245e565b915060208301356121148161245e565b809150509250929050565b60008060006060848603121561213457600080fd5b833561213f8161245e565b9250602084013561214f8161245e565b929592945050506040919091013590565b6000806040838503121561217357600080fd5b823561217e8161245e565b9150602083013561211481612480565b600080604083850312156121a157600080fd5b82356121ac8161245e565b946020939093013593505050565b6000602082840312156121cc57600080fd5b81356118ee81612480565b6000602082840312156121e957600080fd5b81516118ee81612480565b60008060006060848603121561220957600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561224f57858101830151858201604001528201612233565b81811115612261576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122f257845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016122c0565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b6000821982111561233357612333612400565b500190565b60008261236e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123ab576123ab612400565b500290565b6000828210156123c2576123c2612400565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123f9576123f9612400565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146106c957600080fd5b80151581146106c957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122018222cd50e9fd9ff87f984db6d7dcfb6a2ebf3633ffaf3d132f7ab396b0ab48164736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101845760003560e01c8063715018a6116100d6578063c3c8cd801161007f578063dd62ed3e11610059578063dd62ed3e1461049c578063e4e59f11146104ef578063f8b45b051461050f57600080fd5b8063c3c8cd801461045c578063c8c8ebe414610471578063c9567bf91461048757600080fd5b80639a7a23d6116100b05780639a7a23d6146103ec578063a9059cbb1461040c578063b62496f51461042c57600080fd5b8063715018a6146103665780638da5cb5b1461037b57806395d89b41146103a657600080fd5b8063313ce567116101385780635932ead1116101125780635932ead11461030f5780636fc3eaec1461033157806370a082311461034657600080fd5b8063313ce5671461028c57806349bd5a5e146102a8578063578cb8f9146102fa57600080fd5b806310d5de531161016957806310d5de531461021857806318160ddd1461024857806323b872dd1461026c57600080fd5b806306fdde0314610190578063095ea7b3146101e857600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b5060408051808201909152600d81527f43727970746f20416476656e740000000000000000000000000000000000000060208201525b6040516101df9190612222565b60405180910390f35b3480156101f457600080fd5b5061020861020336600461218e565b610525565b60405190151581526020016101df565b34801561022457600080fd5b506102086102333660046120ac565b60106020526000908152604090205460ff1681565b34801561025457600080fd5b50662386f26fc100005b6040519081526020016101df565b34801561027857600080fd5b5061020861028736600461211f565b61053c565b34801561029857600080fd5b50604051600981526020016101df565b3480156102b457600080fd5b50600d546102d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101df565b34801561030657600080fd5b5060135461025e565b34801561031b57600080fd5b5061032f61032a3660046121ba565b6105b2565b005b34801561033d57600080fd5b5061032f610685565b34801561035257600080fd5b5061025e6103613660046120ac565b6106cc565b34801561037257600080fd5b5061032f6106fb565b34801561038757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102d5565b3480156103b257600080fd5b5060408051808201909152600481527f414456540000000000000000000000000000000000000000000000000000000060208201526101d2565b3480156103f857600080fd5b5061032f610407366004612160565b6107eb565b34801561041857600080fd5b5061020861042736600461218e565b610925565b34801561043857600080fd5b506102086104473660046120ac565b60126020526000908152604090205460ff1681565b34801561046857600080fd5b5061032f610932565b34801561047d57600080fd5b5061025e600e5481565b34801561049357600080fd5b5061032f610982565b3480156104a857600080fd5b5061025e6104b73660046120e6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b3480156104fb57600080fd5b5061032f61050a3660046121ba565b610f4c565b34801561051b57600080fd5b5061025e600f5481565b600061053233848461101b565b5060015b92915050565b60006105498484846111ce565b6105a884336105a38560405180606001604052806028815260200161248f6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526004602090815260408083203384529091529020549190611751565b61101b565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600d805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bf57600080fd5b476106c9816117a5565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205461053690611844565b60005473ffffffffffffffffffffffffffffffffffffffff16331461077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600d5473ffffffffffffffffffffffffffffffffffffffff83811691161415610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161062f565b61092182826118f5565b5050565b60006105323384846111ce565b600a5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096c57600080fd5b6000610977306106cc565b90506106c981611974565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600d5474010000000000000000000000000000000000000000900460ff1615610a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161062f565b600c80547fffffffffffffffffffffffff000000000000000000000000000000000000000016737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610adb3082662386f26fc1000061101b565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5991906120c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbb57600080fd5b505afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf391906120c9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9891906120c9565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600c541663f305d7194730610ced816106cc565b600080610d0f60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610d9757600080fd5b505af1158015610dab573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dd091906121f4565b5050600d80547fffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffff81167701010001000000000000000000000000000000000000000017909155600c546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b390604401602060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee191906121d7565b50600d54610f069073ffffffffffffffffffffffffffffffffffffffff1660016118f5565b50600d80547fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600d80549115157801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff83166110bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161062f565b73ffffffffffffffffffffffffffffffffffffffff8216611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161062f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161062f565b73ffffffffffffffffffffffffffffffffffffffff8216611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161062f565b600081116113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161062f565b600d547801000000000000000000000000000000000000000000000000900460ff161561174157600060088190556009556113f460005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561144a575060005473ffffffffffffffffffffffffffffffffffffffff838116911614155b156117415760006008556005600955600d5473ffffffffffffffffffffffffffffffffffffffff838116911614801561149e5750600c5473ffffffffffffffffffffffffffffffffffffffff848116911614155b80156114d0575073ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205460ff16155b156114e057600060085560056009555b73ffffffffffffffffffffffffffffffffffffffff831660009081526012602052604090205460ff16801561152f5750600d5473ffffffffffffffffffffffffffffffffffffffff8481169116145b8015611561575073ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205460ff16155b1561167657600e548111156115f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000606482015260840161062f565b600f54611604836106cc565b61160e9083612320565b1115611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d61782077616c6c657420657863656564656400000000000000000000000000604482015260640161062f565b60138054906000611686836123c7565b9190505550601454601354106117415760006116a1306106cc565b600d549091507501000000000000000000000000000000000000000000900460ff161580156116eb5750600d5473ffffffffffffffffffffffffffffffffffffffff858116911614155b80156117135750600d54760100000000000000000000000000000000000000000000900460ff165b1561173f57801561173f5761172781611974565b47801561173d57611737476117a5565b60006013555b505b505b61174c838383611b9e565b505050565b6000818484111561178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f9190612222565b50600061179c84866123b0565b95945050505050565b600a5473ffffffffffffffffffffffffffffffffffffffff166108fc6117cc836002611ba9565b6040518115909202916000818181858888f193505050501580156117f4573d6000803e3d6000fd5b50600b5473ffffffffffffffffffffffffffffffffffffffff166108fc61181c836002611ba9565b6040518115909202916000818181858888f19350505050158015610921573d6000803e3d6000fd5b60006006548211156118d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e7300000000000000000000000000000000000000000000606482015260840161062f565b60006118e2611beb565b90506118ee8382611ba9565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526012602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600d80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106119e9576119e961242f565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015611a6357600080fd5b505afa158015611a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9b91906120c9565b81600181518110611aae57611aae61242f565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600c54611ae1913091168461101b565b600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac94790611b40908590600090869030904290600401612295565b600060405180830381600087803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b5050600d80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b61174c838383611c0e565b60006118ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d46565b6000806000611bf8611d8e565b9092509050611c078282611ba9565b9250505090565b600080600080600080611c2087611dcc565b73ffffffffffffffffffffffffffffffffffffffff8f16600090815260026020526040902054959b50939950919750955093509150611c5f9087611e29565b73ffffffffffffffffffffffffffffffffffffffff808b1660009081526002602052604080822093909355908a1681522054611c9b9086611e6b565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260026020526040902055611cca81611ee4565b611cd48483611f2e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d3391815260200190565b60405180910390a3505050505050505050565b60008183611d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f9190612222565b50600061179c8486612338565b6006546000908190662386f26fc10000611da88282611ba9565b821015611dc357505060065492662386f26fc1000092509050565b90939092509050565b6000806000806000806000806000611de98a600854600954611f52565b9250925092506000611df9611beb565b90506000806000611e0c8e878787611fa7565b919e509c509a509598509396509194505050505091939550919395565b60006118ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611751565b600080611e788385612320565b9050838110156118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161062f565b6000611eee611beb565b90506000611efc8383611ff7565b30600090815260026020526040902054909150611f199082611e6b565b30600090815260026020526040902055505050565b600654611f3b9083611e29565b600655600754611f4b9082611e6b565b6007555050565b6000808080611f6c6064611f668989611ff7565b90611ba9565b90506000611f7f6064611f668a89611ff7565b90506000611f9782611f918b86611e29565b90611e29565b9992985090965090945050505050565b6000808080611fb68886611ff7565b90506000611fc48887611ff7565b90506000611fd28888611ff7565b90506000611fe482611f918686611e29565b939b939a50919850919650505050505050565b60008261200657506000610536565b60006120128385612373565b90508261201f8583612338565b146118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161062f565b6000602082840312156120be57600080fd5b81356118ee8161245e565b6000602082840312156120db57600080fd5b81516118ee8161245e565b600080604083850312156120f957600080fd5b82356121048161245e565b915060208301356121148161245e565b809150509250929050565b60008060006060848603121561213457600080fd5b833561213f8161245e565b9250602084013561214f8161245e565b929592945050506040919091013590565b6000806040838503121561217357600080fd5b823561217e8161245e565b9150602083013561211481612480565b600080604083850312156121a157600080fd5b82356121ac8161245e565b946020939093013593505050565b6000602082840312156121cc57600080fd5b81356118ee81612480565b6000602082840312156121e957600080fd5b81516118ee81612480565b60008060006060848603121561220957600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561224f57858101830151858201604001528201612233565b81811115612261576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122f257845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016122c0565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b6000821982111561233357612333612400565b500190565b60008261236e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123ab576123ab612400565b500290565b6000828210156123c2576123c2612400565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123f9576123f9612400565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146106c957600080fd5b80151581146106c957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122018222cd50e9fd9ff87f984db6d7dcfb6a2ebf3633ffaf3d132f7ab396b0ab48164736f6c63430008070033

Deployed Bytecode Sourcemap

4047:13573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7417:83;;;;;;;;;;-1:-1:-1;7487:5:0;;;;;;;;;;;;;;;;;7417:83;;;;;;;:::i;:::-;;;;;;;;8342:193;;;;;;;;;;-1:-1:-1;8342:193:0;;;;;:::i;:::-;;:::i;:::-;;;4555:14:1;;4548:22;4530:41;;4518:2;4503:18;8342:193:0;4390:187:1;5365:63:0;;;;;;;;;;-1:-1:-1;5365:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7694:95;;;;;;;;;;-1:-1:-1;4447:16:0;7694:95;;;10495:25:1;;;10483:2;10468:18;7694:95:0;10349:177:1;8543:446:0;;;;;;;;;;-1:-1:-1;8543:446:0;;;;;:::i;:::-;;:::i;7603:83::-;;;;;;;;;;-1:-1:-1;7603:83:0;;4855:1;11704:36:1;;11692:2;11677:18;7603:83:0;11562:184:1;4914:28:0;;;;;;;;;;-1:-1:-1;4914:28:0;;;;;;;;;;;3066:42:1;3054:55;;;3036:74;;3024:2;3009:18;4914:28:0;2890:226:1;5769:104:0;;;;;;;;;;-1:-1:-1;5848:17:0;;5769:104;;8997:101;;;;;;;;;;-1:-1:-1;8997:101:0;;;;;:::i;:::-;;:::i;:::-;;15257:194;;;;;;;;;;;;;:::i;7797:138::-;;;;;;;;;;-1:-1:-1;7797:138:0;;;;;:::i;:::-;;:::i;2999:148::-;;;;;;;;;;;;;:::i;2785:79::-;;;;;;;;;;-1:-1:-1;2823:7:0;2850:6;;;2785:79;;7508:87;;;;;;;;;;-1:-1:-1;7580:7:0;;;;;;;;;;;;;;;;;7508:87;;6909:304;;;;;;;;;;-1:-1:-1;6909:304:0;;;;;:::i;:::-;;:::i;7943:199::-;;;;;;;;;;-1:-1:-1;7943:199:0;;;;;:::i;:::-;;:::i;5495:57::-;;;;;;;;;;-1:-1:-1;5495:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15054:195;;;;;;;;;;;;;:::i;5239:35::-;;;;;;;;;;;;;;;;12730:1048;;;;;;;;;;;;;:::i;8150:184::-;;;;;;;;;;-1:-1:-1;8150:184:0;;;;;:::i;:::-;8299:18;;;;8267:7;8299:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8150:184;6790:111;;;;;;;;;;-1:-1:-1;6790:111:0;;;;;:::i;:::-;;:::i;5281:24::-;;;;;;;;;;;;;;;;8342:193;8444:4;8466:39;368:10;8489:7;8498:6;8466:8;:39::i;:::-;-1:-1:-1;8523:4:0;8342:193;;;;;:::o;8543:446::-;8675:4;8692:36;8702:6;8710:9;8721:6;8692:9;:36::i;:::-;8739:220;8762:6;368:10;8810:138;8866:6;8810:138;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;;;368:10;8810:33;;;;;;;;;;:37;:138::i;:::-;8739:8;:220::i;:::-;-1:-1:-1;8977:4:0;8543:446;;;;;:::o;8997:101::-;2912:6;;:22;:6;368:10;2912:22;2904:67;;;;;;;8621:2:1;2904:67:0;;;8603:21:1;;;8640:18;;;8633:30;8699:34;8679:18;;;8672:62;8751:18;;2904:67:0;;;;;;;;;9067:15:::1;:23:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8997:101::o;15257:194::-;15323:15;;;;368:10;15307:31;;;15299:40;;;;;;15379:21;15411:32;15379:21;15411:12;:32::i;:::-;15288:163;15257:194::o;7797:138::-;7910:16;;;7863:7;7910:16;;;:7;:16;;;;;;7890:37;;:19;:37::i;2999:148::-;2912:6;;:22;:6;368:10;2912:22;2904:67;;;;;;;8621:2:1;2904:67:0;;;8603:21:1;;;8640:18;;;8633:30;8699:34;8679:18;;;8672:62;8751:18;;2904:67:0;8419:356:1;2904:67:0;3106:1:::1;3090:6:::0;;3069:40:::1;::::0;::::1;3090:6:::0;;::::1;::::0;3069:40:::1;::::0;3106:1;;3069:40:::1;3137:1;3120:19:::0;;;::::1;::::0;;2999:148::o;6909:304::-;2912:6;;:22;:6;368:10;2912:22;2904:67;;;;;;;8621:2:1;2904:67:0;;;8603:21:1;;;8640:18;;;8633:30;8699:34;8679:18;;;8672:62;8751:18;;2904:67:0;8419:356:1;2904:67:0;7053:13:::1;::::0;::::1;7045:21:::0;;::::1;7053:13:::0;::::1;7045:21;;7023:128;;;::::0;::::1;::::0;;7371:2:1;7023:128:0::1;::::0;::::1;7353:21:1::0;7410:2;7390:18;;;7383:30;7449:34;7429:18;;;7422:62;7520:27;7500:18;;;7493:55;7565:19;;7023:128:0::1;7169:421:1::0;7023:128:0::1;7164:41;7193:4;7199:5;7164:28;:41::i;:::-;6909:304:::0;;:::o;7943:199::-;8048:4;8070:42;368:10;8094:9;8105:6;8070:9;:42::i;15054:195::-;15120:15;;;;368:10;15104:31;;;15096:40;;;;;;15147:23;15173:24;15191:4;15173:9;:24::i;:::-;15147:50;;15208:33;15225:15;15208:16;:33::i;12730:1048::-;2912:6;;:22;:6;368:10;2912:22;2904:67;;;;;;;8621:2:1;2904:67:0;;;8603:21:1;;;8640:18;;;8633:30;8699:34;8679:18;;;8672:62;8751:18;;2904:67:0;8419:356:1;2904:67:0;12792:11:::1;::::0;;;::::1;;;12791:12;12783:48;;;::::0;::::1;::::0;;6663:2:1;12783:48:0::1;::::0;::::1;6645:21:1::0;6702:2;6682:18;;;6675:30;6741:25;6721:18;;;6714:53;6784:18;;12783:48:0::1;6461:347:1::0;12783:48:0::1;12977:15;:34:::0;;;::::1;12913:42;12977:34:::0;;::::1;::::0;;;13022:58:::1;13039:4;12913:42:::0;4447:16:::1;13022:8;:58::i;:::-;13125:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13107:70;;;13186:4;13193:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13107:110;::::0;;::::1;::::0;;;;;;3305:42:1;3374:15;;;13107:110:0::1;::::0;::::1;3356:34:1::0;3426:15;;3406:18;;;3399:43;3268:18;;13107:110:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13091:13;:126:::0;;;::::1;;::::0;;::::1;;::::0;;13228:15:::1;::::0;::::1;:31;13267:21;13312:4;13332:24;13312:4:::0;13332:9:::1;:24::i;:::-;13371:1;13387::::0;13403:7:::1;2823::::0;2850:6;;;;2785:79;13403:7:::1;13228:223;::::0;::::1;::::0;;;;;;;4068:42:1;4137:15;;;13228:223:0::1;::::0;::::1;4119:34:1::0;4169:18;;;4162:34;;;;4212:18;;;4205:34;;;;4255:18;;;4248:34;4319:15;;;4298:19;;;4291:44;13425:15:0::1;4351:19:1::0;;;4344:35;4030:19;;13228:223:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13462:11:0::1;:18:::0;;13524;;;;;;;;13605:15:::1;::::0;13553:111:::1;::::0;;;;13560:13:::1;13605:15:::0;;::::1;13553:111;::::0;::::1;3627:74:1::0;13636:17:0::1;3717:18:1::0;;;3710:34;13560:13:0;;;-1:-1:-1;13553:29:0::1;::::0;3600:18:1;;13553:111:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13712:13:0::1;::::0;13675:58:::1;::::0;13712:13:::1;;::::0;13675:28:::1;:58::i;:::-;-1:-1:-1::0;13744:17:0::1;:24:::0;;;::::1;::::0;::::1;::::0;;12730:1048::o;6790:111::-;2912:6;;:22;:6;368:10;2912:22;2904:67;;;;;;;8621:2:1;2904:67:0;;;8603:21:1;;;8640:18;;;8633:30;8699:34;8679:18;;;8672:62;8751:18;;2904:67:0;8419:356:1;2904:67:0;6861:17:::1;:32:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6790:111::o;9437:369::-;9564:19;;;9556:68;;;;;;;9798:2:1;9556:68:0;;;9780:21:1;9837:2;9817:18;;;9810:30;9876:34;9856:18;;;9849:62;9947:6;9927:18;;;9920:34;9971:19;;9556:68:0;9596:400:1;9556:68:0;9643:21;;;9635:68;;;;;;;6260:2:1;9635:68:0;;;6242:21:1;6299:2;6279:18;;;6272:30;6338:34;6318:18;;;6311:62;6409:4;6389:18;;;6382:32;6431:19;;9635:68:0;6058:398:1;9635:68:0;9714:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9766:32;;10495:25:1;;;9766:32:0;;10468:18:1;9766:32:0;;;;;;;9437:369;;;:::o;9820:2249::-;9942:18;;;9934:68;;;;;;;9392:2:1;9934:68:0;;;9374:21:1;9431:2;9411:18;;;9404:30;9470:34;9450:18;;;9443:62;9541:7;9521:18;;;9514:35;9566:19;;9934:68:0;9190:401:1;9934:68:0;10021:16;;;10013:64;;;;;;;5445:2:1;10013:64:0;;;5427:21:1;5484:2;5464:18;;;5457:30;5523:34;5503:18;;;5496:62;5594:5;5574:18;;;5567:33;5617:19;;10013:64:0;5243:399:1;10013:64:0;10105:1;10096:6;:10;10088:64;;;;;;;8982:2:1;10088:64:0;;;8964:21:1;9021:2;9001:18;;;8994:30;9060:34;9040:18;;;9033:62;9131:11;9111:18;;;9104:39;9160:19;;10088:64:0;8780:405:1;10088:64:0;10167:17;;;;;;;10163:1854;;;10218:1;10206:9;:13;;;10238:9;:13;10278:7;2823;2850:6;;;;2785:79;10278:7;10270:15;;:4;:15;;;;:32;;;;-1:-1:-1;2823:7:0;2850:6;;10289:13;;;2850:6;;10289:13;;10270:32;10266:1740;;;10335:1;10323:9;:13;10367:1;10355:9;:13;10419;;;10413:19;;;10419:13;;10413:19;:76;;;;-1:-1:-1;10473:15:0;;;10457:32;;;10473:15;;10457:32;;10413:76;:127;;;;-1:-1:-1;10515:25:0;;;;;;;:19;:25;;;;;;;;10514:26;10413:127;10387:265;;;10595:1;10583:9;:13;10631:1;10619:9;:13;10387:265;10697:31;;;;;;;:25;:31;;;;;;;;:79;;;;-1:-1:-1;10763:13:0;;;10755:21;;;10763:13;;10755:21;10697:79;:141;;;;-1:-1:-1;10803:35:0;;;;;;;:31;:35;;;;;;;;10802:36;10697:141;10670:573;;;10928:20;;10918:6;:30;;10883:172;;;;;;;7797:2:1;10883:172:0;;;7779:21:1;7836:2;7816:18;;;7809:30;7875:34;7855:18;;;7848:62;7946:23;7926:18;;;7919:51;7987:19;;10883:172:0;7595:417:1;10883:172:0;11140:9;;11123:13;11133:2;11123:9;:13::i;:::-;11114:22;;:6;:22;:::i;:::-;:35;;11079:143;;;;;;;10203:2:1;11079:143:0;;;10185:21:1;10242:2;10222:18;;;10215:30;10281:21;10261:18;;;10254:49;10320:18;;11079:143:0;10001:343:1;11079:143:0;11261:17;:19;;;:17;:19;;;:::i;:::-;;;;;;11323:17;;11302;;:38;11299:691;;11364:28;11395:24;11413:4;11395:9;:24::i;:::-;11447:6;;11364:55;;-1:-1:-1;11447:6:0;;;;;11446:7;:32;;;;-1:-1:-1;11465:13:0;;;11457:21;;;11465:13;;11457:21;;11446:32;:47;;;;-1:-1:-1;11482:11:0;;;;;;;11446:47;11442:525;;;11525:24;;11522:422;;11581:38;11598:20;11581:16;:38::i;:::-;11679:21;11735:22;;11731:186;;11794:35;11807:21;11794:12;:35::i;:::-;11884:1;11864:17;:21;11731:186;11550:394;11522:422;11341:649;11299:691;12029:32;12044:4;12050:2;12054:6;12029:14;:32::i;:::-;9820:2249;;;:::o;1550:224::-;1670:7;1706:12;1698:6;;;;1690:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1730:9:0;1742:5;1746:1;1742;:5;:::i;:::-;1730:17;1550:224;-1:-1:-1;;;;;1550:224:0:o;12568:154::-;12625:15;;;;:39;12650:13;:6;12661:1;12650:10;:13::i;:::-;12625:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12675:15:0;;;;:39;12700:13;:6;12711:1;12700:10;:13::i;:::-;12675:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9106:323;9201:7;9259;;9248;:18;;9226:110;;;;;;;5849:2:1;9226:110:0;;;5831:21:1;5888:2;5868:18;;;5861:30;5927:34;5907:18;;;5900:62;5998:12;5978:18;;;5971:40;6028:19;;9226:110:0;5647:406:1;9226:110:0;9347:19;9369:10;:8;:10::i;:::-;9347:32;-1:-1:-1;9397:24:0;:7;9347:32;9397:11;:24::i;:::-;9390:31;9106:323;-1:-1:-1;;;9106:323:0:o;7221:188::-;7304:31;;;;;;;:25;:31;;;;;;:39;;;;;;;;;;;;;7361:40;;7304:39;;:31;7361:40;;;7221:188;;:::o;12077:483::-;5175:6;:13;;;;;;;;12179:16:::1;::::0;;12193:1:::1;12179:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12179:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12179:16:0::1;12155:40;;12224:4;12206;12211:1;12206:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12250:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12206:7;;12250:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12240:4;12245:1;12240:7;;;;;;;;:::i;:::-;:32;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12315:15:::1;::::0;12283:62:::1;::::0;12300:4:::1;::::0;12315:15:::1;12333:11:::0;12283:8:::1;:62::i;:::-;12356:15;::::0;:196:::1;::::0;;;;:15:::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12437:11;;12356:15:::1;::::0;12479:4;;12506::::1;::::0;12526:15:::1;::::0;12356:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5211:6:0;:14;;;;;;-1:-1:-1;;;;12077:483:0:o;13837:180::-;13965:44;13983:6;13991:9;14002:6;13965:17;:44::i;2036:132::-;2094:7;2121:39;2125:1;2128;2121:39;;;;;;;;;;;;;;;;;:3;:39::i;17188:164::-;17230:7;17251:15;17268;17287:19;:17;:19::i;:::-;17250:56;;-1:-1:-1;17250:56:0;-1:-1:-1;17324:20:0;17250:56;;17324:11;:20::i;:::-;17317:27;;;;17188:164;:::o;14025:610::-;14172:15;14202:23;14240:12;14267:23;14305:12;14332:13;14359:19;14370:7;14359:10;:19::i;:::-;14407:15;;;;;;;:7;:15;;;;;;14157:221;;-1:-1:-1;14157:221:0;;-1:-1:-1;14157:221:0;;-1:-1:-1;14157:221:0;-1:-1:-1;14157:221:0;-1:-1:-1;14157:221:0;-1:-1:-1;14407:28:0;;14157:221;14407:19;:28::i;:::-;14389:15;;;;;;;;:7;:15;;;;;;:46;;;;14467:18;;;;;;;:39;;14490:15;14467:22;:39::i;:::-;14446:18;;;;;;;:7;:18;;;;;:60;14517:16;14527:5;14517:9;:16::i;:::-;14544:23;14556:4;14562;14544:11;:23::i;:::-;14600:9;14583:44;;14592:6;14583:44;;;14611:15;14583:44;;;;10495:25:1;;10483:2;10468:18;;10349:177;14583:44:0;;;;;;;;14146:489;;;;;;14025:610;;;:::o;2176:223::-;2296:7;2331:12;2324:5;2316:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2355:9:0;2367:5;2371:1;2367;:5;:::i;17360:257::-;17458:7;;17411;;;;4447:16;17526:20;17458:7;4447:16;17526:11;:20::i;:::-;17516:7;:30;17512:61;;;-1:-1:-1;;17556:7:0;;;4447:16;;-1:-1:-1;17360:257:0;-1:-1:-1;17360:257:0:o;17512:61::-;17592:7;;17601;;-1:-1:-1;17360:257:0;-1:-1:-1;17360:257:0:o;15459:704::-;15559:7;15581;15603;15625;15647;15669;15705:23;15730:12;15744:13;15761:92;15787:7;15809:9;;15833;;15761:11;:92::i;:::-;15704:149;;;;;;15864:19;15886:10;:8;:10::i;:::-;15864:32;;15908:15;15925:23;15950:12;15966:109;15992:7;16014:4;16033:5;16053:11;15966;:109::i;:::-;15907:168;;-1:-1:-1;15907:168:0;-1:-1:-1;15907:168:0;-1:-1:-1;16126:15:0;;-1:-1:-1;16143:4:0;;-1:-1:-1;16149:5:0;;-1:-1:-1;;;;;15459:704:0;;;;;;;:::o;1406:136::-;1464:7;1491:43;1495:1;1498;1491:43;;;;;;;;;;;;;;;;;:3;:43::i;1219:179::-;1277:7;;1309:5;1313:1;1309;:5;:::i;:::-;1297:17;;1338:1;1333;:6;;1325:46;;;;;;;7015:2:1;1325:46:0;;;6997:21:1;7054:2;7034:18;;;7027:30;7093:29;7073:18;;;7066:57;7140:18;;1325:46:0;6813:351:1;14643:211:0;14696:19;14718:10;:8;:10::i;:::-;14696:32;-1:-1:-1;14739:13:0;14755:22;:5;14696:32;14755:9;:22::i;:::-;14829:4;14813:22;;;;:7;:22;;;;;;14739:38;;-1:-1:-1;14813:33:0;;14739:38;14813:26;:33::i;:::-;14804:4;14788:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14643:211:0:o;14862:147::-;14940:7;;:17;;14952:4;14940:11;:17::i;:::-;14930:7;:27;14981:10;;:20;;14996:4;14981:14;:20::i;:::-;14968:10;:33;-1:-1:-1;;14862:147:0:o;16171:467::-;16339:7;;;;16433:28;16457:3;16433:19;:7;16445:6;16433:11;:19::i;:::-;:23;;:28::i;:::-;16418:43;-1:-1:-1;16472:13:0;16488:29;16513:3;16488:20;:7;16500;16488:11;:20::i;:29::-;16472:45;-1:-1:-1;16528:23:0;16554:28;16472:45;16554:17;:7;16566:4;16554:11;:17::i;:::-;:21;;:28::i;:::-;16528:54;16618:4;;-1:-1:-1;16624:5:0;;-1:-1:-1;16171:467:0;;-1:-1:-1;;;;;16171:467:0:o;16646:534::-;16840:7;;;;16937:24;:7;16949:11;16937;:24::i;:::-;16919:42;-1:-1:-1;16972:12:0;16987:21;:4;16996:11;16987:8;:21::i;:::-;16972:36;-1:-1:-1;17019:13:0;17035:22;:5;17045:11;17035:9;:22::i;:::-;17019:38;-1:-1:-1;17068:23:0;17094:28;17019:38;17094:17;:7;17106:4;17094:11;:17::i;:28::-;17141:7;;;;-1:-1:-1;17167:4:0;;-1:-1:-1;16646:534:0;;-1:-1:-1;;;;;;;16646:534:0:o;1782:246::-;1840:7;1864:6;1860:47;;-1:-1:-1;1894:1:0;1887:8;;1860:47;1917:9;1929:5;1933:1;1929;:5;:::i;:::-;1917:17;-1:-1:-1;1962:1:0;1953:5;1957:1;1917:17;1953:5;:::i;:::-;:10;1945:56;;;;;;;8219:2:1;1945:56:0;;;8201:21:1;8258:2;8238:18;;;8231:30;8297:34;8277:18;;;8270:62;8368:3;8348:18;;;8341:31;8389:19;;1945:56:0;8017:397:1;14:247;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:306::-;2667:6;2675;2683;2736:2;2724:9;2715:7;2711:23;2707:32;2704:52;;;2752:1;2749;2742:12;2704:52;2781:9;2775:16;2765:26;;2831:2;2820:9;2816:18;2810:25;2800:35;;2875:2;2864:9;2860:18;2854:25;2844:35;;2579:306;;;;;:::o;4582:656::-;4694:4;4723:2;4752;4741:9;4734:21;4784:6;4778:13;4827:6;4822:2;4811:9;4807:18;4800:34;4852:1;4862:140;4876:6;4873:1;4870:13;4862:140;;;4971:14;;;4967:23;;4961:30;4937:17;;;4956:2;4933:26;4926:66;4891:10;;4862:140;;;5020:6;5017:1;5014:13;5011:91;;;5090:1;5085:2;5076:6;5065:9;5061:22;5057:31;5050:42;5011:91;-1:-1:-1;5154:2:1;5142:15;5159:66;5138:88;5123:104;;;;5229:2;5119:113;;4582:656;-1:-1:-1;;;4582:656:1:o;10531:1026::-;10793:4;10841:3;10830:9;10826:19;10872:6;10861:9;10854:25;10898:2;10936:6;10931:2;10920:9;10916:18;10909:34;10979:3;10974:2;10963:9;10959:18;10952:31;11003:6;11038;11032:13;11069:6;11061;11054:22;11107:3;11096:9;11092:19;11085:26;;11146:2;11138:6;11134:15;11120:29;;11167:1;11177:218;11191:6;11188:1;11185:13;11177:218;;;11256:13;;11271:42;11252:62;11240:75;;11370:15;;;;11335:12;;;;11213:1;11206:9;11177:218;;;-1:-1:-1;;11463:42:1;11451:55;;;;11446:2;11431:18;;11424:83;-1:-1:-1;;;11538:3:1;11523:19;11516:35;11412:3;10531:1026;-1:-1:-1;;;10531:1026:1:o;11751:128::-;11791:3;11822:1;11818:6;11815:1;11812:13;11809:39;;;11828:18;;:::i;:::-;-1:-1:-1;11864:9:1;;11751:128::o;11884:274::-;11924:1;11950;11940:189;;11985:77;11982:1;11975:88;12086:4;12083:1;12076:15;12114:4;12111:1;12104:15;11940:189;-1:-1:-1;12143:9:1;;11884:274::o;12163:228::-;12203:7;12329:1;12261:66;12257:74;12254:1;12251:81;12246:1;12239:9;12232:17;12228:105;12225:131;;;12336:18;;:::i;:::-;-1:-1:-1;12376:9:1;;12163:228::o;12396:125::-;12436:4;12464:1;12461;12458:8;12455:34;;;12469:18;;:::i;:::-;-1:-1:-1;12506:9:1;;12396:125::o;12526:195::-;12565:3;12596:66;12589:5;12586:77;12583:103;;;12666:18;;:::i;:::-;-1:-1:-1;12713:1:1;12702:13;;12526:195::o;12726:184::-;12778:77;12775:1;12768:88;12875:4;12872:1;12865:15;12899:4;12896:1;12889:15;12915:184;12967:77;12964:1;12957:88;13064:4;13061:1;13054:15;13088:4;13085:1;13078:15;13293:154;13379:42;13372:5;13368:54;13361:5;13358:65;13348:93;;13437:1;13434;13427:12;13452:118;13538:5;13531:13;13524:21;13517:5;13514:32;13504:60;;13560:1;13557;13550:12

Swarm Source

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