ETH Price: $3,395.39 (+1.33%)

Contract

0xC6D9890dBd9a2b4D954A812837c2E73851E1bac6
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve141660562022-02-08 14:47:331052 days ago1644331653IN
0xC6D9890d...851E1bac6
0 ETH0.003055765.56740856
Approve139976372022-01-13 14:17:071078 days ago1642083427IN
0xC6D9890d...851E1bac6
0 ETH0.0079646170.89965482
Approve139917012022-01-12 16:11:021079 days ago1642003862IN
0xC6D9890d...851E1bac6
0 ETH0.00774056166.09235724
Approve139917002022-01-12 16:11:001079 days ago1642003860IN
0xC6D9890d...851E1bac6
0 ETH0.0068993148.04104603
Approve139865462022-01-11 21:03:081080 days ago1641934988IN
0xC6D9890d...851E1bac6
0 ETH0.01030414221.1
Approve139863232022-01-11 20:13:031080 days ago1641931983IN
0xC6D9890d...851E1bac6
0 ETH0.00796116170.82570423
Approve139862422022-01-11 19:56:421080 days ago1641931002IN
0xC6D9890d...851E1bac6
0 ETH0.01079919231.72238732
Transfer139862092022-01-11 19:49:091080 days ago1641930549IN
0xC6D9890d...851E1bac6
0 ETH0.00739755220.87515254
Turn Max Wallet ...139861842022-01-11 19:41:521080 days ago1641930112IN
0xC6D9890d...851E1bac6
0 ETH0.0075252264.60874233
Approve139861712022-01-11 19:37:221080 days ago1641929842IN
0xC6D9890d...851E1bac6
0 ETH0.00941974202.123097
Approve139861472022-01-11 19:31:131080 days ago1641929473IN
0xC6D9890d...851E1bac6
0 ETH0.00557424208.74208467
Approve139861412022-01-11 19:29:581080 days ago1641929398IN
0xC6D9890d...851E1bac6
0 ETH0.01010221216.76720218
Approve139861242022-01-11 19:24:531080 days ago1641929093IN
0xC6D9890d...851E1bac6
0 ETH0.01010209216.76449117
Clear Clog139861222022-01-11 19:24:301080 days ago1641929070IN
0xC6D9890d...851E1bac6
0 ETH0.00652057229.36350375
Approve139861222022-01-11 19:24:301080 days ago1641929070IN
0xC6D9890d...851E1bac6
0 ETH0.01764667378.65140663
Approve139861182022-01-11 19:23:401080 days ago1641929020IN
0xC6D9890d...851E1bac6
0 ETH0.01120787240.49179301
Approve139861162022-01-11 19:23:061080 days ago1641928986IN
0xC6D9890d...851E1bac6
0 ETH0.01247432267.66630165
Approve139861092022-01-11 19:20:481080 days ago1641928848IN
0xC6D9890d...851E1bac6
0 ETH0.01140433244.70713198
Approve139861052022-01-11 19:19:411080 days ago1641928781IN
0xC6D9890d...851E1bac6
0 ETH0.01315999282.37909959
Approve139861042022-01-11 19:19:161080 days ago1641928756IN
0xC6D9890d...851E1bac6
0 ETH0.01274965273.57423984
Approve139861032022-01-11 19:18:421080 days ago1641928722IN
0xC6D9890d...851E1bac6
0 ETH0.01135708243.69345614
Approve139861012022-01-11 19:17:571080 days ago1641928677IN
0xC6D9890d...851E1bac6
0 ETH0.01106193237.36017052
Approve139861012022-01-11 19:17:571080 days ago1641928677IN
0xC6D9890d...851E1bac6
0 ETH0.011651250
Approve139860982022-01-11 19:16:361080 days ago1641928596IN
0xC6D9890d...851E1bac6
0 ETH0.01027346220.44166096
Limit Buys Off139860952022-01-11 19:15:471080 days ago1641928547IN
0xC6D9890d...851E1bac6
0 ETH0.00623394218.85783823
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.00268729 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.00268729 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.00626688 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.01880065 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.02506753 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.0409223 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.0409223 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.09065694 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.27197082 ETH
139861222022-01-11 19:24:301080 days ago1641929070
0xC6D9890d...851E1bac6
0.36262776 ETH
139860942022-01-11 19:15:351080 days ago1641928535
0xC6D9890d...851E1bac6
0.00270323 ETH
139860942022-01-11 19:15:351080 days ago1641928535
0xC6D9890d...851E1bac6
0.00270323 ETH
139860942022-01-11 19:15:351080 days ago1641928535
0xC6D9890d...851E1bac6
0.00629141 ETH
139860942022-01-11 19:15:351080 days ago1641928535
0xC6D9890d...851E1bac6
0.01887423 ETH
139860942022-01-11 19:15:351080 days ago1641928535
0xC6D9890d...851E1bac6
0.02516564 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.01628389 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.01628389 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.03668885 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.11006655 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.1467554 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.01628389 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.01628389 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.03668885 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.11006655 ETH
139860882022-01-11 19:14:271080 days ago1641928467
0xC6D9890d...851E1bac6
0.1467554 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HoneyBeenu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-11
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
contract HoneyBeenu is IERC20, Context, ERC20Ownable {
    using SafeMath for uint256;
    address dead = 0x000000000000000000000000000000000000dEaD;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => uint) private _setCoolDown;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) private _maxWalletExclude;
	mapping (address => bool) private _isBot;
	mapping(address => bool) public boughtEarly;
	uint256 public tradingActiveBlock = 0;
    uint256 public earlyBuyPenaltyEnd;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e13 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _tFeeTotal;
    uint256 private _maxWalletSize = 300000000000 * 10**18;
    string private constant _nomen = "HONEYBEENU";
    string private constant _sym = "HONEYBEENU";
    uint8 private constant _dec = 18;
    uint8 private _refTax = 2;
    uint8 private _previousRefTax = _refTax;
    uint8 private _burnTax = 0;
    uint8 private _previouseBurnTax = _burnTax;
    uint8 private _liqTax = 2; 
    uint8 private _previousLiqTax = _liqTax;
    uint8 private _devTax = 6; 
    uint8 private _previousDevTax = _devTax;
    uint8 private _buyBack = 0;
    uint8 private _previousBuyBack = _buyBack;
    uint8 private _liqDiv = _liqTax + _devTax + _buyBack + _burnTax;
    uint256 private burnTokens;
    uint256 private MarketingTokens;
    uint256 private LiquidityTokens;
    uint256 private BuyBackTokens;
    IUniswapV2Router02 private pcsV2Router;
    address private pcsV2Pair;
    address payable private feeWallet;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool private coolDownEnabled = false;
    bool private _firstTrans = true;
    bool private _limitBuys = false;
    bool private _clearClog = false;
    bool private _maxWalletOn = false;
    uint256 private numTokensSellToAddToLiquidity;
    uint256 private buyBackUpperLimit = 1 * 10**18;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    event updateMxAmt(uint256 mxAmt);
    event BoughtEarly(address indexed sniper);
    event RemovedSniper(address indexed notsnipersupposedly);
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        feeWallet = payable(0x8ffe5aF3b096dA6eC859FFf2898256FF33f285C4);
        numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000);
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _maxWalletExclude[address(this)] = true;
        _maxWalletExclude[_msgSender()] = true;
        _maxWalletExclude[address(dead)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function name() public pure override returns (string memory) {
        return _nomen;
    }
    function symbol() public pure override returns (string memory) {
        return _sym;
    }
    function decimals() public pure override returns (uint8) {
        return _dec;
    }
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")
        );
        return true;
    }
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        coolDownEnabled = onoff;
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amt must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }
    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amt must be less than tot refl");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    receive() external payable {}
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }
    function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }
    function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        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;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    function _takeLiquidity(uint256 tLiquidity) private {
        burnTokens += tLiquidity * _burnTax / _liqDiv;
        MarketingTokens += tLiquidity * _devTax / _liqDiv;
		LiquidityTokens += tLiquidity * _liqTax / _liqDiv;
        BuyBackTokens += tLiquidity * _buyBack / _liqDiv;
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_refTax).div(10**2);
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_devTax + _burnTax + _liqTax + _buyBack).div(10**2);
    }
    function removeAllFee() private {
        if (_refTax == 0 && _liqTax == 0 && _devTax == 0 && _burnTax == 0 && _buyBack == 0) return;

        _previousRefTax = _refTax;
        _previousLiqTax = _liqTax;
        _previousDevTax = _devTax;
        _previouseBurnTax = _burnTax;
        _previousBuyBack = _buyBack;

        _refTax = 0;
        _liqTax = 0;
        _devTax = 0;
        _burnTax = 0;
        _buyBack = 0;
    }
    function restoreAllFee() private {
        _refTax = _previousRefTax;
        _liqTax = _previousLiqTax;
        _devTax = _previousDevTax;
        _burnTax = _previouseBurnTax;
        _buyBack = _previousBuyBack;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }
    function _approve(address owner,address spender,uint256 amount) private {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to 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 zero address");
        require(to != address(0), "ERC20: transfer to zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
		require(!_isBot[from]);
		require(!boughtEarly[from] || earlyBuyPenaltyEnd <= block.timestamp, "Snipers can't transfer tokens to sell cheaper until penalty timeframe is over.  DM a Mod.");
		if (_maxWalletOn == true && ! _maxWalletExclude[to]) {
            require(balanceOf(to) + amount <= _maxWalletSize, "Max amount of tokens for wallet reached");
        }
        if (_limitBuys == true && from == pcsV2Pair) {
			require(amount <= 40000000000 * 10**18, "Limits are in place, please lower buying amount");
		}
		if (_clearClog == true && to != owner() && from != pcsV2Pair) {
			require(amount <= 0 * 10**18);
		}
        if (from == pcsV2Pair && to != address(pcsV2Router) && ! _isExcludedFromFee[to] && coolDownEnabled) {
                require(amount <= _maxTxAmount);
                require(_setCoolDown[to] < block.timestamp);
                _setCoolDown[to] = block.timestamp + (30 seconds);
            }
        if(_firstTrans == true) {
            IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            pcsV2Router = _pcsV2Router;
            pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH());
            tradingActiveBlock = block.number;
            earlyBuyPenaltyEnd = block.timestamp + 72 hours;
            _maxWalletExclude[address(pcsV2Pair)] = true;
            _maxWalletExclude[address(pcsV2Router)] = true;
            _limitBuys = true;
            _firstTrans = false;
            _maxWalletOn = true;
        }
		if(from != owner() && to != pcsV2Pair && block.number == tradingActiveBlock){
			boughtEarly[to] = true;
            emit BoughtEarly(to);
		}
        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) {
            if (contractTokenBalance >= numTokensSellToAddToLiquidity) {
				swapBackLiq();
            }
        }
        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
		if(boughtEarly[from] && earlyBuyPenaltyEnd > block.timestamp){
                    _refTax = _refTax * 5;
                    _liqTax = _liqTax * 5;
                    _devTax = _devTax * 5;
                    _buyBack = _buyBack * 5;
                }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function buyBackTokens(uint256 amount) public onlyOwner lockTheSwap {
        if (amount <= BuyBackTokens) {
            swapETHForTokens(amount);
        }
    }
    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = pcsV2Router.WETH();
        path[1] = address(this);

        // make the swap
        pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            dead, // Burn address
            block.timestamp.add(300)
        );
    }
	function addBot(address _user) public onlyOwner {
        require(_user != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        require(!_isBot[_user], "user already blacklisted");
        _isBot[_user] = true;
    }
	function removeBot(address _user) public onlyOwner {
        require(_isBot[_user], "user already whitelisted");
        _isBot[_user] = false;
    }
	function removeBoughtEarly(address account) external onlyOwner {
        boughtEarly[account] = false;
        emit RemovedSniper(account);
    }
	function swapBackLiq() private lockTheSwap {
        if(_burnTax != 0) {
            _transfer(address(this), dead, burnTokens);
            burnTokens = 0;
        }
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = MarketingTokens + LiquidityTokens + BuyBackTokens;
        // Halve the amount of liquidity tokens
        uint256 tokensForLiquidity = LiquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForETH(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(MarketingTokens).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance.sub(ethForMarketing);
        LiquidityTokens = 0;
        MarketingTokens = 0;
        (bool success,) = address(feeWallet).call{value: ethForMarketing}("");
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        if(address(this).balance > 0 * 10**18){
            (success,) = address(feeWallet).call{value: address(this).balance}("");
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pcsV2Router.WETH();
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp.add(300)
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            dead,
            block.timestamp.add(300)
        );
    }
    // Initiate true from deployment
    function Initiate() external onlyOwner {
        _firstTrans = true;
    }
    function TaxSwapEnable() external onlyOwner {
        swapAndLiquifyEnabled = true;
    }
    function TaxSwapDisable() external onlyOwner {
        swapAndLiquifyEnabled = false;
    }
    function LimitBuysOn() external onlyOwner {
        _limitBuys = true;
    }
    function LimitBuysOff() external onlyOwner {
        _limitBuys = false;
    }
    function turnMaxWalletOn() external onlyOwner {
        _maxWalletOn = true;
    }
    function turnMaxWalletOff() external onlyOwner {
        _maxWalletOn = false;
    }
    // FOR USE TO CLEAR IF CLOGS OCCUR IN THE ROUTER
    // STOPS ALL TRANSACTIONS SO OWNER CAN TRANSFER 1 TOKEN TO CLEAR CLOG
    function ClearClog() external onlyOwner {
        _clearClog = true;
    }
    function ClearClogReset() external onlyOwner {
        _clearClog = false;
    }
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        if (!takeFee) removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _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 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private {
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(amount);

        if (_isExcluded[sender]) {
            _tOwned[sender] = _tOwned[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":"notsnipersupposedly","type":"address"}],"name":"RemovedSniper","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"mxAmt","type":"uint256"}],"name":"updateMxAmt","type":"event"},{"inputs":[],"name":"ClearClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClearClogReset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Initiate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead1790556000600b55620000386c7e37be2022c0914b2680000000600019620003df565b6200004690600019620003c5565b600e556c7e37be2022c0914b2680000000600f556c03c95a2f0b4856475fe00000006011556012805461ffff60401b1961ffff60301b1961ffff60201b1963ffffffff19841660ff6201000061020262ffffff19909716871781900482166301000000029290921790951791821664010000000060ff60201b1993909316640200000000908117849004871665010000000000029190911717928316660100000000000060ff60301b1994909416660600000000000090811785900487166701000000000000000291909117179384166801000000000000000060ff60401b19959095168590048616690100000000000000000002179586905585048416949283048416936200016193928304811692919091041662000364565b6200016d919062000364565b62000179919062000364565b6012805460ff929092166a01000000000000000000000260ff60501b199092169190911790556019805465ffffffffffff60a81b19166201000160a81b179055670de0b6b3a7640000601b55348015620001d257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e5433600090815260026020908152604090912091909155601980546001600160a01b031916738ffe5af3b096da6ec859fff2898256ff33f285c417905562000296906103e89062000282906c7e37be2022c0914b2680000000906001906200103b62000341821b17901c565b6200035660201b620010471790919060201c565b601a553360008181526006602090815260408083208054600160ff1991821681179092553085528285208054821683179055600884528285208054821683179055858552828520805482168317905581546001600160a01b0316855282852080549091169091179055516c7e37be2022c0914b268000000081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000422565b60006200034f8284620003a3565b9392505050565b60006200034f82846200038c565b600060ff821660ff84168060ff03821115620003845762000384620003f6565b019392505050565b6000826200039e576200039e6200040c565b500490565b6000816000190483118215151615620003c057620003c0620003f6565b500290565b600082821015620003da57620003da620003f6565b500390565b600082620003f157620003f16200040c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b612f5980620004326000396000f3fe60806040526004361061021e5760003560e01c80636e86ea8b11610123578063a457c2d7116100ab578063f2fde38b1161006f578063f2fde38b1461063d578063f5648a4f1461065d578063f5eb223d14610672578063fc155d1d14610687578063ffecf516146106a757600080fd5b8063a457c2d71461058c578063a9059cbb146105ac578063d3dbc861146105cc578063dd62ed3e146105e1578063ee40166e1461062757600080fd5b806380f0f48b116100f257806380f0f48b146104e657806385ecfd28146104fb57806388f820201461052b5780638da5cb5b1461056457806395d89b411461022a57600080fd5b80636e86ea8b1461048757806370a082311461049c578063715018a6146104bc5780637b7141e4146104d157600080fd5b8063437823ec116101a65780635bb988c9116101755780635bb988c9146104085780635c0fdd4c146104285780635fecd9261461043d578063620b4bfc1461045d5780636465de5d1461047257600080fd5b8063437823ec1461036f5780634549b0391461038f5780635342acb4146103af5780635932ead1146103e857600080fd5b806323b872dd116101ed57806323b872dd146102dc5780632d838119146102fc578063313ce5671461031c57806339509351146103385780633f97d3f41461035857600080fd5b806306fdde031461022a578063095ea7b31461026c57806318160ddd1461029c5780631fc851bd146102c657600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50604080518082018252600a815269484f4e45594245454e5560b01b602082015290516102639190612ce3565b60405180910390f35b34801561027857600080fd5b5061028c610287366004612bb0565b6106c7565b6040519015158152602001610263565b3480156102a857600080fd5b506c7e37be2022c0914b26800000005b604051908152602001610263565b3480156102d257600080fd5b506102b8600c5481565b3480156102e857600080fd5b5061028c6102f7366004612b6f565b6106de565b34801561030857600080fd5b506102b8610317366004612bf7565b610747565b34801561032857600080fd5b5060405160128152602001610263565b34801561034457600080fd5b5061028c610353366004612bb0565b6107bd565b34801561036457600080fd5b5061036d6107f3565b005b34801561037b57600080fd5b5061036d61038a366004612afc565b610832565b34801561039b57600080fd5b506102b86103aa366004612c10565b610880565b3480156103bb57600080fd5b5061028c6103ca366004612afc565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103f457600080fd5b5061036d610403366004612bdc565b610918565b34801561041457600080fd5b5061036d610423366004612afc565b610960565b34801561043457600080fd5b5061036d6109d3565b34801561044957600080fd5b5061036d610458366004612afc565b610a0c565b34801561046957600080fd5b5061036d610abf565b34801561047e57600080fd5b5061036d610af8565b34801561049357600080fd5b5061036d610b31565b3480156104a857600080fd5b506102b86104b7366004612afc565b610b70565b3480156104c857600080fd5b5061036d610bcf565b3480156104dd57600080fd5b5061036d610c43565b3480156104f257600080fd5b5061036d610c7c565b34801561050757600080fd5b5061028c610516366004612afc565b600a6020526000908152604090205460ff1681565b34801561053757600080fd5b5061028c610546366004612afc565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561057057600080fd5b506000546040516001600160a01b039091168152602001610263565b34801561059857600080fd5b5061028c6105a7366004612bb0565b610cbb565b3480156105b857600080fd5b5061028c6105c7366004612bb0565b610d0a565b3480156105d857600080fd5b5061036d610d17565b3480156105ed57600080fd5b506102b86105fc366004612b36565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561063357600080fd5b506102b8600b5481565b34801561064957600080fd5b5061036d610658366004612afc565b610d56565b34801561066957600080fd5b5061036d610e45565b34801561067e57600080fd5b5061036d610ebc565b34801561069357600080fd5b5061036d6106a2366004612bf7565b610efb565b3480156106b357600080fd5b5061036d6106c2366004612afc565b610f5a565b60006106d4338484611053565b5060015b92915050565b60006106eb848484611160565b61073d843361073885604051806060016040528060288152602001612ed7602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611a2e565b611053565b5060019392505050565b6000600e548211156107a05760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006107aa611a5a565b90506107b68382611047565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916106d49185906107389086611a7d565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461085c5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006c7e37be2022c0914b26800000008311156108df5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610797565b816108fe5760006108ef84611a89565b509395506106d8945050505050565b600061090984611a89565b509295506106d8945050505050565b6000546001600160a01b031633146109425760405162461bcd60e51b815260040161079790612d38565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461098a5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b6000546001600160a01b031633146109fd5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b19169055565b6000546001600160a01b03163314610a365760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03811660009081526009602052604090205460ff16610a9e5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610ae95760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b19169055565b6000546001600160a01b03163314610b225760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b19169055565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b1916600160a81b179055565b6001600160a01b03811660009081526007602052604081205460ff1615610bad57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546106d890610747565b6000546001600160a01b03163314610bf95760405162461bcd60e51b815260040161079790612d38565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b19169055565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b1916600160c81b179055565b60006106d4338461073885604051806060016040528060258152602001612eff602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611a2e565b60006106d4338484611160565b6000546001600160a01b03163314610d415760405162461bcd60e51b815260040161079790612d38565b6019805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610d805760405162461bcd60e51b815260040161079790612d38565b6001600160a01b038116610dea5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610797565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b815260040161079790612d38565b604051600090339047908381818185875af1925050503d8060008114610eb1576040519150601f19603f3d011682016040523d82523d6000602084013e610eb6565b606091505b50505050565b6000546001600160a01b03163314610ee65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b1916600160d01b179055565b6000546001600160a01b03163314610f255760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a01b1916600160a01b1790556016548111610f4a57610f4a81611ad8565b506019805460ff60a01b19169055565b6000546001600160a01b03163314610f845760405162461bcd60e51b815260040161079790612d38565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610fae57600080fd5b6001600160a01b03811660009081526009602052604090205460ff16156110175760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006107b68284612e18565b60006107b68284612df6565b6001600160a01b0383166110a95760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610797565b6001600160a01b0382166110ff5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c05760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610797565b6001600160a01b0382166112165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610797565b600081116112785760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610797565b6001600160a01b03831660009081526009602052604090205460ff161561129e57600080fd5b6001600160a01b0383166000908152600a602052604090205460ff1615806112c8575042600c5411155b6113605760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610797565b601954600160d01b900460ff161515600114801561139757506001600160a01b03821660009081526008602052604090205460ff16155b1561141157601154816113a984610b70565b6113b39190612db9565b11156114115760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610797565b601954600160c01b900460ff161515600114801561143c57506018546001600160a01b038481169116145b156114b5576b813f3978f8940984400000008111156114b55760405162461bcd60e51b815260206004820152602f60248201527f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560448201526e1c88189d5e5a5b99c8185b5bdd5b9d608a1b6064820152608401610797565b601954600160c81b900460ff16151560011480156114e157506000546001600160a01b03838116911614155b80156114fb57506018546001600160a01b03848116911614155b1561150b57801561150b57600080fd5b6018546001600160a01b03848116911614801561153657506017546001600160a01b03838116911614155b801561155b57506001600160a01b03821660009081526006602052604090205460ff16155b80156115705750601954600160b01b900460ff165b156115cd57600f5481111561158457600080fd5b6001600160a01b03821660009081526005602052604090205442116115a857600080fd5b6115b342601e612db9565b6001600160a01b0383166000908152600560205260409020555b601954600160b81b900460ff1615156001141561180657601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561164457600080fd5b505afa158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c9190612b19565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190612b19565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190612b19565b601880546001600160a01b0319166001600160a01b039290921691909117905543600b556117ab426203f480612db9565b600c55506018546001600160a01b039081166000908152600860205260408082208054600160ff1991821681179092556017549094168352912080549092161790556019805463ff00ffff60b81b19166201000160c01b1790555b6000546001600160a01b0384811691161480159061183257506018546001600160a01b03838116911614155b801561183f5750600b5443145b1561188e576001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600061189930610b70565b601954909150600160a01b900460ff161580156118c357506018546001600160a01b038481169116145b80156118d85750601954600160a81b900460ff165b156118ee57601a5481106118ee576118ee611c4b565b6001600160a01b03841660009081526006602052604090205460019060ff168061193057506001600160a01b03841660009081526006602052604090205460ff165b15611939575060005b6001600160a01b0385166000908152600a602052604090205460ff168015611962575042600c54115b15611a1b576012546119789060ff166005612e37565b6012805460ff191660ff928316179081905561199e91600160201b909104166005612e37565b6012805464ff000000001916600160201b60ff9384160217908190556119ce91600160301b909104166005612e37565b6012805466ff0000000000001916600160301b60ff938416021790819055611a0091600160401b909104166005612e37565b601260086101000a81548160ff021916908360ff1602179055505b611a2785858584611e56565b5050505050565b60008184841115611a525760405162461bcd60e51b81526004016107979190612ce3565b505050900390565b6000806000611a67612062565b9092509050611a768282611047565b9250505090565b60006107b68284612db9565b6000806000806000806000806000611aa08a61220e565b9250925092506000806000611abe8d8686611ab9611a5a565b612250565b919f909e50909c50959a5093985091965092945050505050565b6040805160028082526060820183526000926020830190803683375050601754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611b3d57600080fd5b505afa158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b759190612b19565b81600081518110611b8857611b88612ea8565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bbc57611bbc612ea8565b6001600160a01b0392831660209182029290920101526017546001549082169163b6f9de95918591600091869116611bf64261012c611a7d565b6040518663ffffffff1660e01b8152600401611c159493929190612cae565b6000604051808303818588803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b50505050505050565b6019805460ff60a01b1916600160a01b17905560125462010000900460ff1615611c9257600154601354611c8c9130916001600160a01b0390911690611160565b60006013555b6000611c9d30610b70565b90506000601654601554601454611cb49190612db9565b611cbe9190612db9565b90506000611cd8600260155461104790919063ffffffff16565b90506000611ce684836122a0565b905047611cf2826122ac565b6000611cfe47836122a0565b90506000611d2186611d1b6014548561103b90919063ffffffff16565b90611047565b90506000611d2f83836122a0565b60006015819055601481905560195460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611d8c576040519150601f19603f3d011682016040523d82523d6000602084013e611d91565b606091505b50509050611d9f878361241e565b60408051878152602081018490529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a14715611e3e576019546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b50909150505b50506019805460ff60a01b1916905550505050505050565b80611e6357611e63612507565b6001600160a01b03841660009081526007602052604090205460ff168015611ea457506001600160a01b03831660009081526007602052604090205460ff16155b15611eb957611eb4848484612631565b611fb7565b6001600160a01b03841660009081526007602052604090205460ff16158015611efa57506001600160a01b03831660009081526007602052604090205460ff165b15611f0a57611eb4848484612757565b6001600160a01b03841660009081526007602052604090205460ff16158015611f4c57506001600160a01b03831660009081526007602052604090205460ff16155b15611f5c57611eb4848484612800565b6001600160a01b03841660009081526007602052604090205460ff168015611f9c57506001600160a01b03831660009081526007602052604090205460ff165b15611fac57611eb4848484612844565b611fb7848484612800565b80610eb6576012805468ff00000000000000001966ff000000ff00001964ff000000ff198316610100840460ff9081169182176501000000000060ff1990961692909217949094048416600160201b021790811662ff000019600160381b83048516600160301b0290811691909117630100000066ff00000000000019909316909117919091048316620100000217908116600160481b909104909116600160401b02179055610eb6565b600e5460009081906c7e37be2022c0914b2680000000825b600d548110156121c9578260026000600d848154811061209c5761209c612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210757508160036000600d84815481106120e0576120e0612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612127575050600e54936c7e37be2022c0914b26800000009350915050565b61216d60026000600d848154811061214157612141612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906122a0565b92506121b560036000600d848154811061218957612189612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906122a0565b9150806121c181612e77565b91505061207a565b50600e546121e4906c7e37be2022c0914b2680000000611047565b821015612205575050600e54926c7e37be2022c0914b268000000092509050565b90939092509050565b60008060008061221d856128b7565b9050600061222a866128d2565b905060006122428261223c89866122a0565b906122a0565b979296509094509092505050565b600080808061225f888661103b565b9050600061226d888761103b565b9050600061227b888861103b565b9050600061228d8261223c86866122a0565b939b939a50919850919650505050505050565b60006107b68284612e60565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122e1576122e1612ea8565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190612b19565b8160018151811061238057612380612ea8565b6001600160a01b0392831660209182029290920101526017546123a69130911684611053565b6017546001600160a01b031663791ac94783600084306123c84261012c611a7d565b6040518663ffffffff1660e01b81526004016123e8959493929190612d7d565b600060405180830381600087803b15801561240257600080fd5b505af1158015612416573d6000803e3d6000fd5b505050505050565b6017546124369030906001600160a01b031684611053565b6017546001546001600160a01b039182169163f305d719918491309187916000918291166124664261012c611a7d565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a279190612c3c565b60125460ff161580156125245750601254600160201b900460ff16155b801561253a5750601254600160301b900460ff16155b801561254f575060125462010000900460ff16155b80156125655750601254600160401b900460ff16155b1561256c57565b6012805469ffff00ff00ff00ff00ff1967ff000000ff0000001965ff000000ff0019831665ff00000000001961010060ff8087169190910291821692909217600160201b61ff001990961690911794909404811665010000000000029390931790811663ff00000019600160301b83048516600160381b02908116919091176201000067ff000000000000001990931690911791909104831663010000000217908116600160401b909104909116600160481b0268ff00ff00ff00ff00ff1916179055565b60008060008060008061264387611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061267590886122a0565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546126a490876122a0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546126d39086611a7d565b6001600160a01b0389166000908152600260205260409020556126f581612932565b6126ff8483612ac3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274491815260200190565b60405180910390a3505050505050505050565b60008060008060008061276987611a89565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061279b90876122a0565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546127d19084611a7d565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546126d39086611a7d565b60008060008060008061281287611a89565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506126a490876122a0565b60008060008060008061285687611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061288890886122a0565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461279b90876122a0565b6012546000906106d890606490611d1b90859060ff1661103b565b6012546000906106d890606490611d1b9060ff600160401b8204811691600160201b810482169161291491620100008104821691600160301b90910416612dd1565b61291e9190612dd1565b6129289190612dd1565b859060ff1661103b565b60125460ff600160501b820481169161295391620100009091041683612e18565b61295d9190612df6565b6013600082825461296e9190612db9565b909155505060125460ff600160501b820481169161299591600160301b9091041683612e18565b61299f9190612df6565b601460008282546129b09190612db9565b909155505060125460ff600160501b82048116916129d791600160201b9091041683612e18565b6129e19190612df6565b601560008282546129f29190612db9565b909155505060125460ff600160501b8204811691612a1991600160401b9091041683612e18565b612a239190612df6565b60166000828254612a349190612db9565b9091555060009050612a44611a5a565b90506000612a52838361103b565b30600090815260026020526040902054909150612a6f9082611a7d565b3060009081526002602090815260408083209390935560079052205460ff1615612abe5730600090815260036020526040902054612aad9084611a7d565b306000908152600360205260409020555b505050565b600e54612ad090836122a0565b600e55601054612ae09082611a7d565b6010555050565b80358015158114612af757600080fd5b919050565b600060208284031215612b0e57600080fd5b81356107b681612ebe565b600060208284031215612b2b57600080fd5b81516107b681612ebe565b60008060408385031215612b4957600080fd5b8235612b5481612ebe565b91506020830135612b6481612ebe565b809150509250929050565b600080600060608486031215612b8457600080fd5b8335612b8f81612ebe565b92506020840135612b9f81612ebe565b929592945050506040919091013590565b60008060408385031215612bc357600080fd5b8235612bce81612ebe565b946020939093013593505050565b600060208284031215612bee57600080fd5b6107b682612ae7565b600060208284031215612c0957600080fd5b5035919050565b60008060408385031215612c2357600080fd5b82359150612c3360208401612ae7565b90509250929050565b600080600060608486031215612c5157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ca35781516001600160a01b031687529582019590820190600101612c7e565b509495945050505050565b848152608060208201526000612cc76080830186612c6a565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612d1057858101830151858201604001528201612cf4565b81811115612d22576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a060408201526000612d9c60a0830186612c6a565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612dcc57612dcc612e92565b500190565b600060ff821660ff84168060ff03821115612dee57612dee612e92565b019392505050565b600082612e1357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e3257612e32612e92565b500290565b600060ff821660ff84168160ff0481118215151615612e5857612e58612e92565b029392505050565b600082821015612e7257612e72612e92565b500390565b6000600019821415612e8b57612e8b612e92565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612ed357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205dc35cc73c3873c5d3269afe42ddb4adb433f33e0721248801739fb74843dbe564736f6c63430008070033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80636e86ea8b11610123578063a457c2d7116100ab578063f2fde38b1161006f578063f2fde38b1461063d578063f5648a4f1461065d578063f5eb223d14610672578063fc155d1d14610687578063ffecf516146106a757600080fd5b8063a457c2d71461058c578063a9059cbb146105ac578063d3dbc861146105cc578063dd62ed3e146105e1578063ee40166e1461062757600080fd5b806380f0f48b116100f257806380f0f48b146104e657806385ecfd28146104fb57806388f820201461052b5780638da5cb5b1461056457806395d89b411461022a57600080fd5b80636e86ea8b1461048757806370a082311461049c578063715018a6146104bc5780637b7141e4146104d157600080fd5b8063437823ec116101a65780635bb988c9116101755780635bb988c9146104085780635c0fdd4c146104285780635fecd9261461043d578063620b4bfc1461045d5780636465de5d1461047257600080fd5b8063437823ec1461036f5780634549b0391461038f5780635342acb4146103af5780635932ead1146103e857600080fd5b806323b872dd116101ed57806323b872dd146102dc5780632d838119146102fc578063313ce5671461031c57806339509351146103385780633f97d3f41461035857600080fd5b806306fdde031461022a578063095ea7b31461026c57806318160ddd1461029c5780631fc851bd146102c657600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50604080518082018252600a815269484f4e45594245454e5560b01b602082015290516102639190612ce3565b60405180910390f35b34801561027857600080fd5b5061028c610287366004612bb0565b6106c7565b6040519015158152602001610263565b3480156102a857600080fd5b506c7e37be2022c0914b26800000005b604051908152602001610263565b3480156102d257600080fd5b506102b8600c5481565b3480156102e857600080fd5b5061028c6102f7366004612b6f565b6106de565b34801561030857600080fd5b506102b8610317366004612bf7565b610747565b34801561032857600080fd5b5060405160128152602001610263565b34801561034457600080fd5b5061028c610353366004612bb0565b6107bd565b34801561036457600080fd5b5061036d6107f3565b005b34801561037b57600080fd5b5061036d61038a366004612afc565b610832565b34801561039b57600080fd5b506102b86103aa366004612c10565b610880565b3480156103bb57600080fd5b5061028c6103ca366004612afc565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103f457600080fd5b5061036d610403366004612bdc565b610918565b34801561041457600080fd5b5061036d610423366004612afc565b610960565b34801561043457600080fd5b5061036d6109d3565b34801561044957600080fd5b5061036d610458366004612afc565b610a0c565b34801561046957600080fd5b5061036d610abf565b34801561047e57600080fd5b5061036d610af8565b34801561049357600080fd5b5061036d610b31565b3480156104a857600080fd5b506102b86104b7366004612afc565b610b70565b3480156104c857600080fd5b5061036d610bcf565b3480156104dd57600080fd5b5061036d610c43565b3480156104f257600080fd5b5061036d610c7c565b34801561050757600080fd5b5061028c610516366004612afc565b600a6020526000908152604090205460ff1681565b34801561053757600080fd5b5061028c610546366004612afc565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561057057600080fd5b506000546040516001600160a01b039091168152602001610263565b34801561059857600080fd5b5061028c6105a7366004612bb0565b610cbb565b3480156105b857600080fd5b5061028c6105c7366004612bb0565b610d0a565b3480156105d857600080fd5b5061036d610d17565b3480156105ed57600080fd5b506102b86105fc366004612b36565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561063357600080fd5b506102b8600b5481565b34801561064957600080fd5b5061036d610658366004612afc565b610d56565b34801561066957600080fd5b5061036d610e45565b34801561067e57600080fd5b5061036d610ebc565b34801561069357600080fd5b5061036d6106a2366004612bf7565b610efb565b3480156106b357600080fd5b5061036d6106c2366004612afc565b610f5a565b60006106d4338484611053565b5060015b92915050565b60006106eb848484611160565b61073d843361073885604051806060016040528060288152602001612ed7602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611a2e565b611053565b5060019392505050565b6000600e548211156107a05760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006107aa611a5a565b90506107b68382611047565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916106d49185906107389086611a7d565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461085c5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006c7e37be2022c0914b26800000008311156108df5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610797565b816108fe5760006108ef84611a89565b509395506106d8945050505050565b600061090984611a89565b509295506106d8945050505050565b6000546001600160a01b031633146109425760405162461bcd60e51b815260040161079790612d38565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461098a5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b6000546001600160a01b031633146109fd5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b19169055565b6000546001600160a01b03163314610a365760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03811660009081526009602052604090205460ff16610a9e5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610ae95760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b19169055565b6000546001600160a01b03163314610b225760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b19169055565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b1916600160a81b179055565b6001600160a01b03811660009081526007602052604081205460ff1615610bad57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546106d890610747565b6000546001600160a01b03163314610bf95760405162461bcd60e51b815260040161079790612d38565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b19169055565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b1916600160c81b179055565b60006106d4338461073885604051806060016040528060258152602001612eff602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611a2e565b60006106d4338484611160565b6000546001600160a01b03163314610d415760405162461bcd60e51b815260040161079790612d38565b6019805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610d805760405162461bcd60e51b815260040161079790612d38565b6001600160a01b038116610dea5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610797565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b815260040161079790612d38565b604051600090339047908381818185875af1925050503d8060008114610eb1576040519150601f19603f3d011682016040523d82523d6000602084013e610eb6565b606091505b50505050565b6000546001600160a01b03163314610ee65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b1916600160d01b179055565b6000546001600160a01b03163314610f255760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a01b1916600160a01b1790556016548111610f4a57610f4a81611ad8565b506019805460ff60a01b19169055565b6000546001600160a01b03163314610f845760405162461bcd60e51b815260040161079790612d38565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610fae57600080fd5b6001600160a01b03811660009081526009602052604090205460ff16156110175760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006107b68284612e18565b60006107b68284612df6565b6001600160a01b0383166110a95760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610797565b6001600160a01b0382166110ff5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c05760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610797565b6001600160a01b0382166112165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610797565b600081116112785760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610797565b6001600160a01b03831660009081526009602052604090205460ff161561129e57600080fd5b6001600160a01b0383166000908152600a602052604090205460ff1615806112c8575042600c5411155b6113605760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610797565b601954600160d01b900460ff161515600114801561139757506001600160a01b03821660009081526008602052604090205460ff16155b1561141157601154816113a984610b70565b6113b39190612db9565b11156114115760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610797565b601954600160c01b900460ff161515600114801561143c57506018546001600160a01b038481169116145b156114b5576b813f3978f8940984400000008111156114b55760405162461bcd60e51b815260206004820152602f60248201527f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560448201526e1c88189d5e5a5b99c8185b5bdd5b9d608a1b6064820152608401610797565b601954600160c81b900460ff16151560011480156114e157506000546001600160a01b03838116911614155b80156114fb57506018546001600160a01b03848116911614155b1561150b57801561150b57600080fd5b6018546001600160a01b03848116911614801561153657506017546001600160a01b03838116911614155b801561155b57506001600160a01b03821660009081526006602052604090205460ff16155b80156115705750601954600160b01b900460ff165b156115cd57600f5481111561158457600080fd5b6001600160a01b03821660009081526005602052604090205442116115a857600080fd5b6115b342601e612db9565b6001600160a01b0383166000908152600560205260409020555b601954600160b81b900460ff1615156001141561180657601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561164457600080fd5b505afa158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c9190612b19565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190612b19565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190612b19565b601880546001600160a01b0319166001600160a01b039290921691909117905543600b556117ab426203f480612db9565b600c55506018546001600160a01b039081166000908152600860205260408082208054600160ff1991821681179092556017549094168352912080549092161790556019805463ff00ffff60b81b19166201000160c01b1790555b6000546001600160a01b0384811691161480159061183257506018546001600160a01b03838116911614155b801561183f5750600b5443145b1561188e576001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600061189930610b70565b601954909150600160a01b900460ff161580156118c357506018546001600160a01b038481169116145b80156118d85750601954600160a81b900460ff165b156118ee57601a5481106118ee576118ee611c4b565b6001600160a01b03841660009081526006602052604090205460019060ff168061193057506001600160a01b03841660009081526006602052604090205460ff165b15611939575060005b6001600160a01b0385166000908152600a602052604090205460ff168015611962575042600c54115b15611a1b576012546119789060ff166005612e37565b6012805460ff191660ff928316179081905561199e91600160201b909104166005612e37565b6012805464ff000000001916600160201b60ff9384160217908190556119ce91600160301b909104166005612e37565b6012805466ff0000000000001916600160301b60ff938416021790819055611a0091600160401b909104166005612e37565b601260086101000a81548160ff021916908360ff1602179055505b611a2785858584611e56565b5050505050565b60008184841115611a525760405162461bcd60e51b81526004016107979190612ce3565b505050900390565b6000806000611a67612062565b9092509050611a768282611047565b9250505090565b60006107b68284612db9565b6000806000806000806000806000611aa08a61220e565b9250925092506000806000611abe8d8686611ab9611a5a565b612250565b919f909e50909c50959a5093985091965092945050505050565b6040805160028082526060820183526000926020830190803683375050601754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611b3d57600080fd5b505afa158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b759190612b19565b81600081518110611b8857611b88612ea8565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bbc57611bbc612ea8565b6001600160a01b0392831660209182029290920101526017546001549082169163b6f9de95918591600091869116611bf64261012c611a7d565b6040518663ffffffff1660e01b8152600401611c159493929190612cae565b6000604051808303818588803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b50505050505050565b6019805460ff60a01b1916600160a01b17905560125462010000900460ff1615611c9257600154601354611c8c9130916001600160a01b0390911690611160565b60006013555b6000611c9d30610b70565b90506000601654601554601454611cb49190612db9565b611cbe9190612db9565b90506000611cd8600260155461104790919063ffffffff16565b90506000611ce684836122a0565b905047611cf2826122ac565b6000611cfe47836122a0565b90506000611d2186611d1b6014548561103b90919063ffffffff16565b90611047565b90506000611d2f83836122a0565b60006015819055601481905560195460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611d8c576040519150601f19603f3d011682016040523d82523d6000602084013e611d91565b606091505b50509050611d9f878361241e565b60408051878152602081018490529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a14715611e3e576019546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b50909150505b50506019805460ff60a01b1916905550505050505050565b80611e6357611e63612507565b6001600160a01b03841660009081526007602052604090205460ff168015611ea457506001600160a01b03831660009081526007602052604090205460ff16155b15611eb957611eb4848484612631565b611fb7565b6001600160a01b03841660009081526007602052604090205460ff16158015611efa57506001600160a01b03831660009081526007602052604090205460ff165b15611f0a57611eb4848484612757565b6001600160a01b03841660009081526007602052604090205460ff16158015611f4c57506001600160a01b03831660009081526007602052604090205460ff16155b15611f5c57611eb4848484612800565b6001600160a01b03841660009081526007602052604090205460ff168015611f9c57506001600160a01b03831660009081526007602052604090205460ff165b15611fac57611eb4848484612844565b611fb7848484612800565b80610eb6576012805468ff00000000000000001966ff000000ff00001964ff000000ff198316610100840460ff9081169182176501000000000060ff1990961692909217949094048416600160201b021790811662ff000019600160381b83048516600160301b0290811691909117630100000066ff00000000000019909316909117919091048316620100000217908116600160481b909104909116600160401b02179055610eb6565b600e5460009081906c7e37be2022c0914b2680000000825b600d548110156121c9578260026000600d848154811061209c5761209c612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210757508160036000600d84815481106120e0576120e0612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612127575050600e54936c7e37be2022c0914b26800000009350915050565b61216d60026000600d848154811061214157612141612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906122a0565b92506121b560036000600d848154811061218957612189612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906122a0565b9150806121c181612e77565b91505061207a565b50600e546121e4906c7e37be2022c0914b2680000000611047565b821015612205575050600e54926c7e37be2022c0914b268000000092509050565b90939092509050565b60008060008061221d856128b7565b9050600061222a866128d2565b905060006122428261223c89866122a0565b906122a0565b979296509094509092505050565b600080808061225f888661103b565b9050600061226d888761103b565b9050600061227b888861103b565b9050600061228d8261223c86866122a0565b939b939a50919850919650505050505050565b60006107b68284612e60565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122e1576122e1612ea8565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190612b19565b8160018151811061238057612380612ea8565b6001600160a01b0392831660209182029290920101526017546123a69130911684611053565b6017546001600160a01b031663791ac94783600084306123c84261012c611a7d565b6040518663ffffffff1660e01b81526004016123e8959493929190612d7d565b600060405180830381600087803b15801561240257600080fd5b505af1158015612416573d6000803e3d6000fd5b505050505050565b6017546124369030906001600160a01b031684611053565b6017546001546001600160a01b039182169163f305d719918491309187916000918291166124664261012c611a7d565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a279190612c3c565b60125460ff161580156125245750601254600160201b900460ff16155b801561253a5750601254600160301b900460ff16155b801561254f575060125462010000900460ff16155b80156125655750601254600160401b900460ff16155b1561256c57565b6012805469ffff00ff00ff00ff00ff1967ff000000ff0000001965ff000000ff0019831665ff00000000001961010060ff8087169190910291821692909217600160201b61ff001990961690911794909404811665010000000000029390931790811663ff00000019600160301b83048516600160381b02908116919091176201000067ff000000000000001990931690911791909104831663010000000217908116600160401b909104909116600160481b0268ff00ff00ff00ff00ff1916179055565b60008060008060008061264387611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061267590886122a0565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546126a490876122a0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546126d39086611a7d565b6001600160a01b0389166000908152600260205260409020556126f581612932565b6126ff8483612ac3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274491815260200190565b60405180910390a3505050505050505050565b60008060008060008061276987611a89565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061279b90876122a0565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546127d19084611a7d565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546126d39086611a7d565b60008060008060008061281287611a89565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506126a490876122a0565b60008060008060008061285687611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061288890886122a0565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461279b90876122a0565b6012546000906106d890606490611d1b90859060ff1661103b565b6012546000906106d890606490611d1b9060ff600160401b8204811691600160201b810482169161291491620100008104821691600160301b90910416612dd1565b61291e9190612dd1565b6129289190612dd1565b859060ff1661103b565b60125460ff600160501b820481169161295391620100009091041683612e18565b61295d9190612df6565b6013600082825461296e9190612db9565b909155505060125460ff600160501b820481169161299591600160301b9091041683612e18565b61299f9190612df6565b601460008282546129b09190612db9565b909155505060125460ff600160501b82048116916129d791600160201b9091041683612e18565b6129e19190612df6565b601560008282546129f29190612db9565b909155505060125460ff600160501b8204811691612a1991600160401b9091041683612e18565b612a239190612df6565b60166000828254612a349190612db9565b9091555060009050612a44611a5a565b90506000612a52838361103b565b30600090815260026020526040902054909150612a6f9082611a7d565b3060009081526002602090815260408083209390935560079052205460ff1615612abe5730600090815260036020526040902054612aad9084611a7d565b306000908152600360205260409020555b505050565b600e54612ad090836122a0565b600e55601054612ae09082611a7d565b6010555050565b80358015158114612af757600080fd5b919050565b600060208284031215612b0e57600080fd5b81356107b681612ebe565b600060208284031215612b2b57600080fd5b81516107b681612ebe565b60008060408385031215612b4957600080fd5b8235612b5481612ebe565b91506020830135612b6481612ebe565b809150509250929050565b600080600060608486031215612b8457600080fd5b8335612b8f81612ebe565b92506020840135612b9f81612ebe565b929592945050506040919091013590565b60008060408385031215612bc357600080fd5b8235612bce81612ebe565b946020939093013593505050565b600060208284031215612bee57600080fd5b6107b682612ae7565b600060208284031215612c0957600080fd5b5035919050565b60008060408385031215612c2357600080fd5b82359150612c3360208401612ae7565b90509250929050565b600080600060608486031215612c5157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ca35781516001600160a01b031687529582019590820190600101612c7e565b509495945050505050565b848152608060208201526000612cc76080830186612c6a565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612d1057858101830151858201604001528201612cf4565b81811115612d22576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a060408201526000612d9c60a0830186612c6a565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612dcc57612dcc612e92565b500190565b600060ff821660ff84168060ff03821115612dee57612dee612e92565b019392505050565b600082612e1357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e3257612e32612e92565b500290565b600060ff821660ff84168160ff0481118215151615612e5857612e58612e92565b029392505050565b600082821015612e7257612e72612e92565b500390565b6000600019821415612e8b57612e8b612e92565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612ed357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205dc35cc73c3873c5d3269afe42ddb4adb433f33e0721248801739fb74843dbe564736f6c63430008070033

Deployed Bytecode Sourcemap

12889:21693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16188:93;;;;;;;;;;-1:-1:-1;16267:6:0;;;;;;;;;;;-1:-1:-1;;;16267:6:0;;;;16188:93;;;;16267:6;16188:93;:::i;:::-;;;;;;;;17106:161;;;;;;;;;;-1:-1:-1;17106:161:0;;;;;:::i;:::-;;:::i;:::-;;;4765:14:1;;4758:22;4740:41;;4728:2;4713:18;17106:161:0;4600:187:1;16479:95:0;;;;;;;;;;-1:-1:-1;13729:13:0;16479:95;;;11509:25:1;;;11497:2;11482:18;16479:95:0;11363:177:1;13571:33:0;;;;;;;;;;;;;;;;17273:329;;;;;;;;;;-1:-1:-1;17273:329:0;;;;;:::i;:::-;;:::i;18844:241::-;;;;;;;;;;-1:-1:-1;18844:241:0;;;;;:::i;:::-;;:::i;16386:87::-;;;;;;;;;;-1:-1:-1;16386:87:0;;14076:2;12598:36:1;;12586:2;12571:18;16386:87:0;12456:184:1;17608:218:0;;;;;;;;;;-1:-1:-1;17608:218:0;;;;;:::i;:::-;;:::i;29834:78::-;;;;;;;;;;;;;:::i;:::-;;22761:111;;;;;;;;;;-1:-1:-1;22761:111:0;;;;;:::i;:::-;;:::i;18394:444::-;;;;;;;;;;-1:-1:-1;18394:444:0;;;;;:::i;:::-;;:::i;22878:124::-;;;;;;;;;;-1:-1:-1;22878:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;22967:27:0;22943:4;22967:27;;;:18;:27;;;;;;;;;22878:124;18285:103;;;;;;;;;;-1:-1:-1;18285:103:0;;;;;:::i;:::-;;:::i;27148:148::-;;;;;;;;;;-1:-1:-1;27148:148:0;;;;;:::i;:::-;;:::i;30094:86::-;;;;;;;;;;;;;:::i;26993:152::-;;;;;;;;;;-1:-1:-1;26993:152:0;;;;;:::i;:::-;;:::i;29735:93::-;;;;;;;;;;;;;:::i;30397:82::-;;;;;;;;;;;;;:::i;29638:91::-;;;;;;;;;;;;;:::i;16580:198::-;;;;;;;;;;-1:-1:-1;16580:198:0;;;;;:::i;:::-;;:::i;744:148::-;;;;;;;;;;;;;:::i;29918:80::-;;;;;;;;;;;;;:::i;30315:76::-;;;;;;;;;;;;;:::i;13480:43::-;;;;;;;;;;-1:-1:-1;13480:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18157:120;;;;;;;;;;-1:-1:-1;18157:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;18249:20:0;18225:4;18249:20;;;:11;:20;;;;;;;;;18157:120;516:87;;;;;;;;;;-1:-1:-1;562:7:0;589:6;516:87;;-1:-1:-1;;;;;589:6:0;;;3617:51:1;;3605:2;3590:18;516:87:0;3471:203:1;17832:319:0;;;;;;;;;;-1:-1:-1;17832:319:0;;;;;:::i;:::-;;:::i;16784:167::-;;;;;;;;;;-1:-1:-1;16784:167:0;;;;;:::i;:::-;;:::i;29556:76::-;;;;;;;;;;;;;:::i;16957:143::-;;;;;;;;;;-1:-1:-1;16957:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17065:18:0;;;17038:7;17065:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16957:143;13527:37;;;;;;;;;;;;;;;;900:249;;;;;;;;;;-1:-1:-1;900:249:0;;;;;:::i;:::-;;:::i;30485:160::-;;;;;;;;;;;;;:::i;30004:84::-;;;;;;;;;;;;;:::i;26086:166::-;;;;;;;;;;-1:-1:-1;26086:166:0;;;;;:::i;:::-;;:::i;26770:220::-;;;;;;;;;;-1:-1:-1;26770:220:0;;;;;:::i;:::-;;:::i;17106:161::-;17181:4;17198:39;169:10;17221:7;17230:6;17198:8;:39::i;:::-;-1:-1:-1;17255:4:0;17106:161;;;;;:::o;17273:329::-;17369:4;17386:36;17396:6;17404:9;17415:6;17386:9;:36::i;:::-;17433:139;17442:6;169:10;17472:89;17510:6;17472:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17472:19:0;;;;;;:11;:19;;;;;;;;169:10;17472:33;;;;;;;;;;:37;:89::i;:::-;17433:8;:139::i;:::-;-1:-1:-1;17590:4:0;17273:329;;;;;:::o;18844:241::-;18911:7;18950;;18939;:18;;18931:61;;;;-1:-1:-1;;;18931:61:0;;8413:2:1;18931:61:0;;;8395:21:1;8452:2;8432:18;;;8425:30;8491:32;8471:18;;;8464:60;8541:18;;18931:61:0;;;;;;;;;19003:19;19025:10;:8;:10::i;:::-;19003:32;-1:-1:-1;19053:24:0;:7;19003:32;19053:11;:24::i;:::-;19046:31;18844:241;-1:-1:-1;;;18844:241:0:o;17608:218::-;169:10;17696:4;17745:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17745:34:0;;;;;;;;;;17696:4;;17713:83;;17736:7;;17745:50;;17784:10;17745:38;:50::i;29834:78::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29887:10:::1;:17:::0;;-1:-1:-1;;;;29887:17:0::1;-1:-1:-1::0;;;29887:17:0::1;::::0;;29834:78::o;22761:111::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22830:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;22830:34:0::1;22860:4;22830:34;::::0;;22761:111::o;18394:444::-;18485:7;13729:13;18513:7;:18;;18505:59;;;;-1:-1:-1;;;18505:59:0;;6470:2:1;18505:59:0;;;6452:21:1;6509:2;6489:18;;;6482:30;6548;6528:18;;;6521:58;6596:18;;18505:59:0;6268:352:1;18505:59:0;18580:17;18575:256;;18615:15;18644:19;18655:7;18644:10;:19::i;:::-;-1:-1:-1;18614:49:0;;-1:-1:-1;18678:14:0;;-1:-1:-1;;;;;18678:14:0;18575:256;18728:23;18763:19;18774:7;18763:10;:19::i;:::-;-1:-1:-1;18725:57:0;;-1:-1:-1;18797:22:0;;-1:-1:-1;;;;;18797:22:0;18285:103;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;18357:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;18357:23:0::1;-1:-1:-1::0;;;;18357:23:0;;::::1;::::0;;;::::1;::::0;;18285:103::o;27148:148::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27222:20:0;::::1;27245:5;27222:20:::0;;;:11:::1;:20;::::0;;;;;:28;;-1:-1:-1;;27222:28:0::1;::::0;;27266:22;::::1;::::0;27245:5;27266:22:::1;27148:148:::0;:::o;30094:86::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30152:12:::1;:20:::0;;-1:-1:-1;;;;30152:20:0::1;::::0;;30094:86::o;26993:152::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27063:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;::::1;;27055:50;;;::::0;-1:-1:-1;;;27055:50:0;;9125:2:1;27055:50:0::1;::::0;::::1;9107:21:1::0;9164:2;9144:18;;;9137:30;9203:26;9183:18;;;9176:54;9247:18;;27055:50:0::1;8923:348:1::0;27055:50:0::1;-1:-1:-1::0;;;;;27116:13:0::1;27132:5;27116:13:::0;;;:6:::1;:13;::::0;;;;:21;;-1:-1:-1;;27116:21:0::1;::::0;;26993:152::o;29735:93::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29791:21:::1;:29:::0;;-1:-1:-1;;;;29791:29:0::1;::::0;;29735:93::o;30397:82::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30453:10:::1;:18:::0;;-1:-1:-1;;;;30453:18:0::1;::::0;;30397:82::o;29638:91::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29693:21:::1;:28:::0;;-1:-1:-1;;;;29693:28:0::1;-1:-1:-1::0;;;29693:28:0::1;::::0;;29638:91::o;16580:198::-;-1:-1:-1;;;;;16670:20:0;;16646:7;16670:20;;;:11;:20;;;;;;;;16666:49;;;-1:-1:-1;;;;;;16699:16:0;;;;;:7;:16;;;;;;;16580:198::o;16666:49::-;-1:-1:-1;;;;;16753:16:0;;;;;;:7;:16;;;;;;16733:37;;:19;:37::i;744:148::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;851:1:::1;835:6:::0;;814:40:::1;::::0;-1:-1:-1;;;;;835:6:0;;::::1;::::0;814:40:::1;::::0;851:1;;814:40:::1;882:1;865:19:::0;;-1:-1:-1;;;;;;865:19:0::1;::::0;;744:148::o;29918:80::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29972:10:::1;:18:::0;;-1:-1:-1;;;;29972:18:0::1;::::0;;29918:80::o;30315:76::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30366:10:::1;:17:::0;;-1:-1:-1;;;;30366:17:0::1;-1:-1:-1::0;;;30366:17:0::1;::::0;;30315:76::o;17832:319::-;17925:4;17942:179;169:10;17992:7;18014:96;18053:15;18014:96;;;;;;;;;;;;;;;;;169:10;18014:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18014:34:0;;;;;;;;;;;;:38;:96::i;16784:167::-;16862:4;16879:42;169:10;16903:9;16914:6;16879:9;:42::i;29556:76::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29606:11:::1;:18:::0;;-1:-1:-1;;;;29606:18:0::1;-1:-1:-1::0;;;29606:18:0::1;::::0;;29556:76::o;900:249::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;989:22:0;::::1;981:78;;;::::0;-1:-1:-1;;;981:78:0;;9478:2:1;981:78:0::1;::::0;::::1;9460:21:1::0;9517:2;9497:18;;;9490:30;9556:34;9536:18;;;9529:62;-1:-1:-1;;;9607:18:1;;;9600:41;9658:19;;981:78:0::1;9276:407:1::0;981:78:0::1;1096:6;::::0;;1075:38:::1;::::0;-1:-1:-1;;;;;1075:38:0;;::::1;::::0;1096:6;::::1;::::0;1075:38:::1;::::0;::::1;1124:6;:17:::0;;-1:-1:-1;;;;;;1124:17:0::1;-1:-1:-1::0;;;;;1124:17:0;;;::::1;::::0;;;::::1;::::0;;900:249::o;30485:160::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30579:58:::1;::::0;30543:12:::1;::::0;30587:10:::1;::::0;30611:21:::1;::::0;30543:12;30579:58;30543:12;30579:58;30611:21;30587:10;30579:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;30485:160:0:o;30004:84::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30061:12:::1;:19:::0;;-1:-1:-1;;;;30061:19:0::1;-1:-1:-1::0;;;30061:19:0::1;::::0;;30004:84::o;26086:166::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;15582:16:::1;:23:::0;;-1:-1:-1;;;;15582:23:0::1;-1:-1:-1::0;;;15582:23:0::1;::::0;;26179:13:::2;::::0;26169:23;::::2;26165:80;;26209:24;26226:6;26209:16;:24::i;:::-;-1:-1:-1::0;15628:16:0::1;:24:::0;;-1:-1:-1;;;;15628:24:0::1;::::0;;26086:166::o;26770:220::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;26846:42:::1;-1:-1:-1::0;;;;;26837:51:0;::::1;;;26829:60;;;::::0;::::1;;-1:-1:-1::0;;;;;26909:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;::::1;;26908:14;26900:51;;;::::0;-1:-1:-1;;;26900:51:0;;8772:2:1;26900:51:0::1;::::0;::::1;8754:21:1::0;8811:2;8791:18;;;8784:30;8850:26;8830:18;;;8823:54;8894:18;;26900:51:0::1;8570:348:1::0;26900:51:0::1;-1:-1:-1::0;;;;;26962:13:0::1;;::::0;;;:6:::1;:13;::::0;;;;:20;;-1:-1:-1;;26962:20:0::1;26978:4;26962:20;::::0;;26770:220::o;2880:98::-;2938:7;2965:5;2969:1;2965;:5;:::i;2984:98::-;3042:7;3069:5;3073:1;3069;:5;:::i;23008:325::-;-1:-1:-1;;;;;23099:19:0;;23091:64;;;;-1:-1:-1;;;23091:64:0;;11204:2:1;23091:64:0;;;11186:21:1;;;11223:18;;;11216:30;11282:34;11262:18;;;11255:62;11334:18;;23091:64:0;11002:356:1;23091:64:0;-1:-1:-1;;;;;23174:21:0;;23166:64;;;;-1:-1:-1;;;23166:64:0;;6111:2:1;23166:64:0;;;6093:21:1;6150:2;6130:18;;;6123:30;6189:32;6169:18;;;6162:60;6239:18;;23166:64:0;5909:354:1;23166:64:0;-1:-1:-1;;;;;23241:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23293:32;;11509:25:1;;;23293:32:0;;11482:18:1;23293:32:0;;;;;;;23008:325;;;:::o;23339:2741::-;-1:-1:-1;;;;;23425:18:0;;23417:64;;;;-1:-1:-1;;;23417:64:0;;7243:2:1;23417:64:0;;;7225:21:1;7282:2;7262:18;;;7255:30;7321:34;7301:18;;;7294:62;-1:-1:-1;;;7372:18:1;;;7365:31;7413:19;;23417:64:0;7041:397:1;23417:64:0;-1:-1:-1;;;;;23500:16:0;;23492:60;;;;-1:-1:-1;;;23492:60:0;;7645:2:1;23492:60:0;;;7627:21:1;7684:2;7664:18;;;7657:30;7723:33;7703:18;;;7696:61;7774:18;;23492:60:0;7443:355:1;23492:60:0;23580:1;23571:6;:10;23563:64;;;;-1:-1:-1;;;23563:64:0;;10296:2:1;23563:64:0;;;10278:21:1;10335:2;10315:18;;;10308:30;10374:34;10354:18;;;10347:62;-1:-1:-1;;;10425:18:1;;;10418:39;10474:19;;23563:64:0;10094:405:1;23563:64:0;-1:-1:-1;;;;;23641:12:0;;;;;;:6;:12;;;;;;;;23640:13;23632:22;;;;;;-1:-1:-1;;;;;23668:17:0;;;;;;:11;:17;;;;;;;;23667:18;;:59;;;23711:15;23689:18;;:37;;23667:59;23659:161;;;;-1:-1:-1;;;23659:161:0;;10706:2:1;23659:161:0;;;10688:21:1;10745:2;10725:18;;;10718:30;10784:34;10764:18;;;10757:62;10855:34;10835:18;;;10828:62;10927:27;10906:19;;;10899:56;10972:19;;23659:161:0;10504:493:1;23659:161:0;23829:12;;-1:-1:-1;;;23829:12:0;;;;:20;;23845:4;23829:20;:47;;;;-1:-1:-1;;;;;;23855:21:0;;;;;;:17;:21;;;;;;;;23853:23;23829:47;23825:172;;;23927:14;;23917:6;23901:13;23911:2;23901:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;23893:92;;;;-1:-1:-1;;;23893:92:0;;8005:2:1;23893:92:0;;;7987:21:1;8044:2;8024:18;;;8017:30;8083:34;8063:18;;;8056:62;-1:-1:-1;;;8134:18:1;;;8127:37;8181:19;;23893:92:0;7803:403:1;23893:92:0;24011:10;;-1:-1:-1;;;24011:10:0;;;;:18;;24025:4;24011:18;:39;;;;-1:-1:-1;24041:9:0;;-1:-1:-1;;;;;24033:17:0;;;24041:9;;24033:17;24011:39;24007:147;;;24076:20;24066:6;:30;;24058:90;;;;-1:-1:-1;;;24058:90:0;;6827:2:1;24058:90:0;;;6809:21:1;6866:2;6846:18;;;6839:30;6905:34;6885:18;;;6878:62;-1:-1:-1;;;6956:18:1;;;6949:45;7011:19;;24058:90:0;6625:411:1;24058:90:0;24162:10;;-1:-1:-1;;;24162:10:0;;;;:18;;24176:4;24162:18;:35;;;;-1:-1:-1;562:7:0;589:6;-1:-1:-1;;;;;24184:13:0;;;589:6;;24184:13;;24162:35;:56;;;;-1:-1:-1;24209:9:0;;-1:-1:-1;;;;;24201:17:0;;;24209:9;;24201:17;;24162:56;24158:103;;;24234:20;;24226:29;;;;;;24283:9;;-1:-1:-1;;;;;24275:17:0;;;24283:9;;24275:17;:47;;;;-1:-1:-1;24310:11:0;;-1:-1:-1;;;;;24296:26:0;;;24310:11;;24296:26;;24275:47;:75;;;;-1:-1:-1;;;;;;24328:22:0;;;;;;:18;:22;;;;;;;;24326:24;24275:75;:94;;;;-1:-1:-1;24354:15:0;;-1:-1:-1;;;24354:15:0;;;;24275:94;24271:296;;;24408:12;;24398:6;:22;;24390:31;;;;;;-1:-1:-1;;;;;24448:16:0;;;;;;:12;:16;;;;;;24467:15;-1:-1:-1;24440:43:0;;;;;;24521:30;:15;24540:10;24521:30;:::i;:::-;-1:-1:-1;;;;;24502:16:0;;;;;;:12;:16;;;;;:49;24271:296;24580:11;;-1:-1:-1;;;24580:11:0;;;;:19;;24595:4;24580:19;24577:630;;;24727:11;:26;;-1:-1:-1;;;;;;24727:26:0;24669:42;24727:26;;;;;;24798:22;;;-1:-1:-1;;;24798:22:0;;;;24669:42;;24798:20;;:22;;;;;;;;;;;;;;24669:42;24798:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24780:49:0;;24838:4;24845:12;-1:-1:-1;;;;;24845:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24780:85;;-1:-1:-1;;;;;;24780:85:0;;;;;;;-1:-1:-1;;;;;3909:15:1;;;24780:85:0;;;3891:34:1;3961:15;;3941:18;;;3934:43;3826:18;;24780:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24768:9;:97;;-1:-1:-1;;;;;;24768:97:0;-1:-1:-1;;;;;24768:97:0;;;;;;;;;;24901:12;24880:18;:33;24949:26;:15;24967:8;24949:26;:::i;:::-;24928:18;:47;-1:-1:-1;25016:9:0;;-1:-1:-1;;;;;25016:9:0;;;24990:37;;;;:17;:37;;;;;;:44;;25030:4;-1:-1:-1;;24990:44:0;;;;;;;;25075:11;;;;;25049:39;;;;:46;;;;;;;;25110:10;:17;;-1:-1:-1;;;;25176:19:0;-1:-1:-1;;;25176:19:0;;;24577:630;562:7;589:6;-1:-1:-1;;;;;25214:15:0;;;589:6;;25214:15;;;;:34;;-1:-1:-1;25239:9:0;;-1:-1:-1;;;;;25233:15:0;;;25239:9;;25233:15;;25214:34;:72;;;;;25268:18;;25252:12;:34;25214:72;25211:145;;;-1:-1:-1;;;;;25293:15:0;;;;;;:11;:15;;;;;;:22;;-1:-1:-1;;25293:22:0;25311:4;25293:22;;;25335:15;;;25293;25335;25211:145;25366:28;25397:24;25415:4;25397:9;:24::i;:::-;25437:16;;25366:55;;-1:-1:-1;;;;25437:16:0;;;;25436:17;:36;;;;-1:-1:-1;25463:9:0;;-1:-1:-1;;;;;25457:15:0;;;25463:9;;25457:15;25436:36;:61;;;;-1:-1:-1;25476:21:0;;-1:-1:-1;;;25476:21:0;;;;25436:61;25432:188;;;25542:29;;25518:20;:53;25514:95;;25580:13;:11;:13::i;:::-;-1:-1:-1;;;;;25664:24:0;;25630:12;25664:24;;;:18;:24;;;;;;25645:4;;25664:24;;;:50;;-1:-1:-1;;;;;;25692:22:0;;;;;;:18;:22;;;;;;;;25664:50;25660:98;;;-1:-1:-1;25741:5:0;25660:98;-1:-1:-1;;;;;25765:17:0;;;;;;:11;:17;;;;;;;;:57;;;;;25807:15;25786:18;;:36;25765:57;25762:259;;;25856:7;;:11;;:7;;25866:1;25856:11;:::i;:::-;25846:7;:21;;-1:-1:-1;;25846:21:0;;;;;;;;;;25900:11;;-1:-1:-1;;;25900:7:0;;;;25910:1;25900:11;:::i;:::-;25890:7;:21;;-1:-1:-1;;25890:21:0;-1:-1:-1;;;25890:21:0;;;;;;;;;;25944:11;;-1:-1:-1;;;25944:7:0;;;;25954:1;25944:11;:::i;:::-;25934:7;:21;;-1:-1:-1;;25934:21:0;-1:-1:-1;;;25934:21:0;;;;;;;;;;25989:12;;-1:-1:-1;;;25989:8:0;;;;26000:1;25989:12;:::i;:::-;25978:8;;:23;;;;;;;;;;;;;;;;;;25762:259;26031:41;26046:4;26052:2;26056:6;26064:7;26031:14;:41::i;:::-;23406:2674;;23339:2741;;;:::o;3192:206::-;3278:7;3339:12;3331:6;;;;3323:29;;;;-1:-1:-1;;;3323:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3374:5:0;;;3192:206::o;20462:164::-;20504:7;20525:15;20542;20561:19;:17;:19::i;:::-;20524:56;;-1:-1:-1;20524:56:0;-1:-1:-1;20598:20:0;20524:56;;20598:11;:20::i;:::-;20591:27;;;;20462:164;:::o;2672:98::-;2730:7;2757:5;2761:1;2757;:5;:::i;19279:414::-;19338:7;19346;19354;19362;19370;19378;19399:23;19424:12;19438:18;19460:20;19472:7;19460:11;:20::i;:::-;19398:82;;;;;;19492:15;19509:23;19534:12;19550:50;19562:7;19571:4;19577:10;19589;:8;:10::i;:::-;19550:11;:50::i;:::-;19491:109;;;;-1:-1:-1;19491:109:0;;-1:-1:-1;19651:15:0;;-1:-1:-1;19668:4:0;;-1:-1:-1;19674:10:0;;-1:-1:-1;19279:414:0;;-1:-1:-1;;;;;19279:414:0:o;26258:509::-;26403:16;;;26417:1;26403:16;;;;;;;;26379:21;;26403:16;;;;;;;;-1:-1:-1;;26440:11:0;;:18;;;-1:-1:-1;;;26440:18:0;;;;26379:40;;-1:-1:-1;;;;;;26440:11:0;;;;:16;;-1:-1:-1;26440:18:0;;;;;;;;;;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26430:4;26435:1;26430:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;26430:28:0;;;-1:-1:-1;;;;;26430:28:0;;;;;26487:4;26469;26474:1;26469:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26469:23:0;;;:7;;;;;;;;;:23;26531:11;;;26689:4;26531:11;;;;:62;;26601:6;;26531:11;;26670:4;;26689;26724:24;:15;26744:3;26724:19;:24::i;:::-;26531:228;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26308:459;26258:509;:::o;27299:1291::-;15582:16;:23;;-1:-1:-1;;;;15582:23:0;-1:-1:-1;;;15582:23:0;;;27356:8:::1;::::0;;;::::1;15582:23:::0;27356:8:::1;:13:::0;27353:116:::1;;27411:4;::::0;27417:10:::1;::::0;27386:42:::1;::::0;27404:4:::1;::::0;-1:-1:-1;;;;;27411:4:0;;::::1;::::0;27386:9:::1;:42::i;:::-;27456:1;27443:10;:14:::0;27353:116:::1;27479:23;27505:24;27523:4;27505:9;:24::i;:::-;27479:50;;27540:25;27604:13;;27586:15;;27568;;:33;;;;:::i;:::-;:49;;;;:::i;:::-;27540:77;;27677:26;27706:22;27726:1;27706:15;;:19;;:22;;;;:::i;:::-;27677:51:::0;-1:-1:-1;27739:26:0::1;27768:39;:15:::0;27677:51;27768:19:::1;:39::i;:::-;27739:68:::0;-1:-1:-1;27846:21:0::1;27878:36;27739:68:::0;27878:16:::1;:36::i;:::-;27926:18;27947:44;:21;27973:17:::0;27947:25:::1;:44::i;:::-;27926:65;;28002:23;28028:54;28064:17;28028:31;28043:15;;28028:10;:14;;:31;;;;:::i;:::-;:35:::0;::::1;:54::i;:::-;28002:80:::0;-1:-1:-1;28093:23:0::1;28119:31;:10:::0;28002:80;28119:14:::1;:31::i;:::-;28179:1;28161:15;:19:::0;;;28191:15:::1;:19:::0;;;28247:9:::1;::::0;28239:51:::1;::::0;28093:57;;-1:-1:-1;28179:1:0;;-1:-1:-1;;;;;28247:9:0;;::::1;::::0;28270:15;;28179:1;28239:51;28179:1;28239:51;28270:15;28247:9;28239:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28221:69;;;28301:49;28314:18;28334:15;28301:12;:49::i;:::-;28366:71;::::0;;12334:25:1;;;12390:2;12375:18;;12368:34;;;12418:18;;;12411:34;;;28366:71:0::1;::::0;12322:2:1;12307:18;28366:71:0::1;;;;;;;28451:21;:34:::0;28448:135:::1;;28522:9;::::0;28514:57:::1;::::0;-1:-1:-1;;;;;28522:9:0;;::::1;::::0;28545:21:::1;::::0;28514:57:::1;::::0;;;28545:21;28522:9;28514:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;28501:70:0;;-1:-1:-1;;28448:135:0::1;-1:-1:-1::0;;15628:16:0;:24;;-1:-1:-1;;;;15628:24:0;;;-1:-1:-1;;;;;;;27299:1291:0:o;30651:788::-;30761:7;30756:28;;30770:14;:12;:14::i;:::-;-1:-1:-1;;;;;30799:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;30823:22:0;;;;;;:11;:22;;;;;;;;30822:23;30799:46;30795:597;;;30862:48;30884:6;30892:9;30903:6;30862:21;:48::i;:::-;30795:597;;;-1:-1:-1;;;;;30933:19:0;;;;;;:11;:19;;;;;;;;30932:20;:46;;;;-1:-1:-1;;;;;;30956:22:0;;;;;;:11;:22;;;;;;;;30932:46;30928:464;;;30995:46;31015:6;31023:9;31034:6;30995:19;:46::i;30928:464::-;-1:-1:-1;;;;;31064:19:0;;;;;;:11;:19;;;;;;;;31063:20;:47;;;;-1:-1:-1;;;;;;31088:22:0;;;;;;:11;:22;;;;;;;;31087:23;31063:47;31059:333;;;31127:44;31145:6;31153:9;31164:6;31127:17;:44::i;31059:333::-;-1:-1:-1;;;;;31193:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;31216:22:0;;;;;;:11;:22;;;;;;;;31193:45;31189:203;;;31255:48;31277:6;31285:9;31296:6;31255:21;:48::i;31189:203::-;31336:44;31354:6;31362:9;31373:6;31336:17;:44::i;:::-;31407:7;31402:29;;22583:15;;;-1:-1:-1;;;;;;22609:25:0;;22583:15;;;;;;;22609:25;;;22619:15;-1:-1:-1;;22573:25:0;;;;;;;22619:15;;;;;;-1:-1:-1;;;22609:25:0;;22681:28;;;-1:-1:-1;;;;;22655:15:0;;;;-1:-1:-1;;;22645:25:0;22681:28;;;;;;;22692:17;-1:-1:-1;;22645:25:0;;;;;;22692:17;;;;;;22681:28;;;22720:27;;;-1:-1:-1;;;22731:16:0;;;;;;-1:-1:-1;;;22720:27:0;;;;31416:15;22529:226;20632:556;20730:7;;20683;;;;13729:13;20683:7;20784:289;20808:9;:16;20804:20;;20784:289;;;20874:7;20850;:21;20858:9;20868:1;20858:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20858:12:0;20850:21;;;;;;;;;;;;;:31;;:66;;;20909:7;20885;:21;20893:9;20903:1;20893:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20893:12:0;20885:21;;;;;;;;;;;;;:31;20850:66;20846:97;;;-1:-1:-1;;20926:7:0;;;13729:13;;-1:-1:-1;20632:556:0;-1:-1:-1;;20632:556:0:o;20846:97::-;20968:34;20980:7;:21;20988:9;20998:1;20988:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20988:12:0;20980:21;;;;;;;;;;;;;20968:7;;:11;:34::i;:::-;20958:44;;21027:34;21039:7;:21;21047:9;21057:1;21047:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21047:12:0;21039:21;;;;;;;;;;;;;21027:7;;:11;:34::i;:::-;21017:44;-1:-1:-1;20826:3:0;;;;:::i;:::-;;;;20784:289;;;-1:-1:-1;21097:7:0;;:20;;13729:13;21097:11;:20::i;:::-;21087:7;:30;21083:61;;;-1:-1:-1;;21127:7:0;;;13729:13;;-1:-1:-1;20632:556:0;-1:-1:-1;20632:556:0:o;21083:61::-;21163:7;;21172;;-1:-1:-1;20632:556:0;-1:-1:-1;20632:556:0:o;19699:327::-;19758:7;19766;19774;19794:12;19809:24;19825:7;19809:15;:24::i;:::-;19794:39;;19844:18;19865:30;19887:7;19865:21;:30::i;:::-;19844:51;-1:-1:-1;19906:23:0;19932:33;19844:51;19932:17;:7;19944:4;19932:11;:17::i;:::-;:21;;:33::i;:::-;19906:59;20001:4;;-1:-1:-1;20007:10:0;;-1:-1:-1;19699:327:0;;-1:-1:-1;;;19699:327:0:o;20032:424::-;20144:7;;;;20198:24;:7;20210:11;20198;:24::i;:::-;20180:42;-1:-1:-1;20233:12:0;20248:21;:4;20257:11;20248:8;:21::i;:::-;20233:36;-1:-1:-1;20280:18:0;20301:27;:10;20316:11;20301:14;:27::i;:::-;20280:48;-1:-1:-1;20339:23:0;20365:33;20280:48;20365:17;:7;20377:4;20365:11;:17::i;:33::-;20417:7;;;;-1:-1:-1;20443:4:0;;-1:-1:-1;20032:424:0;;-1:-1:-1;;;;;;;20032:424:0:o;2776:98::-;2834:7;2861:5;2865:1;2861;:5;:::i;28598:496::-;28688:16;;;28702:1;28688:16;;;;;;;;28664:21;;28688:16;;;;;;;;;;-1:-1:-1;28688:16:0;28664:40;;28733:4;28715;28720:1;28715:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28715:23:0;;;:7;;;;;;;;;;:23;;;;28759:11;;:18;;;-1:-1:-1;;;28759:18:0;;;;:11;;;;;:16;;:18;;;;;28715:7;;28759:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28749:4;28754:1;28749:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28749:28:0;;;:7;;;;;;;;;:28;28820:11;;28788:58;;28805:4;;28820:11;28834;28788:8;:58::i;:::-;28857:11;;-1:-1:-1;;;;;28857:11:0;:62;28934:11;28857;29004:4;29031;29051:24;:15;29071:3;29051:19;:24::i;:::-;28857:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28653:441;28598:496;:::o;29100:412::-;29213:11;;29181:58;;29198:4;;-1:-1:-1;;;;;29213:11:0;29227;29181:8;:58::i;:::-;29250:11;;;29450:4;-1:-1:-1;;;;;29250:11:0;;;;:27;;29285:9;;29318:4;;29338:11;;29250;;;;29450:4;29469:24;:15;29489:3;29469:19;:24::i;:::-;29250:254;;;;;;-1:-1:-1;;;;;;29250:254:0;;;-1:-1:-1;;;;;4347:15:1;;;29250:254:0;;;4329:34:1;4379:18;;;4372:34;;;;4422:18;;;4415:34;;;;4465:18;;;4458:34;;;;4529:15;;;4508:19;;;4501:44;4561:19;;;4554:35;;;;4263:19;;29250:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22081:442::-;22128:7;;;;:12;:28;;;;-1:-1:-1;22144:7:0;;-1:-1:-1;;;22144:7:0;;;;:12;22128:28;:44;;;;-1:-1:-1;22160:7:0;;-1:-1:-1;;;22160:7:0;;;;:12;22128:44;:61;;;;-1:-1:-1;22176:8:0;;;;;;;:13;22128:61;:78;;;;-1:-1:-1;22193:8:0;;-1:-1:-1;;;22193:8:0;;;;:13;22128:78;22124:91;;;22081:442::o;22124:91::-;22245:7;;;-1:-1:-1;;;;;;22263:25:0;;-1:-1:-1;;22245:7:0;;;;;22227:25;;;;22263;;;;;;;-1:-1:-1;;;;;22227:25:0;;;;;;22281:7;;;;;;22263:25;;;;;;22335:28;;;-1:-1:-1;;;;;22317:7:0;;;;-1:-1:-1;;;22299:25:0;22335:28;;;;;;;22355:8;-1:-1:-1;;22299:25:0;;;;;;22355:8;;;;;;22335:28;;;22503:12;;;-1:-1:-1;;;22393:8:0;;;;;;-1:-1:-1;;;22374:27:0;-1:-1:-1;;22503:12:0;;;;22081:442::o;32708:650::-;32823:15;32853:23;32891:12;32918:23;32956:12;32983:18;33015:19;33026:7;33015:10;:19::i;:::-;-1:-1:-1;;;;;33063:15:0;;;;;;:7;:15;;;;;;32808:226;;-1:-1:-1;32808:226:0;;-1:-1:-1;32808:226:0;;-1:-1:-1;32808:226:0;-1:-1:-1;32808:226:0;-1:-1:-1;32808:226:0;-1:-1:-1;33063:28:0;;33083:7;33063:19;:28::i;:::-;-1:-1:-1;;;;;33045:15:0;;;;;;:7;:15;;;;;;;;:46;;;;33120:7;:15;;;;:28;;33140:7;33120:19;:28::i;:::-;-1:-1:-1;;;;;33102:15:0;;;;;;;:7;:15;;;;;;:46;;;;33180:18;;;;;;;:39;;33203:15;33180:22;:39::i;:::-;-1:-1:-1;;;;;33159:18:0;;;;;;:7;:18;;;;;:60;33230:26;33245:10;33230:14;:26::i;:::-;33267:23;33279:4;33285;33267:11;:23::i;:::-;33323:9;-1:-1:-1;;;;;33306:44:0;33315:6;-1:-1:-1;;;;;33306:44:0;;33334:15;33306:44;;;;11509:25:1;;11497:2;11482:18;;11363:177;33306:44:0;;;;;;;;32797:561;;;;;;32708:650;;;:::o;32040:662::-;32153:15;32183:23;32221:12;32248:23;32286:12;32313:18;32345:19;32356:7;32345:10;:19::i;:::-;-1:-1:-1;;;;;32393:15:0;;;;;;:7;:15;;;;;;32138:226;;-1:-1:-1;32138:226:0;;-1:-1:-1;32138:226:0;;-1:-1:-1;32138:226:0;-1:-1:-1;32138:226:0;-1:-1:-1;32138:226:0;-1:-1:-1;32393:28:0;;32138:226;32393:19;:28::i;:::-;-1:-1:-1;;;;;32375:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;32453:18;;;;;:7;:18;;;;;:39;;32476:15;32453:22;:39::i;:::-;-1:-1:-1;;;;;32432:18:0;;;;;;:7;:18;;;;;;;;:60;;;;32524:7;:18;;;;:39;;32547:15;32524:22;:39::i;31445:589::-;31556:15;31586:23;31624:12;31651:23;31689:12;31716:18;31748:19;31759:7;31748:10;:19::i;:::-;-1:-1:-1;;;;;31796:15:0;;;;;;:7;:15;;;;;;31541:226;;-1:-1:-1;31541:226:0;;-1:-1:-1;31541:226:0;;-1:-1:-1;31541:226:0;-1:-1:-1;31541:226:0;-1:-1:-1;31541:226:0;-1:-1:-1;31796:28:0;;31541:226;31796:19;:28::i;33364:721::-;33479:15;33509:23;33547:12;33574:23;33612:12;33639:18;33671:19;33682:7;33671:10;:19::i;:::-;-1:-1:-1;;;;;33719:15:0;;;;;;:7;:15;;;;;;33464:226;;-1:-1:-1;33464:226:0;;-1:-1:-1;33464:226:0;;-1:-1:-1;33464:226:0;-1:-1:-1;33464:226:0;-1:-1:-1;33464:226:0;-1:-1:-1;33719:28:0;;33739:7;33719:19;:28::i;:::-;-1:-1:-1;;;;;33701:15:0;;;;;;:7;:15;;;;;;;;:46;;;;33776:7;:15;;;;:28;;33796:7;33776:19;:28::i;21771:130::-;21874:7;;21835;;21862:31;;21887:5;;21862:20;;:7;;21874;;21862:11;:20::i;21907:168::-;22047:8;;21977:7;;22004:63;;22061:5;;22004:52;;22047:8;-1:-1:-1;;;22047:8:0;;;;;-1:-1:-1;;;22037:7:0;;;;;22016:18;;22026:8;;;;;;-1:-1:-1;;;22016:7:0;;;;:18;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;22004:7;;:52;;:11;:52::i;21194:571::-;21295:7;;;-1:-1:-1;;;21295:7:0;;;;;21271:21;;21284:8;;;;;21271:10;:21;:::i;:::-;:31;;;;:::i;:::-;21257:10;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;21355:7:0;;;-1:-1:-1;;;21355:7:0;;;;;21332:20;;-1:-1:-1;;;21345:7:0;;;;21332:10;:20;:::i;:::-;:30;;;;:::i;:::-;21313:15;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21409:7:0;;;-1:-1:-1;;;21409:7:0;;;;;21386:20;;-1:-1:-1;;;21399:7:0;;;;21386:10;:20;:::i;:::-;:30;;;;:::i;:::-;21367:15;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21468:7:0;;;-1:-1:-1;;;21468:7:0;;;;;21444:21;;-1:-1:-1;;;21457:8:0;;;;21444:10;:21;:::i;:::-;:31;;;;:::i;:::-;21427:13;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;21486:19:0;;-1:-1:-1;21508:10:0;:8;:10::i;:::-;21486:32;-1:-1:-1;21529:18:0;21550:27;:10;21486:32;21550:14;:27::i;:::-;21629:4;21613:22;;;;:7;:22;;;;;;21529:48;;-1:-1:-1;21613:38:0;;21529:48;21613:26;:38::i;:::-;21604:4;21588:22;;;;:7;:22;;;;;;;;:63;;;;21666:11;:26;;;;;;21662:95;;;21735:4;21719:22;;;;:7;:22;;;;;;:38;;21746:10;21719:26;:38::i;:::-;21710:4;21694:22;;;;:7;:22;;;;;:63;21662:95;21246:519;;21194:571;:::o;19126:147::-;19204:7;;:17;;19216:4;19204:11;:17::i;:::-;19194:7;:27;19245:10;;:20;;19260:4;19245:14;:20::i;:::-;19232:10;:33;-1:-1:-1;;19126:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2484:306;;;;;:::o;2795:461::-;2848:3;2886:5;2880:12;2913:6;2908:3;2901:19;2939:4;2968:2;2963:3;2959:12;2952:19;;3005:2;2998:5;2994:14;3026:1;3036:195;3050:6;3047:1;3044:13;3036:195;;;3115:13;;-1:-1:-1;;;;;3111:39:1;3099:52;;3171:12;;;;3206:15;;;;3147:1;3065:9;3036:195;;;-1:-1:-1;3247:3:1;;2795:461;-1:-1:-1;;;;;2795:461:1:o;4792:510::-;5063:6;5052:9;5045:25;5106:3;5101:2;5090:9;5086:18;5079:31;5026:4;5127:57;5179:3;5168:9;5164:19;5156:6;5127:57;:::i;:::-;-1:-1:-1;;;;;5220:32:1;;;;5215:2;5200:18;;5193:60;-1:-1:-1;5284:2:1;5269:18;5262:34;5119:65;4792:510;-1:-1:-1;;4792:510:1:o;5307:597::-;5419:4;5448:2;5477;5466:9;5459:21;5509:6;5503:13;5552:6;5547:2;5536:9;5532:18;5525:34;5577:1;5587:140;5601:6;5598:1;5595:13;5587:140;;;5696:14;;;5692:23;;5686:30;5662:17;;;5681:2;5658:26;5651:66;5616:10;;5587:140;;;5745:6;5742:1;5739:13;5736:91;;;5815:1;5810:2;5801:6;5790:9;5786:22;5782:31;5775:42;5736:91;-1:-1:-1;5888:2:1;5867:15;-1:-1:-1;;5863:29:1;5848:45;;;;5895:2;5844:54;;5307:597;-1:-1:-1;;;5307:597:1:o;9688:401::-;9890:2;9872:21;;;9929:2;9909:18;;;9902:30;9968:34;9963:2;9948:18;;9941:62;-1:-1:-1;;;10034:2:1;10019:18;;10012:35;10079:3;10064:19;;9688:401::o;11545:582::-;11844:6;11833:9;11826:25;11887:6;11882:2;11871:9;11867:18;11860:34;11930:3;11925:2;11914:9;11910:18;11903:31;11807:4;11951:57;12003:3;11992:9;11988:19;11980:6;11951:57;:::i;:::-;-1:-1:-1;;;;;12044:32:1;;;;12039:2;12024:18;;12017:60;-1:-1:-1;12108:3:1;12093:19;12086:35;11943:65;11545:582;-1:-1:-1;;;11545:582:1:o;12645:128::-;12685:3;12716:1;12712:6;12709:1;12706:13;12703:39;;;12722:18;;:::i;:::-;-1:-1:-1;12758:9:1;;12645:128::o;12778:204::-;12816:3;12852:4;12849:1;12845:12;12884:4;12881:1;12877:12;12919:3;12913:4;12909:14;12904:3;12901:23;12898:49;;;12927:18;;:::i;:::-;12963:13;;12778:204;-1:-1:-1;;;12778:204:1:o;12987:217::-;13027:1;13053;13043:132;;13097:10;13092:3;13088:20;13085:1;13078:31;13132:4;13129:1;13122:15;13160:4;13157:1;13150:15;13043:132;-1:-1:-1;13189:9:1;;12987:217::o;13209:168::-;13249:7;13315:1;13311;13307:6;13303:14;13300:1;13297:21;13292:1;13285:9;13278:17;13274:45;13271:71;;;13322:18;;:::i;:::-;-1:-1:-1;13362:9:1;;13209:168::o;13382:238::-;13420:7;13460:4;13457:1;13453:12;13492:4;13489:1;13485:12;13552:3;13546:4;13542:14;13537:3;13534:23;13527:3;13520:11;13513:19;13509:49;13506:75;;;13561:18;;:::i;:::-;13601:13;;13382:238;-1:-1:-1;;;13382:238:1:o;13625:125::-;13665:4;13693:1;13690;13687:8;13684:34;;;13698:18;;:::i;:::-;-1:-1:-1;13735:9:1;;13625:125::o;13755:135::-;13794:3;-1:-1:-1;;13815:17:1;;13812:43;;;13835:18;;:::i;:::-;-1:-1:-1;13882:1:1;13871:13;;13755:135::o;13895:127::-;13956:10;13951:3;13947:20;13944:1;13937:31;13987:4;13984:1;13977:15;14011:4;14008:1;14001:15;14027:127;14088:10;14083:3;14079:20;14076:1;14069:31;14119:4;14116:1;14109:15;14143:4;14140:1;14133:15;14291:131;-1:-1:-1;;;;;14366:31:1;;14356:42;;14346:70;;14412:1;14409;14402:12;14346:70;14291:131;:::o

Swarm Source

ipfs://5dc35cc73c3873c5d3269afe42ddb4adb433f33e0721248801739fb74843dbe5

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.