ETH Price: $3,503.34 (+2.53%)
Gas: 16 Gwei

Token

FREETHINKERS (FREETHINKERS)
 

Overview

Max Total Supply

1,000,000 FREETHINKERS

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,834.181873549935278925 FREETHINKERS

Value
$0.00
0xccdfae588bf1021af8ab44e3c2278dc93c5ca68f
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:
FREETHINKERS

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2023-07-23
*/

// SPDX-License-Identifier: MIT

/*

Website: https://freethinkers.top/


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++++++
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++
;;;;;;;;;;;;;;;;;;;;;;;;;;+***++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++
;;;;;;;;;;;;;;;;;;;;;;;;+??%*;;?*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++
;;;;;;;;;;;;;;;;;;;;;;;+??%%?+++??+;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+
;;;;;;;;;;;;;;;;;;;;;;;????%%%?*++***+;;;;;:;;*?%?%?+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;**+??%???**+***???*+++*?%??*?%%*;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;*+;*???*??%SS%**??%?%???+*??*?%%?+;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;:+*++*??*?##%S#SS%?%%????*;;**??%%%%?;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;:::++**+++*S##SSS#S%%%%??%%?*??%%%%%?*??+:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;:::::::;+*%%?+%####SS##%?%%*?SSS%SS%??%%?++?%+::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;::::::::::::+?%%??%%SSSSSSS##%%?+?SSSSSS?*%%%?**?%%*::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;::::::::::::::+?%**%%%SSSS#%#SSS%*+%SSSSS%*?%SS%%%?%%%*;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;::::::::::::::::::+*+*SS%S#SS%%##S#S*+%%SSSS%??*S#SSS%?%%S?;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
;::::::::::::::::::::::;?SS??SSSSSS###S%*+%%SSSS%%?S###SSS%%%SS%;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::;%%?%SSSS######S**%%SSSSSS?#####SS%%%%%?%;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::*%%%?SSS#####@S*?%SSSSSS%S#S####SSS%%??S%;::::::::::::::;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::;?S??S###@??%?S??SSSSSS%?##SS####SS%%%%%%?::::::::::::::::;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::+?%S###@?::,;S??SSSS%S?%###SSS##SSS%%%%%S+::::::::::::::::::;;;;;;;;;;;;;;
:::::::::::::::::::::::::::*%%%%S#;,::%#??SSS#%S*%####SSS###SSS%%%S?:::::::::::::::::::;;;;;;;;;;;;;
::::::::::::::::::::::::::;?*??%%%S%;*S#%*%SSS%%*S#####SSS####SS%%%%+::::::::::::::::::::;;;;;;;;;;;
::::::::::::::::::::::::::***S######@#S#%+?SS%???#############SSS%%??:::::::::::::::::::::::;;;;;;;;
:::::::::::::::::::::::::+*+%##S#####S##?;?SS%*?%######S#SSSSSSSSS%?%*::::::::::::::::::::::::;;;;;;
:::::::::::::::::::::::::+*?S##@@#%S###S*;?SS%%?S@#####SSSSS%S###S%?%%;::::::::::::::::::::::::;;;;;
::::::::::::::::::::::::;;?%%#S*+;,+S#S%++?SS%%?S#####SS##S######S%?%%?::::::::::::::::::::::::::;;;
::::::::::::::::::::::::;+?%%%;,,::,+%#?;+%#S%?%##SSSSSS########SS%??%%+::::::::::::::::::::::::::;;
:::::::::::::::::::::::::**S%%*,:::,;S#?;+%S%??SSSSSSSS#########SS%??%%%;:::::::::::::::::::::::::::
:::::::::::::::::::::::::+?%%?%*:::,:S#+*+%S%?%S####SSSS#SSS#####S%??%%%*:::::::::::::::::::::::::::
::::::::::::::::::::::::::+????%?::,;SS+*+S%??S%SS####SS#SSSS####SS%??%%?:::::::::::::::::::::::::::
:::::::::::::::::::::::::::***%?S?,,+S%+**S?*%#SSSSSS#SS#SSS###S##SS%??%?;::::::::::::::::::::::::::
::::::::::::::::::::::::::,;**?%?S?,*S*+??S**S#SSSS######SSSS#SS##SSS??%%+::::::::::::::::::::::::::
::::::::::::::::::::::::::::*?*%%?S???;*??%*?#*:*S%S#####SSSSSSS##SSS?*?%?::::::::::::::::::::::::::
:::::::::::::::::::::::::::,:???S%%S%+;%?%%*?S;,:?SS#####SS#SSSSSSSSS%*?%%::::::::::::::::::::::::::
::::::::::::::::::::::::::::,+?*%#S*+*%S%%??%?,,,:%SS####SS###SSS###S%????;:::::::::::::::::::::::::
::::::::::::::::::::::::::::,:??%S+:+%SS%%?%%;,,,,:%##########S##SSSSS????*:::::::::::::::::::::::::
:::::::::::::::::::::::::::::,;%%+;+%SSSSS?S*,,,,,,:*S###@@##S##S#SSSS%???%:::::::::::::::::::::::::
::::::::::::::::::::::::,,:,,,,+*;*?SSS%SS?%:,,,,,,,,:?#@######SS?*%S%%???%+::::::::::::::::::::::::
:::::::::::::::::::::::,,,,,,,;*;*?%SS%%SS%?:;;;;;;;:::+######S%***%%%%???%*::::::::::::::::::::::::
:::::::::::::::::::::,,,,,,,:;+;+?%SSSSSSS##S###SSSS%%SSSSSSSS%*+%%SSS%*??%?::::::::::::::::::::::::
::::::::::::::::::::,,,,,,,:;++*?%SSSSS###@###S%%??????%%???%%??SSSSS%?*?**%;:::::::::::::::::::::::
::::::::::::::::::,,:,,,,:++++*%SSSSSS#SS###S%?*++++++*?%?**?%S##SSSSS%??*+?;:::::::::::::::::::::::
::::::::::::::::,:,,,,,,:+++**%SSSSSSSSS###SSSSSSSS%%%SSSSSSS###SSSSSSS%***?;:::::::::::::::::::::::
::::::::::::::::,,,,,,,,+++?*%SSSSSSSS###############SSSS####SSSSSS%%%S?*+**::::::::::::::::::::::::
:::::::::::::::,,,,,,,,;*+?%%SSSSSSSS#####SSSSSSS######SSSSSSSS#SS%%%S%?**??::::::::::::::::::::::::
:::::::::::::,,,,,,,,,,+**%SSS%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSS###SSSSS??????::::::::::::::::::::::::
::::::::::::,,,,,,,,,,,+?%SS%?*?%SSSSSSSSSSSSSSSSS%%%%%SSSSSS######SS%%%%??*::::::::::::::::::::::::
::::::::::::,,,,,,,,,,,+%SS%***?%SSSSSSSSSSSSSSSSSSSSS%SSSSS#######SSSSS?***::::::::::::::::::::::::
:::::::::::,,,,,,,,,,,,+?S#%???%%SSSSSSSSSSSSSSSSSSSSSSSSSSSS######SSSSS?+**,,,,,,::::::::::::::::::
:::::::::::,,,,,,,,,,,,;%SS+???%%SSSSS#####SSSSSSSSSSSSS####SS#######SS%%?*+;;;;:;::::::::::::::::::
::::::::::,,,,,,,,,,,,,;%SS,+%?%S%%SSS%SS####SSSSSSSSSS###@@##########SS%%?%SSS%%%*:::::::::::::::::
::::::::,,,,,,,,,,,,,,,:%##?:?%%S%%SSSS%?%##@###SSSS####@######@@##SSSSS%%%SSSS%%%%+,:::::::::::::::
::::::,,,,,,,,,,,,,,,,,,*#@@S?%%%%%S%S##SS%S##########@######S####SSSS%SSSS%%%%%%%%?::::::::::::::::
:::::,,,,,,,,,,,,,,,,,,,:?S###S%%%%%SSSSSSS%%S#SS##S####SS%%%%%%?%%%%%%%%%%%%%%%??%%;,::::::::::::::
::::,,,,,,,,,,,,,,,,,,,,,::;*??+%??%%SSSSSSSS%#####SSSSS%%%%%?%SS%????%????????????%;,::::::::::::::
::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,;*??%%SSSSSSS%S#*+?S%%%%%%%?%%SSSS%%%%%???%%?%?????%+,,:::::::::::::
:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+?%%%SSSSSSSS#S::S%?%SS%??SSSSSSSS?%????%%%?%%???%+,,,,:::::::::::
::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+%%%%%SSSSS%##%,%S%%S#SSSS%SSSSSS%%%%???%%S%%%?*%+,,,,,::::::::::
:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+??%%%%SSSSS##+*#SSS#SSSS%SSS%S%%%#S%%%%%%S%?**%;,,,,,,,,:::::::
:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+??%%%%SSSS##S*#SSSSSSSSS%SSSSSS%SS%?%%?%S%?%*?+,,,,,,,,,::::::
:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;?%%S%SSS%S####S%SSSS%%%%SS#SS%%%SS%%%?%SSS%*?;,,,,,,,,,,,::::
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:*?%S%SSSSS#@##SSSSSS%%%S%SSSS%%SSS%%?%SS%%??+,,,,,,,,,,,,,,:
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:?%%S%SSSS##@##SSSSSSSSSSS#S#SSSSS%S%%S%%%%?+,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:???SS%SS##@@#SSSSSSSSSSS##SSSSSSSSSS%S%%%??,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:*%?%SSSS##@@#SSSSSSSSSSS#S##SSSSSSSS%%%%?+,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+%%%SSSS##@@#%%SS%S##SSSSS##SSSSSSS%%%%?+,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;?%SSSSS#@@@S%%S%S######SSSS%S%SSS%%%%?*:,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:?SSSSSS@@@@S%%%SS#######SSS%%SSS%%%%%*:,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:?%%SSS#@@@#%%%SSSSS###SSSSS%%%%%S?%%*;,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;%%SSSS#@@@#%%S#S%S%%SSSS%%%?%%%S%%%**,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+%SSSS#@@@#%?%#SSS%%%SSS%%%%%SS%%%%**:,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:?%SSSS@@@#S%SSSS%%SSSSSSS%%%%%%%%%?**,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*%SSSS###@S%SS%SS#SS%%%#SS%?%%%%%%???:,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;?%SSS###@#SSS%SSSSS%??%%%%%%%%%%????:,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:?%SSS###@#SSS%%SSSS%%%?%%%%%%%%%%%%?:,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;%%SSS####S%S%%%%%%%%%SS%%%%%%%?%%%%%:,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+%%SSS#@##S%%%%##SS%%%%SSS%%%%%?%%???+,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*%%%S#@@#S%%%%%%SSSSS%%%%S%%%???%???%%:,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:??S%##@#S%?%%%??%%%SS%%S%?%%S%?*??**?%,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:*?%%S##SSS%????%%???%??%%???????**?*+*?,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+%%%%###S%%%%???%%%S%???????**??****??+*+,,,,,,,,::::
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.*%%SS##SS%%%%??????%%S%???*?**?**?????%***::::::::::::
,,,,,,,,,,,,,,,,.,............................+SS#SS%%%%%%%?????S%SS%??????%%***?*???+*?+,::::::::::

*/

pragma solidity ^0.8.0 <0.9.0;

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
    external
    payable
    returns (
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );
}

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

contract FREETHINKERS is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private _swapping;
    uint256 public swapTokensAtAmount;

    address public MarketingAddress;

    uint256 public tradingActiveBlock = 0; 
    uint256 public deadBlocks = 0;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public sniperManagementEnabled = true;

    uint256 public buyFee;

    uint256 public sellFee;

    mapping (address => bool) public isExcludedFromFees;
    mapping (address => bool) public isExcludedFromLimits;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) public isSniper;

    constructor() ERC20("FREETHINKERS", "FREETHINKERS") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _excludeFromLimits(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        address tokenA = address(this);
        address tokenB = _uniswapV2Router.WETH();
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        uniswapV2Pair = address(uint160(uint(keccak256(abi.encodePacked(
            hex'ff',
            _uniswapV2Router.factory(),
            keccak256(abi.encodePacked(token0, token1)),
            hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
        )))));

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1000000  * 1e18;

        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply *  1 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 100; 

        buyFee = 0;
        sellFee = 0;

        _excludeFromLimits(newOwner, true);
        _excludeFromLimits(address(this), true);

        MarketingAddress = address(0xb9A248C3fb1f8aB41F5E55Fb1a1A693Be6211b53);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function createPair() external onlyOwner {
        IDexFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
    }

    function updateMaxBuyAmount(uint256 newAmount) external onlyOwner {
        require(newAmount * 1e18 >= (totalSupply() * 1 / 100), "FREETHINKERS: new max buy amount less than 1% of total supply");
        maxBuyAmount = newAmount * 1e18;
    }

    function updateMaxSellAmount(uint256 newAmount) external onlyOwner {
        require(newAmount * 1e18 >= (totalSupply() * 1 / 100), "FREETHINKERS: new max sell amount less than 1% of total supply");
        maxSellAmount = newAmount * 1e18;
    }

    function updateMaxWalletAmount(uint256 newAmount) external onlyOwner {
        require(newAmount * 1e18 >= (totalSupply() * 2 / 100), "FREETHINKERS: new max wallet amount less than 2% of total supply");
        maxWalletAmount = newAmount * 1e18;
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount * 1e18 >= totalSupply() * 1 / 100000, "FREETHINKERS: new swap amount less than 0.001% of total supply");
        require(newAmount <= totalSupply() * 1 / 1000, "FREETHINKERS: new Swap amount exceeds 0.1% of total supply");
        swapTokensAtAmount = newAmount * 1e18;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function _excludeFromLimits(address account, bool isExcluded) private {
        isExcludedFromLimits[account] = isExcluded;
    }

    function excludeFromLimits(address account, bool isExcluded) external onlyOwner {
        if (!isExcluded) {
            require(account != uniswapV2Pair, "FREETHINKERS: account to be exscluded is pair address");
        }
        _excludeFromLimits(account, isExcluded);
    }

    function updateBuyFee(uint256 newBuyFee) external onlyOwner {
        require(newBuyFee <= 5, "FREETHINKERS: new buy fee exceeds 5%");
        buyFee = newBuyFee;
    }

    function updateSellFee(uint256 newSellFee) external onlyOwner {
        if (sellFee > 5) {
            require(newSellFee <= sellFee, "FREETHINKERS: new sell fee exceeds current sell fee");
        } else {
            require(sellFee <= 5, "FREETHINKERS: new sell fee exceeds 5%");
        }
        sellFee = newSellFee;
    }

    function excludeFromFees(address account, bool isExcluded) public onlyOwner {
        isExcludedFromFees[account] = isExcluded;
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(amount > 0, "FREETHINKERS: amount is zero");
        require(!isSniper[from], "FREETHINKERS: sender marked as sniper");
        require(!isSniper[to], "FREETHINKERS: recipient marked as sniper");
 
        if (limitsInEffect) {
            if (from != owner() && to != owner() && !isExcludedFromFees[from] && !isExcludedFromFees[to]) {
                require(tradingActive, "FREETHINKERS: trading is not active");
                if (tradingActiveBlock > 0 && block.number < (tradingActiveBlock + deadBlocks) ) {
                    isSniper[to] = true;
                }
                // buy
                if (automatedMarketMakerPairs[from] && !isExcludedFromLimits[to]) {
                    require(amount <= maxBuyAmount, "FREETHINKERS: transfer amount exceeds max buy amount");
                    require(amount + balanceOf(to) <= maxWalletAmount, "FREETHINKERS: balance exceeds max wallet amount");
                }
                // sell
                else if (automatedMarketMakerPairs[to] && !isExcludedFromLimits[from]) {
                    require(amount <= maxSellAmount, "FREETHINKERS: transfer amount exceeds max sell amount");
                }
                else if (!isExcludedFromLimits[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "FREETHINKERS: balance exceeds max wallet amount");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if(canSwap && swapEnabled && !_swapping && !automatedMarketMakerPairs[from] && !isExcludedFromFees[from] && !isExcludedFromFees[to]) {
            _swapping = true;
            _swapBack();
            _swapping = false;
        }

        uint256 fee = 0;
        uint256 penaltyAmount = 0;
        if(!isExcludedFromFees[from] && !isExcludedFromFees[to]){
            // sniper penalty
            if (tradingActiveBlock > 0 && block.number < (tradingActiveBlock + deadBlocks) ) {
                penaltyAmount = amount * 98 / 100;
                super._transfer(from, MarketingAddress, penaltyAmount);
            }
            // sell
            else if (automatedMarketMakerPairs[to] && sellFee > 0){
                fee = amount * sellFee / 100;
            }
            // buy
            else if(automatedMarketMakerPairs[from] && buyFee > 0) {
                fee = amount * buyFee / 100;
            }
            if(fee > 0){
                super._transfer(from, address(this), fee);
            }
            amount -= fee + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        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 setAutomatedMarketMakerPair(address pair, bool isAMM) external onlyOwner {
        if(!isAMM) {
            require(pair != uniswapV2Pair, "FREETHINKERS: automated market maker pair is uniswap V2 pair");
        }
        _setAutomatedMarketMakerPair(pair, isAMM);
    }

    function _setAutomatedMarketMakerPair(address pair, bool isAMM) private {
        automatedMarketMakerPairs[pair] = isAMM;
        _excludeFromLimits(pair, isAMM);
    }

    // once enabled, can never be turned off
    function enableTrading(bool _status, uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "FREETHINKERS: trading is already active");
        require(_deadBlocks <= 5, "FREETHINKERS: deadblocks amount exceeds 5");
        tradingActive = _status;
        swapEnabled = true;

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function setMarketingAddress(address newMarketingAddress) external onlyOwner {
        require(newMarketingAddress != address(0), "FREETHINKERS: new marketing address is the zero address");
        MarketingAddress = payable(newMarketingAddress);
    }

    function manageSniper(address sniperAddress, bool status) external onlyOwner {
        require(sniperManagementEnabled, "FREETHINKERS: sniper management permanently disabled");
        isSniper[sniperAddress] = status;
    }

    function manageSnipers(address[] calldata addresses, bool status) external onlyOwner {
        require(sniperManagementEnabled, "FREETHINKERS: snipers management permanently disabled");
        for (uint256 i; i < addresses.length; ++i) {
            isSniper[addresses[i]] = status;
        }
    }

    // permanently disable sniper management
    function disableSniperManagement() external onlyOwner {
        sniperManagementEnabled = false;
    }

    function _swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }
        if (contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }
        _swapTokensForEth(contractBalance);
        bool success;
        (success,) = address(MarketingAddress).call{value: address(this).balance}("");
    }

    function transferForeignToken(address token, address to) external onlyOwner returns (bool) {
        require(token != address(0), "FREETHINKERS: token is the zero address");
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        return IERC20(token).transfer(to, _contractBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

}

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":"MarketingAddress","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":"","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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSniperManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sniperAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"isAMM","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperManagementEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c819055600d55600e805463ffffffff191663010000011790553480156200002e57600080fd5b50604080518082018252600c8082526b465245455448494e4b45525360a01b60208084018290528451808601909552918452908301529060036200007383826200076d565b5060046200008282826200076d565b5050506000620000976200046860201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003760833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d600081905260126020527f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec2805460ff191660011790553390806001600160a01b03166080816001600160a01b03168152505060003090506000826001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a7919062000839565b9050600080826001600160a01b0316846001600160a01b031610620001ce578284620001d1565b83835b91509150846001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a919062000839565b6040516001600160601b0319606085811b8216602084015284901b16603482015260480160405160208183030381529060405280519060200120604051602001620002ea9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b6001600160601b031916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291815281516020928301206001600160a01b031660a08190526000908152601383528181208054600160ff1991821681179092556012909452919020805490921617905569d3c21bcecceda100000060646200035582600162000881565b620003619190620008a1565b60065560646200037382600162000881565b6200037f9190620008a1565b60075560646200039182600262000881565b6200039d9190620008a1565b6008556064620003af82600162000881565b620003bb9190620008a1565b600a556000600f81905560108190556001600160a01b0388168152601260205260409020805460ff19166001179055306000908152601260205260409020805460ff19166001179055600b80546001600160a01b03191673b9a248c3fb1f8ab41f5e55fb1a1a693be6211b53179055620004378760016200046c565b620004443060016200046c565b620004508782620004e6565b6200045b87620005cb565b50505050505050620008da565b3390565b6005546001600160a01b03163314620004bb5760405162461bcd60e51b815260206004820181905260248201526000805160206200374083398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b0382166200053e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004b2565b8060026000828254620005529190620008c4565b90915550506001600160a01b0382166000908152602081905260408120805483929062000581908490620008c4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006165760405162461bcd60e51b81526020600482018190526024820152600080516020620037408339815191526044820152606401620004b2565b6001600160a01b0381166200067d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004b2565b6005546040516001600160a01b038084169216906000805160206200376083398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006f357607f821691505b6020821081036200071457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200076857600081815260208120601f850160051c81016020861015620007435750805b601f850160051c820191505b8181101562000764578281556001016200074f565b5050505b505050565b81516001600160401b03811115620007895762000789620006c8565b620007a1816200079a8454620006de565b846200071a565b602080601f831160018114620007d95760008415620007c05750858301515b600019600386901b1c1916600185901b17855562000764565b600085815260208120601f198616915b828110156200080a57888601518255948401946001909101908401620007e9565b5085821015620008295787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200084c57600080fd5b81516001600160a01b03811681146200086457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200089b576200089b6200086b565b92915050565b600082620008bf57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200089b576200089b6200086b565b60805160a051612e0f6200093160003960008181610506015281816112e001526116a3015260008181610391015281816113f20152818161148301528181612824015281816128dd01526129190152612e0f6000f3fe6080604052600436106102e85760003560e01c80638366e79a11610190578063c0a904a2116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b1461092e578063f5648a4f1461094e578063fabb0b4f14610963578063faf216e31461097957600080fd5b8063e2f45605146108e2578063ed494189146108f8578063ee40166e1461091857600080fd5b8063c0a904a2146107fb578063c18bc1951461081b578063d257b34f1461083b578063dbf5b9161461085b578063dc3f0d0f1461087c578063dd62ed3e1461089c57600080fd5b80639e78fb4f11610149578063aa4bde2811610123578063aa4bde2814610776578063b62496f51461078c578063bbc0c742146107bc578063c0246668146107db57600080fd5b80639e78fb4f14610721578063a457c2d714610736578063a9059cbb1461075657600080fd5b80638366e79a1461067857806388e765ff146106985780638da5cb5b146106ae578063906e9dd0146106cc57806395d89b41146106ec5780639a7a23d61461070157600080fd5b8063467abe0a1161024f5780635e83ae761161020857806370a08231116101e257806370a08231146105f8578063715018a61461062e578063751039fc14610643578063819d38d21461065857600080fd5b80635e83ae76146105a257806366d602ae146105c25780636ddd1713146105d857600080fd5b8063467abe0a146104be57806347062402146104de57806349bd5a5e146104f45780634a62bb65146105285780634fbee193146105425780635cce86cd1461057257600080fd5b806323b872dd116102a157806323b872dd1461040c5780632b14ca561461042c5780632be32b6114610442578063313ce567146104625780633936e8b91461047e578063395093511461049e57600080fd5b806306fdde03146102f4578063095ea7b31461031f5780630f3a325f1461034f5780631694505e1461037f57806318160ddd146103cb5780631d933a4a146103ea57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030961098e565b604051610316919061298d565b60405180910390f35b34801561032b57600080fd5b5061033f61033a3660046129f0565b610a20565b6040519015158152602001610316565b34801561035b57600080fd5b5061033f61036a366004612a1c565b60146020526000908152604090205460ff1681565b34801561038b57600080fd5b506103b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610316565b3480156103d757600080fd5b506002545b604051908152602001610316565b3480156103f657600080fd5b5061040a610405366004612a40565b610a37565b005b34801561041857600080fd5b5061033f610427366004612a59565b610b49565b34801561043857600080fd5b506103dc60105481565b34801561044e57600080fd5b5061040a61045d366004612a40565b610bf3565b34801561046e57600080fd5b5060405160128152602001610316565b34801561048a57600080fd5b50600b546103b3906001600160a01b031681565b3480156104aa57600080fd5b5061033f6104b93660046129f0565b610cdb565b3480156104ca57600080fd5b5061040a6104d9366004612a40565b610d17565b3480156104ea57600080fd5b506103dc600f5481565b34801561050057600080fd5b506103b37f000000000000000000000000000000000000000000000000000000000000000081565b34801561053457600080fd5b50600e5461033f9060ff1681565b34801561054e57600080fd5b5061033f61055d366004612a1c565b60116020526000908152604090205460ff1681565b34801561057e57600080fd5b5061033f61058d366004612a1c565b60126020526000908152604090205460ff1681565b3480156105ae57600080fd5b5061040a6105bd366004612aa8565b610da3565b3480156105ce57600080fd5b506103dc60075481565b3480156105e457600080fd5b50600e5461033f9062010000900460ff1681565b34801561060457600080fd5b506103dc610613366004612a1c565b6001600160a01b031660009081526020819052604090205490565b34801561063a57600080fd5b5061040a610ee6565b34801561064f57600080fd5b5061040a610f5a565b34801561066457600080fd5b5061040a610673366004612ac6565b610f90565b34801561068457600080fd5b5061033f610693366004612aff565b61105b565b3480156106a457600080fd5b506103dc60065481565b3480156106ba57600080fd5b506005546001600160a01b03166103b3565b3480156106d857600080fd5b5061040a6106e7366004612a1c565b6111d8565b3480156106f857600080fd5b506103096112a0565b34801561070d57600080fd5b5061040a61071c366004612ac6565b6112af565b34801561072d57600080fd5b5061040a6113c6565b34801561074257600080fd5b5061033f6107513660046129f0565b611577565b34801561076257600080fd5b5061033f6107713660046129f0565b611610565b34801561078257600080fd5b506103dc60085481565b34801561079857600080fd5b5061033f6107a7366004612a1c565b60136020526000908152604090205460ff1681565b3480156107c857600080fd5b50600e5461033f90610100900460ff1681565b3480156107e757600080fd5b5061040a6107f6366004612ac6565b61161d565b34801561080757600080fd5b5061040a610816366004612ac6565b611672565b34801561082757600080fd5b5061040a610836366004612a40565b61176a565b34801561084757600080fd5b5061040a610856366004612a40565b611854565b34801561086757600080fd5b50600e5461033f906301000000900460ff1681565b34801561088857600080fd5b5061040a610897366004612a40565b6119d4565b3480156108a857600080fd5b506103dc6108b7366004612aff565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108ee57600080fd5b506103dc600a5481565b34801561090457600080fd5b5061040a610913366004612b2d565b611abc565b34801561092457600080fd5b506103dc600c5481565b34801561093a57600080fd5b5061040a610949366004612a1c565b611bd2565b34801561095a57600080fd5b5061040a611cbd565b34801561096f57600080fd5b506103dc600d5481565b34801561098557600080fd5b5061040a611d29565b60606003805461099d90612bb3565b80601f01602080910402602001604051908101604052809291908181526020018280546109c990612bb3565b8015610a165780601f106109eb57610100808354040283529160200191610a16565b820191906000526020600020905b8154815290600101906020018083116109f957829003601f168201915b5050505050905090565b6000610a2d338484611d62565b5060015b92915050565b6005546001600160a01b03163314610a6a5760405162461bcd60e51b8152600401610a6190612bed565b60405180910390fd5b60056010541115610ae857601054811115610ae35760405162461bcd60e51b815260206004820152603360248201527f465245455448494e4b4552533a206e65772073656c6c2066656520657863656560448201527264732063757272656e742073656c6c2066656560681b6064820152608401610a61565b601055565b60056010541115610ae35760405162461bcd60e51b815260206004820152602560248201527f465245455448494e4b4552533a206e65772073656c6c20666565206578636565604482015264647320352560d81b6064820152608401610a61565b6000610b56848484611e86565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bdb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a61565b610be88533858403611d62565b506001949350505050565b6005546001600160a01b03163314610c1d5760405162461bcd60e51b8152600401610a6190612bed565b6064610c2860025490565b610c33906001612c38565b610c3d9190612c4f565b610c4f82670de0b6b3a7640000612c38565b1015610cc35760405162461bcd60e51b815260206004820152603d60248201527f465245455448494e4b4552533a206e6577206d61782062757920616d6f756e7460448201527f206c657373207468616e203125206f6620746f74616c20737570706c790000006064820152608401610a61565b610cd581670de0b6b3a7640000612c38565b60065550565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a2d918590610d12908690612c71565b611d62565b6005546001600160a01b03163314610d415760405162461bcd60e51b8152600401610a6190612bed565b6005811115610d9e5760405162461bcd60e51b8152602060048201526024808201527f465245455448494e4b4552533a206e65772062757920666565206578636565646044820152637320352560e01b6064820152608401610a61565b600f55565b6005546001600160a01b03163314610dcd5760405162461bcd60e51b8152600401610a6190612bed565b600e54610100900460ff1615610e355760405162461bcd60e51b815260206004820152602760248201527f465245455448494e4b4552533a2074726164696e6720697320616c72656164796044820152662061637469766560c81b6064820152608401610a61565b6005811115610e985760405162461bcd60e51b815260206004820152602960248201527f465245455448494e4b4552533a2064656164626c6f636b7320616d6f756e742060448201526865786365656473203560b81b6064820152608401610a61565b600e80546201000062ffff0019909116610100851515810262ff0000191691909117919091179182905560ff9104168015610ed35750600c54155b15610ee25743600c55600d8190555b5050565b6005546001600160a01b03163314610f105760405162461bcd60e51b8152600401610a6190612bed565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f845760405162461bcd60e51b8152600401610a6190612bed565b600e805460ff19169055565b6005546001600160a01b03163314610fba5760405162461bcd60e51b8152600401610a6190612bed565b600e546301000000900460ff166110305760405162461bcd60e51b815260206004820152603460248201527f465245455448494e4b4552533a20736e69706572206d616e6167656d656e74206044820152731c195c9b585b995b9d1b1e48191a5cd8589b195960621b6064820152608401610a61565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110885760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b0383166110ee5760405162461bcd60e51b815260206004820152602760248201527f465245455448494e4b4552533a20746f6b656e20697320746865207a65726f206044820152666164647265737360c81b6064820152608401610a61565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111599190612c84565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612c9d565b949350505050565b6005546001600160a01b031633146112025760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b03811661127e5760405162461bcd60e51b815260206004820152603760248201527f465245455448494e4b4552533a206e6577206d61726b6574696e67206164647260448201527f65737320697320746865207a65726f20616464726573730000000000000000006064820152608401610a61565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461099d90612bb3565b6005546001600160a01b031633146112d95760405162461bcd60e51b8152600401610a6190612bed565b80611385577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036113855760405162461bcd60e51b815260206004820152603c60248201527f465245455448494e4b4552533a206175746f6d61746564206d61726b6574206d60448201527f616b6572207061697220697320756e69737761702056322070616972000000006064820152608401610a61565b6001600160a01b0382166000908152601360209081526040808320805485151560ff1991821681179092556012909352922080549091169091179055610ee2565b6005546001600160a01b031633146113f05760405162461bcd60e51b8152600401610a6190612bed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190612cba565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190612cba565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190612cba565b50565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a61565b6116063385858403611d62565b5060019392505050565b6000610a2d338484611e86565b6005546001600160a01b031633146116475760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461169c5760405162461bcd60e51b8152600401610a6190612bed565b80611740577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036117405760405162461bcd60e51b815260206004820152603560248201527f465245455448494e4b4552533a206163636f756e7420746f20626520657873636044820152746c756465642069732070616972206164647265737360581b6064820152608401610a61565b6001600160a01b0382166000908152601260205260409020805482151560ff199091161790555050565b6005546001600160a01b031633146117945760405162461bcd60e51b8152600401610a6190612bed565b606461179f60025490565b6117aa906002612c38565b6117b49190612c4f565b6117c682670de0b6b3a7640000612c38565b101561183c576040805162461bcd60e51b81526020600482015260248101919091527f465245455448494e4b4552533a206e6577206d61782077616c6c657420616d6f60448201527f756e74206c657373207468616e203225206f6620746f74616c20737570706c796064820152608401610a61565b61184e81670de0b6b3a7640000612c38565b60085550565b6005546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610a6190612bed565b620186a061188b60025490565b611896906001612c38565b6118a09190612c4f565b6118b282670de0b6b3a7640000612c38565b10156119265760405162461bcd60e51b815260206004820152603e60248201527f465245455448494e4b4552533a206e6577207377617020616d6f756e74206c6560448201527f7373207468616e20302e30303125206f6620746f74616c20737570706c7900006064820152608401610a61565b6103e861193260025490565b61193d906001612c38565b6119479190612c4f565b8111156119bc5760405162461bcd60e51b815260206004820152603a60248201527f465245455448494e4b4552533a206e6577205377617020616d6f756e7420657860448201527f636565647320302e3125206f6620746f74616c20737570706c790000000000006064820152608401610a61565b6119ce81670de0b6b3a7640000612c38565b600a5550565b6005546001600160a01b031633146119fe5760405162461bcd60e51b8152600401610a6190612bed565b6064611a0960025490565b611a14906001612c38565b611a1e9190612c4f565b611a3082670de0b6b3a7640000612c38565b1015611aa45760405162461bcd60e51b815260206004820152603e60248201527f465245455448494e4b4552533a206e6577206d61782073656c6c20616d6f756e60448201527f74206c657373207468616e203125206f6620746f74616c20737570706c7900006064820152608401610a61565b611ab681670de0b6b3a7640000612c38565b60075550565b6005546001600160a01b03163314611ae65760405162461bcd60e51b8152600401610a6190612bed565b600e546301000000900460ff16611b5d5760405162461bcd60e51b815260206004820152603560248201527f465245455448494e4b4552533a20736e6970657273206d616e6167656d656e74604482015274081c195c9b585b995b9d1b1e48191a5cd8589b1959605a1b6064820152608401610a61565b60005b82811015611bcc578160146000868685818110611b7f57611b7f612cd7565b9050602002016020810190611b949190612a1c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611bc581612ced565b9050611b60565b50505050565b6005546001600160a01b03163314611bfc5760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b038116611c615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a61565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611ce75760405162461bcd60e51b8152600401610a6190612bed565b604051600090339047908381818185875af1925050503d8060008114611bcc576040519150601f19603f3d011682016040523d82523d6000602084013e611bcc565b6005546001600160a01b03163314611d535760405162461bcd60e51b8152600401610a6190612bed565b600e805463ff00000019169055565b6001600160a01b038316611dc45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a61565b6001600160a01b038216611e255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a61565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111611ed65760405162461bcd60e51b815260206004820152601c60248201527f465245455448494e4b4552533a20616d6f756e74206973207a65726f000000006044820152606401610a61565b6001600160a01b03831660009081526014602052604090205460ff1615611f4d5760405162461bcd60e51b815260206004820152602560248201527f465245455448494e4b4552533a2073656e646572206d61726b656420617320736044820152643734b832b960d91b6064820152608401610a61565b6001600160a01b03821660009081526014602052604090205460ff1615611fc75760405162461bcd60e51b815260206004820152602860248201527f465245455448494e4b4552533a20726563697069656e74206d61726b65642061604482015267399039b734b832b960c11b6064820152608401610a61565b600e5460ff1615612311576005546001600160a01b03848116911614801590611ffe57506005546001600160a01b03838116911614155b801561202357506001600160a01b03831660009081526011602052604090205460ff16155b801561204857506001600160a01b03821660009081526011602052604090205460ff16155b1561231157600e54610100900460ff166120b05760405162461bcd60e51b815260206004820152602360248201527f465245455448494e4b4552533a2074726164696e67206973206e6f742061637460448201526269766560e81b6064820152608401610a61565b6000600c541180156120d05750600d54600c546120cd9190612c71565b43105b156120f9576001600160a01b0382166000908152601460205260409020805460ff191660011790555b6001600160a01b03831660009081526013602052604090205460ff16801561213a57506001600160a01b03821660009081526012602052604090205460ff16155b156121f7576006548111156121ae5760405162461bcd60e51b815260206004820152603460248201527f465245455448494e4b4552533a207472616e7366657220616d6f756e7420657860448201527318d959591cc81b585e08189d5e48185b5bdd5b9d60621b6064820152608401610a61565b6008546001600160a01b0383166000908152602081905260409020546121d49083612c71565b11156121f25760405162461bcd60e51b8152600401610a6190612d06565b612311565b6001600160a01b03821660009081526013602052604090205460ff16801561223857506001600160a01b03831660009081526012602052604090205460ff16155b156122ad576007548111156121f25760405162461bcd60e51b815260206004820152603560248201527f465245455448494e4b4552533a207472616e7366657220616d6f756e7420657860448201527418d959591cc81b585e081cd95b1b08185b5bdd5b9d605a1b6064820152608401610a61565b6001600160a01b03821660009081526012602052604090205460ff16612311576008546001600160a01b0383166000908152602081905260409020546122f39083612c71565b11156123115760405162461bcd60e51b8152600401610a6190612d06565b30600090815260208190526040902054600a548110801590819061233d5750600e5462010000900460ff165b801561234c575060095460ff16155b801561237157506001600160a01b03851660009081526013602052604090205460ff16155b801561239657506001600160a01b03851660009081526011602052604090205460ff16155b80156123bb57506001600160a01b03841660009081526011602052604090205460ff16155b156123e0576009805460ff191660011790556123d561255d565b6009805460ff191690555b6001600160a01b038516600090815260116020526040812054819060ff1615801561242457506001600160a01b03861660009081526011602052604090205460ff16155b15612549576000600c541180156124495750600d54600c546124469190612c71565b43105b1561248557606461245b866062612c38565b6124659190612c4f565b600b549091506124809088906001600160a01b0316836125fe565b612521565b6001600160a01b03861660009081526013602052604090205460ff1680156124af57506000601054115b156124d5576064601054866124c49190612c38565b6124ce9190612c4f565b9150612521565b6001600160a01b03871660009081526013602052604090205460ff1680156124ff57506000600f54115b15612521576064600f54866125149190612c38565b61251e9190612c4f565b91505b8115612532576125328730846125fe565b61253c8183612c71565b6125469086612d55565b94505b6125548787876125fe565b50505050505050565b30600090815260208190526040812054908190036125785750565b600a805461258591612c38565b81111561259c57600a805461259991612c38565b90505b6125a5816127cd565b600b546040516000916001600160a01b03169047908381818185875af1925050503d80600081146125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b5050505050565b6001600160a01b0383166126625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a61565b6001600160a01b0382166126c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a61565b6001600160a01b0383166000908152602081905260409020548181101561273c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a61565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612773908490612c71565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127bf91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061280257612802612cd7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a49190612cba565b816001815181106128b7576128b7612cd7565b60200260200101906001600160a01b031690816001600160a01b031681525050612902307f000000000000000000000000000000000000000000000000000000000000000084611d62565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612957908590600090869030904290600401612d68565b600060405180830381600087803b15801561297157600080fd5b505af1158015612985573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156129ba5785810183015185820160400152820161299e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461157457600080fd5b60008060408385031215612a0357600080fd5b8235612a0e816129db565b946020939093013593505050565b600060208284031215612a2e57600080fd5b8135612a39816129db565b9392505050565b600060208284031215612a5257600080fd5b5035919050565b600080600060608486031215612a6e57600080fd5b8335612a79816129db565b92506020840135612a89816129db565b929592945050506040919091013590565b801515811461157457600080fd5b60008060408385031215612abb57600080fd5b8235612a0e81612a9a565b60008060408385031215612ad957600080fd5b8235612ae4816129db565b91506020830135612af481612a9a565b809150509250929050565b60008060408385031215612b1257600080fd5b8235612b1d816129db565b91506020830135612af4816129db565b600080600060408486031215612b4257600080fd5b833567ffffffffffffffff80821115612b5a57600080fd5b818601915086601f830112612b6e57600080fd5b813581811115612b7d57600080fd5b8760208260051b8501011115612b9257600080fd5b60209283019550935050840135612ba881612a9a565b809150509250925092565b600181811c90821680612bc757607f821691505b602082108103612be757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a3157610a31612c22565b600082612c6c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610a3157610a31612c22565b600060208284031215612c9657600080fd5b5051919050565b600060208284031215612caf57600080fd5b8151612a3981612a9a565b600060208284031215612ccc57600080fd5b8151612a39816129db565b634e487b7160e01b600052603260045260246000fd5b600060018201612cff57612cff612c22565b5060010190565b6020808252602f908201527f465245455448494e4b4552533a2062616c616e63652065786365656473206d6160408201526e1e081dd85b1b195d08185b5bdd5b9d608a1b606082015260800190565b81810381811115610a3157610a31612c22565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612db85784516001600160a01b031683529383019391830191600101612d93565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220329a5b79722c413adf1622b4e98ff29aa5235f97a3463a765abd9bd6aaee787864736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80638366e79a11610190578063c0a904a2116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b1461092e578063f5648a4f1461094e578063fabb0b4f14610963578063faf216e31461097957600080fd5b8063e2f45605146108e2578063ed494189146108f8578063ee40166e1461091857600080fd5b8063c0a904a2146107fb578063c18bc1951461081b578063d257b34f1461083b578063dbf5b9161461085b578063dc3f0d0f1461087c578063dd62ed3e1461089c57600080fd5b80639e78fb4f11610149578063aa4bde2811610123578063aa4bde2814610776578063b62496f51461078c578063bbc0c742146107bc578063c0246668146107db57600080fd5b80639e78fb4f14610721578063a457c2d714610736578063a9059cbb1461075657600080fd5b80638366e79a1461067857806388e765ff146106985780638da5cb5b146106ae578063906e9dd0146106cc57806395d89b41146106ec5780639a7a23d61461070157600080fd5b8063467abe0a1161024f5780635e83ae761161020857806370a08231116101e257806370a08231146105f8578063715018a61461062e578063751039fc14610643578063819d38d21461065857600080fd5b80635e83ae76146105a257806366d602ae146105c25780636ddd1713146105d857600080fd5b8063467abe0a146104be57806347062402146104de57806349bd5a5e146104f45780634a62bb65146105285780634fbee193146105425780635cce86cd1461057257600080fd5b806323b872dd116102a157806323b872dd1461040c5780632b14ca561461042c5780632be32b6114610442578063313ce567146104625780633936e8b91461047e578063395093511461049e57600080fd5b806306fdde03146102f4578063095ea7b31461031f5780630f3a325f1461034f5780631694505e1461037f57806318160ddd146103cb5780631d933a4a146103ea57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030961098e565b604051610316919061298d565b60405180910390f35b34801561032b57600080fd5b5061033f61033a3660046129f0565b610a20565b6040519015158152602001610316565b34801561035b57600080fd5b5061033f61036a366004612a1c565b60146020526000908152604090205460ff1681565b34801561038b57600080fd5b506103b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610316565b3480156103d757600080fd5b506002545b604051908152602001610316565b3480156103f657600080fd5b5061040a610405366004612a40565b610a37565b005b34801561041857600080fd5b5061033f610427366004612a59565b610b49565b34801561043857600080fd5b506103dc60105481565b34801561044e57600080fd5b5061040a61045d366004612a40565b610bf3565b34801561046e57600080fd5b5060405160128152602001610316565b34801561048a57600080fd5b50600b546103b3906001600160a01b031681565b3480156104aa57600080fd5b5061033f6104b93660046129f0565b610cdb565b3480156104ca57600080fd5b5061040a6104d9366004612a40565b610d17565b3480156104ea57600080fd5b506103dc600f5481565b34801561050057600080fd5b506103b37f0000000000000000000000004f7e2314d623896b35a9c98d1845f296fcd5b5a381565b34801561053457600080fd5b50600e5461033f9060ff1681565b34801561054e57600080fd5b5061033f61055d366004612a1c565b60116020526000908152604090205460ff1681565b34801561057e57600080fd5b5061033f61058d366004612a1c565b60126020526000908152604090205460ff1681565b3480156105ae57600080fd5b5061040a6105bd366004612aa8565b610da3565b3480156105ce57600080fd5b506103dc60075481565b3480156105e457600080fd5b50600e5461033f9062010000900460ff1681565b34801561060457600080fd5b506103dc610613366004612a1c565b6001600160a01b031660009081526020819052604090205490565b34801561063a57600080fd5b5061040a610ee6565b34801561064f57600080fd5b5061040a610f5a565b34801561066457600080fd5b5061040a610673366004612ac6565b610f90565b34801561068457600080fd5b5061033f610693366004612aff565b61105b565b3480156106a457600080fd5b506103dc60065481565b3480156106ba57600080fd5b506005546001600160a01b03166103b3565b3480156106d857600080fd5b5061040a6106e7366004612a1c565b6111d8565b3480156106f857600080fd5b506103096112a0565b34801561070d57600080fd5b5061040a61071c366004612ac6565b6112af565b34801561072d57600080fd5b5061040a6113c6565b34801561074257600080fd5b5061033f6107513660046129f0565b611577565b34801561076257600080fd5b5061033f6107713660046129f0565b611610565b34801561078257600080fd5b506103dc60085481565b34801561079857600080fd5b5061033f6107a7366004612a1c565b60136020526000908152604090205460ff1681565b3480156107c857600080fd5b50600e5461033f90610100900460ff1681565b3480156107e757600080fd5b5061040a6107f6366004612ac6565b61161d565b34801561080757600080fd5b5061040a610816366004612ac6565b611672565b34801561082757600080fd5b5061040a610836366004612a40565b61176a565b34801561084757600080fd5b5061040a610856366004612a40565b611854565b34801561086757600080fd5b50600e5461033f906301000000900460ff1681565b34801561088857600080fd5b5061040a610897366004612a40565b6119d4565b3480156108a857600080fd5b506103dc6108b7366004612aff565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108ee57600080fd5b506103dc600a5481565b34801561090457600080fd5b5061040a610913366004612b2d565b611abc565b34801561092457600080fd5b506103dc600c5481565b34801561093a57600080fd5b5061040a610949366004612a1c565b611bd2565b34801561095a57600080fd5b5061040a611cbd565b34801561096f57600080fd5b506103dc600d5481565b34801561098557600080fd5b5061040a611d29565b60606003805461099d90612bb3565b80601f01602080910402602001604051908101604052809291908181526020018280546109c990612bb3565b8015610a165780601f106109eb57610100808354040283529160200191610a16565b820191906000526020600020905b8154815290600101906020018083116109f957829003601f168201915b5050505050905090565b6000610a2d338484611d62565b5060015b92915050565b6005546001600160a01b03163314610a6a5760405162461bcd60e51b8152600401610a6190612bed565b60405180910390fd5b60056010541115610ae857601054811115610ae35760405162461bcd60e51b815260206004820152603360248201527f465245455448494e4b4552533a206e65772073656c6c2066656520657863656560448201527264732063757272656e742073656c6c2066656560681b6064820152608401610a61565b601055565b60056010541115610ae35760405162461bcd60e51b815260206004820152602560248201527f465245455448494e4b4552533a206e65772073656c6c20666565206578636565604482015264647320352560d81b6064820152608401610a61565b6000610b56848484611e86565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bdb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a61565b610be88533858403611d62565b506001949350505050565b6005546001600160a01b03163314610c1d5760405162461bcd60e51b8152600401610a6190612bed565b6064610c2860025490565b610c33906001612c38565b610c3d9190612c4f565b610c4f82670de0b6b3a7640000612c38565b1015610cc35760405162461bcd60e51b815260206004820152603d60248201527f465245455448494e4b4552533a206e6577206d61782062757920616d6f756e7460448201527f206c657373207468616e203125206f6620746f74616c20737570706c790000006064820152608401610a61565b610cd581670de0b6b3a7640000612c38565b60065550565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a2d918590610d12908690612c71565b611d62565b6005546001600160a01b03163314610d415760405162461bcd60e51b8152600401610a6190612bed565b6005811115610d9e5760405162461bcd60e51b8152602060048201526024808201527f465245455448494e4b4552533a206e65772062757920666565206578636565646044820152637320352560e01b6064820152608401610a61565b600f55565b6005546001600160a01b03163314610dcd5760405162461bcd60e51b8152600401610a6190612bed565b600e54610100900460ff1615610e355760405162461bcd60e51b815260206004820152602760248201527f465245455448494e4b4552533a2074726164696e6720697320616c72656164796044820152662061637469766560c81b6064820152608401610a61565b6005811115610e985760405162461bcd60e51b815260206004820152602960248201527f465245455448494e4b4552533a2064656164626c6f636b7320616d6f756e742060448201526865786365656473203560b81b6064820152608401610a61565b600e80546201000062ffff0019909116610100851515810262ff0000191691909117919091179182905560ff9104168015610ed35750600c54155b15610ee25743600c55600d8190555b5050565b6005546001600160a01b03163314610f105760405162461bcd60e51b8152600401610a6190612bed565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f845760405162461bcd60e51b8152600401610a6190612bed565b600e805460ff19169055565b6005546001600160a01b03163314610fba5760405162461bcd60e51b8152600401610a6190612bed565b600e546301000000900460ff166110305760405162461bcd60e51b815260206004820152603460248201527f465245455448494e4b4552533a20736e69706572206d616e6167656d656e74206044820152731c195c9b585b995b9d1b1e48191a5cd8589b195960621b6064820152608401610a61565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110885760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b0383166110ee5760405162461bcd60e51b815260206004820152602760248201527f465245455448494e4b4552533a20746f6b656e20697320746865207a65726f206044820152666164647265737360c81b6064820152608401610a61565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111599190612c84565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612c9d565b949350505050565b6005546001600160a01b031633146112025760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b03811661127e5760405162461bcd60e51b815260206004820152603760248201527f465245455448494e4b4552533a206e6577206d61726b6574696e67206164647260448201527f65737320697320746865207a65726f20616464726573730000000000000000006064820152608401610a61565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461099d90612bb3565b6005546001600160a01b031633146112d95760405162461bcd60e51b8152600401610a6190612bed565b80611385577f0000000000000000000000004f7e2314d623896b35a9c98d1845f296fcd5b5a36001600160a01b0316826001600160a01b0316036113855760405162461bcd60e51b815260206004820152603c60248201527f465245455448494e4b4552533a206175746f6d61746564206d61726b6574206d60448201527f616b6572207061697220697320756e69737761702056322070616972000000006064820152608401610a61565b6001600160a01b0382166000908152601360209081526040808320805485151560ff1991821681179092556012909352922080549091169091179055610ee2565b6005546001600160a01b031633146113f05760405162461bcd60e51b8152600401610a6190612bed565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190612cba565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190612cba565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190612cba565b50565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a61565b6116063385858403611d62565b5060019392505050565b6000610a2d338484611e86565b6005546001600160a01b031633146116475760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461169c5760405162461bcd60e51b8152600401610a6190612bed565b80611740577f0000000000000000000000004f7e2314d623896b35a9c98d1845f296fcd5b5a36001600160a01b0316826001600160a01b0316036117405760405162461bcd60e51b815260206004820152603560248201527f465245455448494e4b4552533a206163636f756e7420746f20626520657873636044820152746c756465642069732070616972206164647265737360581b6064820152608401610a61565b6001600160a01b0382166000908152601260205260409020805482151560ff199091161790555050565b6005546001600160a01b031633146117945760405162461bcd60e51b8152600401610a6190612bed565b606461179f60025490565b6117aa906002612c38565b6117b49190612c4f565b6117c682670de0b6b3a7640000612c38565b101561183c576040805162461bcd60e51b81526020600482015260248101919091527f465245455448494e4b4552533a206e6577206d61782077616c6c657420616d6f60448201527f756e74206c657373207468616e203225206f6620746f74616c20737570706c796064820152608401610a61565b61184e81670de0b6b3a7640000612c38565b60085550565b6005546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610a6190612bed565b620186a061188b60025490565b611896906001612c38565b6118a09190612c4f565b6118b282670de0b6b3a7640000612c38565b10156119265760405162461bcd60e51b815260206004820152603e60248201527f465245455448494e4b4552533a206e6577207377617020616d6f756e74206c6560448201527f7373207468616e20302e30303125206f6620746f74616c20737570706c7900006064820152608401610a61565b6103e861193260025490565b61193d906001612c38565b6119479190612c4f565b8111156119bc5760405162461bcd60e51b815260206004820152603a60248201527f465245455448494e4b4552533a206e6577205377617020616d6f756e7420657860448201527f636565647320302e3125206f6620746f74616c20737570706c790000000000006064820152608401610a61565b6119ce81670de0b6b3a7640000612c38565b600a5550565b6005546001600160a01b031633146119fe5760405162461bcd60e51b8152600401610a6190612bed565b6064611a0960025490565b611a14906001612c38565b611a1e9190612c4f565b611a3082670de0b6b3a7640000612c38565b1015611aa45760405162461bcd60e51b815260206004820152603e60248201527f465245455448494e4b4552533a206e6577206d61782073656c6c20616d6f756e60448201527f74206c657373207468616e203125206f6620746f74616c20737570706c7900006064820152608401610a61565b611ab681670de0b6b3a7640000612c38565b60075550565b6005546001600160a01b03163314611ae65760405162461bcd60e51b8152600401610a6190612bed565b600e546301000000900460ff16611b5d5760405162461bcd60e51b815260206004820152603560248201527f465245455448494e4b4552533a20736e6970657273206d616e6167656d656e74604482015274081c195c9b585b995b9d1b1e48191a5cd8589b1959605a1b6064820152608401610a61565b60005b82811015611bcc578160146000868685818110611b7f57611b7f612cd7565b9050602002016020810190611b949190612a1c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611bc581612ced565b9050611b60565b50505050565b6005546001600160a01b03163314611bfc5760405162461bcd60e51b8152600401610a6190612bed565b6001600160a01b038116611c615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a61565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611ce75760405162461bcd60e51b8152600401610a6190612bed565b604051600090339047908381818185875af1925050503d8060008114611bcc576040519150601f19603f3d011682016040523d82523d6000602084013e611bcc565b6005546001600160a01b03163314611d535760405162461bcd60e51b8152600401610a6190612bed565b600e805463ff00000019169055565b6001600160a01b038316611dc45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a61565b6001600160a01b038216611e255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a61565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111611ed65760405162461bcd60e51b815260206004820152601c60248201527f465245455448494e4b4552533a20616d6f756e74206973207a65726f000000006044820152606401610a61565b6001600160a01b03831660009081526014602052604090205460ff1615611f4d5760405162461bcd60e51b815260206004820152602560248201527f465245455448494e4b4552533a2073656e646572206d61726b656420617320736044820152643734b832b960d91b6064820152608401610a61565b6001600160a01b03821660009081526014602052604090205460ff1615611fc75760405162461bcd60e51b815260206004820152602860248201527f465245455448494e4b4552533a20726563697069656e74206d61726b65642061604482015267399039b734b832b960c11b6064820152608401610a61565b600e5460ff1615612311576005546001600160a01b03848116911614801590611ffe57506005546001600160a01b03838116911614155b801561202357506001600160a01b03831660009081526011602052604090205460ff16155b801561204857506001600160a01b03821660009081526011602052604090205460ff16155b1561231157600e54610100900460ff166120b05760405162461bcd60e51b815260206004820152602360248201527f465245455448494e4b4552533a2074726164696e67206973206e6f742061637460448201526269766560e81b6064820152608401610a61565b6000600c541180156120d05750600d54600c546120cd9190612c71565b43105b156120f9576001600160a01b0382166000908152601460205260409020805460ff191660011790555b6001600160a01b03831660009081526013602052604090205460ff16801561213a57506001600160a01b03821660009081526012602052604090205460ff16155b156121f7576006548111156121ae5760405162461bcd60e51b815260206004820152603460248201527f465245455448494e4b4552533a207472616e7366657220616d6f756e7420657860448201527318d959591cc81b585e08189d5e48185b5bdd5b9d60621b6064820152608401610a61565b6008546001600160a01b0383166000908152602081905260409020546121d49083612c71565b11156121f25760405162461bcd60e51b8152600401610a6190612d06565b612311565b6001600160a01b03821660009081526013602052604090205460ff16801561223857506001600160a01b03831660009081526012602052604090205460ff16155b156122ad576007548111156121f25760405162461bcd60e51b815260206004820152603560248201527f465245455448494e4b4552533a207472616e7366657220616d6f756e7420657860448201527418d959591cc81b585e081cd95b1b08185b5bdd5b9d605a1b6064820152608401610a61565b6001600160a01b03821660009081526012602052604090205460ff16612311576008546001600160a01b0383166000908152602081905260409020546122f39083612c71565b11156123115760405162461bcd60e51b8152600401610a6190612d06565b30600090815260208190526040902054600a548110801590819061233d5750600e5462010000900460ff165b801561234c575060095460ff16155b801561237157506001600160a01b03851660009081526013602052604090205460ff16155b801561239657506001600160a01b03851660009081526011602052604090205460ff16155b80156123bb57506001600160a01b03841660009081526011602052604090205460ff16155b156123e0576009805460ff191660011790556123d561255d565b6009805460ff191690555b6001600160a01b038516600090815260116020526040812054819060ff1615801561242457506001600160a01b03861660009081526011602052604090205460ff16155b15612549576000600c541180156124495750600d54600c546124469190612c71565b43105b1561248557606461245b866062612c38565b6124659190612c4f565b600b549091506124809088906001600160a01b0316836125fe565b612521565b6001600160a01b03861660009081526013602052604090205460ff1680156124af57506000601054115b156124d5576064601054866124c49190612c38565b6124ce9190612c4f565b9150612521565b6001600160a01b03871660009081526013602052604090205460ff1680156124ff57506000600f54115b15612521576064600f54866125149190612c38565b61251e9190612c4f565b91505b8115612532576125328730846125fe565b61253c8183612c71565b6125469086612d55565b94505b6125548787876125fe565b50505050505050565b30600090815260208190526040812054908190036125785750565b600a805461258591612c38565b81111561259c57600a805461259991612c38565b90505b6125a5816127cd565b600b546040516000916001600160a01b03169047908381818185875af1925050503d80600081146125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b5050505050565b6001600160a01b0383166126625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a61565b6001600160a01b0382166126c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a61565b6001600160a01b0383166000908152602081905260409020548181101561273c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a61565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612773908490612c71565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127bf91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061280257612802612cd7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a49190612cba565b816001815181106128b7576128b7612cd7565b60200260200101906001600160a01b031690816001600160a01b031681525050612902307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d62565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612957908590600090869030904290600401612d68565b600060405180830381600087803b15801561297157600080fd5b505af1158015612985573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156129ba5785810183015185820160400152820161299e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461157457600080fd5b60008060408385031215612a0357600080fd5b8235612a0e816129db565b946020939093013593505050565b600060208284031215612a2e57600080fd5b8135612a39816129db565b9392505050565b600060208284031215612a5257600080fd5b5035919050565b600080600060608486031215612a6e57600080fd5b8335612a79816129db565b92506020840135612a89816129db565b929592945050506040919091013590565b801515811461157457600080fd5b60008060408385031215612abb57600080fd5b8235612a0e81612a9a565b60008060408385031215612ad957600080fd5b8235612ae4816129db565b91506020830135612af481612a9a565b809150509250929050565b60008060408385031215612b1257600080fd5b8235612b1d816129db565b91506020830135612af4816129db565b600080600060408486031215612b4257600080fd5b833567ffffffffffffffff80821115612b5a57600080fd5b818601915086601f830112612b6e57600080fd5b813581811115612b7d57600080fd5b8760208260051b8501011115612b9257600080fd5b60209283019550935050840135612ba881612a9a565b809150509250925092565b600181811c90821680612bc757607f821691505b602082108103612be757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a3157610a31612c22565b600082612c6c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610a3157610a31612c22565b600060208284031215612c9657600080fd5b5051919050565b600060208284031215612caf57600080fd5b8151612a3981612a9a565b600060208284031215612ccc57600080fd5b8151612a39816129db565b634e487b7160e01b600052603260045260246000fd5b600060018201612cff57612cff612c22565b5060010190565b6020808252602f908201527f465245455448494e4b4552533a2062616c616e63652065786365656473206d6160408201526e1e081dd85b1b195d08185b5bdd5b9d608a1b606082015260800190565b81810381811115610a3157610a31612c22565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612db85784516001600160a01b031683529383019391830191600101612d93565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220329a5b79722c413adf1622b4e98ff29aa5235f97a3463a765abd9bd6aaee787864736f6c63430008120033

Deployed Bytecode Sourcemap

15434:11180:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10152:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11066:169;;;;;;;;;;-1:-1:-1;11066:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11066:169:0;1023:187:1;16295:41:0;;;;;;;;;;-1:-1:-1;16295:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15591:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1649:32:1;;;1631:51;;1619:2;1604:18;15591:43:0;1467:221:1;10473:108:0;;;;;;;;;;-1:-1:-1;10561:12:0;;10473:108;;;1839:25:1;;;1827:2;1812:18;10473:108:0;1693:177:1;19934:335:0;;;;;;;;;;-1:-1:-1;19934:335:0;;;;;:::i;:::-;;:::i;:::-;;11243:480;;;;;;;;;;-1:-1:-1;11243:480:0;;;;;:::i;:::-;;:::i;16081:22::-;;;;;;;;;;;;;;;;18073:246;;;;;;;;;;-1:-1:-1;18073:246:0;;;;;:::i;:::-;;:::i;10372:93::-;;;;;;;;;;-1:-1:-1;10372:93:0;;10455:2;2663:36:1;;2651:2;2636:18;10372:93:0;2521:184:1;15759:31:0;;;;;;;;;;-1:-1:-1;15759:31:0;;;;-1:-1:-1;;;;;15759:31:0;;;11731:215;;;;;;;;;;-1:-1:-1;11731:215:0;;;;;:::i;:::-;;:::i;19755:171::-;;;;;;;;;;-1:-1:-1;19755:171:0;;;;;:::i;:::-;;:::i;16051:21::-;;;;;;;;;;;;;;;;15641:38;;;;;;;;;;;;;;;15882:33;;;;;;;;;;-1:-1:-1;15882:33:0;;;;;;;;16112:51;;;;;;;;;;-1:-1:-1;16112:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16170:53;;;;;;;;;;-1:-1:-1;16170:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24227:463;;;;;;;;;;-1:-1:-1;24227:463:0;;;;;:::i;:::-;;:::i;15517:28::-;;;;;;;;;;;;;;;;15962:31;;;;;;;;;;-1:-1:-1;15962:31:0;;;;;;;;;;;10589:127;;;;;;;;;;-1:-1:-1;10589:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10690:18:0;10663:7;10690:18;;;;;;;;;;;;10589:127;14193:150;;;;;;;;;;;;;:::i;19234:84::-;;;;;;;;;;;;;:::i;24961:227::-;;;;;;;;;;-1:-1:-1;24961:227:0;;;;;:::i;:::-;;:::i;26122:319::-;;;;;;;;;;-1:-1:-1;26122:319:0;;;;;:::i;:::-;;:::i;15483:27::-;;;;;;;;;;;;;;;;13979:79;;;;;;;;;;-1:-1:-1;14044:6:0;;-1:-1:-1;;;;;14044:6:0;13979:79;;24698:255;;;;;;;;;;-1:-1:-1;24698:255:0;;;;;:::i;:::-;;:::i;10260:104::-;;;;;;;;;;;;;:::i;23709:284::-;;;;;;;;;;-1:-1:-1;23709:284:0;;;;;:::i;:::-;;:::i;17917:148::-;;;;;;;;;;;;;:::i;11954:401::-;;;;;;;;;;-1:-1:-1;11954:401:0;;;;;:::i;:::-;;:::i;10724:175::-;;;;;;;;;;-1:-1:-1;10724:175:0;;;;;:::i;:::-;;:::i;15552:30::-;;;;;;;;;;;;;;;;16230:58;;;;;;;;;;-1:-1:-1;16230:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15922:33;;;;;;;;;;-1:-1:-1;15922:33:0;;;;;;;;;;;20277:135;;;;;;;;;;-1:-1:-1;20277:135:0;;;;;:::i;:::-;;:::i;19465:282::-;;;;;;;;;;-1:-1:-1;19465:282:0;;;;;:::i;:::-;;:::i;18584:255::-;;;;;;;;;;-1:-1:-1;18584:255:0;;;;;:::i;:::-;;:::i;18847:379::-;;;;;;;;;;-1:-1:-1;18847:379:0;;;;;:::i;:::-;;:::i;16000:42::-;;;;;;;;;;-1:-1:-1;16000:42:0;;;;;;;;;;;18327:249;;;;;;;;;;-1:-1:-1;18327:249:0;;;;;:::i;:::-;;:::i;10907:151::-;;;;;;;;;;-1:-1:-1;10907:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11023:18:0;;;10996:7;11023:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10907:151;15717:33;;;;;;;;;;;;;;;;25196:304;;;;;;;;;;-1:-1:-1;25196:304:0;;;;;:::i;:::-;;:::i;15799:37::-;;;;;;;;;;;;;;;;14351:244;;;;;;;;;;-1:-1:-1;14351:244:0;;;;;:::i;:::-;;:::i;26449:160::-;;;;;;;;;;;;;:::i;15844:29::-;;;;;;;;;;;;;;;;25554:104;;;;;;;;;;;;;:::i;10152:100::-;10206:13;10239:5;10232:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10152:100;:::o;11066:169::-;11149:4;11166:39;9603:10;11189:7;11198:6;11166:8;:39::i;:::-;-1:-1:-1;11223:4:0;11066:169;;;;;:::o;19934:335::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;;;;;;;;;20021:1:::1;20011:7;;:11;20007:224;;;20061:7;;20047:10;:21;;20039:85;;;::::0;-1:-1:-1;;;20039:85:0;;5838:2:1;20039:85:0::1;::::0;::::1;5820:21:1::0;5877:2;5857:18;;;5850:30;5916:34;5896:18;;;5889:62;-1:-1:-1;;;5967:18:1;;;5960:49;6026:19;;20039:85:0::1;5636:415:1::0;20039:85:0::1;20241:7;:20:::0;19934:335::o;20007:224::-:1;20176:1;20165:7;;:12;;20157:62;;;::::0;-1:-1:-1;;;20157:62:0;;6258:2:1;20157:62:0::1;::::0;::::1;6240:21:1::0;6297:2;6277:18;;;6270:30;6336:34;6316:18;;;6309:62;-1:-1:-1;;;6387:18:1;;;6380:35;6432:19;;20157:62:0::1;6056:401:1::0;11243:480:0;11383:4;11400:36;11410:6;11418:9;11429:6;11400:9;:36::i;:::-;-1:-1:-1;;;;;11476:19:0;;11449:24;11476:19;;;:11;:19;;;;;;;;9603:10;11476:33;;;;;;;;11528:26;;;;11520:79;;;;-1:-1:-1;;;11520:79:0;;6664:2:1;11520:79:0;;;6646:21:1;6703:2;6683:18;;;6676:30;6742:34;6722:18;;;6715:62;-1:-1:-1;;;6793:18:1;;;6786:38;6841:19;;11520:79:0;6462:404:1;11520:79:0;11627:57;11636:6;9603:10;11677:6;11658:16;:25;11627:8;:57::i;:::-;-1:-1:-1;11711:4:0;;11243:480;-1:-1:-1;;;;11243:480:0:o;18073:246::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;18199:3:::1;18179:13;10561:12:::0;;;10473:108;18179:13:::1;:17;::::0;18195:1:::1;18179:17;:::i;:::-;:23;;;;:::i;:::-;18158:16;:9:::0;18170:4:::1;18158:16;:::i;:::-;:45;;18150:119;;;::::0;-1:-1:-1;;;18150:119:0;;7600:2:1;18150:119:0::1;::::0;::::1;7582:21:1::0;7639:2;7619:18;;;7612:30;7678:34;7658:18;;;7651:62;7749:31;7729:18;;;7722:59;7798:19;;18150:119:0::1;7398:425:1::0;18150:119:0::1;18295:16;:9:::0;18307:4:::1;18295:16;:::i;:::-;18280:12;:31:::0;-1:-1:-1;18073:246:0:o;11731:215::-;9603:10;11819:4;11868:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11868:34:0;;;;;;;;;;11819:4;;11836:80;;11859:7;;11868:47;;11905:10;;11868:47;:::i;:::-;11836:8;:80::i;19755:171::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;19847:1:::1;19834:9;:14;;19826:63;;;::::0;-1:-1:-1;;;19826:63:0;;8160:2:1;19826:63:0::1;::::0;::::1;8142:21:1::0;8199:2;8179:18;;;8172:30;8238:34;8218:18;;;8211:62;-1:-1:-1;;;8289:18:1;;;8282:34;8333:19;;19826:63:0::1;7958:400:1::0;19826:63:0::1;19900:6;:18:::0;19755:171::o;24227:463::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;24324:13:::1;::::0;::::1;::::0;::::1;;;24323:14;24315:66;;;::::0;-1:-1:-1;;;24315:66:0;;8565:2:1;24315:66:0::1;::::0;::::1;8547:21:1::0;8604:2;8584:18;;;8577:30;8643:34;8623:18;;;8616:62;-1:-1:-1;;;8694:18:1;;;8687:37;8741:19;;24315:66:0::1;8363:403:1::0;24315:66:0::1;24415:1;24400:11;:16;;24392:70;;;::::0;-1:-1:-1;;;24392:70:0;;8973:2:1;24392:70:0::1;::::0;::::1;8955:21:1::0;9012:2;8992:18;;;8985:30;9051:34;9031:18;;;9024:62;-1:-1:-1;;;9102:18:1;;;9095:39;9151:19;;24392:70:0::1;8771:405:1::0;24392:70:0::1;24473:13;:23:::0;;24507:18;-1:-1:-1;;24507:18:0;;;24473:23:::1;::::0;::::1;;::::0;::::1;-1:-1:-1::0;;24507:18:0;;;;;;;;::::1;::::0;;;;24473:23:::1;24542:13:::0;::::1;;:40:::0;::::1;;;-1:-1:-1::0;24559:18:0::1;::::0;:23;24542:40:::1;24538:145;;;24620:12;24599:18;:33:::0;24647:10:::1;:24:::0;;;24538:145:::1;24227:463:::0;;:::o;14193:150::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;14286:6:::1;::::0;14265:40:::1;::::0;14302:1:::1;::::0;-1:-1:-1;;;;;14286:6:0::1;::::0;14265:40:::1;::::0;14302:1;;14265:40:::1;14316:6;:19:::0;;-1:-1:-1;;;;;;14316:19:0::1;::::0;;14193:150::o;19234:84::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;19288:14:::1;:22:::0;;-1:-1:-1;;19288:22:0::1;::::0;;19234:84::o;24961:227::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;25057:23:::1;::::0;;;::::1;;;25049:88;;;::::0;-1:-1:-1;;;25049:88:0;;9383:2:1;25049:88:0::1;::::0;::::1;9365:21:1::0;9422:2;9402:18;;;9395:30;9461:34;9441:18;;;9434:62;-1:-1:-1;;;9512:18:1;;;9505:50;9572:19;;25049:88:0::1;9181:416:1::0;25049:88:0::1;-1:-1:-1::0;;;;;25148:23:0;;;::::1;;::::0;;;:8:::1;:23;::::0;;;;:32;;-1:-1:-1;;25148:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24961:227::o;26122:319::-;14106:6;;26207:4;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26232:19:0;::::1;26224:71;;;::::0;-1:-1:-1;;;26224:71:0;;9804:2:1;26224:71:0::1;::::0;::::1;9786:21:1::0;9843:2;9823:18;;;9816:30;9882:34;9862:18;;;9855:62;-1:-1:-1;;;9933:18:1;;;9926:37;9980:19;;26224:71:0::1;9602:403:1::0;26224:71:0::1;26333:38;::::0;-1:-1:-1;;;26333:38:0;;26365:4:::1;26333:38;::::0;::::1;1631:51:1::0;26306:24:0::1;::::0;-1:-1:-1;;;;;26333:23:0;::::1;::::0;::::1;::::0;1604:18:1;;26333:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26389:44;::::0;-1:-1:-1;;;26389:44:0;;-1:-1:-1;;;;;10391:32:1;;;26389:44:0::1;::::0;::::1;10373:51:1::0;10440:18;;;10433:34;;;26306:65:0;;-1:-1:-1;26389:22:0;;::::1;::::0;::::1;::::0;10346:18:1;;26389:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26382:51:::0;26122:319;-1:-1:-1;;;;26122:319:0:o;24698:255::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24794:33:0;::::1;24786:101;;;::::0;-1:-1:-1;;;24786:101:0;;10930:2:1;24786:101:0::1;::::0;::::1;10912:21:1::0;10969:2;10949:18;;;10942:30;11008:34;10988:18;;;10981:62;11079:25;11059:18;;;11052:53;11122:19;;24786:101:0::1;10728:419:1::0;24786:101:0::1;24898:16;:47:::0;;-1:-1:-1;;;;;;24898:47:0::1;-1:-1:-1::0;;;;;24898:47:0;;;::::1;::::0;;;::::1;::::0;;24698:255::o;10260:104::-;10316:13;10349:7;10342:14;;;;;:::i;23709:284::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;23806:5:::1;23802:132;;23844:13;-1:-1:-1::0;;;;;23836:21:0::1;:4;-1:-1:-1::0;;;;;23836:21:0::1;::::0;23828:94:::1;;;::::0;-1:-1:-1;;;23828:94:0;;11354:2:1;23828:94:0::1;::::0;::::1;11336:21:1::0;11393:2;11373:18;;;11366:30;11432:34;11412:18;;;11405:62;11503:30;11483:18;;;11476:58;11551:19;;23828:94:0::1;11152:424:1::0;23828:94:0::1;-1:-1:-1::0;;;;;24084:31:0;;;;;;:25;:31;;;;;;;;:39;;;;;-1:-1:-1;;24084:39:0;;;;;;;;19407:20;:29;;;;;:42;;;;;;;;;;23944:41:::1;24227:463::o:0;17917:148::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;17981:15:::1;-1:-1:-1::0;;;;;17981:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17969:49:0::1;;18027:4;18034:15;-1:-1:-1::0;;;;;18034:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17969:88;::::0;-1:-1:-1;;;;;;17969:88:0::1;::::0;;;;;;-1:-1:-1;;;;;12067:15:1;;;17969:88:0::1;::::0;::::1;12049:34:1::0;12119:15;;12099:18;;;12092:43;11984:18;;17969:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17917:148::o:0;11954:401::-;9603:10;12047:4;12091:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12091:34:0;;;;;;;;;;12144:35;;;;12136:85;;;;-1:-1:-1;;;12136:85:0;;12348:2:1;12136:85:0;;;12330:21:1;12387:2;12367:18;;;12360:30;12426:34;12406:18;;;12399:62;-1:-1:-1;;;12477:18:1;;;12470:35;12522:19;;12136:85:0;12146:401:1;12136:85:0;12249:67;9603:10;12272:7;12300:15;12281:16;:34;12249:8;:67::i;:::-;-1:-1:-1;12343:4:0;;11954:401;-1:-1:-1;;;11954:401:0:o;10724:175::-;10810:4;10827:42;9603:10;10851:9;10862:6;10827:9;:42::i;20277:135::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20364:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:40;;-1:-1:-1;;20364:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20277:135::o;19465:282::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;19561:10:::1;19556:134;;19607:13;-1:-1:-1::0;;;;;19596:24:0::1;:7;-1:-1:-1::0;;;;;19596:24:0::1;::::0;19588:90:::1;;;::::0;-1:-1:-1;;;19588:90:0;;12754:2:1;19588:90:0::1;::::0;::::1;12736:21:1::0;12793:2;12773:18;;;12766:30;12832:34;12812:18;;;12805:62;-1:-1:-1;;;12883:18:1;;;12876:51;12944:19;;19588:90:0::1;12552:417:1::0;19588:90:0::1;-1:-1:-1::0;;;;;19407:29:0;;;;;;:20;:29;;;;;:42;;;;;-1:-1:-1;;19407:42:0;;;;;;24227:463;;:::o;18584:255::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;18713:3:::1;18693:13;10561:12:::0;;;10473:108;18693:13:::1;:17;::::0;18709:1:::1;18693:17;:::i;:::-;:23;;;;:::i;:::-;18672:16;:9:::0;18684:4:::1;18672:16;:::i;:::-;:45;;18664:122;;;::::0;;-1:-1:-1;;;18664:122:0;;13176:2:1;18664:122:0::1;::::0;::::1;13158:21:1::0;13195:18;;;13188:30;;;;13254:34;13234:18;;;13227:62;13325:34;13305:18;;;13298:62;13377:19;;18664:122:0::1;12974:428:1::0;18664:122:0::1;18815:16;:9:::0;18827:4:::1;18815:16;:::i;:::-;18797:15;:34:::0;-1:-1:-1;18584:255:0:o;18847:379::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;18978:6:::1;18958:13;10561:12:::0;;;10473:108;18958:13:::1;:17;::::0;18974:1:::1;18958:17;:::i;:::-;:26;;;;:::i;:::-;18938:16;:9:::0;18950:4:::1;18938:16;:::i;:::-;:46;;18930:121;;;::::0;-1:-1:-1;;;18930:121:0;;13609:2:1;18930:121:0::1;::::0;::::1;13591:21:1::0;13648:2;13628:18;;;13621:30;13687:34;13667:18;;;13660:62;13758:32;13738:18;;;13731:60;13808:19;;18930:121:0::1;13407:426:1::0;18930:121:0::1;19103:4;19083:13;10561:12:::0;;;10473:108;19083:13:::1;:17;::::0;19099:1:::1;19083:17;:::i;:::-;:24;;;;:::i;:::-;19070:9;:37;;19062:108;;;::::0;-1:-1:-1;;;19062:108:0;;14040:2:1;19062:108:0::1;::::0;::::1;14022:21:1::0;14079:2;14059:18;;;14052:30;14118:34;14098:18;;;14091:62;14189:28;14169:18;;;14162:56;14235:19;;19062:108:0::1;13838:422:1::0;19062:108:0::1;19202:16;:9:::0;19214:4:::1;19202:16;:::i;:::-;19181:18;:37:::0;-1:-1:-1;18847:379:0:o;18327:249::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;18454:3:::1;18434:13;10561:12:::0;;;10473:108;18434:13:::1;:17;::::0;18450:1:::1;18434:17;:::i;:::-;:23;;;;:::i;:::-;18413:16;:9:::0;18425:4:::1;18413:16;:::i;:::-;:45;;18405:120;;;::::0;-1:-1:-1;;;18405:120:0;;14467:2:1;18405:120:0::1;::::0;::::1;14449:21:1::0;14506:2;14486:18;;;14479:30;14545:34;14525:18;;;14518:62;14616:32;14596:18;;;14589:60;14666:19;;18405:120:0::1;14265:426:1::0;18405:120:0::1;18552:16;:9:::0;18564:4:::1;18552:16;:::i;:::-;18536:13;:32:::0;-1:-1:-1;18327:249:0:o;25196:304::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;25300:23:::1;::::0;;;::::1;;;25292:89;;;::::0;-1:-1:-1;;;25292:89:0;;14898:2:1;25292:89:0::1;::::0;::::1;14880:21:1::0;14937:2;14917:18;;;14910:30;14976:34;14956:18;;;14949:62;-1:-1:-1;;;15027:18:1;;;15020:51;15088:19;;25292:89:0::1;14696:417:1::0;25292:89:0::1;25397:9;25392:101;25408:20:::0;;::::1;25392:101;;;25475:6;25450:8;:22;25459:9;;25469:1;25459:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25450:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25450:22:0;:31;;-1:-1:-1;;25450:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25430:3:::1;::::0;::::1;:::i;:::-;;;25392:101;;;;25196:304:::0;;;:::o;14351:244::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14440:22:0;::::1;14432:73;;;::::0;-1:-1:-1;;;14432:73:0;;15592:2:1;14432:73:0::1;::::0;::::1;15574:21:1::0;15631:2;15611:18;;;15604:30;15670:34;15650:18;;;15643:62;-1:-1:-1;;;15721:18:1;;;15714:36;15767:19;;14432:73:0::1;15390:402:1::0;14432:73:0::1;14542:6;::::0;14521:38:::1;::::0;-1:-1:-1;;;;;14521:38:0;;::::1;::::0;14542:6:::1;::::0;14521:38:::1;::::0;14542:6:::1;::::0;14521:38:::1;14570:6;:17:::0;;-1:-1:-1;;;;;;14570:17:0::1;-1:-1:-1::0;;;;;14570:17:0;;;::::1;::::0;;;::::1;::::0;;14351:244::o;26449:160::-;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;26543:58:::1;::::0;26507:12:::1;::::0;26551:10:::1;::::0;26575:21:::1;::::0;26507:12;26543:58;26507:12;26543:58;26575:21;26551:10;26543:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25554:104:::0;14106:6;;-1:-1:-1;;;;;14106:6:0;9603:10;14106:22;14098:67;;;;-1:-1:-1;;;14098:67:0;;;;;;;:::i;:::-;25619:23:::1;:31:::0;;-1:-1:-1;;25619:31:0::1;::::0;;25554:104::o;13272:380::-;-1:-1:-1;;;;;13408:19:0;;13400:68;;;;-1:-1:-1;;;13400:68:0;;16209:2:1;13400:68:0;;;16191:21:1;16248:2;16228:18;;;16221:30;16287:34;16267:18;;;16260:62;-1:-1:-1;;;16338:18:1;;;16331:34;16382:19;;13400:68:0;16007:400:1;13400:68:0;-1:-1:-1;;;;;13487:21:0;;13479:68;;;;-1:-1:-1;;;13479:68:0;;16614:2:1;13479:68:0;;;16596:21:1;16653:2;16633:18;;;16626:30;16692:34;16672:18;;;16665:62;-1:-1:-1;;;16743:18:1;;;16736:32;16785:19;;13479:68:0;16412:398:1;13479:68:0;-1:-1:-1;;;;;13560:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13612:32;;1839:25:1;;;13612:32:0;;1812:18:1;13612:32:0;;;;;;;13272:380;;;:::o;20420:2801::-;20527:1;20518:6;:10;20510:51;;;;-1:-1:-1;;;20510:51:0;;17017:2:1;20510:51:0;;;16999:21:1;17056:2;17036:18;;;17029:30;17095;17075:18;;;17068:58;17143:18;;20510:51:0;16815:352:1;20510:51:0;-1:-1:-1;;;;;20581:14:0;;;;;;:8;:14;;;;;;;;20580:15;20572:65;;;;-1:-1:-1;;;20572:65:0;;17374:2:1;20572:65:0;;;17356:21:1;17413:2;17393:18;;;17386:30;17452:34;17432:18;;;17425:62;-1:-1:-1;;;17503:18:1;;;17496:35;17548:19;;20572:65:0;17172:401:1;20572:65:0;-1:-1:-1;;;;;20657:12:0;;;;;;:8;:12;;;;;;;;20656:13;20648:66;;;;-1:-1:-1;;;20648:66:0;;17780:2:1;20648:66:0;;;17762:21:1;17819:2;17799:18;;;17792:30;17858:34;17838:18;;;17831:62;-1:-1:-1;;;17909:18:1;;;17902:38;17957:19;;20648:66:0;17578:404:1;20648:66:0;20732:14;;;;20728:1203;;;14044:6;;-1:-1:-1;;;;;20767:15:0;;;14044:6;;20767:15;;;;:32;;-1:-1:-1;14044:6:0;;-1:-1:-1;;;;;20786:13:0;;;14044:6;;20786:13;;20767:32;:61;;;;-1:-1:-1;;;;;;20804:24:0;;;;;;:18;:24;;;;;;;;20803:25;20767:61;:88;;;;-1:-1:-1;;;;;;20833:22:0;;;;;;:18;:22;;;;;;;;20832:23;20767:88;20763:1157;;;20884:13;;;;;;;20876:61;;;;-1:-1:-1;;;20876:61:0;;18189:2:1;20876:61:0;;;18171:21:1;18228:2;18208:18;;;18201:30;18267:34;18247:18;;;18240:62;-1:-1:-1;;;18318:18:1;;;18311:33;18361:19;;20876:61:0;17987:399:1;20876:61:0;20981:1;20960:18;;:22;:74;;;;;21023:10;;21002:18;;:31;;;;:::i;:::-;20986:12;:48;20960:74;20956:143;;;-1:-1:-1;;;;;21060:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;21060:19:0;21075:4;21060:19;;;20956:143;-1:-1:-1;;;;;21145:31:0;;;;;;:25;:31;;;;;;;;:60;;;;-1:-1:-1;;;;;;21181:24:0;;;;;;:20;:24;;;;;;;;21180:25;21145:60;21141:764;;;21248:12;;21238:6;:22;;21230:87;;;;-1:-1:-1;;;21230:87:0;;18593:2:1;21230:87:0;;;18575:21:1;18632:2;18612:18;;;18605:30;18671:34;18651:18;;;18644:62;-1:-1:-1;;;18722:18:1;;;18715:50;18782:19;;21230:87:0;18391:416:1;21230:87:0;21374:15;;-1:-1:-1;;;;;10690:18:0;;10663:7;10690:18;;;;;;;;;;;21348:22;;:6;:22;:::i;:::-;:41;;21340:101;;;;-1:-1:-1;;;21340:101:0;;;;;;;:::i;:::-;21141:764;;;-1:-1:-1;;;;;21513:29:0;;;;;;:25;:29;;;;;;;;:60;;;;-1:-1:-1;;;;;;21547:26:0;;;;;;:20;:26;;;;;;;;21546:27;21513:60;21509:396;;;21616:13;;21606:6;:23;;21598:89;;;;-1:-1:-1;;;21598:89:0;;19430:2:1;21598:89:0;;;19412:21:1;19469:2;19449:18;;;19442:30;19508:34;19488:18;;;19481:62;-1:-1:-1;;;19559:18:1;;;19552:51;19620:19;;21598:89:0;19228:417:1;21509:396:0;-1:-1:-1;;;;;21735:24:0;;;;;;:20;:24;;;;;;;;21730:175;;21818:15;;-1:-1:-1;;;;;10690:18:0;;10663:7;10690:18;;;;;;;;;;;21792:22;;:6;:22;:::i;:::-;:41;;21784:101;;;;-1:-1:-1;;;21784:101:0;;;;;;;:::i;:::-;21992:4;21943:28;10690:18;;;;;;;;;;;22048;;22024:42;;;;;;;22080:22;;-1:-1:-1;22091:11:0;;;;;;;22080:22;:36;;;;-1:-1:-1;22107:9:0;;;;22106:10;22080:36;:72;;;;-1:-1:-1;;;;;;22121:31:0;;;;;;:25;:31;;;;;;;;22120:32;22080:72;:101;;;;-1:-1:-1;;;;;;22157:24:0;;;;;;:18;:24;;;;;;;;22156:25;22080:101;:128;;;;-1:-1:-1;;;;;;22186:22:0;;;;;;:18;:22;;;;;;;;22185:23;22080:128;22077:234;;;22225:9;:16;;-1:-1:-1;;22225:16:0;22237:4;22225:16;;;22256:11;:9;:11::i;:::-;22282:9;:17;;-1:-1:-1;;22282:17:0;;;22077:234;-1:-1:-1;;;;;22389:24:0;;22323:11;22389:24;;;:18;:24;;;;;;22323:11;;22389:24;;22388:25;:52;;;;-1:-1:-1;;;;;;22418:22:0;;;;;;:18;:22;;;;;;;;22417:23;22388:52;22385:783;;;22512:1;22491:18;;:22;:74;;;;;22554:10;;22533:18;;:31;;;;:::i;:::-;22517:12;:48;22491:74;22487:525;;;22617:3;22603:11;:6;22612:2;22603:11;:::i;:::-;:17;;;;:::i;:::-;22661:16;;22587:33;;-1:-1:-1;22639:54:0;;22655:4;;-1:-1:-1;;;;;22661:16:0;22587:33;22639:15;:54::i;:::-;22487:525;;;-1:-1:-1;;;;;22753:29:0;;;;;;:25;:29;;;;;;;;:44;;;;;22796:1;22786:7;;:11;22753:44;22749:263;;;22842:3;22832:7;;22823:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;22817:28;;22749:263;;;-1:-1:-1;;;;;22903:31:0;;;;;;:25;:31;;;;;;;;:45;;;;;22947:1;22938:6;;:10;22903:45;22900:112;;;22993:3;22984:6;;22975;:15;;;;:::i;:::-;:21;;;;:::i;:::-;22969:27;;22900:112;23029:7;;23026:87;;23056:41;23072:4;23086;23093:3;23056:15;:41::i;:::-;23137:19;23143:13;23137:3;:19;:::i;:::-;23127:29;;;;:::i;:::-;;;22385:783;23180:33;23196:4;23202:2;23206:6;23180:15;:33::i;:::-;20499:2722;;;;20420:2801;;;:::o;25666:448::-;25750:4;25706:23;10690:18;;;;;;;;;;;;25771:20;;;25767:59;;25808:7;25666:448::o;25767:59::-;25858:18;;;:23;;;:::i;:::-;25840:15;:41;25836:115;;;25916:18;;;:23;;;:::i;:::-;25898:41;;25836:115;25961:34;25979:15;25961:17;:34::i;:::-;26050:16;;26042:64;;26006:12;;-1:-1:-1;;;;;26050:16:0;;26080:21;;26006:12;26042:64;26006:12;26042:64;26080:21;26050:16;26042:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25666:448:0:o;12363:602::-;-1:-1:-1;;;;;12503:20:0;;12495:70;;;;-1:-1:-1;;;12495:70:0;;19985:2:1;12495:70:0;;;19967:21:1;20024:2;20004:18;;;19997:30;20063:34;20043:18;;;20036:62;-1:-1:-1;;;20114:18:1;;;20107:35;20159:19;;12495:70:0;19783:401:1;12495:70:0;-1:-1:-1;;;;;12584:23:0;;12576:71;;;;-1:-1:-1;;;12576:71:0;;20391:2:1;12576:71:0;;;20373:21:1;20430:2;20410:18;;;20403:30;20469:34;20449:18;;;20442:62;-1:-1:-1;;;20520:18:1;;;20513:33;20563:19;;12576:71:0;20189:399:1;12576:71:0;-1:-1:-1;;;;;12684:17:0;;12660:21;12684:17;;;;;;;;;;;12720:23;;;;12712:74;;;;-1:-1:-1;;;12712:74:0;;20795:2:1;12712:74:0;;;20777:21:1;20834:2;20814:18;;;20807:30;20873:34;20853:18;;;20846:62;-1:-1:-1;;;20924:18:1;;;20917:36;20970:19;;12712:74:0;20593:402:1;12712:74:0;-1:-1:-1;;;;;12814:17:0;;;:9;:17;;;;;;;;;;;12834:22;;;12814:42;;12874:20;;;;;;;;:30;;12850:6;;12814:9;12874:30;;12850:6;;12874:30;:::i;:::-;;;;;;;;12939:9;-1:-1:-1;;;;;12922:35:0;12931:6;-1:-1:-1;;;;;12922:35:0;;12950:6;12922:35;;;;1839:25:1;;1827:2;1812:18;;1693:177;12922:35:0;;;;;;;;12484:481;12363:602;;;:::o;23229:472::-;23320:16;;;23334:1;23320:16;;;;;;;;23296:21;;23320:16;;;;;;;;;;-1:-1:-1;23320:16:0;23296:40;;23365:4;23347;23352:1;23347:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;23347:23:0;;;-1:-1:-1;;;;;23347:23:0;;;;;23391:15;-1:-1:-1;;;;;23391:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23381:4;23386:1;23381:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;23381:32:0;;;-1:-1:-1;;;;;23381:32:0;;;;;23424:62;23441:4;23456:15;23474:11;23424:8;:62::i;:::-;23497:196;;-1:-1:-1;;;23497:196:0;;-1:-1:-1;;;;;23497:15:0;:66;;;;:196;;23578:11;;23604:1;;23620:4;;23647;;23667:15;;23497:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23285:416;23229:472;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;:::-;1451:5;1215:247;-1:-1:-1;;;1215:247:1:o;1875:180::-;1934:6;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;-1:-1:-1;2026:23:1;;1875:180;-1:-1:-1;1875:180:1:o;2060:456::-;2137:6;2145;2153;2206:2;2194:9;2185:7;2181:23;2177:32;2174:52;;;2222:1;2219;2212:12;2174:52;2261:9;2248:23;2280:31;2305:5;2280:31;:::i;:::-;2330:5;-1:-1:-1;2387:2:1;2372:18;;2359:32;2400:33;2359:32;2400:33;:::i;:::-;2060:456;;2452:7;;-1:-1:-1;;;2506:2:1;2491:18;;;;2478:32;;2060:456::o;2918:118::-;3004:5;2997:13;2990:21;2983:5;2980:32;2970:60;;3026:1;3023;3016:12;3041:309;3106:6;3114;3167:2;3155:9;3146:7;3142:23;3138:32;3135:52;;;3183:1;3180;3173:12;3135:52;3222:9;3209:23;3241:28;3263:5;3241:28;:::i;3355:382::-;3420:6;3428;3481:2;3469:9;3460:7;3456:23;3452:32;3449:52;;;3497:1;3494;3487:12;3449:52;3536:9;3523:23;3555:31;3580:5;3555:31;:::i;:::-;3605:5;-1:-1:-1;3662:2:1;3647:18;;3634:32;3675:30;3634:32;3675:30;:::i;:::-;3724:7;3714:17;;;3355:382;;;;;:::o;3742:388::-;3810:6;3818;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3926:9;3913:23;3945:31;3970:5;3945:31;:::i;:::-;3995:5;-1:-1:-1;4052:2:1;4037:18;;4024:32;4065:33;4024:32;4065:33;:::i;4135:750::-;4227:6;4235;4243;4296:2;4284:9;4275:7;4271:23;4267:32;4264:52;;;4312:1;4309;4302:12;4264:52;4352:9;4339:23;4381:18;4422:2;4414:6;4411:14;4408:34;;;4438:1;4435;4428:12;4408:34;4476:6;4465:9;4461:22;4451:32;;4521:7;4514:4;4510:2;4506:13;4502:27;4492:55;;4543:1;4540;4533:12;4492:55;4583:2;4570:16;4609:2;4601:6;4598:14;4595:34;;;4625:1;4622;4615:12;4595:34;4680:7;4673:4;4663:6;4660:1;4656:14;4652:2;4648:23;4644:34;4641:47;4638:67;;;4701:1;4698;4691:12;4638:67;4732:4;4724:13;;;;-1:-1:-1;4756:6:1;-1:-1:-1;;4797:20:1;;4784:34;4827:28;4784:34;4827:28;:::i;:::-;4874:5;4864:15;;;4135:750;;;;;:::o;4890:380::-;4969:1;4965:12;;;;5012;;;5033:61;;5087:4;5079:6;5075:17;5065:27;;5033:61;5140:2;5132:6;5129:14;5109:18;5106:38;5103:161;;5186:10;5181:3;5177:20;5174:1;5167:31;5221:4;5218:1;5211:15;5249:4;5246:1;5239:15;5103:161;;4890:380;;;:::o;5275:356::-;5477:2;5459:21;;;5496:18;;;5489:30;5555:34;5550:2;5535:18;;5528:62;5622:2;5607:18;;5275:356::o;6871:127::-;6932:10;6927:3;6923:20;6920:1;6913:31;6963:4;6960:1;6953:15;6987:4;6984:1;6977:15;7003:168;7076:9;;;7107;;7124:15;;;7118:22;;7104:37;7094:71;;7145:18;;:::i;7176:217::-;7216:1;7242;7232:132;;7286:10;7281:3;7277:20;7274:1;7267:31;7321:4;7318:1;7311:15;7349:4;7346:1;7339:15;7232:132;-1:-1:-1;7378:9:1;;7176:217::o;7828:125::-;7893:9;;;7914:10;;;7911:36;;;7927:18;;:::i;10010:184::-;10080:6;10133:2;10121:9;10112:7;10108:23;10104:32;10101:52;;;10149:1;10146;10139:12;10101:52;-1:-1:-1;10172:16:1;;10010:184;-1:-1:-1;10010:184:1:o;10478:245::-;10545:6;10598:2;10586:9;10577:7;10573:23;10569:32;10566:52;;;10614:1;10611;10604:12;10566:52;10646:9;10640:16;10665:28;10687:5;10665:28;:::i;11581:251::-;11651:6;11704:2;11692:9;11683:7;11679:23;11675:32;11672:52;;;11720:1;11717;11710:12;11672:52;11752:9;11746:16;11771:31;11796:5;11771:31;:::i;15118:127::-;15179:10;15174:3;15170:20;15167:1;15160:31;15210:4;15207:1;15200:15;15234:4;15231:1;15224:15;15250:135;15289:3;15310:17;;;15307:43;;15330:18;;:::i;:::-;-1:-1:-1;15377:1:1;15366:13;;15250:135::o;18812:411::-;19014:2;18996:21;;;19053:2;19033:18;;;19026:30;19092:34;19087:2;19072:18;;19065:62;-1:-1:-1;;;19158:2:1;19143:18;;19136:45;19213:3;19198:19;;18812:411::o;19650:128::-;19717:9;;;19738:11;;;19735:37;;;19752:18;;:::i;21132:980::-;21394:4;21442:3;21431:9;21427:19;21473:6;21462:9;21455:25;21499:2;21537:6;21532:2;21521:9;21517:18;21510:34;21580:3;21575:2;21564:9;21560:18;21553:31;21604:6;21639;21633:13;21670:6;21662;21655:22;21708:3;21697:9;21693:19;21686:26;;21747:2;21739:6;21735:15;21721:29;;21768:1;21778:195;21792:6;21789:1;21786:13;21778:195;;;21857:13;;-1:-1:-1;;;;;21853:39:1;21841:52;;21948:15;;;;21913:12;;;;21889:1;21807:9;21778:195;;;-1:-1:-1;;;;;;;22029:32:1;;;;22024:2;22009:18;;22002:60;-1:-1:-1;;;22093:3:1;22078:19;22071:35;21990:3;21132:980;-1:-1:-1;;;21132:980:1:o

Swarm Source

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