ETH Price: $2,511.27 (+0.80%)

Token

rocky (rocky)
 

Overview

Max Total Supply

69,696,969 rocky

Holders

151

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
205,775.092028471 rocky

Value
$0.00
0xf3f875b0df36dbbc80139ce0c0402009618d9c5f
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:
ROCKY

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-11
*/

// SPDX-License-Identifier: Unlicensed

// https://t.me/rocky_on_eth
// https://www.rocky-on-eth.com/
// https://x.com/rocky_on_eth


pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract ROCKY is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "rocky";
    string private constant _symbol = "rocky";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 69696969 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    // Taxes
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 30;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 30;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xB93683244BF14CcEeaC7Ae11C2BEA6DD62ae96E5);
    address payable private _marketingAddress = payable(0xB93683244BF14CcEeaC7Ae11C2BEA6DD62ae96E5);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 696969 * 10**9; // 1%
    uint256 public _maxWalletSize = 696969 * 10**9; // 1%
    uint256 public _swapTokensAtAmount = 696969 * 10**9; // .1%

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

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

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

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

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266f79d06272a9a005f1961001891906106e0565b5f19610024919061073d565b6006555f600855601e6009555f600a55601e600b55600a54600c55600b54600d55600c54600e55600d54600f5573b93683244bf14cceeac7ae11c2bea6dd62ae96e560125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b93683244bf14cceeac7ae11c2bea6dd62ae96e560135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550660279e3bdaa1a00601655660279e3bdaa1a00601755660279e3bdaa1a00601855348015610173575f80fd5b505f61018361067c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61023361067c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610311573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033591906107ce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103be91906107ce565b6040518363ffffffff1660e01b81526004016103db929190610808565b6020604051808303815f875af11580156103f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041b91906107ce565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61046d61068360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061060b61067c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66f79d06272a9a0060405161066e919061083e565b60405180910390a350610857565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106ea826106aa565b91506106f5836106aa565b925082610705576107046106b3565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610747826106aa565b9150610752836106aa565b925082820390508181111561076a57610769610710565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61079d82610774565b9050919050565b6107ad81610793565b81146107b7575f80fd5b50565b5f815190506107c8816107a4565b92915050565b5f602082840312156107e3576107e2610770565b5b5f6107f0848285016107ba565b91505092915050565b61080281610793565b82525050565b5f60408201905061081b5f8301856107f9565b61082860208301846107f9565b9392505050565b610838816106aa565b82525050565b5f6020820190506108515f83018461082f565b92915050565b613ba8806108645f395ff3fe6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612c5d565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d04565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d57565b610850565b60405161025f9190612daf565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612e23565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e4b565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e64565b6108a0565b6040516102ef9190612daf565b60405180910390f35b348015610303575f80fd5b5061030c610974565b6040516103199190612e4b565b60405180910390f35b34801561032d575f80fd5b5061033661097a565b6040516103439190612ecf565b60405180910390f35b348015610357575f80fd5b50610360610982565b60405161036d9190612ef7565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612f10565b6109a7565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f65565b610a92565b005b3480156103d1575f80fd5b506103da610b43565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f10565b610c10565b60405161040f9190612e4b565b60405180910390f35b348015610423575f80fd5b5061042c610c5e565b005b348015610439575f80fd5b50610454600480360381019061044f9190612f90565b610dac565b005b348015610461575f80fd5b5061046a610e4a565b6040516104779190612e4b565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612f10565b610e50565b6040516104b39190612e4b565b60405180910390f35b3480156104c7575f80fd5b506104d0610e65565b6040516104dd9190612ef7565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f65565b610e8c565b005b348015610519575f80fd5b50610522610f3d565b60405161052f9190612e4b565b60405180910390f35b348015610543575f80fd5b5061054c610f43565b6040516105599190612d04565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612f90565b610f80565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612fbb565b61101e565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d57565b6110d4565b6040516105e59190612daf565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612f10565b6110f1565b6040516106219190612daf565b60405180910390f35b348015610635575f80fd5b5061063e61110e565b005b34801561064b575f80fd5b5061066660048036038101906106619190613078565b6111e3565b005b348015610673575f80fd5b5061068e600480360381019061068991906130d5565b611312565b60405161069b9190612e4b565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612f90565b611394565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612f10565b611432565b005b6106fc6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f9061315d565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61317b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600581526020017f726f636b79000000000000000000000000000000000000000000000000000000815250905090565b5f61086361085c6115ef565b84846115f6565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66f79d06272a9a00905090565b5f6108ac8484846117b9565b610969846108b86115ef565b61096485604051806060016040528060288152602001613b4b6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091b6115ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120199092919063ffffffff16565b6115f6565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109af6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a329061315d565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9a6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d9061315d565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b836115ef565b73ffffffffffffffffffffffffffffffffffffffff161480610bf8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be06115ef565b73ffffffffffffffffffffffffffffffffffffffff16145b610c00575f80fd5b5f479050610c0d8161207b565b50565b5f610c5760025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e3565b9050919050565b610c666115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce99061315d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db46115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061315d565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e946115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f179061315d565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f726f636b79000000000000000000000000000000000000000000000000000000815250905090565b610f886115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b9061315d565b60405180910390fd5b8060188190555050565b6110266115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a99061315d565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110e76110e06115ef565b84846117b9565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661114e6115ef565b73ffffffffffffffffffffffffffffffffffffffff1614806111c3575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ab6115ef565b73ffffffffffffffffffffffffffffffffffffffff16145b6111cb575f80fd5b5f6111d530610c10565b90506111e08161214f565b50565b6111eb6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e9061315d565b60405180910390fd5b5f5b8383905081101561130c578160055f86868581811061129b5761129a61317b565b5b90506020020160208101906112b09190612f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611279565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139c6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f9061315d565b60405180910390fd5b8060178190555050565b61143a6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061315d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613218565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b906132a6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c990613334565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ac9190612e4b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906133c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613450565b60405180910390fd5b5f81116118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce906134de565b60405180910390fd5b6118df610e65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194d575061191d610e65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2657601560149054906101000a900460ff166119dc5761196e610e65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d29061356c565b60405180910390fd5b5b601654811115611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a18906135d4565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611abf575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613662565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611baa5760175481611b5f84610c10565b611b6991906136ad565b10611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba090613750565b60405180910390fd5b5b5f611bb430610c10565b90505f60185482101590506016548210611bce5760165491505b808015611be6575060158054906101000a900460ff16155b8015611c3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750601560169054906101000a900460ff165b8015611caa575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cfd575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2357611d0b8261214f565b5f4790505f811115611d2157611d204761207b565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc6575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e77575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e76575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e84575f9050612007565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fee575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200657600a54600c81905550600b54600d819055505b5b612013848484846123b8565b50505050565b5f838311158290612060576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120579190612d04565b60405180910390fd5b505f838561206e919061376e565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120df573d5f803e3d5ffd5b5050565b5f600654821115612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613811565b60405180910390fd5b5f6121326123e5565b9050612147818461240e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218557612184612ac7565b5b6040519080825280602002602001820160405280156121b35781602001602082028036833780820191505090505b50905030815f815181106121ca576121c961317b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122929190613843565b816001815181106122a6576122a561317b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161236e95949392919061395e565b5f604051808303815f87803b158015612385575f80fd5b505af1158015612397573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c6576123c5612457565b5b6123d1848484612490565b806123df576123de612650565b5b50505050565b5f805f6123f0612664565b91509150612407818361240e90919063ffffffff16565b9250505090565b5f61244f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126bd565b905092915050565b5f600c5414801561246957505f600d54145b61248e57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061249f8761271e565b9550955095509550955095506124fb8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277e90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258c8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d681612824565b6125e084836128db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263d9190612e4b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66f79d06272a9a00905061269366f79d06272a9a0060065461240e90919063ffffffff16565b8210156126b05760065466f79d06272a9a009350935050506126b9565b81819350935050505b9091565b5f8083118290612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa9190612d04565b60405180910390fd5b505f838561271191906139e3565b9050809150509392505050565b5f805f805f805f805f6127368a600c54600d54612915565b9250925092505f6127456123e5565b90505f805f6127568e8787876129a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612019565b905092915050565b5f8082846127d591906136ad565b90508381101561281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281190613a5d565b60405180910390fd5b8091505092915050565b5f61282d6123e5565b90505f6128438284612a2b90919063ffffffff16565b90506128958160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128f08260065461277e90919063ffffffff16565b60068190555061290b816007546127c790919063ffffffff16565b6007819055505050565b5f805f8061293f6064612931888a612a2b90919063ffffffff16565b61240e90919063ffffffff16565b90505f612968606461295a888b612a2b90919063ffffffff16565b61240e90919063ffffffff16565b90505f61299082612982858c61277e90919063ffffffff16565b61277e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129be8589612a2b90919063ffffffff16565b90505f6129d48689612a2b90919063ffffffff16565b90505f6129ea8789612a2b90919063ffffffff16565b90505f612a1282612a04858761277e90919063ffffffff16565b61277e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a3b575f9050612a9c565b5f8284612a489190613a7b565b9050828482612a5791906139e3565b14612a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8e90613b2c565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afd82612ab7565b810181811067ffffffffffffffff82111715612b1c57612b1b612ac7565b5b80604052505050565b5f612b2e612aa2565b9050612b3a8282612af4565b919050565b5f67ffffffffffffffff821115612b5957612b58612ac7565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9782612b6e565b9050919050565b612ba781612b8d565b8114612bb1575f80fd5b50565b5f81359050612bc281612b9e565b92915050565b5f612bda612bd584612b3f565b612b25565b90508083825260208201905060208402830185811115612bfd57612bfc612b6a565b5b835b81811015612c265780612c128882612bb4565b845260208401935050602081019050612bff565b5050509392505050565b5f82601f830112612c4457612c43612ab3565b5b8135612c54848260208601612bc8565b91505092915050565b5f60208284031215612c7257612c71612aab565b5b5f82013567ffffffffffffffff811115612c8f57612c8e612aaf565b5b612c9b84828501612c30565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612cd682612ca4565b612ce08185612cae565b9350612cf0818560208601612cbe565b612cf981612ab7565b840191505092915050565b5f6020820190508181035f830152612d1c8184612ccc565b905092915050565b5f819050919050565b612d3681612d24565b8114612d40575f80fd5b50565b5f81359050612d5181612d2d565b92915050565b5f8060408385031215612d6d57612d6c612aab565b5b5f612d7a85828601612bb4565b9250506020612d8b85828601612d43565b9150509250929050565b5f8115159050919050565b612da981612d95565b82525050565b5f602082019050612dc25f830184612da0565b92915050565b5f819050919050565b5f612deb612de6612de184612b6e565b612dc8565b612b6e565b9050919050565b5f612dfc82612dd1565b9050919050565b5f612e0d82612df2565b9050919050565b612e1d81612e03565b82525050565b5f602082019050612e365f830184612e14565b92915050565b612e4581612d24565b82525050565b5f602082019050612e5e5f830184612e3c565b92915050565b5f805f60608486031215612e7b57612e7a612aab565b5b5f612e8886828701612bb4565b9350506020612e9986828701612bb4565b9250506040612eaa86828701612d43565b9150509250925092565b5f60ff82169050919050565b612ec981612eb4565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b612ef181612b8d565b82525050565b5f602082019050612f0a5f830184612ee8565b92915050565b5f60208284031215612f2557612f24612aab565b5b5f612f3284828501612bb4565b91505092915050565b612f4481612d95565b8114612f4e575f80fd5b50565b5f81359050612f5f81612f3b565b92915050565b5f60208284031215612f7a57612f79612aab565b5b5f612f8784828501612f51565b91505092915050565b5f60208284031215612fa557612fa4612aab565b5b5f612fb284828501612d43565b91505092915050565b5f805f8060808587031215612fd357612fd2612aab565b5b5f612fe087828801612d43565b9450506020612ff187828801612d43565b935050604061300287828801612d43565b925050606061301387828801612d43565b91505092959194509250565b5f80fd5b5f8083601f84011261303857613037612ab3565b5b8235905067ffffffffffffffff8111156130555761305461301f565b5b60208301915083602082028301111561307157613070612b6a565b5b9250929050565b5f805f6040848603121561308f5761308e612aab565b5b5f84013567ffffffffffffffff8111156130ac576130ab612aaf565b5b6130b886828701613023565b935093505060206130cb86828701612f51565b9150509250925092565b5f80604083850312156130eb576130ea612aab565b5b5f6130f885828601612bb4565b925050602061310985828601612bb4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613147602083612cae565b915061315282613113565b602082019050919050565b5f6020820190508181035f8301526131748161313b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613202602683612cae565b915061320d826131a8565b604082019050919050565b5f6020820190508181035f83015261322f816131f6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613290602483612cae565b915061329b82613236565b604082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61331e602283612cae565b9150613329826132c4565b604082019050919050565b5f6020820190508181035f83015261334b81613312565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133ac602583612cae565b91506133b782613352565b604082019050919050565b5f6020820190508181035f8301526133d9816133a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343a602383612cae565b9150613445826133e0565b604082019050919050565b5f6020820190508181035f8301526134678161342e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134c8602983612cae565b91506134d38261346e565b604082019050919050565b5f6020820190508181035f8301526134f5816134bc565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613556603f83612cae565b9150613561826134fc565b604082019050919050565b5f6020820190508181035f8301526135838161354a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135be601c83612cae565b91506135c98261358a565b602082019050919050565b5f6020820190508181035f8301526135eb816135b2565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61364c602383612cae565b9150613657826135f2565b604082019050919050565b5f6020820190508181035f83015261367981613640565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136b782612d24565b91506136c283612d24565b92508282019050808211156136da576136d9613680565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61373a602383612cae565b9150613745826136e0565b604082019050919050565b5f6020820190508181035f8301526137678161372e565b9050919050565b5f61377882612d24565b915061378383612d24565b925082820390508181111561379b5761379a613680565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137fb602a83612cae565b9150613806826137a1565b604082019050919050565b5f6020820190508181035f830152613828816137ef565b9050919050565b5f8151905061383d81612b9e565b92915050565b5f6020828403121561385857613857612aab565b5b5f6138658482850161382f565b91505092915050565b5f819050919050565b5f61389161388c6138878461386e565b612dc8565b612d24565b9050919050565b6138a181613877565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138d981612b8d565b82525050565b5f6138ea83836138d0565b60208301905092915050565b5f602082019050919050565b5f61390c826138a7565b61391681856138b1565b9350613921836138c1565b805f5b8381101561395157815161393888826138df565b9750613943836138f6565b925050600181019050613924565b5085935050505092915050565b5f60a0820190506139715f830188612e3c565b61397e6020830187613898565b81810360408301526139908186613902565b905061399f6060830185612ee8565b6139ac6080830184612e3c565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139ed82612d24565b91506139f883612d24565b925082613a0857613a076139b6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a47601b83612cae565b9150613a5282613a13565b602082019050919050565b5f6020820190508181035f830152613a7481613a3b565b9050919050565b5f613a8582612d24565b9150613a9083612d24565b9250828202613a9e81612d24565b91508282048414831517613ab557613ab4613680565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b16602183612cae565b9150613b2182613abc565b604082019050919050565b5f6020820190508181035f830152613b4381613b0a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b5ebd93285b2a5729f538a10e9b400ded0bf508b55da82c4880cb615523665e64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612c5d565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d04565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d57565b610850565b60405161025f9190612daf565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612e23565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e4b565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e64565b6108a0565b6040516102ef9190612daf565b60405180910390f35b348015610303575f80fd5b5061030c610974565b6040516103199190612e4b565b60405180910390f35b34801561032d575f80fd5b5061033661097a565b6040516103439190612ecf565b60405180910390f35b348015610357575f80fd5b50610360610982565b60405161036d9190612ef7565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612f10565b6109a7565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f65565b610a92565b005b3480156103d1575f80fd5b506103da610b43565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f10565b610c10565b60405161040f9190612e4b565b60405180910390f35b348015610423575f80fd5b5061042c610c5e565b005b348015610439575f80fd5b50610454600480360381019061044f9190612f90565b610dac565b005b348015610461575f80fd5b5061046a610e4a565b6040516104779190612e4b565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612f10565b610e50565b6040516104b39190612e4b565b60405180910390f35b3480156104c7575f80fd5b506104d0610e65565b6040516104dd9190612ef7565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f65565b610e8c565b005b348015610519575f80fd5b50610522610f3d565b60405161052f9190612e4b565b60405180910390f35b348015610543575f80fd5b5061054c610f43565b6040516105599190612d04565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612f90565b610f80565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612fbb565b61101e565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d57565b6110d4565b6040516105e59190612daf565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612f10565b6110f1565b6040516106219190612daf565b60405180910390f35b348015610635575f80fd5b5061063e61110e565b005b34801561064b575f80fd5b5061066660048036038101906106619190613078565b6111e3565b005b348015610673575f80fd5b5061068e600480360381019061068991906130d5565b611312565b60405161069b9190612e4b565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612f90565b611394565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612f10565b611432565b005b6106fc6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f9061315d565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61317b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600581526020017f726f636b79000000000000000000000000000000000000000000000000000000815250905090565b5f61086361085c6115ef565b84846115f6565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66f79d06272a9a00905090565b5f6108ac8484846117b9565b610969846108b86115ef565b61096485604051806060016040528060288152602001613b4b6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091b6115ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120199092919063ffffffff16565b6115f6565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109af6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a329061315d565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9a6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d9061315d565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b836115ef565b73ffffffffffffffffffffffffffffffffffffffff161480610bf8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be06115ef565b73ffffffffffffffffffffffffffffffffffffffff16145b610c00575f80fd5b5f479050610c0d8161207b565b50565b5f610c5760025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e3565b9050919050565b610c666115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce99061315d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db46115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061315d565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e946115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f179061315d565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f726f636b79000000000000000000000000000000000000000000000000000000815250905090565b610f886115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b9061315d565b60405180910390fd5b8060188190555050565b6110266115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a99061315d565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110e76110e06115ef565b84846117b9565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661114e6115ef565b73ffffffffffffffffffffffffffffffffffffffff1614806111c3575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ab6115ef565b73ffffffffffffffffffffffffffffffffffffffff16145b6111cb575f80fd5b5f6111d530610c10565b90506111e08161214f565b50565b6111eb6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e9061315d565b60405180910390fd5b5f5b8383905081101561130c578160055f86868581811061129b5761129a61317b565b5b90506020020160208101906112b09190612f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611279565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139c6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f9061315d565b60405180910390fd5b8060178190555050565b61143a6115ef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061315d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613218565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b906132a6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c990613334565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ac9190612e4b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906133c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613450565b60405180910390fd5b5f81116118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce906134de565b60405180910390fd5b6118df610e65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194d575061191d610e65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2657601560149054906101000a900460ff166119dc5761196e610e65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d29061356c565b60405180910390fd5b5b601654811115611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a18906135d4565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611abf575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613662565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611baa5760175481611b5f84610c10565b611b6991906136ad565b10611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba090613750565b60405180910390fd5b5b5f611bb430610c10565b90505f60185482101590506016548210611bce5760165491505b808015611be6575060158054906101000a900460ff16155b8015611c3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750601560169054906101000a900460ff165b8015611caa575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cfd575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2357611d0b8261214f565b5f4790505f811115611d2157611d204761207b565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc6575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e77575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e76575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e84575f9050612007565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fee575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200657600a54600c81905550600b54600d819055505b5b612013848484846123b8565b50505050565b5f838311158290612060576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120579190612d04565b60405180910390fd5b505f838561206e919061376e565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120df573d5f803e3d5ffd5b5050565b5f600654821115612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613811565b60405180910390fd5b5f6121326123e5565b9050612147818461240e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218557612184612ac7565b5b6040519080825280602002602001820160405280156121b35781602001602082028036833780820191505090505b50905030815f815181106121ca576121c961317b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122929190613843565b816001815181106122a6576122a561317b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161236e95949392919061395e565b5f604051808303815f87803b158015612385575f80fd5b505af1158015612397573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c6576123c5612457565b5b6123d1848484612490565b806123df576123de612650565b5b50505050565b5f805f6123f0612664565b91509150612407818361240e90919063ffffffff16565b9250505090565b5f61244f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126bd565b905092915050565b5f600c5414801561246957505f600d54145b61248e57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061249f8761271e565b9550955095509550955095506124fb8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277e90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258c8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d681612824565b6125e084836128db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263d9190612e4b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66f79d06272a9a00905061269366f79d06272a9a0060065461240e90919063ffffffff16565b8210156126b05760065466f79d06272a9a009350935050506126b9565b81819350935050505b9091565b5f8083118290612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa9190612d04565b60405180910390fd5b505f838561271191906139e3565b9050809150509392505050565b5f805f805f805f805f6127368a600c54600d54612915565b9250925092505f6127456123e5565b90505f805f6127568e8787876129a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612019565b905092915050565b5f8082846127d591906136ad565b90508381101561281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281190613a5d565b60405180910390fd5b8091505092915050565b5f61282d6123e5565b90505f6128438284612a2b90919063ffffffff16565b90506128958160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128f08260065461277e90919063ffffffff16565b60068190555061290b816007546127c790919063ffffffff16565b6007819055505050565b5f805f8061293f6064612931888a612a2b90919063ffffffff16565b61240e90919063ffffffff16565b90505f612968606461295a888b612a2b90919063ffffffff16565b61240e90919063ffffffff16565b90505f61299082612982858c61277e90919063ffffffff16565b61277e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129be8589612a2b90919063ffffffff16565b90505f6129d48689612a2b90919063ffffffff16565b90505f6129ea8789612a2b90919063ffffffff16565b90505f612a1282612a04858761277e90919063ffffffff16565b61277e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a3b575f9050612a9c565b5f8284612a489190613a7b565b9050828482612a5791906139e3565b14612a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8e90613b2c565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afd82612ab7565b810181811067ffffffffffffffff82111715612b1c57612b1b612ac7565b5b80604052505050565b5f612b2e612aa2565b9050612b3a8282612af4565b919050565b5f67ffffffffffffffff821115612b5957612b58612ac7565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9782612b6e565b9050919050565b612ba781612b8d565b8114612bb1575f80fd5b50565b5f81359050612bc281612b9e565b92915050565b5f612bda612bd584612b3f565b612b25565b90508083825260208201905060208402830185811115612bfd57612bfc612b6a565b5b835b81811015612c265780612c128882612bb4565b845260208401935050602081019050612bff565b5050509392505050565b5f82601f830112612c4457612c43612ab3565b5b8135612c54848260208601612bc8565b91505092915050565b5f60208284031215612c7257612c71612aab565b5b5f82013567ffffffffffffffff811115612c8f57612c8e612aaf565b5b612c9b84828501612c30565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612cd682612ca4565b612ce08185612cae565b9350612cf0818560208601612cbe565b612cf981612ab7565b840191505092915050565b5f6020820190508181035f830152612d1c8184612ccc565b905092915050565b5f819050919050565b612d3681612d24565b8114612d40575f80fd5b50565b5f81359050612d5181612d2d565b92915050565b5f8060408385031215612d6d57612d6c612aab565b5b5f612d7a85828601612bb4565b9250506020612d8b85828601612d43565b9150509250929050565b5f8115159050919050565b612da981612d95565b82525050565b5f602082019050612dc25f830184612da0565b92915050565b5f819050919050565b5f612deb612de6612de184612b6e565b612dc8565b612b6e565b9050919050565b5f612dfc82612dd1565b9050919050565b5f612e0d82612df2565b9050919050565b612e1d81612e03565b82525050565b5f602082019050612e365f830184612e14565b92915050565b612e4581612d24565b82525050565b5f602082019050612e5e5f830184612e3c565b92915050565b5f805f60608486031215612e7b57612e7a612aab565b5b5f612e8886828701612bb4565b9350506020612e9986828701612bb4565b9250506040612eaa86828701612d43565b9150509250925092565b5f60ff82169050919050565b612ec981612eb4565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b612ef181612b8d565b82525050565b5f602082019050612f0a5f830184612ee8565b92915050565b5f60208284031215612f2557612f24612aab565b5b5f612f3284828501612bb4565b91505092915050565b612f4481612d95565b8114612f4e575f80fd5b50565b5f81359050612f5f81612f3b565b92915050565b5f60208284031215612f7a57612f79612aab565b5b5f612f8784828501612f51565b91505092915050565b5f60208284031215612fa557612fa4612aab565b5b5f612fb284828501612d43565b91505092915050565b5f805f8060808587031215612fd357612fd2612aab565b5b5f612fe087828801612d43565b9450506020612ff187828801612d43565b935050604061300287828801612d43565b925050606061301387828801612d43565b91505092959194509250565b5f80fd5b5f8083601f84011261303857613037612ab3565b5b8235905067ffffffffffffffff8111156130555761305461301f565b5b60208301915083602082028301111561307157613070612b6a565b5b9250929050565b5f805f6040848603121561308f5761308e612aab565b5b5f84013567ffffffffffffffff8111156130ac576130ab612aaf565b5b6130b886828701613023565b935093505060206130cb86828701612f51565b9150509250925092565b5f80604083850312156130eb576130ea612aab565b5b5f6130f885828601612bb4565b925050602061310985828601612bb4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613147602083612cae565b915061315282613113565b602082019050919050565b5f6020820190508181035f8301526131748161313b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613202602683612cae565b915061320d826131a8565b604082019050919050565b5f6020820190508181035f83015261322f816131f6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613290602483612cae565b915061329b82613236565b604082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61331e602283612cae565b9150613329826132c4565b604082019050919050565b5f6020820190508181035f83015261334b81613312565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133ac602583612cae565b91506133b782613352565b604082019050919050565b5f6020820190508181035f8301526133d9816133a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343a602383612cae565b9150613445826133e0565b604082019050919050565b5f6020820190508181035f8301526134678161342e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134c8602983612cae565b91506134d38261346e565b604082019050919050565b5f6020820190508181035f8301526134f5816134bc565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613556603f83612cae565b9150613561826134fc565b604082019050919050565b5f6020820190508181035f8301526135838161354a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135be601c83612cae565b91506135c98261358a565b602082019050919050565b5f6020820190508181035f8301526135eb816135b2565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61364c602383612cae565b9150613657826135f2565b604082019050919050565b5f6020820190508181035f83015261367981613640565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136b782612d24565b91506136c283612d24565b92508282019050808211156136da576136d9613680565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61373a602383612cae565b9150613745826136e0565b604082019050919050565b5f6020820190508181035f8301526137678161372e565b9050919050565b5f61377882612d24565b915061378383612d24565b925082820390508181111561379b5761379a613680565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137fb602a83612cae565b9150613806826137a1565b604082019050919050565b5f6020820190508181035f830152613828816137ef565b9050919050565b5f8151905061383d81612b9e565b92915050565b5f6020828403121561385857613857612aab565b5b5f6138658482850161382f565b91505092915050565b5f819050919050565b5f61389161388c6138878461386e565b612dc8565b612d24565b9050919050565b6138a181613877565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138d981612b8d565b82525050565b5f6138ea83836138d0565b60208301905092915050565b5f602082019050919050565b5f61390c826138a7565b61391681856138b1565b9350613921836138c1565b805f5b8381101561395157815161393888826138df565b9750613943836138f6565b925050600181019050613924565b5085935050505092915050565b5f60a0820190506139715f830188612e3c565b61397e6020830187613898565b81810360408301526139908186613902565b905061399f6060830185612ee8565b6139ac6080830184612e3c565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139ed82612d24565b91506139f883612d24565b925082613a0857613a076139b6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a47601b83612cae565b9150613a5282613a13565b602082019050919050565b5f6020820190508181035f830152613a7481613a3b565b9050919050565b5f613a8582612d24565b9150613a9083612d24565b9250828202613a9e81612d24565b91508282048414831517613ab557613ab4613680565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b16602183612cae565b9150613b2182613abc565b604082019050919050565b5f6020820190508181035f830152613b4381613b0a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b5ebd93285b2a5729f538a10e9b400ded0bf508b55da82c4880cb615523665e64736f6c634300081a0033

Deployed Bytecode Sourcemap

4169:13525:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12867:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6695:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7620:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5521:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6972:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7821:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5835:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6881:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5569:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13044:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17076:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12624:235;;;;;;;;;;;;;:::i;:::-;;7075:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1656:148;;;;;;;;;;;;;:::i;:::-;;17216:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5719:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5263:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1442:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12271:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5776:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6786:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16885:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16542:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7221:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5225:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12380:236;;;;;;;;;;;;;:::i;:::-;;17455:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7428:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17332:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1812:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12867:169;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12943:9:::1;12938:91;12962:5;:12;12958:1;:16;12938:91;;;13013:4;12996;:14;13001:5;13007:1;13001:8;;;;;;;;:::i;:::-;;;;;;;;12996:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12976:3;;;;;;;12938:91;;;;12867:169:::0;:::o;6695:83::-;6732:13;6765:5;;;;;;;;;;;;;;;;;6758:12;;6695:83;:::o;7620:193::-;7722:4;7744:39;7753:12;:10;:12::i;:::-;7767:7;7776:6;7744:8;:39::i;:::-;7801:4;7794:11;;7620:193;;;;:::o;5521:41::-;;;;;;;;;;;;;:::o;6972:95::-;7025:7;4711:16;7045:14;;6972:95;:::o;7821:446::-;7953:4;7970:36;7980:6;7988:9;7999:6;7970:9;:36::i;:::-;8017:220;8040:6;8061:12;:10;:12::i;:::-;8088:138;8144:6;8088:138;;;;;;;;;;;;;;;;;:11;:19;8100:6;8088:19;;;;;;;;;;;;;;;:33;8108:12;:10;:12::i;:::-;8088:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8017:8;:220::i;:::-;8255:4;8248:11;;7821:446;;;;;:::o;5835:51::-;;;;:::o;6881:83::-;6922:5;4385:1;6940:16;;6881:83;:::o;5569:28::-;;;;;;;;;;;;;:::o;13044:92::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13123:5:::1;13108:4;:12;13113:6;13108:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13044:92:::0;:::o;17076:101::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17157:12:::1;17143:11;;:26;;;;;;;;;;;;;;;;;;17076:101:::0;:::o;12624:235::-;12690:19;;;;;;;;;;;12674:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12729:17;;;;;;;;;;;12713:33;;:12;:10;:12::i;:::-;:33;;;12674:72;12666:81;;;;;;12758:26;12787:21;12758:50;;12819:32;12832:18;12819:12;:32::i;:::-;12655:204;12624:235::o;7075:138::-;7141:7;7168:37;7188:7;:16;7196:7;7188:16;;;;;;;;;;;;;;;;7168:19;:37::i;:::-;7161:44;;7075:138;;;:::o;1656:148::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1763:1:::1;1726:40;;1747:6;::::0;::::1;;;;;;;;1726:40;;;;;;;;;;;;1794:1;1777:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1656:148::o:0;17216:108::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17305:11:::1;17290:12;:26;;;;17216:108:::0;:::o;5719:44::-;;;;:::o;5263:43::-;;;;;;;;;;;;;;;;;:::o;1442:79::-;1480:7;1507:6;;;;;;;;;;;1500:13;;1442:79;:::o;12271:101::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12352:12:::1;12338:11;;:26;;;;;;;;;;;;;;;;;;12271:101:::0;:::o;5776:46::-;;;;:::o;6786:87::-;6825:13;6858:7;;;;;;;;;;;;;;;;;6851:14;;6786:87;:::o;16885:139::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16998:18:::1;16976:19;:40;;;;16885:139:::0;:::o;16542:291::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16693:13:::1;16676:14;:30;;;;16735:14;16717:15;:32;;;;16775:11;16760:12;:26;;;;16813:12;16797:13;:28;;;;16542:291:::0;;;;:::o;7221:199::-;7326:4;7348:42;7358:12;:10;:12::i;:::-;7372:9;7383:6;7348:9;:42::i;:::-;7408:4;7401:11;;7221:199;;;;:::o;5225:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12380:236::-;12446:19;;;;;;;;;;;12430:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12485:17;;;;;;;;;;;12469:33;;:12;:10;:12::i;:::-;:33;;;12430:72;12422:81;;;;;;12514:23;12540:24;12558:4;12540:9;:24::i;:::-;12514:50;;12575:33;12592:15;12575:16;:33::i;:::-;12411:205;12380:236::o;17455:234::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17572:9:::1;17568:114;17591:8;;:15;;17587:1;:19;17568:114;;;17662:8;17628:18;:31;17647:8;;17656:1;17647:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17628:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17608:3;;;;;;;17568:114;;;;17455:234:::0;;;:::o;7428:184::-;7545:7;7577:11;:18;7589:5;7577:18;;;;;;;;;;;;;;;:27;7596:7;7577:27;;;;;;;;;;;;;;;;7570:34;;7428:184;;;;:::o;17332:115::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17426:13:::1;17409:14;:30;;;;17332:115:::0;:::o;1812:244::-;1579:12;:10;:12::i;:::-;1569:22;;:6;;;;;;;;;;:22;;;1561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1921:1:::1;1901:22;;:8;:22;;::::0;1893:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2011:8;1982:38;;2003:6;::::0;::::1;;;;;;;;1982:38;;;;;;;;;;;;2040:8;2031:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1812:244:::0;:::o;201:98::-;254:7;281:10;274:17;;201:98;:::o;8958:369::-;9102:1;9085:19;;:5;:19;;;9077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9183:1;9164:21;;:7;:21;;;9156:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9265:6;9235:11;:18;9247:5;9235:18;;;;;;;;;;;;;;;:27;9254:7;9235:27;;;;;;;;;;;;;;;:36;;;;9303:7;9287:32;;9296:5;9287:32;;;9312:6;9287:32;;;;;;:::i;:::-;;;;;;;;8958:369;;;:::o;9335:2330::-;9473:1;9457:18;;:4;:18;;;9449:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9550:1;9536:16;;:2;:16;;;9528:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9620:1;9611:6;:10;9603:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9692:7;:5;:7::i;:::-;9684:15;;:4;:15;;;;:32;;;;;9709:7;:5;:7::i;:::-;9703:13;;:2;:13;;;;9684:32;9680:1259;;;9773:11;;;;;;;;;;;9768:144;;9821:7;:5;:7::i;:::-;9813:15;;:4;:15;;;9805:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9768:144;9946:12;;9936:6;:22;;9928:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10015:4;:10;10020:4;10015:10;;;;;;;;;;;;;;;;;;;;;;;;;10014:11;:24;;;;;10030:4;:8;10035:2;10030:8;;;;;;;;;;;;;;;;;;;;;;;;;10029:9;10014:24;10006:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10104:13;;;;;;;;;;;10098:19;;:2;:19;;;10095:146;;10171:14;;10162:6;10146:13;10156:2;10146:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10138:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10095:146;10257:28;10288:24;10306:4;10288:9;:24::i;:::-;10257:55;;10327:12;10366:19;;10342:20;:43;;10327:58;;10429:12;;10405:20;:36;10402:124;;10498:12;;10475:35;;10402:124;10546:7;:18;;;;;10558:6;;;;;;;;;;10557:7;10546:18;:43;;;;;10576:13;;;;;;;;;;;10568:21;;:4;:21;;;;10546:43;:58;;;;;10593:11;;;;;;;;;;;10546:58;:87;;;;;10609:18;:24;10628:4;10609:24;;;;;;;;;;;;;;;;;;;;;;;;;10608:25;10546:87;:114;;;;;10638:18;:22;10657:2;10638:22;;;;;;;;;;;;;;;;;;;;;;;;;10637:23;10546:114;10542:386;;;10681:38;10698:20;10681:16;:38::i;:::-;10738:26;10767:21;10738:50;;10832:1;10811:18;:22;10807:106;;;10858:35;10871:21;10858:12;:35::i;:::-;10807:106;10662:266;10542:386;9718:1221;;9680:1259;10951:12;10966:4;10951:19;;11015:18;:24;11034:4;11015:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11043:18;:22;11062:2;11043:22;;;;;;;;;;;;;;;;;;;;;;;;;11015:50;11014:102;;;;11079:13;;;;;;;;;;;11071:21;;:4;:21;;;;:44;;;;;11102:13;;;;;;;;;;;11096:19;;:2;:19;;;;11071:44;11014:102;11010:594;;;11143:5;11133:15;;11010:594;;;11226:13;;;;;;;;;;;11218:21;;:4;:21;;;:55;;;;;11257:15;;;;;;;;;;;11243:30;;:2;:30;;;;11218:55;11215:162;;;11306:14;;11294:9;:26;;;;11349:12;;11339:7;:22;;;;11215:162;11436:13;;;;;;;;;;;11430:19;;:2;:19;;;:55;;;;;11469:15;;;;;;;;;;;11453:32;;:4;:32;;;;11430:55;11426:165;;;11518:15;;11506:9;:27;;;;11562:13;;11552:7;:23;;;;11426:165;11010:594;11616:41;11631:4;11637:2;11641:6;11649:7;11616:14;:41::i;:::-;9438:2227;9335:2330;;;:::o;2420:224::-;2540:7;2573:1;2568;:6;;2576:12;2560:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2600:9;2616:1;2612;:5;;;;:::i;:::-;2600:17;;2635:1;2628:8;;;2420:224;;;;;:::o;12164:99::-;12221:17;;;;;;;;;;;:26;;:34;12248:6;12221:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12164:99;:::o;8275:323::-;8370:7;8428;;8417;:18;;8395:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8516:19;8538:10;:8;:10::i;:::-;8516:32;;8566:24;8578:11;8566:7;:11;;:24;;;;:::i;:::-;8559:31;;;8275:323;;;:::o;11673:483::-;5996:4;5987:6;;:13;;;;;;;;;;;;;;;;;;11751:21:::1;11789:1;11775:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11751:40;;11820:4;11802;11807:1;11802:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11846:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11836:4;11841:1;11836:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11879:62;11896:4;11911:15;;;;;;;;;;;11929:11;11879:8;:62::i;:::-;11952:15;;;;;;;;;;;:66;;;12033:11;12059:1;12075:4;12102;12122:15;11952:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11740:416;6032:5:::0;6023:6;;:14;;;;;;;;;;;;;;;;;;11673:483;:::o;13144:282::-;13300:7;13295:28;;13309:14;:12;:14::i;:::-;13295:28;13334:44;13352:6;13360:9;13371:6;13334:17;:44::i;:::-;13394:7;13389:29;;13403:15;:13;:15::i;:::-;13389:29;13144:282;;;;:::o;16105:164::-;16147:7;16168:15;16185;16204:19;:17;:19::i;:::-;16167:56;;;;16241:20;16253:7;16241;:11;;:20;;;;:::i;:::-;16234:27;;;;16105:164;:::o;2906:132::-;2964:7;2991:39;2995:1;2998;2991:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2984:46;;2906:132;;;;:::o;8606:219::-;8666:1;8653:9;;:14;:30;;;;;8682:1;8671:7;;:12;8653:30;8685:7;8649:43;8724:9;;8704:17;:29;;;;8762:7;;8744:15;:25;;;;8794:1;8782:9;:13;;;;8816:1;8806:7;:11;;;;8606:219;:::o;13434:610::-;13581:15;13611:23;13649:12;13676:23;13714:12;13741:13;13768:19;13779:7;13768:10;:19::i;:::-;13566:221;;;;;;;;;;;;13816:28;13836:7;13816;:15;13824:6;13816:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13798:7;:15;13806:6;13798:15;;;;;;;;;;;;;;;:46;;;;13876:39;13899:15;13876:7;:18;13884:9;13876:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13855:7;:18;13863:9;13855:18;;;;;;;;;;;;;;;:60;;;;13926:16;13936:5;13926:9;:16::i;:::-;13953:23;13965:4;13971;13953:11;:23::i;:::-;14009:9;13992:44;;14001:6;13992:44;;;14020:15;13992:44;;;;;;:::i;:::-;;;;;;;;13555:489;;;;;;13434:610;;;:::o;8833:117::-;8889:17;;8877:9;:29;;;;8927:15;;8917:7;:25;;;;8833:117::o;16277:257::-;16328:7;16337;16357:15;16375:7;;16357:25;;16393:15;4711:16;16393:25;;16443:20;4711:16;16443:7;;:11;;:20;;;;:::i;:::-;16433:7;:30;16429:61;;;16473:7;;4711:16;16465:25;;;;;;;;16429:61;16509:7;16518;16501:25;;;;;;16277:257;;;:::o;3046:223::-;3166:7;3198:1;3194;:5;3201:12;3186:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3225:9;3241:1;3237;:5;;;;:::i;:::-;3225:17;;3260:1;3253:8;;;3046:223;;;;;:::o;14463:615::-;14563:7;14585;14607;14629;14651;14673;14709:23;14734:12;14748:13;14778:40;14790:7;14799:9;;14810:7;;14778:11;:40::i;:::-;14708:110;;;;;;14829:19;14851:10;:8;:10::i;:::-;14829:32;;14873:15;14890:23;14915:12;14944:46;14956:7;14965:4;14971:5;14978:11;14944;:46::i;:::-;14872:118;;;;;;15009:7;15018:15;15035:4;15041:15;15058:4;15064:5;15001:69;;;;;;;;;;;;;;;;;;;14463:615;;;;;;;:::o;2276:136::-;2334:7;2361:43;2365:1;2368;2361:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2354:50;;2276:136;;;;:::o;2089:179::-;2147:7;2167:9;2183:1;2179;:5;;;;:::i;:::-;2167:17;;2208:1;2203;:6;;2195:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2259:1;2252:8;;;2089:179;;;;:::o;14052:211::-;14105:19;14127:10;:8;:10::i;:::-;14105:32;;14148:13;14164:22;14174:11;14164:5;:9;;:22;;;;:::i;:::-;14148:38;;14222:33;14249:5;14222:7;:22;14238:4;14222:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14197:7;:22;14213:4;14197:22;;;;;;;;;;;;;;;:58;;;;14094:169;;14052:211;:::o;14271:147::-;14349:17;14361:4;14349:7;;:11;;:17;;;;:::i;:::-;14339:7;:27;;;;14390:20;14405:4;14390:10;;:14;;:20;;;;:::i;:::-;14377:10;:33;;;;14271:147;;:::o;15086:469::-;15255:7;15277;15299;15334:12;15349:30;15375:3;15349:21;15361:8;15349:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15334:45;;15390:13;15406:28;15430:3;15406:19;15418:6;15406:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15390:44;;15445:23;15471:28;15493:5;15471:17;15483:4;15471:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15445:54;;15518:15;15535:4;15541:5;15510:37;;;;;;;;;15086:469;;;;;;;:::o;15563:534::-;15757:7;15779;15801;15836:15;15854:24;15866:11;15854:7;:11;;:24;;;;:::i;:::-;15836:42;;15889:12;15904:21;15913:11;15904:4;:8;;:21;;;;:::i;:::-;15889:36;;15936:13;15952:22;15962:11;15952:5;:9;;:22;;;;:::i;:::-;15936:38;;15985:23;16011:28;16033:5;16011:17;16023:4;16011:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15985:54;;16058:7;16067:15;16084:4;16050:39;;;;;;;;;;15563:534;;;;;;;;:::o;2652:246::-;2710:7;2739:1;2734;:6;2730:47;;2764:1;2757:8;;;;2730:47;2787:9;2803:1;2799;:5;;;;:::i;:::-;2787:17;;2832:1;2827;2823;:5;;;;:::i;:::-;:10;2815:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2889:1;2882:8;;;2652:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:139::-;4160:6;4155:3;4150;4144:23;4201:1;4192:6;4187:3;4183:16;4176:27;4071:139;;;:::o;4216:377::-;4304:3;4332:39;4365:5;4332:39;:::i;:::-;4387:71;4451:6;4446:3;4387:71;:::i;:::-;4380:78;;4467:65;4525:6;4520:3;4513:4;4506:5;4502:16;4467:65;:::i;:::-;4557:29;4579:6;4557:29;:::i;:::-;4552:3;4548:39;4541:46;;4308:285;4216:377;;;;:::o;4599:313::-;4712:4;4750:2;4739:9;4735:18;4727:26;;4799:9;4793:4;4789:20;4785:1;4774:9;4770:17;4763:47;4827:78;4900:4;4891:6;4827:78;:::i;:::-;4819:86;;4599:313;;;;:::o;4918:77::-;4955:7;4984:5;4973:16;;4918:77;;;:::o;5001:122::-;5074:24;5092:5;5074:24;:::i;:::-;5067:5;5064:35;5054:63;;5113:1;5110;5103:12;5054:63;5001:122;:::o;5129:139::-;5175:5;5213:6;5200:20;5191:29;;5229:33;5256:5;5229:33;:::i;:::-;5129:139;;;;:::o;5274:474::-;5342:6;5350;5399:2;5387:9;5378:7;5374:23;5370:32;5367:119;;;5405:79;;:::i;:::-;5367:119;5525:1;5550:53;5595:7;5586:6;5575:9;5571:22;5550:53;:::i;:::-;5540:63;;5496:117;5652:2;5678:53;5723:7;5714:6;5703:9;5699:22;5678:53;:::i;:::-;5668:63;;5623:118;5274:474;;;;;:::o;5754:90::-;5788:7;5831:5;5824:13;5817:21;5806:32;;5754:90;;;:::o;5850:109::-;5931:21;5946:5;5931:21;:::i;:::-;5926:3;5919:34;5850:109;;:::o;5965:210::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:65;6165:1;6154:9;6150:17;6141:6;6103:65;:::i;:::-;5965:210;;;;:::o;6181:60::-;6209:3;6230:5;6223:12;;6181:60;;;:::o;6247:142::-;6297:9;6330:53;6348:34;6357:24;6375:5;6357:24;:::i;:::-;6348:34;:::i;:::-;6330:53;:::i;:::-;6317:66;;6247:142;;;:::o;6395:126::-;6445:9;6478:37;6509:5;6478:37;:::i;:::-;6465:50;;6395:126;;;:::o;6527:152::-;6603:9;6636:37;6667:5;6636:37;:::i;:::-;6623:50;;6527:152;;;:::o;6685:183::-;6798:63;6855:5;6798:63;:::i;:::-;6793:3;6786:76;6685:183;;:::o;6874:274::-;6993:4;7031:2;7020:9;7016:18;7008:26;;7044:97;7138:1;7127:9;7123:17;7114:6;7044:97;:::i;:::-;6874:274;;;;:::o;7154:118::-;7241:24;7259:5;7241:24;:::i;:::-;7236:3;7229:37;7154:118;;:::o;7278:222::-;7371:4;7409:2;7398:9;7394:18;7386:26;;7422:71;7490:1;7479:9;7475:17;7466:6;7422:71;:::i;:::-;7278:222;;;;:::o;7506:619::-;7583:6;7591;7599;7648:2;7636:9;7627:7;7623:23;7619:32;7616:119;;;7654:79;;:::i;:::-;7616:119;7774:1;7799:53;7844:7;7835:6;7824:9;7820:22;7799:53;:::i;:::-;7789:63;;7745:117;7901:2;7927:53;7972:7;7963:6;7952:9;7948:22;7927:53;:::i;:::-;7917:63;;7872:118;8029:2;8055:53;8100:7;8091:6;8080:9;8076:22;8055:53;:::i;:::-;8045:63;;8000:118;7506:619;;;;;:::o;8131:86::-;8166:7;8206:4;8199:5;8195:16;8184:27;;8131:86;;;:::o;8223:112::-;8306:22;8322:5;8306:22;:::i;:::-;8301:3;8294:35;8223:112;;:::o;8341:214::-;8430:4;8468:2;8457:9;8453:18;8445:26;;8481:67;8545:1;8534:9;8530:17;8521:6;8481:67;:::i;:::-;8341:214;;;;:::o;8561:118::-;8648:24;8666:5;8648:24;:::i;:::-;8643:3;8636:37;8561:118;;:::o;8685:222::-;8778:4;8816:2;8805:9;8801:18;8793:26;;8829:71;8897:1;8886:9;8882:17;8873:6;8829:71;:::i;:::-;8685:222;;;;:::o;8913:329::-;8972:6;9021:2;9009:9;9000:7;8996:23;8992:32;8989:119;;;9027:79;;:::i;:::-;8989:119;9147:1;9172:53;9217:7;9208:6;9197:9;9193:22;9172:53;:::i;:::-;9162:63;;9118:117;8913:329;;;;:::o;9248:116::-;9318:21;9333:5;9318:21;:::i;:::-;9311:5;9308:32;9298:60;;9354:1;9351;9344:12;9298:60;9248:116;:::o;9370:133::-;9413:5;9451:6;9438:20;9429:29;;9467:30;9491:5;9467:30;:::i;:::-;9370:133;;;;:::o;9509:323::-;9565:6;9614:2;9602:9;9593:7;9589:23;9585:32;9582:119;;;9620:79;;:::i;:::-;9582:119;9740:1;9765:50;9807:7;9798:6;9787:9;9783:22;9765:50;:::i;:::-;9755:60;;9711:114;9509:323;;;;:::o;9838:329::-;9897:6;9946:2;9934:9;9925:7;9921:23;9917:32;9914:119;;;9952:79;;:::i;:::-;9914:119;10072:1;10097:53;10142:7;10133:6;10122:9;10118:22;10097:53;:::i;:::-;10087:63;;10043:117;9838:329;;;;:::o;10173:765::-;10259:6;10267;10275;10283;10332:3;10320:9;10311:7;10307:23;10303:33;10300:120;;;10339:79;;:::i;:::-;10300:120;10459:1;10484:53;10529:7;10520:6;10509:9;10505:22;10484:53;:::i;:::-;10474:63;;10430:117;10586:2;10612:53;10657:7;10648:6;10637:9;10633:22;10612:53;:::i;:::-;10602:63;;10557:118;10714:2;10740:53;10785:7;10776:6;10765:9;10761:22;10740:53;:::i;:::-;10730:63;;10685:118;10842:2;10868:53;10913:7;10904:6;10893:9;10889:22;10868:53;:::i;:::-;10858:63;;10813:118;10173:765;;;;;;;:::o;10944:117::-;11053:1;11050;11043:12;11084:568;11157:8;11167:6;11217:3;11210:4;11202:6;11198:17;11194:27;11184:122;;11225:79;;:::i;:::-;11184:122;11338:6;11325:20;11315:30;;11368:18;11360:6;11357:30;11354:117;;;11390:79;;:::i;:::-;11354:117;11504:4;11496:6;11492:17;11480:29;;11558:3;11550:4;11542:6;11538:17;11528:8;11524:32;11521:41;11518:128;;;11565:79;;:::i;:::-;11518:128;11084:568;;;;;:::o;11658:698::-;11750:6;11758;11766;11815:2;11803:9;11794:7;11790:23;11786:32;11783:119;;;11821:79;;:::i;:::-;11783:119;11969:1;11958:9;11954:17;11941:31;11999:18;11991:6;11988:30;11985:117;;;12021:79;;:::i;:::-;11985:117;12134:80;12206:7;12197:6;12186:9;12182:22;12134:80;:::i;:::-;12116:98;;;;11912:312;12263:2;12289:50;12331:7;12322:6;12311:9;12307:22;12289:50;:::i;:::-;12279:60;;12234:115;11658:698;;;;;:::o;12362:474::-;12430:6;12438;12487:2;12475:9;12466:7;12462:23;12458:32;12455:119;;;12493:79;;:::i;:::-;12455:119;12613:1;12638:53;12683:7;12674:6;12663:9;12659:22;12638:53;:::i;:::-;12628:63;;12584:117;12740:2;12766:53;12811:7;12802:6;12791:9;12787:22;12766:53;:::i;:::-;12756:63;;12711:118;12362:474;;;;;:::o;12842:182::-;12982:34;12978:1;12970:6;12966:14;12959:58;12842:182;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:180::-;13875:77;13872:1;13865:88;13972:4;13969:1;13962:15;13996:4;13993:1;13986:15;14013:225;14153:34;14149:1;14141:6;14137:14;14130:58;14222:8;14217:2;14209:6;14205:15;14198:33;14013:225;:::o;14244:366::-;14386:3;14407:67;14471:2;14466:3;14407:67;:::i;:::-;14400:74;;14483:93;14572:3;14483:93;:::i;:::-;14601:2;14596:3;14592:12;14585:19;;14244:366;;;:::o;14616:419::-;14782:4;14820:2;14809:9;14805:18;14797:26;;14869:9;14863:4;14859:20;14855:1;14844:9;14840:17;14833:47;14897:131;15023:4;14897:131;:::i;:::-;14889:139;;14616:419;;;:::o;15041:223::-;15181:34;15177:1;15169:6;15165:14;15158:58;15250:6;15245:2;15237:6;15233:15;15226:31;15041:223;:::o;15270:366::-;15412:3;15433:67;15497:2;15492:3;15433:67;:::i;:::-;15426:74;;15509:93;15598:3;15509:93;:::i;:::-;15627:2;15622:3;15618:12;15611:19;;15270:366;;;:::o;15642:419::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15895:9;15889:4;15885:20;15881:1;15870:9;15866:17;15859:47;15923:131;16049:4;15923:131;:::i;:::-;15915:139;;15642:419;;;:::o;16067:221::-;16207:34;16203:1;16195:6;16191:14;16184:58;16276:4;16271:2;16263:6;16259:15;16252:29;16067:221;:::o;16294:366::-;16436:3;16457:67;16521:2;16516:3;16457:67;:::i;:::-;16450:74;;16533:93;16622:3;16533:93;:::i;:::-;16651:2;16646:3;16642:12;16635:19;;16294:366;;;:::o;16666:419::-;16832:4;16870:2;16859:9;16855:18;16847:26;;16919:9;16913:4;16909:20;16905:1;16894:9;16890:17;16883:47;16947:131;17073:4;16947:131;:::i;:::-;16939:139;;16666:419;;;:::o;17091:224::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:7;17295:2;17287:6;17283:15;17276:32;17091:224;:::o;17321:366::-;17463:3;17484:67;17548:2;17543:3;17484:67;:::i;:::-;17477:74;;17560:93;17649:3;17560:93;:::i;:::-;17678:2;17673:3;17669:12;17662:19;;17321:366;;;:::o;17693:419::-;17859:4;17897:2;17886:9;17882:18;17874:26;;17946:9;17940:4;17936:20;17932:1;17921:9;17917:17;17910:47;17974:131;18100:4;17974:131;:::i;:::-;17966:139;;17693:419;;;:::o;18118:222::-;18258:34;18254:1;18246:6;18242:14;18235:58;18327:5;18322:2;18314:6;18310:15;18303:30;18118:222;:::o;18346:366::-;18488:3;18509:67;18573:2;18568:3;18509:67;:::i;:::-;18502:74;;18585:93;18674:3;18585:93;:::i;:::-;18703:2;18698:3;18694:12;18687:19;;18346:366;;;:::o;18718:419::-;18884:4;18922:2;18911:9;18907:18;18899:26;;18971:9;18965:4;18961:20;18957:1;18946:9;18942:17;18935:47;18999:131;19125:4;18999:131;:::i;:::-;18991:139;;18718:419;;;:::o;19143:228::-;19283:34;19279:1;19271:6;19267:14;19260:58;19352:11;19347:2;19339:6;19335:15;19328:36;19143:228;:::o;19377:366::-;19519:3;19540:67;19604:2;19599:3;19540:67;:::i;:::-;19533:74;;19616:93;19705:3;19616:93;:::i;:::-;19734:2;19729:3;19725:12;19718:19;;19377:366;;;:::o;19749:419::-;19915:4;19953:2;19942:9;19938:18;19930:26;;20002:9;19996:4;19992:20;19988:1;19977:9;19973:17;19966:47;20030:131;20156:4;20030:131;:::i;:::-;20022:139;;19749:419;;;:::o;20174:250::-;20314:34;20310:1;20302:6;20298:14;20291:58;20383:33;20378:2;20370:6;20366:15;20359:58;20174:250;:::o;20430:366::-;20572:3;20593:67;20657:2;20652:3;20593:67;:::i;:::-;20586:74;;20669:93;20758:3;20669:93;:::i;:::-;20787:2;20782:3;20778:12;20771:19;;20430:366;;;:::o;20802:419::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20802:419;;;:::o;21227:178::-;21367:30;21363:1;21355:6;21351:14;21344:54;21227:178;:::o;21411:366::-;21553:3;21574:67;21638:2;21633:3;21574:67;:::i;:::-;21567:74;;21650:93;21739:3;21650:93;:::i;:::-;21768:2;21763:3;21759:12;21752:19;;21411:366;;;:::o;21783:419::-;21949:4;21987:2;21976:9;21972:18;21964:26;;22036:9;22030:4;22026:20;22022:1;22011:9;22007:17;22000:47;22064:131;22190:4;22064:131;:::i;:::-;22056:139;;21783:419;;;:::o;22208:222::-;22348:34;22344:1;22336:6;22332:14;22325:58;22417:5;22412:2;22404:6;22400:15;22393:30;22208:222;:::o;22436:366::-;22578:3;22599:67;22663:2;22658:3;22599:67;:::i;:::-;22592:74;;22675:93;22764:3;22675:93;:::i;:::-;22793:2;22788:3;22784:12;22777:19;;22436:366;;;:::o;22808:419::-;22974:4;23012:2;23001:9;22997:18;22989:26;;23061:9;23055:4;23051:20;23047:1;23036:9;23032:17;23025:47;23089:131;23215:4;23089:131;:::i;:::-;23081:139;;22808:419;;;:::o;23233:180::-;23281:77;23278:1;23271:88;23378:4;23375:1;23368:15;23402:4;23399:1;23392:15;23419:191;23459:3;23478:20;23496:1;23478:20;:::i;:::-;23473:25;;23512:20;23530:1;23512:20;:::i;:::-;23507:25;;23555:1;23552;23548:9;23541:16;;23576:3;23573:1;23570:10;23567:36;;;23583:18;;:::i;:::-;23567:36;23419:191;;;;:::o;23616:222::-;23756:34;23752:1;23744:6;23740:14;23733:58;23825:5;23820:2;23812:6;23808:15;23801:30;23616:222;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:194::-;24681:4;24701:20;24719:1;24701:20;:::i;:::-;24696:25;;24735:20;24753:1;24735:20;:::i;:::-;24730:25;;24779:1;24776;24772:9;24764:17;;24803:1;24797:4;24794:11;24791:37;;;24808:18;;:::i;:::-;24791:37;24641:194;;;;:::o;24841:229::-;24981:34;24977:1;24969:6;24965:14;24958:58;25050:12;25045:2;25037:6;25033:15;25026:37;24841:229;:::o;25076:366::-;25218:3;25239:67;25303:2;25298:3;25239:67;:::i;:::-;25232:74;;25315:93;25404:3;25315:93;:::i;:::-;25433:2;25428:3;25424:12;25417:19;;25076:366;;;:::o;25448:419::-;25614:4;25652:2;25641:9;25637:18;25629:26;;25701:9;25695:4;25691:20;25687:1;25676:9;25672:17;25665:47;25729:131;25855:4;25729:131;:::i;:::-;25721:139;;25448:419;;;:::o;25873:143::-;25930:5;25961:6;25955:13;25946:22;;25977:33;26004:5;25977:33;:::i;:::-;25873:143;;;;:::o;26022:351::-;26092:6;26141:2;26129:9;26120:7;26116:23;26112:32;26109:119;;;26147:79;;:::i;:::-;26109:119;26267:1;26292:64;26348:7;26339:6;26328:9;26324:22;26292:64;:::i;:::-;26282:74;;26238:128;26022:351;;;;:::o;26379:85::-;26424:7;26453:5;26442:16;;26379:85;;;:::o;26470:158::-;26528:9;26561:61;26579:42;26588:32;26614:5;26588:32;:::i;:::-;26579:42;:::i;:::-;26561:61;:::i;:::-;26548:74;;26470:158;;;:::o;26634:147::-;26729:45;26768:5;26729:45;:::i;:::-;26724:3;26717:58;26634:147;;:::o;26787:114::-;26854:6;26888:5;26882:12;26872:22;;26787:114;;;:::o;26907:184::-;27006:11;27040:6;27035:3;27028:19;27080:4;27075:3;27071:14;27056:29;;26907:184;;;;:::o;27097:132::-;27164:4;27187:3;27179:11;;27217:4;27212:3;27208:14;27200:22;;27097:132;;;:::o;27235:108::-;27312:24;27330:5;27312:24;:::i;:::-;27307:3;27300:37;27235:108;;:::o;27349:179::-;27418:10;27439:46;27481:3;27473:6;27439:46;:::i;:::-;27517:4;27512:3;27508:14;27494:28;;27349:179;;;;:::o;27534:113::-;27604:4;27636;27631:3;27627:14;27619:22;;27534:113;;;:::o;27683:732::-;27802:3;27831:54;27879:5;27831:54;:::i;:::-;27901:86;27980:6;27975:3;27901:86;:::i;:::-;27894:93;;28011:56;28061:5;28011:56;:::i;:::-;28090:7;28121:1;28106:284;28131:6;28128:1;28125:13;28106:284;;;28207:6;28201:13;28234:63;28293:3;28278:13;28234:63;:::i;:::-;28227:70;;28320:60;28373:6;28320:60;:::i;:::-;28310:70;;28166:224;28153:1;28150;28146:9;28141:14;;28106:284;;;28110:14;28406:3;28399:10;;27807:608;;;27683:732;;;;:::o;28421:831::-;28684:4;28722:3;28711:9;28707:19;28699:27;;28736:71;28804:1;28793:9;28789:17;28780:6;28736:71;:::i;:::-;28817:80;28893:2;28882:9;28878:18;28869:6;28817:80;:::i;:::-;28944:9;28938:4;28934:20;28929:2;28918:9;28914:18;28907:48;28972:108;29075:4;29066:6;28972:108;:::i;:::-;28964:116;;29090:72;29158:2;29147:9;29143:18;29134:6;29090:72;:::i;:::-;29172:73;29240:3;29229:9;29225:19;29216:6;29172:73;:::i;:::-;28421:831;;;;;;;;:::o;29258:180::-;29306:77;29303:1;29296:88;29403:4;29400:1;29393:15;29427:4;29424:1;29417:15;29444:185;29484:1;29501:20;29519:1;29501:20;:::i;:::-;29496:25;;29535:20;29553:1;29535:20;:::i;:::-;29530:25;;29574:1;29564:35;;29579:18;;:::i;:::-;29564:35;29621:1;29618;29614:9;29609:14;;29444:185;;;;:::o;29635:177::-;29775:29;29771:1;29763:6;29759:14;29752:53;29635:177;:::o;29818:366::-;29960:3;29981:67;30045:2;30040:3;29981:67;:::i;:::-;29974:74;;30057:93;30146:3;30057:93;:::i;:::-;30175:2;30170:3;30166:12;30159:19;;29818:366;;;:::o;30190:419::-;30356:4;30394:2;30383:9;30379:18;30371:26;;30443:9;30437:4;30433:20;30429:1;30418:9;30414:17;30407:47;30471:131;30597:4;30471:131;:::i;:::-;30463:139;;30190:419;;;:::o;30615:410::-;30655:7;30678:20;30696:1;30678:20;:::i;:::-;30673:25;;30712:20;30730:1;30712:20;:::i;:::-;30707:25;;30767:1;30764;30760:9;30789:30;30807:11;30789:30;:::i;:::-;30778:41;;30968:1;30959:7;30955:15;30952:1;30949:22;30929:1;30922:9;30902:83;30879:139;;30998:18;;:::i;:::-;30879:139;30663:362;30615:410;;;;:::o;31031:220::-;31171:34;31167:1;31159:6;31155:14;31148:58;31240:3;31235:2;31227:6;31223:15;31216:28;31031:220;:::o;31257:366::-;31399:3;31420:67;31484:2;31479:3;31420:67;:::i;:::-;31413:74;;31496:93;31585:3;31496:93;:::i;:::-;31614:2;31609:3;31605:12;31598:19;;31257:366;;;:::o;31629:419::-;31795:4;31833:2;31822:9;31818:18;31810:26;;31882:9;31876:4;31872:20;31868:1;31857:9;31853:17;31846:47;31910:131;32036:4;31910:131;:::i;:::-;31902:139;;31629:419;;;:::o

Swarm Source

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