ETH Price: $2,628.33 (+5.84%)
Gas: 5 Gwei

Token

Oracul AI (ORACUL)
 

Overview

Max Total Supply

1,000,000,000 ORACUL

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,000,000 ORACUL

Value
$0.00
0xaa67ee4a64ca4ffca3b1d873f784fb29c88dd50a
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:
OraculAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-30
*/

/**
  .oooooo.                                            oooo             .o.       ooooo 
 d8P'  `Y8b                                           `888            .888.      `888' 
888      888 oooo d8b  .oooo.    .ooooo.  oooo  oooo   888           .8"888.      888  
888      888 `888""8P `P  )88b  d88' `"Y8 `888  `888   888          .8' `888.     888  
888      888  888      .oP"888  888        888   888   888         .88ooo8888.    888  
`88b    d88'  888     d8(  888  888   .o8  888   888   888        .8'     `888.   888  
 `Y8bood8P'  d888b    `Y888""8o `Y8bod8P'  `V88V"V8P' o888o      o88o     o8888o o888o 

                                Website: https://oracul.co/
                                Twitter: https://x.com/Oracul_ai
                                Telegram: https://t.me/oracul_ai
**/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Ownable {
    address private _owner;

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

library SafeERC20 {
    function safeTransfer(address token, address to, uint256 value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED');
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external;
}

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

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

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 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);
}

contract OraculAI is Ownable {
    string private constant _name = unicode"Oracul AI";
    string private constant _symbol = unicode"ORACUL";
    uint256 private constant _totalSupply = 1000000000 * 1e18;

    uint256 public maxTransactionAmount = 15000000 * 1e18;
    uint256 public maxWallet = 15000000 * 1e18;
    uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000;

    address private revpoolWallet = 0x569D875B6979C14146baf4d15F93aB067Cbd72e4;
    address private marketingWallet = 0xd20a51ca232c76813559EaEE56C948D955ED2C30;
    address private teamWallet = 0x9FfAe03A6ff64bE4213ef3944D001aDCa9bFD406;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    uint8 public buyTotalFees = 40;
    uint8 public sellTotalFees = 40;

    uint8 public revpoolFee = 10;
    uint8 public marketingFee = 70;
    uint8 public teamFee = 20;

    bool private swapping;
    bool public limitsInEffect = true;
    bool private launched;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 revpoolETH, uint256 MarketingETH);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH);
        automatedMarketMakerPairs[uniswapV2Pair] = true;

        address airdropWallet = 0x0140247b2cC651728D034d21013F66668F4b793b;

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(teamWallet, true);
        setExcludedFromFees(revpoolWallet, true);
        setExcludedFromFees(marketingWallet, true);

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(teamWallet, true);
        setExcludedFromMaxTransaction(revpoolWallet, true);
        setExcludedFromMaxTransaction(marketingWallet, true);

        _balances[msg.sender] = 50000000 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
        _balances[marketingWallet] = 75000000 * 1e18;
        emit Transfer(address(0), marketingWallet, _balances[marketingWallet]);
        _balances[airdropWallet] = 125000000 * 1e18;
        emit Transfer(address(0), airdropWallet, _balances[airdropWallet]);
        _balances[address(this)] = 750000000 * 1e18;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    receive() external payable {}

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

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

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

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

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

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

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, msg.sender, currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!launched && (from != owner() && from != address(this) && to != owner())) {
            revert("Trading not enabled");
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
            }

            if (fees > 0) {
                unchecked {
                    amount = amount - fees;
                    _balances[from] -= fees;
                    _balances[address(this)] += fees;
                }
                emit Transfer(from, address(this), fees);
            }
        }
        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
    }

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

    function setDistributionFees(uint8 _RevPoolFee, uint8 _MarketingFee, uint8 _teamFee) external onlyOwner {
        revpoolFee = _RevPoolFee;
        marketingFee = _MarketingFee;
        teamFee = _teamFee;
        require((revpoolFee + marketingFee + teamFee) == 100, "Distribution have to be equal to 100%");
    }

    function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner {
        require(_buyTotalFees <= 5, "Buy fees must be less than or equal to 5%");
        require(_sellTotalFees <= 5, "Sell fees must be less than or equal to 5%");
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

    function setExcludedFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner {
        _isExcludedMaxTransactionAmount[account] = excluded;
    }

    function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        require(!launched, "Already launched");
        for (uint256 i = 0; i < addresses.length; i++) {
            require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance");
            _balances[addresses[i]] += amounts[i];
            _balances[msg.sender] -= amounts[i];
            emit Transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function openTrade() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    function LaunchOraculAI() external payable onlyOwner {
        require(!launched, "Already launched");
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            teamWallet,
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed");
        automatedMarketMakerPairs[pair] = value;
    }

    function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner {
        require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply");
        require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply");
        swapTokensAtAmount = newSwapAmount;
    }

    function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner {
        require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%");
        maxTransactionAmount = newMaxTx * (10**18);
    }

    function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%");
        maxWallet = newMaxWallet * (10**18);
    }

    function updateRevPoolWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        revpoolWallet = newAddress;
    }

    function updateMarketingWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        marketingWallet = newAddress;
    }

    function updateTeamWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        teamWallet = newAddress;
    }

    function excludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function withdrawStuckToken(address token, address to) external onlyOwner {
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer
    }

    function withdrawStuckETH(address addr) external onlyOwner {
        require(addr != address(0), "Invalid address");

        (bool success, ) = addr.call{value: address(this).balance}("");
        require(success, "Withdrawal failed");
    }

    function swapBack() private {
        uint256 swapThreshold = swapTokensAtAmount;
        bool success;

        if (balanceOf(address(this)) > swapTokensAtAmount * 20) {
            swapThreshold = swapTokensAtAmount * 20;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp);

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            uint256 ethForRevPool = (ethBalance * revpoolFee) / 100;
            uint256 ethForTeam = (ethBalance * teamFee) / 100;
            uint256 ethForMarketing = ethBalance - ethForRevPool - ethForTeam;

            (success, ) = address(teamWallet).call{value: ethForTeam}("");
            (success, ) = address(marketingWallet).call{value: ethForMarketing}("");
            (success, ) = address(revpoolWallet).call{value: ethForRevPool}("");

            emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRevPool, ethForMarketing);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revpoolETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"MarketingETH","type":"uint256"}],"name":"SwapAndLiquify","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":"LaunchOraculAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","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":"revpoolFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevPoolFee","type":"uint8"},{"internalType":"uint8","name":"_MarketingFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevPoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a0c685fa11e01ec6f0000006001556a0c685fa11e01ec6f0000006002556127106b033b2e3c9fd0803ce80000006002620000409190620006d7565b6200004c919062000701565b600355600480546001600160a01b031990811673569d875b6979c14146baf4d15f93ab067cbd72e4179091556005805490911673d20a51ca232c76813559eaee56c948d955ed2c30179055600680547a010014460a28289ffae03a6ff64be4213ef3944d001adca9bfd406600161ff0160c81b0319909116179055348015620000d3575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000134573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015a919062000721565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000721565b6001600160a01b031660808190525f908152600b60205260409020805460ff19166001179055730140247b2cc651728d034d21013f66668f4b793b62000239620002315f546001600160a01b031690565b6001620004a6565b62000246306001620004a6565b6200025561dead6001620004a6565b6006546200026e906001600160a01b03166001620004a6565b60045462000287906001600160a01b03166001620004a6565b600554620002a0906001600160a01b03166001620004a6565b620002be620002b65f546001600160a01b031690565b60016200052d565b620002df737a250d5630b4cf539739df2c5dacb4c659f2488d60016200052d565b620002ec3060016200052d565b620002fb61dead60016200052d565b6080516200030b9060016200052d565b60065462000324906001600160a01b031660016200052d565b6004546200033d906001600160a01b031660016200052d565b60055462000356906001600160a01b031660016200052d565b335f8181526007602090815260408083206a295be96e640669720000009081905590519081525f8051602062003161833981519152910160405180910390a3600580546001600160a01b039081165f908152600760205260408082206a3e09de2596099e2b0000009055925490911680825282822054925190925f805160206200316183398151915291620003ed91815260200190565b60405180910390a36001600160a01b0381165f8181526007602090815260408083206a6765c793fa10079d0000009081905590519081525f8051602062003161833981519152910160405180910390a3305f8181526007602090815260408083206b026c62ad77dc602dae0000009081905590519081525f8051602062003161833981519152910160405180910390a36200049f30737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620005b0565b5062000750565b33620004b95f546001600160a01b031690565b6001600160a01b031614620005035760405162461bcd60e51b815260206004820181905260248201525f805160206200314183398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33620005405f546001600160a01b031690565b6001600160a01b031614620005865760405162461bcd60e51b815260206004820181905260248201525f80516020620031418339815191526044820152606401620004fa565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b038316620006145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004fa565b6001600160a01b038216620006775760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004fa565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8082028115828204841417620006fb57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200071c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000732575f80fd5b81516001600160a01b038116811462000749575f80fd5b9392505050565b6080516129d1620007705f395f81816103ab0152610fe101526129d15ff3fe608060405260043610610236575f3560e01c8063751039fc11610129578063c8c8ebe4116100a8578063e2f456051161006d578063e2f4560514610737578063e71079471461074c578063f11741c81461076b578063f8b45b0514610773578063fb201b1d14610788575f80fd5b8063c8c8ebe41461067f578063d201b01e14610694578063d7c94efd146106b3578063d85ba063146106d3578063dd62ed3e146106f3575f80fd5b80639a7a23d6116100ee5780639a7a23d6146105e4578063a8eee5fd14610603578063a9059cbb14610622578063aacebbe314610641578063bc205ad314610660575f80fd5b8063751039fc146105305780637cb332bb1461054457806385ecafd7146105635780638da5cb5b1461059a57806395d89b41146105b6575f80fd5b80634fcd2446116101b55780636b67c4df1161017a5780636b67c4df146104895780636ed7ea84146104a957806370a08231146104c9578063715018a6146104fd57806374010ece14610511575f80fd5b80634fcd2446146103ed578063590ffdce1461040c5780636402511e1461042b57806366650dae1461044a5780636a486a8e14610469575f80fd5b806327a14fc2116101fb57806327a14fc214610339578063313ce5671461035a5780633c090c461461037b57806349bd5a5e1461039a5780634a62bb65146103cd575f80fd5b806306fdde0314610241578063095ea7b3146102845780631694505e146102b357806318160ddd146102f257806323b872dd1461031a575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b506040805180820190915260098152684f726163756c20414960b81b60208201525b60405161027b91906123cd565b60405180910390f35b34801561028f575f80fd5b506102a361029e36600461241a565b61079c565b604051901515815260200161027b565b3480156102be575f80fd5b506102da737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161027b565b3480156102fd575f80fd5b506b033b2e3c9fd0803ce80000005b60405190815260200161027b565b348015610325575f80fd5b506102a3610334366004612442565b6107b2565b348015610344575f80fd5b5061035861035336600461247b565b610866565b005b348015610365575f80fd5b5060125b60405160ff909116815260200161027b565b348015610386575f80fd5b506103586103953660046124a2565b61094a565b3480156103a5575f80fd5b506102da7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d8575f80fd5b506006546102a390600160d01b900460ff1681565b3480156103f8575f80fd5b506103586104073660046124e2565b610a52565b348015610417575f80fd5b50610358610426366004612523565b610b8b565b348015610436575f80fd5b5061035861044536600461247b565b610bed565b348015610455575f80fd5b50610358610464366004612523565b610d4c565b348015610474575f80fd5b5060065461036990600160a81b900460ff1681565b348015610494575f80fd5b5060065461036990600160b81b900460ff1681565b3480156104b4575f80fd5b5060065461036990600160b01b900460ff1681565b3480156104d4575f80fd5b5061030c6104e3366004612558565b6001600160a01b03165f9081526007602052604090205490565b348015610508575f80fd5b50610358610dae565b34801561051c575f80fd5b5061035861052b36600461247b565b610df7565b34801561053b575f80fd5b50610358610ee0565b34801561054f575f80fd5b5061035861055e366004612558565b610f27565b34801561056e575f80fd5b506102a361057d366004612558565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156105a5575f80fd5b505f546001600160a01b03166102da565b3480156105c1575f80fd5b5060408051808201909152600681526513d49050d55360d21b602082015261026e565b3480156105ef575f80fd5b506103586105fe366004612523565b610fa7565b34801561060e575f80fd5b5061035861061d366004612558565b61108a565b34801561062d575f80fd5b506102a361063c36600461241a565b61110a565b34801561064c575f80fd5b5061035861065b366004612558565b611116565b34801561066b575f80fd5b5061035861067a366004612578565b611196565b34801561068a575f80fd5b5061030c60015481565b34801561069f575f80fd5b506103586106ae366004612558565b611243565b3480156106be575f80fd5b5060065461036990600160c01b900460ff1681565b3480156106de575f80fd5b5060065461036990600160a01b900460ff1681565b3480156106fe575f80fd5b5061030c61070d366004612578565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610742575f80fd5b5061030c60035481565b348015610757575f80fd5b50610358610766366004612670565b61135a565b610358611571565b34801561077e575f80fd5b5061030c60025481565b348015610793575f80fd5b50610358611684565b5f6107a83384846116fb565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19811461085057828110156108435760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61085085338584036116fb565b61085b85858561181e565b506001949350505050565b336108785f546001600160a01b031690565b6001600160a01b03161461089e5760405162461bcd60e51b815260040161083a9061272a565b670de0b6b3a76400006103e86108c16b033b2e3c9fd0803ce80000006001612773565b6108cb919061278a565b6108d5919061278a565b8110156109325760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b606482015260840161083a565b61094481670de0b6b3a7640000612773565b60025550565b3361095c5f546001600160a01b031690565b6001600160a01b0316146109825760405162461bcd60e51b815260040161083a9061272a565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b8685168102919091179485905584048316936109e3939181048216929004166127a9565b6109ed91906127a9565b60ff16606414610a4d5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b606482015260840161083a565b505050565b33610a645f546001600160a01b031690565b6001600160a01b031614610a8a5760405162461bcd60e51b815260040161083a9061272a565b60058260ff161115610af05760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b606482015260840161083a565b60058160ff161115610b575760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b606482015260840161083a565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610b9d5f546001600160a01b031690565b6001600160a01b031614610bc35760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610bff5f546001600160a01b031690565b6001600160a01b031614610c255760405162461bcd60e51b815260040161083a9061272a565b620186a0610c406b033b2e3c9fd0803ce80000006001612773565b610c4a919061278a565b811015610cb75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b606482015260840161083a565b6103e8610cd16b033b2e3c9fd0803ce80000006005612773565b610cdb919061278a565b811115610d475760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b606482015260840161083a565b600355565b33610d5e5f546001600160a01b031690565b6001600160a01b031614610d845760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610dc05f546001600160a01b031690565b6001600160a01b031614610de65760405162461bcd60e51b815260040161083a9061272a565b5f80546001600160a01b0319169055565b33610e095f546001600160a01b031690565b6001600160a01b031614610e2f5760405162461bcd60e51b815260040161083a9061272a565b670de0b6b3a76400006103e8610e526b033b2e3c9fd0803ce80000006001612773565b610e5c919061278a565b610e66919061278a565b811015610ec85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b606482015260840161083a565b610eda81670de0b6b3a7640000612773565b60015550565b33610ef25f546001600160a01b031690565b6001600160a01b031614610f185760405162461bcd60e51b815260040161083a9061272a565b6006805460ff60d01b19169055565b33610f395f546001600160a01b031690565b6001600160a01b031614610f5f5760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b038116610f855760405162461bcd60e51b815260040161083a906127c2565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fb95f546001600160a01b031690565b6001600160a01b031614610fdf5760405162461bcd60e51b815260040161083a9061272a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110605760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f766564000000000000604482015260640161083a565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b3361109c5f546001600160a01b031690565b6001600160a01b0316146110c25760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b0381166110e85760405162461bcd60e51b815260040161083a906127c2565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f6107a833848461181e565b336111285f546001600160a01b031690565b6001600160a01b03161461114e5760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b0381166111745760405162461bcd60e51b815260040161083a906127c2565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336111a85f546001600160a01b031690565b6001600160a01b0316146111ce5760405162461bcd60e51b815260040161083a9061272a565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611212573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123691906127f2565b9050610a4d838383611f95565b336112555f546001600160a01b031690565b6001600160a01b03161461127b5760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b0381166112c35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161083a565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461130c576040519150601f19603f3d011682016040523d82523d5f602084013e611311565b606091505b50509050806113565760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b604482015260640161083a565b5050565b3361136c5f546001600160a01b031690565b6001600160a01b0316146113925760405162461bcd60e51b815260040161083a9061272a565b600654600160d81b900460ff16156113bc5760405162461bcd60e51b815260040161083a90612809565b5f5b8251811015610a4d578181815181106113d9576113d9612833565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205410156114235760405162461bcd60e51b815260040161083a90612847565b81818151811061143557611435612833565b602002602001015160075f85848151811061145257611452612833565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611487919061288d565b925050819055508181815181106114a0576114a0612833565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546114d991906128a0565b925050819055508281815181106114f2576114f2612833565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84848151811061154057611540612833565b602002602001015160405161155791815260200190565b60405180910390a380611569816128b3565b9150506113be565b336115835f546001600160a01b031690565b6001600160a01b0316146115a95760405162461bcd60e51b815260040161083a9061272a565b600654600160d81b900460ff16156115d35760405162461bcd60e51b815260040161083a90612809565b305f8181526007602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561165f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a4d91906128cb565b336116965f546001600160a01b031690565b6001600160a01b0316146116bc5760405162461bcd60e51b815260040161083a9061272a565b600654600160d81b900460ff16156116e65760405162461bcd60e51b815260040161083a90612809565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b03831661175d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083a565b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083a565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161083a565b6001600160a01b0382166118e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161083a565b5f81116119455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161083a565b600654600160d81b900460ff1615801561199957505f546001600160a01b0384811691161480159061198057506001600160a01b0383163014155b801561199957505f546001600160a01b03838116911614155b156119dc5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161083a565b600654600160d01b900460ff1615611c9d575f546001600160a01b03848116911614801590611a1857505f546001600160a01b03838116911614155b8015611a2c57506001600160a01b03821615155b8015611a4357506001600160a01b03821661dead14155b8015611a595750600654600160c81b900460ff16155b15611c9d576001600160a01b0383165f908152600b602052604090205460ff168015611a9d57506001600160a01b0382165f908152600a602052604090205460ff16155b15611b7057600154811115611b025760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b606482015260840161083a565b6002546001600160a01b0383165f90815260076020526040902054611b27908361288d565b1115611b6b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083a565b611c9d565b6001600160a01b0382165f908152600b602052604090205460ff168015611baf57506001600160a01b0383165f908152600a602052604090205460ff16155b15611c1557600154811115611b6b5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b606482015260840161083a565b6001600160a01b0382165f908152600a602052604090205460ff16611c9d576002546001600160a01b0383165f90815260076020526040902054611c59908361288d565b1115611c9d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083a565b600354305f90815260076020526040902054108015908190611cc95750600654600160c81b900460ff16155b8015611ced57506001600160a01b0384165f908152600b602052604090205460ff16155b8015611d1157506001600160a01b0384165f9081526009602052604090205460ff16155b8015611d3557506001600160a01b0383165f9081526009602052604090205460ff16155b15611d63576006805460ff60c81b1916600160c81b179055611d556120bc565b6006805460ff60c81b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c81b909204821615911680611daf57506001600160a01b0384165f9081526009602052604090205460ff165b15611db757505f5b6001600160a01b0385165f9081526007602052604090205483811015611def5760405162461bcd60e51b815260040161083a90612847565b5f8215611f23576001600160a01b0386165f908152600b602052604090205460ff168015611e285750600654600160a81b900460ff1615155b15611e5857600654606490611e4790600160a81b900460ff1687612773565b611e51919061278a565b9050611eb6565b6001600160a01b0387165f908152600b602052604090205460ff168015611e8a5750600654600160a01b900460ff1615155b15611eb657600654606490611ea990600160a01b900460ff1687612773565b611eb3919061278a565b90505b8015611f23576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f849089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611ff091906128f6565b5f604051808303815f865af19150503d805f8114612029576040519150601f19603f3d011682016040523d82523d5f602084013e61202e565b606091505b50915091508180156120585750805115806120585750808060200190518101906120589190612911565b6120b55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b606482015260840161083a565b5050505050565b6003545f6120cb826014612773565b305f9081526007602052604090205411156120f1576003546120ee906014612773565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061212457612124612833565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061216c5761216c612833565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121c39086905f9086903090429060040161292c565b5f604051808303815f87803b1580156121da575f80fd5b505af11580156121ec573d5f803e3d5ffd5b5047925050811590506123a5576006545f9060649061221590600160b01b900460ff1684612773565b61221f919061278a565b6006549091505f9060649061223e90600160c01b900460ff1685612773565b612248919061278a565b90505f8161225684866128a0565b61226091906128a0565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146122ab576040519150601f19603f3d011682016040523d82523d5f602084013e6122b0565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f81146122fd576040519150601f19603f3d011682016040523d82523d5f602084013e612302565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461234f576040519150601f19603f3d011682016040523d82523d5f602084013e612354565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156123c55781810151838201526020016123ad565b50505f910152565b602081525f82518060208401526123eb8160408501602087016123ab565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612415575f80fd5b919050565b5f806040838503121561242b575f80fd5b612434836123ff565b946020939093013593505050565b5f805f60608486031215612454575f80fd5b61245d846123ff565b925061246b602085016123ff565b9150604084013590509250925092565b5f6020828403121561248b575f80fd5b5035919050565b803560ff81168114612415575f80fd5b5f805f606084860312156124b4575f80fd5b6124bd84612492565b92506124cb60208501612492565b91506124d960408501612492565b90509250925092565b5f80604083850312156124f3575f80fd5b6124fc83612492565b915061250a60208401612492565b90509250929050565b8015158114612520575f80fd5b50565b5f8060408385031215612534575f80fd5b61253d836123ff565b9150602083013561254d81612513565b809150509250929050565b5f60208284031215612568575f80fd5b612571826123ff565b9392505050565b5f8060408385031215612589575f80fd5b612592836123ff565b915061250a602084016123ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125dd576125dd6125a0565b604052919050565b5f67ffffffffffffffff8211156125fe576125fe6125a0565b5060051b60200190565b5f82601f830112612617575f80fd5b8135602061262c612627836125e5565b6125b4565b82815260059290921b8401810191818101908684111561264a575f80fd5b8286015b84811015612665578035835291830191830161264e565b509695505050505050565b5f8060408385031215612681575f80fd5b823567ffffffffffffffff80821115612698575f80fd5b818501915085601f8301126126ab575f80fd5b813560206126bb612627836125e5565b82815260059290921b840181019181810190898411156126d9575f80fd5b948201945b838610156126fe576126ef866123ff565b825294820194908201906126de565b96505086013592505080821115612713575f80fd5b5061272085828601612608565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ac576107ac61275f565b5f826127a457634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107ac576107ac61275f565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612802575f80fd5b5051919050565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107ac576107ac61275f565b818103818111156107ac576107ac61275f565b5f600182016128c4576128c461275f565b5060010190565b5f805f606084860312156128dd575f80fd5b8351925060208401519150604084015190509250925092565b5f82516129078184602087016123ab565b9190910192915050565b5f60208284031215612921575f80fd5b815161257181612513565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561297a5784516001600160a01b031683529383019391830191600101612955565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a2db65388e71e61f80468c687e23eed057c17e951866fc3364fe961ad1813e3564736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405260043610610236575f3560e01c8063751039fc11610129578063c8c8ebe4116100a8578063e2f456051161006d578063e2f4560514610737578063e71079471461074c578063f11741c81461076b578063f8b45b0514610773578063fb201b1d14610788575f80fd5b8063c8c8ebe41461067f578063d201b01e14610694578063d7c94efd146106b3578063d85ba063146106d3578063dd62ed3e146106f3575f80fd5b80639a7a23d6116100ee5780639a7a23d6146105e4578063a8eee5fd14610603578063a9059cbb14610622578063aacebbe314610641578063bc205ad314610660575f80fd5b8063751039fc146105305780637cb332bb1461054457806385ecafd7146105635780638da5cb5b1461059a57806395d89b41146105b6575f80fd5b80634fcd2446116101b55780636b67c4df1161017a5780636b67c4df146104895780636ed7ea84146104a957806370a08231146104c9578063715018a6146104fd57806374010ece14610511575f80fd5b80634fcd2446146103ed578063590ffdce1461040c5780636402511e1461042b57806366650dae1461044a5780636a486a8e14610469575f80fd5b806327a14fc2116101fb57806327a14fc214610339578063313ce5671461035a5780633c090c461461037b57806349bd5a5e1461039a5780634a62bb65146103cd575f80fd5b806306fdde0314610241578063095ea7b3146102845780631694505e146102b357806318160ddd146102f257806323b872dd1461031a575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b506040805180820190915260098152684f726163756c20414960b81b60208201525b60405161027b91906123cd565b60405180910390f35b34801561028f575f80fd5b506102a361029e36600461241a565b61079c565b604051901515815260200161027b565b3480156102be575f80fd5b506102da737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161027b565b3480156102fd575f80fd5b506b033b2e3c9fd0803ce80000005b60405190815260200161027b565b348015610325575f80fd5b506102a3610334366004612442565b6107b2565b348015610344575f80fd5b5061035861035336600461247b565b610866565b005b348015610365575f80fd5b5060125b60405160ff909116815260200161027b565b348015610386575f80fd5b506103586103953660046124a2565b61094a565b3480156103a5575f80fd5b506102da7f00000000000000000000000059d20bef494610d8d3326e15d7cd35d51a67ad8a81565b3480156103d8575f80fd5b506006546102a390600160d01b900460ff1681565b3480156103f8575f80fd5b506103586104073660046124e2565b610a52565b348015610417575f80fd5b50610358610426366004612523565b610b8b565b348015610436575f80fd5b5061035861044536600461247b565b610bed565b348015610455575f80fd5b50610358610464366004612523565b610d4c565b348015610474575f80fd5b5060065461036990600160a81b900460ff1681565b348015610494575f80fd5b5060065461036990600160b81b900460ff1681565b3480156104b4575f80fd5b5060065461036990600160b01b900460ff1681565b3480156104d4575f80fd5b5061030c6104e3366004612558565b6001600160a01b03165f9081526007602052604090205490565b348015610508575f80fd5b50610358610dae565b34801561051c575f80fd5b5061035861052b36600461247b565b610df7565b34801561053b575f80fd5b50610358610ee0565b34801561054f575f80fd5b5061035861055e366004612558565b610f27565b34801561056e575f80fd5b506102a361057d366004612558565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156105a5575f80fd5b505f546001600160a01b03166102da565b3480156105c1575f80fd5b5060408051808201909152600681526513d49050d55360d21b602082015261026e565b3480156105ef575f80fd5b506103586105fe366004612523565b610fa7565b34801561060e575f80fd5b5061035861061d366004612558565b61108a565b34801561062d575f80fd5b506102a361063c36600461241a565b61110a565b34801561064c575f80fd5b5061035861065b366004612558565b611116565b34801561066b575f80fd5b5061035861067a366004612578565b611196565b34801561068a575f80fd5b5061030c60015481565b34801561069f575f80fd5b506103586106ae366004612558565b611243565b3480156106be575f80fd5b5060065461036990600160c01b900460ff1681565b3480156106de575f80fd5b5060065461036990600160a01b900460ff1681565b3480156106fe575f80fd5b5061030c61070d366004612578565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610742575f80fd5b5061030c60035481565b348015610757575f80fd5b50610358610766366004612670565b61135a565b610358611571565b34801561077e575f80fd5b5061030c60025481565b348015610793575f80fd5b50610358611684565b5f6107a83384846116fb565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19811461085057828110156108435760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61085085338584036116fb565b61085b85858561181e565b506001949350505050565b336108785f546001600160a01b031690565b6001600160a01b03161461089e5760405162461bcd60e51b815260040161083a9061272a565b670de0b6b3a76400006103e86108c16b033b2e3c9fd0803ce80000006001612773565b6108cb919061278a565b6108d5919061278a565b8110156109325760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b606482015260840161083a565b61094481670de0b6b3a7640000612773565b60025550565b3361095c5f546001600160a01b031690565b6001600160a01b0316146109825760405162461bcd60e51b815260040161083a9061272a565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b8685168102919091179485905584048316936109e3939181048216929004166127a9565b6109ed91906127a9565b60ff16606414610a4d5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b606482015260840161083a565b505050565b33610a645f546001600160a01b031690565b6001600160a01b031614610a8a5760405162461bcd60e51b815260040161083a9061272a565b60058260ff161115610af05760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b606482015260840161083a565b60058160ff161115610b575760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b606482015260840161083a565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610b9d5f546001600160a01b031690565b6001600160a01b031614610bc35760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610bff5f546001600160a01b031690565b6001600160a01b031614610c255760405162461bcd60e51b815260040161083a9061272a565b620186a0610c406b033b2e3c9fd0803ce80000006001612773565b610c4a919061278a565b811015610cb75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b606482015260840161083a565b6103e8610cd16b033b2e3c9fd0803ce80000006005612773565b610cdb919061278a565b811115610d475760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b606482015260840161083a565b600355565b33610d5e5f546001600160a01b031690565b6001600160a01b031614610d845760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610dc05f546001600160a01b031690565b6001600160a01b031614610de65760405162461bcd60e51b815260040161083a9061272a565b5f80546001600160a01b0319169055565b33610e095f546001600160a01b031690565b6001600160a01b031614610e2f5760405162461bcd60e51b815260040161083a9061272a565b670de0b6b3a76400006103e8610e526b033b2e3c9fd0803ce80000006001612773565b610e5c919061278a565b610e66919061278a565b811015610ec85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b606482015260840161083a565b610eda81670de0b6b3a7640000612773565b60015550565b33610ef25f546001600160a01b031690565b6001600160a01b031614610f185760405162461bcd60e51b815260040161083a9061272a565b6006805460ff60d01b19169055565b33610f395f546001600160a01b031690565b6001600160a01b031614610f5f5760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b038116610f855760405162461bcd60e51b815260040161083a906127c2565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fb95f546001600160a01b031690565b6001600160a01b031614610fdf5760405162461bcd60e51b815260040161083a9061272a565b7f00000000000000000000000059d20bef494610d8d3326e15d7cd35d51a67ad8a6001600160a01b0316826001600160a01b0316036110605760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f766564000000000000604482015260640161083a565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b3361109c5f546001600160a01b031690565b6001600160a01b0316146110c25760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b0381166110e85760405162461bcd60e51b815260040161083a906127c2565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f6107a833848461181e565b336111285f546001600160a01b031690565b6001600160a01b03161461114e5760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b0381166111745760405162461bcd60e51b815260040161083a906127c2565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336111a85f546001600160a01b031690565b6001600160a01b0316146111ce5760405162461bcd60e51b815260040161083a9061272a565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611212573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123691906127f2565b9050610a4d838383611f95565b336112555f546001600160a01b031690565b6001600160a01b03161461127b5760405162461bcd60e51b815260040161083a9061272a565b6001600160a01b0381166112c35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161083a565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461130c576040519150601f19603f3d011682016040523d82523d5f602084013e611311565b606091505b50509050806113565760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b604482015260640161083a565b5050565b3361136c5f546001600160a01b031690565b6001600160a01b0316146113925760405162461bcd60e51b815260040161083a9061272a565b600654600160d81b900460ff16156113bc5760405162461bcd60e51b815260040161083a90612809565b5f5b8251811015610a4d578181815181106113d9576113d9612833565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205410156114235760405162461bcd60e51b815260040161083a90612847565b81818151811061143557611435612833565b602002602001015160075f85848151811061145257611452612833565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611487919061288d565b925050819055508181815181106114a0576114a0612833565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546114d991906128a0565b925050819055508281815181106114f2576114f2612833565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84848151811061154057611540612833565b602002602001015160405161155791815260200190565b60405180910390a380611569816128b3565b9150506113be565b336115835f546001600160a01b031690565b6001600160a01b0316146115a95760405162461bcd60e51b815260040161083a9061272a565b600654600160d81b900460ff16156115d35760405162461bcd60e51b815260040161083a90612809565b305f8181526007602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561165f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a4d91906128cb565b336116965f546001600160a01b031690565b6001600160a01b0316146116bc5760405162461bcd60e51b815260040161083a9061272a565b600654600160d81b900460ff16156116e65760405162461bcd60e51b815260040161083a90612809565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b03831661175d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083a565b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083a565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161083a565b6001600160a01b0382166118e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161083a565b5f81116119455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161083a565b600654600160d81b900460ff1615801561199957505f546001600160a01b0384811691161480159061198057506001600160a01b0383163014155b801561199957505f546001600160a01b03838116911614155b156119dc5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161083a565b600654600160d01b900460ff1615611c9d575f546001600160a01b03848116911614801590611a1857505f546001600160a01b03838116911614155b8015611a2c57506001600160a01b03821615155b8015611a4357506001600160a01b03821661dead14155b8015611a595750600654600160c81b900460ff16155b15611c9d576001600160a01b0383165f908152600b602052604090205460ff168015611a9d57506001600160a01b0382165f908152600a602052604090205460ff16155b15611b7057600154811115611b025760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b606482015260840161083a565b6002546001600160a01b0383165f90815260076020526040902054611b27908361288d565b1115611b6b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083a565b611c9d565b6001600160a01b0382165f908152600b602052604090205460ff168015611baf57506001600160a01b0383165f908152600a602052604090205460ff16155b15611c1557600154811115611b6b5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b606482015260840161083a565b6001600160a01b0382165f908152600a602052604090205460ff16611c9d576002546001600160a01b0383165f90815260076020526040902054611c59908361288d565b1115611c9d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083a565b600354305f90815260076020526040902054108015908190611cc95750600654600160c81b900460ff16155b8015611ced57506001600160a01b0384165f908152600b602052604090205460ff16155b8015611d1157506001600160a01b0384165f9081526009602052604090205460ff16155b8015611d3557506001600160a01b0383165f9081526009602052604090205460ff16155b15611d63576006805460ff60c81b1916600160c81b179055611d556120bc565b6006805460ff60c81b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c81b909204821615911680611daf57506001600160a01b0384165f9081526009602052604090205460ff165b15611db757505f5b6001600160a01b0385165f9081526007602052604090205483811015611def5760405162461bcd60e51b815260040161083a90612847565b5f8215611f23576001600160a01b0386165f908152600b602052604090205460ff168015611e285750600654600160a81b900460ff1615155b15611e5857600654606490611e4790600160a81b900460ff1687612773565b611e51919061278a565b9050611eb6565b6001600160a01b0387165f908152600b602052604090205460ff168015611e8a5750600654600160a01b900460ff1615155b15611eb657600654606490611ea990600160a01b900460ff1687612773565b611eb3919061278a565b90505b8015611f23576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f849089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611ff091906128f6565b5f604051808303815f865af19150503d805f8114612029576040519150601f19603f3d011682016040523d82523d5f602084013e61202e565b606091505b50915091508180156120585750805115806120585750808060200190518101906120589190612911565b6120b55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b606482015260840161083a565b5050505050565b6003545f6120cb826014612773565b305f9081526007602052604090205411156120f1576003546120ee906014612773565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061212457612124612833565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061216c5761216c612833565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121c39086905f9086903090429060040161292c565b5f604051808303815f87803b1580156121da575f80fd5b505af11580156121ec573d5f803e3d5ffd5b5047925050811590506123a5576006545f9060649061221590600160b01b900460ff1684612773565b61221f919061278a565b6006549091505f9060649061223e90600160c01b900460ff1685612773565b612248919061278a565b90505f8161225684866128a0565b61226091906128a0565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146122ab576040519150601f19603f3d011682016040523d82523d5f602084013e6122b0565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f81146122fd576040519150601f19603f3d011682016040523d82523d5f602084013e612302565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461234f576040519150601f19603f3d011682016040523d82523d5f602084013e612354565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156123c55781810151838201526020016123ad565b50505f910152565b602081525f82518060208401526123eb8160408501602087016123ab565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612415575f80fd5b919050565b5f806040838503121561242b575f80fd5b612434836123ff565b946020939093013593505050565b5f805f60608486031215612454575f80fd5b61245d846123ff565b925061246b602085016123ff565b9150604084013590509250925092565b5f6020828403121561248b575f80fd5b5035919050565b803560ff81168114612415575f80fd5b5f805f606084860312156124b4575f80fd5b6124bd84612492565b92506124cb60208501612492565b91506124d960408501612492565b90509250925092565b5f80604083850312156124f3575f80fd5b6124fc83612492565b915061250a60208401612492565b90509250929050565b8015158114612520575f80fd5b50565b5f8060408385031215612534575f80fd5b61253d836123ff565b9150602083013561254d81612513565b809150509250929050565b5f60208284031215612568575f80fd5b612571826123ff565b9392505050565b5f8060408385031215612589575f80fd5b612592836123ff565b915061250a602084016123ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125dd576125dd6125a0565b604052919050565b5f67ffffffffffffffff8211156125fe576125fe6125a0565b5060051b60200190565b5f82601f830112612617575f80fd5b8135602061262c612627836125e5565b6125b4565b82815260059290921b8401810191818101908684111561264a575f80fd5b8286015b84811015612665578035835291830191830161264e565b509695505050505050565b5f8060408385031215612681575f80fd5b823567ffffffffffffffff80821115612698575f80fd5b818501915085601f8301126126ab575f80fd5b813560206126bb612627836125e5565b82815260059290921b840181019181810190898411156126d9575f80fd5b948201945b838610156126fe576126ef866123ff565b825294820194908201906126de565b96505086013592505080821115612713575f80fd5b5061272085828601612608565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ac576107ac61275f565b5f826127a457634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107ac576107ac61275f565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612802575f80fd5b5051919050565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107ac576107ac61275f565b818103818111156107ac576107ac61275f565b5f600182016128c4576128c461275f565b5060010190565b5f805f606084860312156128dd575f80fd5b8351925060208401519150604084015190509250925092565b5f82516129078184602087016123ab565b9190910192915050565b5f60208284031215612921575f80fd5b815161257181612513565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561297a5784516001600160a01b031683529383019391830191600101612955565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a2db65388e71e61f80468c687e23eed057c17e951866fc3364fe961ad1813e3564736f6c63430008150033

Deployed Bytecode Sourcemap

2573:13469:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6056:83;;;;;;;;;;-1:-1:-1;6126:5:0;;;;;;;;;;;;-1:-1:-1;;;6126:5:0;;;;6056:83;;;;;;;:::i;:::-;;;;;;;;6685:152;;;;;;;;;;-1:-1:-1;6685:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;6685:152:0;1107:187:1;4170:115:0;;;;;;;;;;;;4242:42;4170:115;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;4170:115:0;1299:229:1;6326:91:0;;;;;;;;;;-1:-1:-1;2762:17:0;6326:91;;;1679:25:1;;;1667:2;1652:18;6326:91:0;1533:177:1;7356:520:0;;;;;;;;;;-1:-1:-1;7356:520:0;;;;;:::i;:::-;;:::i;13446:235::-;;;;;;;;;;-1:-1:-1;13446:235:0;;;;;:::i;:::-;;:::i;:::-;;6242:76;;;;;;;;;;-1:-1:-1;6308:2:0;6242:76;;;2405:4:1;2393:17;;;2375:36;;2363:2;2348:18;6242:76:0;2233:184:1;10659:320:0;;;;;;;;;;-1:-1:-1;10659:320:0;;;;;:::i;:::-;;:::i;4292:38::-;;;;;;;;;;;;;;;3504:33;;;;;;;;;;-1:-1:-1;3504:33:0;;;;-1:-1:-1;;;3504:33:0;;;;;;10987:335;;;;;;;;;;-1:-1:-1;10987:335:0;;;;;:::i;:::-;;:::i;11330:136::-;;;;;;;;;;-1:-1:-1;11330:136:0;;;;;:::i;:::-;;:::i;12833:361::-;;;;;;;;;;-1:-1:-1;12833:361:0;;;;;:::i;:::-;;:::i;11474:158::-;;;;;;;;;;-1:-1:-1;11474:158:0;;;;;:::i;:::-;;:::i;3330:31::-;;;;;;;;;;-1:-1:-1;3330:31:0;;;;-1:-1:-1;;;3330:31:0;;;;;;3405:30;;;;;;;;;;-1:-1:-1;3405:30:0;;;;-1:-1:-1;;;3405:30:0;;;;;;3370:28;;;;;;;;;;-1:-1:-1;3370:28:0;;;;-1:-1:-1;;;3370:28:0;;;;;;6425:110;;;;;;;;;;-1:-1:-1;6425:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6509:18:0;6482:7;6509:18;;;:9;:18;;;;;;;6425:110;1270:92;;;;;;;;;;;;;:::i;13202:236::-;;;;;;;;;;-1:-1:-1;13202:236:0;;;;;:::i;:::-;;:::i;10567:84::-;;;;;;;;;;;;;:::i;14075:177::-;;;;;;;;;;-1:-1:-1;14075:177:0;;;;;:::i;:::-;;:::i;14260:123::-;;;;;;;;;;-1:-1:-1;14260:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;14347:28:0;14323:4;14347:28;;;:19;:28;;;;;;;;;14260:123;1049:87;;;;;;;;;;-1:-1:-1;1095:7:0;1122:6;-1:-1:-1;;;;;1122:6:0;1049:87;;6147;;;;;;;;;;-1:-1:-1;6219:7:0;;;;;;;;;;;;-1:-1:-1;;;6219:7:0;;;;6147:87;;12614:211;;;;;;;;;;-1:-1:-1;12614:211:0;;;;;:::i;:::-;;:::i;13689:183::-;;;;;;;;;;-1:-1:-1;13689:183:0;;;;;:::i;:::-;;:::i;7190:158::-;;;;;;;;;;-1:-1:-1;7190:158:0;;;;;:::i;:::-;;:::i;13880:187::-;;;;;;;;;;-1:-1:-1;13880:187:0;;;;;:::i;:::-;;:::i;14391:240::-;;;;;;;;;;-1:-1:-1;14391:240:0;;;;;:::i;:::-;;:::i;2788:53::-;;;;;;;;;;;;;;;;14639:247;;;;;;;;;;-1:-1:-1;14639:247:0;;;;;:::i;:::-;;:::i;3442:25::-;;;;;;;;;;-1:-1:-1;3442:25:0;;;;-1:-1:-1;;;3442:25:0;;;;;;3293:30;;;;;;;;;;-1:-1:-1;3293:30:0;;;;-1:-1:-1;;;3293:30:0;;;;;;6543:134;;;;;;;;;;-1:-1:-1;6543:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;6642:18:0;;;6615:7;6642:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6543:134;2897:62;;;;;;;;;;;;;;;;11640:492;;;;;;;;;;-1:-1:-1;11640:492:0;;;;;:::i;:::-;;:::i;12271:335::-;;;:::i;2848:42::-;;;;;;;;;;;;;;;;12140:123;;;;;;;;;;;;;:::i;6685:152::-;6753:4;6770:37;6779:10;6791:7;6800:6;6770:8;:37::i;:::-;-1:-1:-1;6825:4:0;6685:152;;;;;:::o;7356:520::-;-1:-1:-1;;;;;7491:19:0;;7447:4;7491:19;;;:11;:19;;;;;;;;7511:10;7491:31;;;;;;;;-1:-1:-1;;7537:37:0;;7533:263;;7619:6;7599:16;:26;;7591:79;;;;-1:-1:-1;;;7591:79:0;;6894:2:1;7591:79:0;;;6876:21:1;6933:2;6913:18;;;6906:30;6972:34;6952:18;;;6945:62;-1:-1:-1;;;7023:18:1;;;7016:38;7071:19;;7591:79:0;;;;;;;;;7714:55;7723:6;7731:10;7762:6;7743:16;:25;7714:8;:55::i;:::-;7808:36;7818:6;7826:9;7837:6;7808:9;:36::i;:::-;-1:-1:-1;7864:4:0;;7356:520;-1:-1:-1;;;;7356:520:0:o;13446:235::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;13581:4:::1;13573;13552:17;2762::::0;13568:1:::1;13552:17;:::i;:::-;13551:26;;;;:::i;:::-;13550:35;;;;:::i;:::-;13534:12;:51;;13526:101;;;::::0;-1:-1:-1;;;13526:101:0;;8191:2:1;13526:101:0::1;::::0;::::1;8173:21:1::0;8230:2;8210:18;;;8203:30;8269:34;8249:18;;;8242:62;-1:-1:-1;;;8320:18:1;;;8313:35;8365:19;;13526:101:0::1;7989:401:1::0;13526:101:0::1;13650:23;:12:::0;13666:6:::1;13650:23;:::i;:::-;13638:9;:35:::0;-1:-1:-1;13446:235:0:o;10659:320::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;10774:10:::1;:24:::0;;-1:-1:-1;;;;10809:28:0;-1:-1:-1;;;10774:24:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;10809:28:0;;;;;-1:-1:-1;;;10809:28:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;10848:18:0::1;-1:-1:-1::0;;;10848:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10914:7;::::1;::::0;::::1;::::0;10886:25:::1;::::0;10899:12;;::::1;::::0;::::1;::::0;10886:10;::::1;;:25;:::i;:::-;:35;;;;:::i;:::-;10885:44;;10926:3;10885:44;10877:94;;;::::0;-1:-1:-1;;;10877:94:0;;8750:2:1;10877:94:0::1;::::0;::::1;8732:21:1::0;8789:2;8769:18;;;8762:30;8828:34;8808:18;;;8801:62;-1:-1:-1;;;8879:18:1;;;8872:35;8924:19;;10877:94:0::1;8548:401:1::0;10877:94:0::1;10659:320:::0;;;:::o;10987:335::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;11102:1:::1;11085:13;:18;;;;11077:72;;;::::0;-1:-1:-1;;;11077:72:0;;9156:2:1;11077:72:0::1;::::0;::::1;9138:21:1::0;9195:2;9175:18;;;9168:30;9234:34;9214:18;;;9207:62;-1:-1:-1;;;9285:18:1;;;9278:39;9334:19;;11077:72:0::1;8954:405:1::0;11077:72:0::1;11186:1;11168:14;:19;;;;11160:74;;;::::0;-1:-1:-1;;;11160:74:0;;9566:2:1;11160:74:0::1;::::0;::::1;9548:21:1::0;9605:2;9585:18;;;9578:30;9644:34;9624:18;;;9617:62;-1:-1:-1;;;9695:18:1;;;9688:40;9745:19;;11160:74:0::1;9364:406:1::0;11160:74:0::1;11245:12;:28:::0;;-1:-1:-1;;;;11284:30:0;-1:-1:-1;;;11245:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;11284:30:0;;-1:-1:-1;;;11284:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10987:335::o;11330:136::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11419:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;11419:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11330:136::o;12833:361::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;12958:6:::1;12937:17;2762::::0;12953:1:::1;12937:17;:::i;:::-;12936:28;;;;:::i;:::-;12919:13;:45;;12911:111;;;::::0;-1:-1:-1;;;12911:111:0;;9977:2:1;12911:111:0::1;::::0;::::1;9959:21:1::0;10016:2;9996:18;;;9989:30;10055:34;10035:18;;;10028:62;-1:-1:-1;;;10106:18:1;;;10099:51;10167:19;;12911:111:0::1;9775:417:1::0;12911:111:0::1;13080:4;13059:17;2762::::0;13075:1:::1;13059:17;:::i;:::-;13058:26;;;;:::i;:::-;13041:13;:43;;13033:108;;;::::0;-1:-1:-1;;;13033:108:0;;10399:2:1;13033:108:0::1;::::0;::::1;10381:21:1::0;10438:2;10418:18;;;10411:30;10477:34;10457:18;;;10450:62;-1:-1:-1;;;10528:18:1;;;10521:50;10588:19;;13033:108:0::1;10197:416:1::0;13033:108:0::1;13152:18;:34:::0;12833:361::o;11474:158::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11573:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;11573:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11474:158::o;1270:92::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;1352:1:::1;1335:19:::0;;-1:-1:-1;;;;;;1335:19:0::1;::::0;;1270:92::o;13202:236::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;13326:4:::1;13318;13297:17;2762::::0;13313:1:::1;13297:17;:::i;:::-;13296:26;;;;:::i;:::-;13295:35;;;;:::i;:::-;13283:8;:47;;13275:102;;;::::0;-1:-1:-1;;;13275:102:0;;10820:2:1;13275:102:0::1;::::0;::::1;10802:21:1::0;10859:2;10839:18;;;10832:30;10898:34;10878:18;;;10871:62;-1:-1:-1;;;10949:18:1;;;10942:40;10999:19;;13275:102:0::1;10618:406:1::0;13275:102:0::1;13411:19;:8:::0;13423:6:::1;13411:19;:::i;:::-;13388:20;:42:::0;-1:-1:-1;13202:236:0:o;10567:84::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;10621:14:::1;:22:::0;;-1:-1:-1;;;;10621:22:0::1;::::0;;10567:84::o;14075:177::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14159:24:0;::::1;14151:59;;;;-1:-1:-1::0;;;14151:59:0::1;;;;;;;:::i;:::-;14221:10;:23:::0;;-1:-1:-1;;;;;;14221:23:0::1;-1:-1:-1::0;;;;;14221:23:0;;;::::1;::::0;;;::::1;::::0;;14075:177::o;12614:211::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;12723:13:::1;-1:-1:-1::0;;;;;12715:21:0::1;:4;-1:-1:-1::0;;;;;12715:21:0::1;::::0;12707:60:::1;;;::::0;-1:-1:-1;;;12707:60:0;;11582:2:1;12707:60:0::1;::::0;::::1;11564:21:1::0;11621:2;11601:18;;;11594:30;11660:28;11640:18;;;11633:56;11706:18;;12707:60:0::1;11380:350:1::0;12707:60:0::1;-1:-1:-1::0;;;;;12778:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;12778:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12614:211::o;13689:183::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13776:24:0;::::1;13768:59;;;;-1:-1:-1::0;;;13768:59:0::1;;;;;;;:::i;:::-;13838:13;:26:::0;;-1:-1:-1;;;;;;13838:26:0::1;-1:-1:-1::0;;;;;13838:26:0;;;::::1;::::0;;;::::1;::::0;;13689:183::o;7190:158::-;7261:4;7278:40;7288:10;7300:9;7311:6;7278:9;:40::i;13880:187::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13969:24:0;::::1;13961:59;;;;-1:-1:-1::0;;;13961:59:0::1;;;;;;;:::i;:::-;14031:15;:28:::0;;-1:-1:-1;;;;;;14031:28:0::1;-1:-1:-1::0;;;;;14031:28:0;;;::::1;::::0;;;::::1;::::0;;13880:187::o;14391:240::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;14503:38:::1;::::0;-1:-1:-1;;;14503:38:0;;14535:4:::1;14503:38;::::0;::::1;1471:51:1::0;14476:24:0::1;::::0;-1:-1:-1;;;;;14503:23:0;::::1;::::0;::::1;::::0;1444:18:1;;14503:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14476:65;;14552:51;14575:5;14582:2;14586:16;14552:22;:51::i;14639:247::-:0;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14717:18:0;::::1;14709:46;;;::::0;-1:-1:-1;;;14709:46:0;;12126:2:1;14709:46:0::1;::::0;::::1;12108:21:1::0;12165:2;12145:18;;;12138:30;-1:-1:-1;;;12184:18:1;;;12177:45;12239:18;;14709:46:0::1;11924:339:1::0;14709:46:0::1;14769:12;14787:4;-1:-1:-1::0;;;;;14787:9:0::1;14804:21;14787:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14768:62;;;14849:7;14841:37;;;::::0;-1:-1:-1;;;14841:37:0;;12680:2:1;14841:37:0::1;::::0;::::1;12662:21:1::0;12719:2;12699:18;;;12692:30;-1:-1:-1;;;12738:18:1;;;12731:47;12795:18;;14841:37:0::1;12478:341:1::0;14841:37:0::1;14698:188;14639:247:::0;:::o;11640:492::-;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;11757:8:::1;::::0;-1:-1:-1;;;11757:8:0;::::1;;;11756:9;11748:38;;;;-1:-1:-1::0;;;11748:38:0::1;;;;;;;:::i;:::-;11802:9;11797:328;11821:9;:16;11817:1;:20;11797:328;;;11892:7;11900:1;11892:10;;;;;;;;:::i;:::-;;;;;;;11867:9;:21;11877:10;-1:-1:-1::0;;;;;11867:21:0::1;-1:-1:-1::0;;;;;11867:21:0::1;;;;;;;;;;;;;:35;;11859:86;;;;-1:-1:-1::0;;;11859:86:0::1;;;;;;;:::i;:::-;11987:7;11995:1;11987:10;;;;;;;;:::i;:::-;;;;;;;11960:9;:23;11970:9;11980:1;11970:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11960:23:0::1;-1:-1:-1::0;;;;;11960:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;12037:7;12045:1;12037:10;;;;;;;;:::i;:::-;;;;;;;12012:9;:21;12022:10;-1:-1:-1::0;;;;;12012:21:0::1;-1:-1:-1::0;;;;;12012:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;12088:9;12098:1;12088:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;12067:46:0::1;12076:10;-1:-1:-1::0;;;;;12067:46:0::1;;12102:7;12110:1;12102:10;;;;;;;;:::i;:::-;;;;;;;12067:46;;;;1679:25:1::0;;1667:2;1652:18;;1533:177;12067:46:0::1;;;;;;;;11839:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11797:328;;12271:335:::0;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;12344:8:::1;::::0;-1:-1:-1;;;12344:8:0;::::1;;;12343:9;12335:38;;;;-1:-1:-1::0;;;12335:38:0::1;;;;;;;:::i;:::-;12456:4;12476:24;::::0;;;:9:::1;:24;::::0;;;;;;12547:10:::1;::::0;12384:214;;-1:-1:-1;;;12384:214:0;;::::1;::::0;::::1;14452:34:1::0;;;;14502:18;;;14495:34;14545:18;;;14538:34;;;14588:18;;;14581:34;;;;-1:-1:-1;;;;;12547:10:0::1;14631:19:1::0;;;14624:44;12572:15:0::1;14684:19:1::0;;;14677:35;4242:42:0::1;::::0;12384:31:::1;::::0;12423:9:::1;::::0;14386:19:1;;12384:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12140:123::-:0;1195:10;1184:7;1095;1122:6;-1:-1:-1;;;;;1122:6:0;;1049:87;1184:7;-1:-1:-1;;;;;1184:21:0;;1176:66;;;;-1:-1:-1;;;1176:66:0;;;;;;;:::i;:::-;12200:8:::1;::::0;-1:-1:-1;;;12200:8:0;::::1;;;12199:9;12191:38;;;;-1:-1:-1::0;;;12191:38:0::1;;;;;;;:::i;:::-;12240:8;:15:::0;;-1:-1:-1;;;;12240:15:0::1;-1:-1:-1::0;;;12240:15:0::1;::::0;;12140:123::o;6845:337::-;-1:-1:-1;;;;;6938:19:0;;6930:68;;;;-1:-1:-1;;;6930:68:0;;15236:2:1;6930:68:0;;;15218:21:1;15275:2;15255:18;;;15248:30;15314:34;15294:18;;;15287:62;-1:-1:-1;;;15365:18:1;;;15358:34;15409:19;;6930:68:0;15034:400:1;6930:68:0;-1:-1:-1;;;;;7017:21:0;;7009:68;;;;-1:-1:-1;;;7009:68:0;;15641:2:1;7009:68:0;;;15623:21:1;15680:2;15660:18;;;15653:30;15719:34;15699:18;;;15692:62;-1:-1:-1;;;15770:18:1;;;15763:32;15812:19;;7009:68:0;15439:398:1;7009:68:0;-1:-1:-1;;;;;7090:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7142:32;;1679:25:1;;;7142:32:0;;1652:18:1;7142:32:0;;;;;;;6845:337;;;:::o;7884:2675::-;-1:-1:-1;;;;;7972:18:0;;7964:68;;;;-1:-1:-1;;;7964:68:0;;16044:2:1;7964:68:0;;;16026:21:1;16083:2;16063:18;;;16056:30;16122:34;16102:18;;;16095:62;-1:-1:-1;;;16173:18:1;;;16166:35;16218:19;;7964:68:0;15842:401:1;7964:68:0;-1:-1:-1;;;;;8051:16:0;;8043:64;;;;-1:-1:-1;;;8043:64:0;;16450:2:1;8043:64:0;;;16432:21:1;16489:2;16469:18;;;16462:30;16528:34;16508:18;;;16501:62;-1:-1:-1;;;16579:18:1;;;16572:33;16622:19;;8043:64:0;16248:399:1;8043:64:0;8135:1;8126:6;:10;8118:64;;;;-1:-1:-1;;;8118:64:0;;16854:2:1;8118:64:0;;;16836:21:1;16893:2;16873:18;;;16866:30;16932:34;16912:18;;;16905:62;-1:-1:-1;;;16983:18:1;;;16976:39;17032:19;;8118:64:0;16652:405:1;8118:64:0;8200:8;;-1:-1:-1;;;8200:8:0;;;;8199:9;:72;;;;-1:-1:-1;1095:7:0;1122:6;-1:-1:-1;;;;;8213:15:0;;;1122:6;;8213:15;;;;:40;;-1:-1:-1;;;;;;8232:21:0;;8248:4;8232:21;;8213:40;:57;;;;-1:-1:-1;1095:7:0;1122:6;-1:-1:-1;;;;;8257:13:0;;;1122:6;;8257:13;;8213:57;8195:134;;;8288:29;;-1:-1:-1;;;8288:29:0;;17264:2:1;8288:29:0;;;17246:21:1;17303:2;17283:18;;;17276:30;-1:-1:-1;;;17322:18:1;;;17315:49;17381:18;;8288:29:0;17062:343:1;8195:134:0;8345:14;;-1:-1:-1;;;8345:14:0;;;;8341:830;;;1095:7;1122:6;-1:-1:-1;;;;;8380:15:0;;;1122:6;;8380:15;;;;:32;;-1:-1:-1;1095:7:0;1122:6;-1:-1:-1;;;;;8399:13:0;;;1122:6;;8399:13;;8380:32;:52;;;;-1:-1:-1;;;;;;8416:16:0;;;;8380:52;:77;;;;-1:-1:-1;;;;;;8436:21:0;;8450:6;8436:21;;8380:77;:90;;;;-1:-1:-1;8462:8:0;;-1:-1:-1;;;8462:8:0;;;;8461:9;8380:90;8376:784;;;-1:-1:-1;;;;;8495:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;8531:35:0;;;;;;:31;:35;;;;;;;;8530:36;8495:71;8491:654;;;8609:20;;8599:6;:30;;8591:80;;;;-1:-1:-1;;;8591:80:0;;17612:2:1;8591:80:0;;;17594:21:1;17651:2;17631:18;;;17624:30;17690:34;17670:18;;;17663:62;-1:-1:-1;;;17741:18:1;;;17734:35;17786:19;;8591:80:0;17410:401:1;8591:80:0;8728:9;;-1:-1:-1;;;;;6509:18:0;;6482:7;6509:18;;;:9;:18;;;;;;8702:22;;:6;:22;:::i;:::-;:35;;8694:67;;;;-1:-1:-1;;;8694:67:0;;18018:2:1;8694:67:0;;;18000:21:1;18057:2;18037:18;;;18030:30;-1:-1:-1;;;18076:18:1;;;18069:49;18135:18;;8694:67:0;17816:343:1;8694:67:0;8491:654;;;-1:-1:-1;;;;;8791:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;8825:37:0;;;;;;:31;:37;;;;;;;;8824:38;8791:71;8787:358;;;8905:20;;8895:6;:30;;8887:80;;;;-1:-1:-1;;;8887:80:0;;18366:2:1;8887:80:0;;;18348:21:1;18405:2;18385:18;;;18378:30;18444:34;18424:18;;;18417:62;-1:-1:-1;;;18495:18:1;;;18488:36;18541:19;;8887:80:0;18164:402:1;8787:358:0;-1:-1:-1;;;;;8998:35:0;;;;;;:31;:35;;;;;;;;8993:152;;9092:9;;-1:-1:-1;;;;;6509:18:0;;6482:7;6509:18;;;:9;:18;;;;;;9066:22;;:6;:22;:::i;:::-;:35;;9058:67;;;;-1:-1:-1;;;9058:67:0;;18018:2:1;9058:67:0;;;18000:21:1;18057:2;18037:18;;;18030:30;-1:-1:-1;;;18076:18:1;;;18069:49;18135:18;;9058:67:0;17816:343:1;9058:67:0;9226:18;;9216:4;9183:12;6509:18;;;:9;:18;;;;;;-1:-1:-1;9198:46:0;;;;;9261:20;;-1:-1:-1;9273:8:0;;-1:-1:-1;;;9273:8:0;;;;9272:9;9261:20;:56;;;;-1:-1:-1;;;;;;9286:31:0;;;;;;:25;:31;;;;;;;;9285:32;9261:56;:86;;;;-1:-1:-1;;;;;;9322:25:0;;;;;;:19;:25;;;;;;;;9321:26;9261:86;:114;;;;-1:-1:-1;;;;;;9352:23:0;;;;;;:19;:23;;;;;;;;9351:24;9261:114;9257:218;;;9392:8;:15;;-1:-1:-1;;;;9392:15:0;-1:-1:-1;;;9392:15:0;;;9422:10;:8;:10::i;:::-;9447:8;:16;;-1:-1:-1;;;;9447:16:0;;;9257:218;9503:8;;-1:-1:-1;;;;;9528:25:0;;9487:12;9528:25;;;:19;:25;;;;;;9503:8;-1:-1:-1;;;9503:8:0;;;;;9502:9;;9528:25;;:52;;-1:-1:-1;;;;;;9557:23:0;;;;;;:19;:23;;;;;;;;9528:52;9524:100;;;-1:-1:-1;9607:5:0;9524:100;-1:-1:-1;;;;;9660:15:0;;9636:21;9660:15;;;:9;:15;;;;;;9694:23;;;;9686:74;;;;-1:-1:-1;;;9686:74:0;;;;;;;:::i;:::-;9773:12;9804:7;9800:600;;;-1:-1:-1;;;;;9832:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;9865:13:0;;-1:-1:-1;;;9865:13:0;;;;:17;;9832:50;9828:262;;;9920:13;;9937:3;;9911:22;;-1:-1:-1;;;9920:13:0;;;;9911:6;:22;:::i;:::-;9910:30;;;;:::i;:::-;9903:37;;9828:262;;;-1:-1:-1;;;;;9966:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10001:12:0;;-1:-1:-1;;;10001:12:0;;;;:16;;9966:51;9962:128;;;10055:12;;10071:3;;10046:21;;-1:-1:-1;;;10055:12:0;;;;10046:6;:21;:::i;:::-;10045:29;;;;:::i;:::-;10038:36;;9962:128;10110:8;;10106:283;;-1:-1:-1;;;;;10217:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10281:4;10263:24;;;;;;;:32;;;;;;10338:35;1679:25:1;;;10181:13:0;;;;;10281:4;;10217:15;10338:35;;1652:18:1;10338:35:0;;;;;;;10106:283;-1:-1:-1;;;;;10435:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;10475:13;;;;;;;;;;:23;;;;;;10525:26;;;;;;10454:6;1679:25:1;;1667:2;1652:18;;1533:177;10525:26:0;;;;;;;;7953:2606;;;;7884:2675;;;:::o;1394:320::-;1525:59;;;-1:-1:-1;;;;;18763:32:1;;;1525:59:0;;;18745:51:1;18812:18;;;;18805:34;;;1525:59:0;;;;;;;;;;18718:18:1;;;;1525:59:0;;;;;;;-1:-1:-1;;;;;1525:59:0;-1:-1:-1;;;1525:59:0;;;1514:71;;-1:-1:-1;;;;1514:10:0;;;;:71;;1525:59;1514:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:107;;;;1604:7;:57;;;;-1:-1:-1;1616:11:0;;:16;;:44;;;1647:4;1636:24;;;;;;;;;;;;:::i;:::-;1596:110;;;;-1:-1:-1;;;1596:110:0;;19594:2:1;1596:110:0;;;19576:21:1;19633:2;19613:18;;;19606:30;19672:34;19652:18;;;19645:62;-1:-1:-1;;;19723:18:1;;;19716:38;19771:19;;1596:110:0;19392:404:1;1596:110:0;1467:247;;1394:320;;;:::o;14894:1145::-;14957:18;;14933:21;15042:23;14957:18;15063:2;15042:23;:::i;:::-;15033:4;6482:7;6509:18;;;:9;:18;;;;;;15015:50;15011:122;;;15098:18;;:23;;15119:2;15098:23;:::i;:::-;15082:39;;15011:122;15169:16;;;15183:1;15169:16;;;;;;;;15145:21;;15169:16;;;;;;;;;;-1:-1:-1;15169:16:0;15145:40;;15214:4;15196;15201:1;15196:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15196:23:0;;;-1:-1:-1;;;;;15196:23:0;;;;;3242:42;15230:4;15235:1;15230:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15230:14:0;;;:7;;;;;;;;;;;:14;15257:122;;-1:-1:-1;;;15257:122:0;;4242:42;;15257:66;;:122;;15324:13;;15339:1;;15342:4;;15356;;15363:15;;15257:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15413:21:0;;-1:-1:-1;;15449:14:0;;;-1:-1:-1;15445:587:0;;15518:10;;15480:21;;15532:3;;15505:23;;-1:-1:-1;;;15518:10:0;;;;15505;:23;:::i;:::-;15504:31;;;;:::i;:::-;15585:7;;15480:55;;-1:-1:-1;15550:18:0;;15596:3;;15572:20;;-1:-1:-1;;;15585:7:0;;;;15572:10;:20;:::i;:::-;15571:28;;;;:::i;:::-;15550:49;-1:-1:-1;15614:23:0;15550:49;15640:26;15653:13;15640:10;:26;:::i;:::-;:39;;;;:::i;:::-;15718:10;;15710:47;;15614:65;;-1:-1:-1;;;;;;15718:10:0;;15742;;15710:47;;;;15742:10;15718;15710:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15794:15:0;;15786:57;;15696:61;;-1:-1:-1;;;;;;15794:15:0;;15823;;15786:57;;;;15823:15;15794;15786:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15880:13:0;;15872:53;;15772:71;;-1:-1:-1;;;;;;15880:13:0;;15907;;15872:53;;;;15907:13;15880;15872:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15947:73:0;;;21017:25:1;;;21073:2;21058:18;;21051:34;;;21101:18;;;21094:34;;;21159:2;21144:18;;21137:34;;;15858:67:0;;-1:-1:-1;15947:73:0;;21004:3:1;20989:19;15947:73:0;;;;;;;15465:567;;;15445:587;14922:1117;;;;14894:1145::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1715:328::-;1792:6;1800;1808;1861:2;1849:9;1840:7;1836:23;1832:32;1829:52;;;1877:1;1874;1867:12;1829:52;1900:29;1919:9;1900:29;:::i;:::-;1890:39;;1948:38;1982:2;1971:9;1967:18;1948:38;:::i;:::-;1938:48;;2033:2;2022:9;2018:18;2005:32;1995:42;;1715:328;;;;;:::o;2048:180::-;2107:6;2160:2;2148:9;2139:7;2135:23;2131:32;2128:52;;;2176:1;2173;2166:12;2128:52;-1:-1:-1;2199:23:1;;2048:180;-1:-1:-1;2048:180:1:o;2422:156::-;2488:20;;2548:4;2537:16;;2527:27;;2517:55;;2568:1;2565;2558:12;2583:322;2654:6;2662;2670;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;2762:27;2779:9;2762:27;:::i;:::-;2752:37;;2808:36;2840:2;2829:9;2825:18;2808:36;:::i;:::-;2798:46;;2863:36;2895:2;2884:9;2880:18;2863:36;:::i;:::-;2853:46;;2583:322;;;;;:::o;3118:252::-;3182:6;3190;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;3282:27;3299:9;3282:27;:::i;:::-;3272:37;;3328:36;3360:2;3349:9;3345:18;3328:36;:::i;:::-;3318:46;;3118:252;;;;;:::o;3375:118::-;3461:5;3454:13;3447:21;3440:5;3437:32;3427:60;;3483:1;3480;3473:12;3427:60;3375:118;:::o;3498:315::-;3563:6;3571;3624:2;3612:9;3603:7;3599:23;3595:32;3592:52;;;3640:1;3637;3630:12;3592:52;3663:29;3682:9;3663:29;:::i;:::-;3653:39;;3742:2;3731:9;3727:18;3714:32;3755:28;3777:5;3755:28;:::i;:::-;3802:5;3792:15;;;3498:315;;;;;:::o;3818:186::-;3877:6;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;3969:29;3988:9;3969:29;:::i;:::-;3959:39;3818:186;-1:-1:-1;;;3818:186:1:o;4009:260::-;4077:6;4085;4138:2;4126:9;4117:7;4113:23;4109:32;4106:52;;;4154:1;4151;4144:12;4106:52;4177:29;4196:9;4177:29;:::i;:::-;4167:39;;4225:38;4259:2;4248:9;4244:18;4225:38;:::i;4274:127::-;4335:10;4330:3;4326:20;4323:1;4316:31;4366:4;4363:1;4356:15;4390:4;4387:1;4380:15;4406:275;4477:2;4471:9;4542:2;4523:13;;-1:-1:-1;;4519:27:1;4507:40;;4577:18;4562:34;;4598:22;;;4559:62;4556:88;;;4624:18;;:::i;:::-;4660:2;4653:22;4406:275;;-1:-1:-1;4406:275:1:o;4686:183::-;4746:4;4779:18;4771:6;4768:30;4765:56;;;4801:18;;:::i;:::-;-1:-1:-1;4846:1:1;4842:14;4858:4;4838:25;;4686:183::o;4874:662::-;4928:5;4981:3;4974:4;4966:6;4962:17;4958:27;4948:55;;4999:1;4996;4989:12;4948:55;5035:6;5022:20;5061:4;5085:60;5101:43;5141:2;5101:43;:::i;:::-;5085:60;:::i;:::-;5179:15;;;5265:1;5261:10;;;;5249:23;;5245:32;;;5210:12;;;;5289:15;;;5286:35;;;5317:1;5314;5307:12;5286:35;5353:2;5345:6;5341:15;5365:142;5381:6;5376:3;5373:15;5365:142;;;5447:17;;5435:30;;5485:12;;;;5398;;5365:142;;;-1:-1:-1;5525:5:1;4874:662;-1:-1:-1;;;;;;4874:662:1:o;5541:1146::-;5659:6;5667;5720:2;5708:9;5699:7;5695:23;5691:32;5688:52;;;5736:1;5733;5726:12;5688:52;5776:9;5763:23;5805:18;5846:2;5838:6;5835:14;5832:34;;;5862:1;5859;5852:12;5832:34;5900:6;5889:9;5885:22;5875:32;;5945:7;5938:4;5934:2;5930:13;5926:27;5916:55;;5967:1;5964;5957:12;5916:55;6003:2;5990:16;6025:4;6049:60;6065:43;6105:2;6065:43;:::i;6049:60::-;6143:15;;;6225:1;6221:10;;;;6213:19;;6209:28;;;6174:12;;;;6249:19;;;6246:39;;;6281:1;6278;6271:12;6246:39;6305:11;;;;6325:148;6341:6;6336:3;6333:15;6325:148;;;6407:23;6426:3;6407:23;:::i;:::-;6395:36;;6358:12;;;;6451;;;;6325:148;;;6492:5;-1:-1:-1;;6535:18:1;;6522:32;;-1:-1:-1;;6566:16:1;;;6563:36;;;6595:1;6592;6585:12;6563:36;;6618:63;6673:7;6662:8;6651:9;6647:24;6618:63;:::i;:::-;6608:73;;;5541:1146;;;;;:::o;7101:356::-;7303:2;7285:21;;;7322:18;;;7315:30;7381:34;7376:2;7361:18;;7354:62;7448:2;7433:18;;7101:356::o;7462:127::-;7523:10;7518:3;7514:20;7511:1;7504:31;7554:4;7551:1;7544:15;7578:4;7575:1;7568:15;7594:168;7667:9;;;7698;;7715:15;;;7709:22;;7695:37;7685:71;;7736:18;;:::i;7767:217::-;7807:1;7833;7823:132;;7877:10;7872:3;7868:20;7865:1;7858:31;7912:4;7909:1;7902:15;7940:4;7937:1;7930:15;7823:132;-1:-1:-1;7969:9:1;;7767:217::o;8395:148::-;8483:4;8462:12;;;8476;;;8458:31;;8501:13;;8498:39;;;8517:18;;:::i;11029:346::-;11231:2;11213:21;;;11270:2;11250:18;;;11243:30;-1:-1:-1;;;11304:2:1;11289:18;;11282:52;11366:2;11351:18;;11029:346::o;11735:184::-;11805:6;11858:2;11846:9;11837:7;11833:23;11829:32;11826:52;;;11874:1;11871;11864:12;11826:52;-1:-1:-1;11897:16:1;;11735:184;-1:-1:-1;11735:184:1:o;12824:340::-;13026:2;13008:21;;;13065:2;13045:18;;;13038:30;-1:-1:-1;;;13099:2:1;13084:18;;13077:46;13155:2;13140:18;;12824:340::o;13169:127::-;13230:10;13225:3;13221:20;13218:1;13211:31;13261:4;13258:1;13251:15;13285:4;13282:1;13275:15;13301:402;13503:2;13485:21;;;13542:2;13522:18;;;13515:30;13581:34;13576:2;13561:18;;13554:62;-1:-1:-1;;;13647:2:1;13632:18;;13625:36;13693:3;13678:19;;13301:402::o;13708:125::-;13773:9;;;13794:10;;;13791:36;;;13807:18;;:::i;13838:128::-;13905:9;;;13926:11;;;13923:37;;;13940:18;;:::i;13971:135::-;14010:3;14031:17;;;14028:43;;14051:18;;:::i;:::-;-1:-1:-1;14098:1:1;14087:13;;13971:135::o;14723:306::-;14811:6;14819;14827;14880:2;14868:9;14859:7;14855:23;14851:32;14848:52;;;14896:1;14893;14886:12;14848:52;14925:9;14919:16;14909:26;;14975:2;14964:9;14960:18;14954:25;14944:35;;15019:2;15008:9;15004:18;14998:25;14988:35;;14723:306;;;;;:::o;18850:287::-;18979:3;19017:6;19011:13;19033:66;19092:6;19087:3;19080:4;19072:6;19068:17;19033:66;:::i;:::-;19115:16;;;;;18850:287;-1:-1:-1;;18850:287:1:o;19142:245::-;19209:6;19262:2;19250:9;19241:7;19237:23;19233:32;19230:52;;;19278:1;19275;19268:12;19230:52;19310:9;19304:16;19329:28;19351:5;19329:28;:::i;19801:980::-;20063:4;20111:3;20100:9;20096:19;20142:6;20131:9;20124:25;20168:2;20206:6;20201:2;20190:9;20186:18;20179:34;20249:3;20244:2;20233:9;20229:18;20222:31;20273:6;20308;20302:13;20339:6;20331;20324:22;20377:3;20366:9;20362:19;20355:26;;20416:2;20408:6;20404:15;20390:29;;20437:1;20447:195;20461:6;20458:1;20455:13;20447:195;;;20526:13;;-1:-1:-1;;;;;20522:39:1;20510:52;;20617:15;;;;20582:12;;;;20558:1;20476:9;20447:195;;;-1:-1:-1;;;;;;;20698:32:1;;;;20693:2;20678:18;;20671:60;-1:-1:-1;;;20762:3:1;20747:19;20740:35;20659:3;19801:980;-1:-1:-1;;;19801:980:1:o

Swarm Source

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