ETH Price: $1,942.77 (-1.97%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer188476332023-12-23 9:30:59792 days ago1703323859IN
0xCFC19E20...76Cd29ECb
0 ETH0.0030231619.08239842
Approve183990172023-10-21 13:35:47855 days ago1697895347IN
0xCFC19E20...76Cd29ECb
0 ETH0.000220499.04136815
Remove Eth Stuck...183727522023-10-17 21:23:59858 days ago1697577839IN
0xCFC19E20...76Cd29ECb
0 ETH0.0002428910.22311094
Approve183727322023-10-17 21:19:47859 days ago1697577587IN
0xCFC19E20...76Cd29ECb
0 ETH0.0004684810.10292535
Approve177806092023-07-26 23:43:35941 days ago1690415015IN
0xCFC19E20...76Cd29ECb
0 ETH0.0008157917.50229796
Approve176383832023-07-07 0:31:59961 days ago1688689919IN
0xCFC19E20...76Cd29ECb
0 ETH0.0015269932.76050707
Set Lower Taxes175097292023-06-18 22:47:59979 days ago1687128479IN
0xCFC19E20...76Cd29ECb
0 ETH0.0010916813.13857334
Remove Eth Stuck...175097172023-06-18 22:45:35979 days ago1687128335IN
0xCFC19E20...76Cd29ECb
0 ETH0.0003289913.84706248
Set Tax Out175097092023-06-18 22:43:59979 days ago1687128239IN
0xCFC19E20...76Cd29ECb
0 ETH0.0005244114.94069956
Set Tax In175097052023-06-18 22:43:11979 days ago1687128191IN
0xCFC19E20...76Cd29ECb
0 ETH0.0005004214.23838232
Set Lower Taxes175096962023-06-18 22:41:23979 days ago1687128083IN
0xCFC19E20...76Cd29ECb
0 ETH0.0008710813.20026583
Set Tax Out175096862023-06-18 22:39:23979 days ago1687127963IN
0xCFC19E20...76Cd29ECb
0 ETH0.0005072814.45255104
Remove Eth Stuck...175096772023-06-18 22:37:35979 days ago1687127855IN
0xCFC19E20...76Cd29ECb
0 ETH0.0004072513.37058758
Approve175096352023-06-18 22:29:11979 days ago1687127351IN
0xCFC19E20...76Cd29ECb
0 ETH0.0008821819
Transfer175096052023-06-18 22:23:11979 days ago1687126991IN
0xCFC19E20...76Cd29ECb
0 ETH0.0010438114.27789593
Approve172007812023-05-06 9:52:231023 days ago1683366743IN
0xCFC19E20...76Cd29ECb
0 ETH0.00476614102.88938914
Approve171433642023-04-28 8:13:351031 days ago1682669615IN
0xCFC19E20...76Cd29ECb
0 ETH0.0015236232.68817426
Approve171361132023-04-27 7:43:351032 days ago1682581415IN
0xCFC19E20...76Cd29ECb
0 ETH0.0016148534.64538283
Approve170907952023-04-20 23:02:591038 days ago1682031779IN
0xCFC19E20...76Cd29ECb
0 ETH0.0026184256.5254217
Approve170844072023-04-20 1:13:111039 days ago1681953191IN
0xCFC19E20...76Cd29ECb
0 ETH0.0025318954.31965502
Approve170800512023-04-19 10:26:591040 days ago1681900019IN
0xCFC19E20...76Cd29ECb
0 ETH0.0028408860.94870331
Approve170796132023-04-19 8:57:351040 days ago1681894655IN
0xCFC19E20...76Cd29ECb
0 ETH0.003359471.98050407
Approve170212562023-04-11 0:15:111048 days ago1681172111IN
0xCFC19E20...76Cd29ECb
0 ETH0.0009431320.23416249
Approve168988442023-03-24 17:28:231066 days ago1679678903IN
0xCFC19E20...76Cd29ECb
0 ETH0.0016551635.51011309
Approve168723192023-03-21 0:01:231069 days ago1679356883IN
0xCFC19E20...76Cd29ECb
0 ETH0.0004861119.93323871
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer175096772023-06-18 22:37:35979 days ago1687127855
0xCFC19E20...76Cd29ECb
7 wei
Transfer168988652023-03-24 17:32:351066 days ago1679679155
0xCFC19E20...76Cd29ECb
0.00460934 ETH
Transfer168988652023-03-24 17:32:351066 days ago1679679155
0xCFC19E20...76Cd29ECb
0.00115233 ETH
Transfer168988652023-03-24 17:32:351066 days ago1679679155
0xCFC19E20...76Cd29ECb
0.00576167 ETH
Transfer166810952023-02-22 2:41:471096 days ago1677033707
0xCFC19E20...76Cd29ECb
0.00477658 ETH
Transfer166810952023-02-22 2:41:471096 days ago1677033707
0xCFC19E20...76Cd29ECb
0.00119414 ETH
Transfer166810952023-02-22 2:41:471096 days ago1677033707
0xCFC19E20...76Cd29ECb
0.00597073 ETH
Transfer164872852023-01-26 0:03:111123 days ago1674691391
0xCFC19E20...76Cd29ECb
0.0119368 ETH
Transfer164872852023-01-26 0:03:111123 days ago1674691391
0xCFC19E20...76Cd29ECb
0.0029842 ETH
Transfer164872852023-01-26 0:03:111123 days ago1674691391
0xCFC19E20...76Cd29ECb
0.014921 ETH
Transfer164815102023-01-25 4:40:231124 days ago1674621623
0xCFC19E20...76Cd29ECb
0.005924 ETH
Transfer164815102023-01-25 4:40:231124 days ago1674621623
0xCFC19E20...76Cd29ECb
0.001481 ETH
Transfer164815102023-01-25 4:40:231124 days ago1674621623
0xCFC19E20...76Cd29ECb
0.007405 ETH
Transfer164727202023-01-23 23:14:351125 days ago1674515675
0xCFC19E20...76Cd29ECb
0.00944038 ETH
Transfer164727202023-01-23 23:14:351125 days ago1674515675
0xCFC19E20...76Cd29ECb
0.00236009 ETH
Transfer164727202023-01-23 23:14:351125 days ago1674515675
0xCFC19E20...76Cd29ECb
0.01180047 ETH
Transfer164481922023-01-20 13:03:351129 days ago1674219815
0xCFC19E20...76Cd29ECb
0.00618815 ETH
Transfer164481922023-01-20 13:03:351129 days ago1674219815
0xCFC19E20...76Cd29ECb
0.00154703 ETH
Transfer164481922023-01-20 13:03:351129 days ago1674219815
0xCFC19E20...76Cd29ECb
0.00773519 ETH
Transfer164327572023-01-18 9:21:111131 days ago1674033671
0xCFC19E20...76Cd29ECb
0.00869814 ETH
Transfer164327572023-01-18 9:21:111131 days ago1674033671
0xCFC19E20...76Cd29ECb
0.00217453 ETH
Transfer164327572023-01-18 9:21:111131 days ago1674033671
0xCFC19E20...76Cd29ECb
0.01087268 ETH
Transfer164255212023-01-17 9:07:591132 days ago1673946479
0xCFC19E20...76Cd29ECb
0.00764677 ETH
Transfer164255212023-01-17 9:07:591132 days ago1673946479
0xCFC19E20...76Cd29ECb
0.00191169 ETH
Transfer164255212023-01-17 9:07:591132 days ago1673946479
0xCFC19E20...76Cd29ECb
0.00955846 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Muni

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-01-07
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.17 <0.9.0;
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }
    function _msgData() internal view returns (bytes memory) {
        this; 
        return msg.data; 
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
} 

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC20Upgradeable {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract Muni is Context, IERC20Upgradeable {
    address private _owner; // address of the contract owner.
    mapping (address => uint256) private _rOwned; 
    mapping (address => uint256) private _tOwned; 
    mapping (address => bool) lpPairs;
    uint256 private LiquidityPairCount = 0; 
    mapping (address => mapping (address => uint256)) private _allowed; 
    mapping (address => bool) private _ExcludedFromFee; 
    mapping (address => bool) private _iExcempt;
    mapping(address => bool) private InJail;
    address[] private _excluded;
    mapping (address => bool) private _liqProv;
    uint256 private startSupply; 
    string private _name; 
    string private _symbol; 
    uint256 public _redistro = 0; 
    uint256 public _liq = 0; 
    uint256 public _market = 1000; 
    uint256 public _buydistro = _redistro; 
    uint256 public _buyliq = _liq; 
    uint256 public _buyMarket = _market;
    uint256 public _sellLiq = 0; 
    uint256 public _selldistro = 0; 
    uint256 public _sellMarket = 1000; 
    uint256 public _transferRedistro = 0; 
    uint256 public _transferLiq = 0; 
    uint256 public _transferMarket = 0; 
    uint256 private maxRedistro = 1000; 
    uint256 private maxLiq = 1000; 
    uint256 private maxMarket = 4000; 
    uint256 public _liquidityRatio = 0;
    uint256 public _marketRatio = 1000;
    uint256 private masterTaxDivisor = 10000;
    uint256 private MarketStake = 40;
    uint256 private DevStake = 10;
    uint256 private ValueDivisor = 50;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
    uint256 private _decimalsMul;
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter; 
    address public lpPair; 
    address public _routerAddress; 
    address public DEAD = 0x000000000000000000000000000000000000dEaD; 
    address public ZERO = 0x0000000000000000000000000000000000000000; 
    address payable private _MuniDev; 
    address payable private _marketWallet; 
    bool inSwapAndLiquify; 
    bool public swapAndLiquifyEnabled = false; 
    uint256 private _maxTxn; 
    uint256 public maxTxnUI; 
    uint256 private _maxWallet;
    uint256 public maxWalletUI; 
    uint256 private swapThreshold;
    uint256 private swapAmount;
    bool KickedOff = false;
    bool public _LiqHasBeenAdded = false;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    bool readyLiq = false;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        _owner = msg.sender;

        if (block.chainid == 56) {
            _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert();
        }

        _ExcludedFromFee[owner()] = true;
        _ExcludedFromFee[address(this)] = true;
        _liqProv[owner()] = true;

        _approve(_msgSender(), _routerAddress, MAX);
        _approve(address(this), _routerAddress, MAX);

    }

    receive() external payable {}

    function _ReadyLiq(address payable setMarketWallet, address payable setDev, string memory _tokenname, string memory _tokensymbol) external onlyOwner {
        require(!readyLiq);

        _marketWallet = payable(setMarketWallet);
        _MuniDev = payable(setDev);

        _ExcludedFromFee[_marketWallet] = true;
        _ExcludedFromFee[_MuniDev] = true;

        _name = _tokenname;
        _symbol = _tokensymbol;
        startSupply = 1_000_000_000;
        if (startSupply < 100000000000) {
            _decimals = 18;
            _decimalsMul = _decimals;
        } else {
            _decimals = 9;
            _decimalsMul = _decimals;
        }
        _tTotal = startSupply * (10**_decimalsMul);
        _rTotal = (MAX - (MAX % _tTotal));

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowed[address(this)][address(dexRouter)] = type(uint256).max;
        
        _maxTxn = (_tTotal * 1000) / 100000;
        maxTxnUI = (startSupply * 500) / 100000;
        _maxWallet = (_tTotal * 10) / 1000;
        maxWalletUI = (startSupply * 10) / 1000;
        swapThreshold = (_tTotal * 5) / 10000;
        swapAmount = (_tTotal * 5) / 1000;

        approve(_routerAddress, type(uint256).max);

        readyLiq = true;
        _rOwned[owner()] = _rTotal;
        emit Transfer(ZERO, owner(), _tTotal);

        _approve(address(this), address(dexRouter), type(uint256).max);

    }

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

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromTax(_owner, false);
        setExcludedFromTax(newOwner, true);
        setExcludedFromRedistro(newOwner, true);
        
        if (_MuniDev == payable(_owner))
            _MuniDev = payable(newOwner);
        
        _allowed[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; } 
    function decimals() external view returns (uint8) { return _decimals; }
    function symbol() external view returns (string memory) { return _symbol; } 
    function name() external view returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowed[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        if (_iExcempt[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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowed[sender][_msgSender()] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowed[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNextRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address g_p = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (g_p == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = g_p;
        }
        dexRouter = _newRouter;
        _approve(address(this), newRouter, MAX);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (LiquidityPairCount != 0) {
                require(block.timestamp - LiquidityPairCount > 0, "Cannot set two pairs in one block!");
            }
            lpPairs[pair] = true;
            LiquidityPairCount = block.timestamp;
        }
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _iExcempt[account];
    }

    function ExcludedFromFee(address account) public view returns(bool) {
        return _ExcludedFromFee[account];
    }

    function setTaxIn(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner {
        require(reflect <= maxRedistro
                && liquidity <= maxLiq
                && marketing <= maxMarket
                );
        require(reflect + liquidity + marketing <= 4900);
        _buydistro = reflect;
        _buyliq = liquidity;
        _buyMarket = marketing;
    }

    function setTaxOut(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner {
        require(reflect <= maxRedistro
                && liquidity <= maxLiq
                && marketing <= maxMarket
                );
        require(reflect + liquidity + marketing <= 4900);
        _selldistro = reflect;
        _sellLiq = liquidity;
        _sellMarket = marketing;
    }

    function setTaxTransfer(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner {
        require(reflect <= maxRedistro
                && liquidity <= maxLiq
                && marketing <= maxMarket
                );
        require(reflect + liquidity + marketing <= 4900);
        _transferRedistro = reflect;
        _transferLiq = liquidity;
        _transferMarket = marketing;
    }

    function setStakeValues(uint256 ms, uint256 ds, uint256 vd) external onlyOwner {
        MarketStake = ms;
        DevStake = ds;
        ValueDivisor = vd;
    }

    function setTaxDivisionRatio(uint256 liquidity, uint256 marketing) external onlyOwner {
        _liquidityRatio = liquidity;
        _marketRatio = marketing;
    }

    function setMaximumTransaction(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxTxn = check;
        maxTxnUI = (startSupply * percent) / divisor;
    }

    function setMaximumWallet(uint256 percentage, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percentage) / divisor; 
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxWallet = check;
        maxWalletUI = (startSupply * percentage) / divisor;
    }

    function setRouterSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setNextMarketing(address payable newWallet) external onlyOwner {
        require(_marketWallet != newWallet, "Wallet already set!");
        _marketWallet = payable(newWallet);
    }

    function setNextDeveloper(address payable newWallet) external onlyOwner {
        require(_MuniDev != newWallet, "Wallet already set!");
        _MuniDev = payable(newWallet);
    }
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setExcludedFromTax(address account, bool enabled) public onlyOwner {
        _ExcludedFromFee[account] = enabled;
    }

    function setExcludedFromRedistro(address account, bool enabled) public onlyOwner {
        if (enabled == true) {
            require(!_iExcempt[account], "Account is already excluded.");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _iExcempt[account] = true;
            _excluded.push(account);
        } else if (enabled == false) {
            require(_iExcempt[account], "Account is already included.");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOwned[account] = 0;
                    _iExcempt[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != owner()  && to != owner() && !_liqProv[to] && !_liqProv[from] && to != DEAD && to != address(0) && from != address(this) && !_ExcludedFromFee[to] && !_ExcludedFromFee[from];
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections - MUNI");
        uint256 currentRate =  _getRate();
        return rAmount / currentRate;
    }
    
    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "Cannot approve from the zero address - MUNI");
        require(spender != address(0), "Cannot approve to the zero address - MUNI");

        _allowed[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "Cannot transfer from the zero address - MUNI");
        require(to != address(0), "Cannot transfer to the zero address - MUNI");
        require(amount > 0, "Transfer amount must be greater than zero - MUNI");
        require(!InJail[from] && !InJail[to] && !InJail[msg.sender]);
        if(_hasLimits(from, to)) {
            if(!KickedOff) {
                revert("Trading not yet enabled! - MUNI");
            }
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number + 1);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number + 1);
                    lastTrade[from] = block.number;
                }
            }
            require(amount <= _maxTxn, "Transfer exceeds the maxTxAmount.- MUNI");
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWallet, "Transfer exceeds the maxWalletSize.- MUNI");
            }
        }
        bool takeFee = true;
        if(_ExcludedFromFee[from] || _ExcludedFromFee[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalize(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap {
        if (_liquidityRatio + _marketRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketRatio)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            toSwapForEth,
            0,
            path,
            address(this),
            block.timestamp
        );


        uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _marketRatio)) / 2;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0, 
                0, 
                _MuniDev,
                block.timestamp
            );
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {

            uint256 OperationsFee = (address(this).balance);
            uint256 marketFund = OperationsFee/(ValueDivisor)*(MarketStake);
            uint256 devFund = OperationsFee/(ValueDivisor)*(DevStake); _MuniDev.transfer(devFund); 
            _marketWallet.transfer(marketFund);           

        }
    }

    

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_LiqHasBeenAdded, "Liquidity is already added.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liqProv[from] = true;
            _LiqHasBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function MuniStart() public onlyOwner {
        require(!KickedOff, "Trading is already enabled!");
        setExcludedFromRedistro(address(this), true);
        setExcludedFromRedistro(lpPair, true);

        KickedOff = true;
        swapAndLiquifyEnabled = true;
    }

    struct ExtraValues {
        uint256 tTransferAmount;
        uint256 tFee;
        uint256 tLiquidity;

        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 rFee;
    }

    function _finalize(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) {


        if (!_LiqHasBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_LiqHasBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
        }
        
        ExtraValues memory values = _getValues(from, to, tAmount, takeFee);

        _rOwned[from] = _rOwned[from] - values.rAmount;
        _rOwned[to] = _rOwned[to] + values.rTransferAmount;

        if (_iExcempt[from] && !_iExcempt[to]) {
            _tOwned[from] = _tOwned[from] - tAmount;
        } else if (!_iExcempt[from] && _iExcempt[to]) {
            _tOwned[to] = _tOwned[to] + values.tTransferAmount;  
        } else if (_iExcempt[from] && _iExcempt[to]) {
            _tOwned[from] = _tOwned[from] - tAmount;
            _tOwned[to] = _tOwned[to] + values.tTransferAmount;
        }

        if (values.tLiquidity > 0)
            _takeLiquidity(from, values.tLiquidity);
        if (values.rFee > 0 || values.tFee > 0)
            _takeReflect(values.rFee, values.tFee);

        emit Transfer(from, to, values.tTransferAmount);
        return true;
    }

    function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) {
        ExtraValues memory values;
        uint256 currentRate = _getRate();

        values.rAmount = tAmount * currentRate;

        if(takeFee) {
            if (lpPairs[to]) {
                _redistro = _selldistro;
                _liq = _sellLiq;
                _market = _sellMarket;
            } else if (lpPairs[from]) {
                _redistro = _buydistro;
                _liq = _buyliq;
                _market = _buyMarket;
            } else {
                _redistro = _transferRedistro;
                _liq = _transferLiq;
                _market = _transferMarket;
            }

            values.tFee = (tAmount * _redistro) / masterTaxDivisor;
            values.tLiquidity = (tAmount * (_liq + _market)) / masterTaxDivisor;
            values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity);

            values.rFee = values.tFee * currentRate;
        } else {
            values.tFee = 0;
            values.tLiquidity = 0;
            values.tTransferAmount = tAmount;

            values.rFee = 0;
        }

        values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate));
        return values;
    }

    function _getRate() internal view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() internal 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 - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeReflect(uint256 rFee, uint256 tFee) internal {
        _rTotal = _rTotal - rFee;
        _tFeeTotal = _tFeeTotal + tFee;
    }

    function RemoveEthStuckInMuniContract() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }
    
    function _takeLiquidity(address sender, uint256 tLiquidity) internal {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity * currentRate;
        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if(_iExcempt[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
        emit Transfer(sender, address(this), tLiquidity); 
    }

    function UnderInvestigation(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            InJail[accounts[i]] = state;
        }
    }
 
    function Caught(address account, bool state) external onlyOwner{
        InJail[account] = state;
    }

    function SetLowerTaxes() external onlyOwner() {
        _buydistro = 0;
        _buyliq = 0;
        _buyMarket = 1000;
        _selldistro = 0;
        _sellLiq = 0;
        _sellMarket = 1000;
        _transferRedistro = 0;
        _transferLiq = 0;
        _transferMarket = 0;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":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"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"Caught","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MuniStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RemoveEthStuckInMuniContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetLowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"UnderInvestigation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LiqHasBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"setMarketWallet","type":"address"},{"internalType":"address payable","name":"setDev","type":"address"},{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"}],"name":"_ReadyLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buydistro","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyliq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_market","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redistro","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_selldistro","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferRedistro","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromRedistro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaximumTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaximumWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNextDeveloper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNextMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNextRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setRouterSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ms","type":"uint256"},{"internalType":"uint256","name":"ds","type":"uint256"},{"internalType":"uint256","name":"vd","type":"uint256"}],"name":"setStakeValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxDivisionRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTaxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006004819055600e819055600f8190556103e86010819055601182905560128290556013819055601482905560158290556016819055601782905560188290556019829055601a819055601b819055610fa0601c55601d829055601e55612710601f556028602055600a6021556032602255602b80546001600160a01b031990811661dead17909155602c805482169055602e805460ff60a81b191690556035805461ffff19169055603682905560378290556038805460ff199081166001178255603a80549091169055825490911633179091554614156200010e57602a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620001a3565b46606114156200014457602a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620001a3565b4660011480620001545750466004145b80620001605750466003145b806200016c5750466005145b156200019e57602a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620001a3565b600080fd5b600160066000620001bc6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080549092166001908117909255600a90620002156000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200025e620002493390565b602a546001600160a01b031660001962000280565b602a546200027a9030906001600160a01b031660001962000280565b620003bb565b6001600160a01b038316620002f05760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f2061646460448201526a72657373202d204d554e4960a81b60648201526084015b60405180910390fd5b6001600160a01b0382166200035a5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420617070726f766520746f20746865207a65726f2061646472656044820152687373202d204d554e4960b81b6064820152608401620002e7565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b613ffa80620003cb6000396000f3fe6080604052600436106103c75760003560e01c8063798d4016116101f2578063c2ed286b1161010d578063e5cc218e116100a0578063efebfe8f1161006f578063efebfe8f14610ac0578063f048209f14610ae0578063f1d6512e14610b00578063f7b8cba114610b3957600080fd5b8063e5cc218e14610a54578063e7f4527b14610a74578063ebf600a314610a94578063ef6e661c14610aaa57600080fd5b8063d3456ca3116100dc578063d3456ca3146109ae578063d9e66460146109ce578063dd62ed3e146109ee578063e5adc7f814610a3457600080fd5b8063c2ed286b14610939578063c49b9a8014610959578063c95bab6914610979578063cf9eaf4d1461099957600080fd5b8063958dd46311610185578063a457c2d711610154578063a457c2d7146108cd578063a8b6c258146108ed578063a9059cbb14610903578063afe4260e1461092357600080fd5b8063958dd4631461086357806395d89b4114610883578063988cf801146108985780639a09a61b146108ae57600080fd5b8063893d20e8116101c1578063893d20e81461080f5780638a31167f1461082d5780638da5cb5b1461080f57806394e4443e1461084357600080fd5b8063798d40161461077657806380c581d114610796578063845bddd4146107b657806388f82020146107d657600080fd5b8063496e7e9e116102e257806358fa63ca116102755780636cefc2a7116102445780636cefc2a71461071657806370a082311461072b578063715018a61461074b57806371a74e0d1461076057600080fd5b806358fa63ca146106aa5780635beacb46146106ca5780635e395036146106ea5780636a74f2ea1461070057600080fd5b80634fb2e45d116102b15780634fb2e45d146106355780634fe6bc7f1461065557806352a605041461066a578063571ac8b01461068a57600080fd5b8063496e7e9e146105c65780634a74bb02146105e85780634b338efd146106095780634bbe49ba1461061f57600080fd5b8063270bcdfb1161035a5780633950935111610329578063395093511461055a5780633d0fe69c1461057a578063452ed4f11461059057806345494eab146105b057600080fd5b8063270bcdfb146104ec5780632d83811914610502578063313ce56714610522578063384f6b511461054457600080fd5b806313114a9d1161039657806313114a9d1461048257806314f0fc39146104a157806318160ddd146104b757806323b872dd146104cc57600080fd5b806303fd2a45146103d357806306fdde03146104105780630758d92414610432578063095ea7b31461045257600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b50602b546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b50610425610b59565b60405161040791906137f0565b34801561043e57600080fd5b506028546103f3906001600160a01b031681565b34801561045e57600080fd5b5061047261046d36600461385a565b610beb565b6040519015158152602001610407565b34801561048e57600080fd5b506027545b604051908152602001610407565b3480156104ad57600080fd5b50610493600e5481565b3480156104c357600080fd5b50602554610493565b3480156104d857600080fd5b506104726104e7366004613886565b610c02565b3480156104f857600080fd5b50610493601e5481565b34801561050e57600080fd5b5061049361051d3660046138c7565b610c55565b34801561052e57600080fd5b5060235460405160ff9091168152602001610407565b34801561055057600080fd5b50610493601d5481565b34801561056657600080fd5b5061047261057536600461385a565b610ce5565b34801561058657600080fd5b5061049360165481565b34801561059c57600080fd5b506029546103f3906001600160a01b031681565b3480156105bc57600080fd5b5061049360175481565b3480156105d257600080fd5b506105e66105e13660046138e0565b610d1c565b005b3480156105f457600080fd5b50602e5461047290600160a81b900460ff1681565b34801561061557600080fd5b5061049360185481565b34801561062b57600080fd5b5061049360305481565b34801561064157600080fd5b506105e6610650366004613902565b610db9565b34801561066157600080fd5b506105e6610f5b565b34801561067657600080fd5b506105e66106853660046138e0565b610fc2565b34801561069657600080fd5b506104726106a5366004613902565b610ff7565b3480156106b657600080fd5b50602c546103f3906001600160a01b031681565b3480156106d657600080fd5b506105e66106e5366004613934565b611005565b3480156106f657600080fd5b5061049360115481565b34801561070c57600080fd5b5061049360155481565b34801561072257600080fd5b506105e66112f9565b34801561073757600080fd5b50610493610746366004613902565b611353565b34801561075757600080fd5b506105e66113b2565b34801561076c57600080fd5b5061049360135481565b34801561078257600080fd5b506105e6610791366004613969565b611431565b3480156107a257600080fd5b506105e66107b1366004613934565b6114b7565b3480156107c257600080fd5b506105e66107d1366004613969565b6115a3565b3480156107e257600080fd5b506104726107f1366004613902565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561081b57600080fd5b506000546001600160a01b03166103f3565b34801561083957600080fd5b50610493600f5481565b34801561084f57600080fd5b506105e661085e366004613a4c565b611629565b34801561086f57600080fd5b506105e661087e366004613902565b611aa1565b34801561088f57600080fd5b50610425611dd1565b3480156108a457600080fd5b5061049360105481565b3480156108ba57600080fd5b5060355461047290610100900460ff1681565b3480156108d957600080fd5b506104726108e836600461385a565b611de0565b3480156108f957600080fd5b5061049360145481565b34801561090f57600080fd5b5061047261091e36600461385a565b611e17565b34801561092f57600080fd5b5061049360325481565b34801561094557600080fd5b506105e6610954366004613934565b611e24565b34801561096557600080fd5b506105e6610974366004613ad5565b611e79565b34801561098557600080fd5b506105e66109943660046138e0565b611efb565b3480156109a557600080fd5b506105e6611f98565b3480156109ba57600080fd5b506105e66109c9366004613902565b612059565b3480156109da57600080fd5b50602a546103f3906001600160a01b031681565b3480156109fa57600080fd5b50610493610a09366004613af0565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a4057600080fd5b506105e6610a4f366004613b29565b6120f9565b348015610a6057600080fd5b506105e6610a6f366004613969565b612162565b348015610a8057600080fd5b506105e6610a8f366004613b5b565b6121e8565b348015610aa057600080fd5b5061049360125481565b348015610ab657600080fd5b5061049360195481565b348015610acc57600080fd5b506105e6610adb366004613969565b612279565b348015610aec57600080fd5b506105e6610afb366004613902565b6122b1565b348015610b0c57600080fd5b50610472610b1b366004613902565b6001600160a01b031660009081526006602052604090205460ff1690565b348015610b4557600080fd5b506105e6610b54366004613934565b612351565b6060600c8054610b6890613c1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9490613c1f565b8015610be15780601f10610bb657610100808354040283529160200191610be1565b820191906000526020600020905b815481529060010190602001808311610bc457829003601f168201915b5050505050905090565b6000610bf83384846123a6565b5060015b92915050565b6000610c0f8484846124d9565b506001600160a01b038416600090815260056020908152604080832033808552925290912054610c4b918691610c46908690613c70565b6123a6565b5060019392505050565b6000602654821115610cc85760405162461bcd60e51b815260206004820152603160248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527065666c656374696f6e73202d204d554e4960781b60648201526084015b60405180910390fd5b6000610cd2612993565b9050610cde8184613c9d565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bf8918590610c46908690613cb1565b6000546001600160a01b03163314610d465760405162461bcd60e51b8152600401610cbf90613cc9565b60008183602554610d579190613cfe565b610d619190613c9d565b90506103e8602554610d739190613c9d565b811015610d925760405162461bcd60e51b8152600401610cbf90613d1d565b602f819055600b548290610da7908590613cfe565b610db19190613c9d565b603055505050565b6000546001600160a01b03163314610de35760405162461bcd60e51b8152600401610cbf90613cc9565b6001600160a01b038116610e095760405162461bcd60e51b8152600401610cbf90613d60565b602b546001600160a01b0382811691161415610e375760405162461bcd60e51b8152600401610cbf90613d60565b60008054610e50916001600160a01b0390911690611e24565b610e5b816001611e24565b610e66816001611005565b600054602d546001600160a01b0390811691161415610e9b57602d80546001600160a01b0319166001600160a01b0383161790555b600054610eb0906001600160a01b0316611353565b600080546001600160a01b039081168252600560209081526040808420868416855290915282209290925580549091610ee99116611353565b1115610f1057600054610f0e906001600160a01b031682610f0982611353565b6124d9565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610f855760405162461bcd60e51b8152600401610cbf90613cc9565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610fbf573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610fec5760405162461bcd60e51b8152600401610cbf90613cc9565b601d91909155601e55565b6000610bfc82600019610beb565b6000546001600160a01b0316331461102f5760405162461bcd60e51b8152600401610cbf90613cc9565b60018115151415611164576001600160a01b03821660009081526007602052604090205460ff16156110a35760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610cbf565b6001600160a01b038216600090815260016020526040902054156110fd576001600160a01b0382166000908152600160205260409020546110e390610c55565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b806112f5576001600160a01b03821660009081526007602052604090205460ff166111d15760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610cbf565b60005b6009548110156112f357826001600160a01b0316600982815481106111fb576111fb613dbd565b6000918252602090912001546001600160a01b031614156112e1576009805461122690600190613c70565b8154811061123657611236613dbd565b600091825260209091200154600980546001600160a01b03909216918390811061126257611262613dbd565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff1916905560098054806112ba576112ba613dd3565b600082815260209020810160001990810180546001600160a01b03191690550190556112f3565b806112eb81613de9565b9150506111d4565b505b5050565b6000546001600160a01b031633146113235760405162461bcd60e51b8152600401610cbf90613cc9565b6000601181905560128190556103e860138190556015829055601482905560165560178190556018819055601955565b6001600160a01b03811660009081526007602052604081205460ff161561139057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bfc90610c55565b6000546001600160a01b031633146113dc5760405162461bcd60e51b8152600401610cbf90613cc9565b600080546113f5916001600160a01b0390911690611e24565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461145b5760405162461bcd60e51b8152600401610cbf90613cc9565b601a54831115801561146f5750601b548211155b801561147d5750601c548111155b61148657600080fd5b611324816114948486613cb1565b61149e9190613cb1565b11156114a957600080fd5b601792909255601855601955565b6000546001600160a01b031633146114e15760405162461bcd60e51b8152600401610cbf90613cc9565b8061150857506001600160a01b03166000908152600360205260409020805460ff19169055565b60045415611578576000600454426115209190613c70565b116115785760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f74207365742074776f20706169727320696e206f6e6520626c6f636044820152616b2160f01b6064820152608401610cbf565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146115cd5760405162461bcd60e51b8152600401610cbf90613cc9565b601a5483111580156115e15750601b548211155b80156115ef5750601c548111155b6115f857600080fd5b611324816116068486613cb1565b6116109190613cb1565b111561161b57600080fd5b601192909255601255601355565b6000546001600160a01b031633146116535760405162461bcd60e51b8152600401610cbf90613cc9565b603a5460ff161561166357600080fd5b602e80546001600160a01b038087166001600160a01b03199283168117909355602d805487831693169290921782556000928352600660209081526040808520805460ff19908116600190811790925594549093168552909320805490921617905582516116d791600c9190850190613757565b5080516116eb90600d906020840190613757565b50633b9aca00600b556023805460ff1916601290811790915560245560245461171590600a613ee8565b600b546117229190613cfe565b602581905561173390600019613ef4565b61173f90600019613c70565b602655602a54602880546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561179e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c29190613f08565b6001600160a01b031663c9c65396602860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118479190613f08565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b79190613f08565b602980546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206028549094168352929052206000199055602554620186a090611921906103e8613cfe565b61192b9190613c9d565b602f55600b54620186a090611942906101f4613cfe565b61194c9190613c9d565b6030556025546103e89061196190600a613cfe565b61196b9190613c9d565b603155600b546103e89061198090600a613cfe565b61198a9190613c9d565b6032556025546127109061199f906005613cfe565b6119a99190613c9d565b6033556025546103e8906119be906005613cfe565b6119c89190613c9d565b603455602a546119e3906001600160a01b0316600019610beb565b50603a805460ff19166001908117909155602654906000611a0c6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611a386000546001600160a01b031690565b602c546025546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602854611a9b9030906001600160a01b03166000196123a6565b50505050565b6000546001600160a01b03163314611acb5760405162461bcd60e51b8152600401610cbf90613cc9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b349190613f08565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba59190613f08565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c149190613f08565b90506001600160a01b038116611d8d57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c869190613f08565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf79190613f08565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d689190613f08565b602980546001600160a01b0319166001600160a01b0392909216919091179055611da9565b602980546001600160a01b0319166001600160a01b0383161790555b602880546001600160a01b0319166001600160a01b0384161790556112f330846000196123a6565b6060600d8054610b6890613c1f565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bf8918590610c46908690613c70565b6000610c4b3384846124d9565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b8152600401610cbf90613cc9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ea35760405162461bcd60e51b8152600401610cbf90613cc9565b602e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611ef090831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f255760405162461bcd60e51b8152600401610cbf90613cc9565b60008183602554611f369190613cfe565b611f409190613c9d565b90506103e8602554611f529190613c9d565b811015611f715760405162461bcd60e51b8152600401610cbf90613d1d565b6031819055600b548290611f86908590613cfe565b611f909190613c9d565b603255505050565b6000546001600160a01b03163314611fc25760405162461bcd60e51b8152600401610cbf90613cc9565b60355460ff16156120155760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610cbf565b612020306001611005565b602954612037906001600160a01b03166001611005565b6035805460ff19166001179055602e805460ff60a81b1916600160a81b179055565b6000546001600160a01b031633146120835760405162461bcd60e51b8152600401610cbf90613cc9565b602e546001600160a01b03828116911614156120d75760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610cbf565b602e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146121235760405162461bcd60e51b8152600401610cbf90613cc9565b82846025546121329190613cfe565b61213c9190613c9d565b603355602554819061214f908490613cfe565b6121599190613c9d565b60345550505050565b6000546001600160a01b0316331461218c5760405162461bcd60e51b8152600401610cbf90613cc9565b601a5483111580156121a05750601b548211155b80156121ae5750601c548111155b6121b757600080fd5b611324816121c58486613cb1565b6121cf9190613cb1565b11156121da57600080fd5b601592909255601455601655565b6000546001600160a01b031633146122125760405162461bcd60e51b8152600401610cbf90613cc9565b60005b82518110156112f357816008600085848151811061223557612235613dbd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061227181613de9565b915050612215565b6000546001600160a01b031633146122a35760405162461bcd60e51b8152600401610cbf90613cc9565b602092909255602155602255565b6000546001600160a01b031633146122db5760405162461bcd60e51b8152600401610cbf90613cc9565b602d546001600160a01b038281169116141561232f5760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610cbf565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461237b5760405162461bcd60e51b8152600401610cbf90613cc9565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b0383166124105760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f2061646460448201526a72657373202d204d554e4960a81b6064820152608401610cbf565b6001600160a01b0382166124785760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420617070726f766520746f20746865207a65726f2061646472656044820152687373202d204d554e4960b81b6064820152608401610cbf565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125465760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f20616460448201526b6472657373202d204d554e4960a01b6064820152608401610cbf565b6001600160a01b0383166125af5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f2061646472604482015269657373202d204d554e4960b01b6064820152608401610cbf565b600082116126185760405162461bcd60e51b815260206004820152603060248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201526f7468616e207a65726f202d204d554e4960801b6064820152608401610cbf565b6001600160a01b03841660009081526008602052604090205460ff1615801561265a57506001600160a01b03831660009081526008602052604090205460ff16155b801561267657503360009081526008602052604090205460ff16155b61267f57600080fd5b61268984846129b6565b156128bb5760355460ff166126e05760405162461bcd60e51b815260206004820152601f60248201527f54726164696e67206e6f742079657420656e61626c656421202d204d554e49006044820152606401610cbf565b60385460ff16156127a6576001600160a01b03841660009081526003602052604090205460ff161561275b57612717436001613cb1565b6001600160a01b038416600090815260396020526040902054141561273b57600080fd5b6001600160a01b03831660009081526039602052604090204390556127a6565b612766436001613cb1565b6001600160a01b038516600090815260396020526040902054141561278a57600080fd5b6001600160a01b03841660009081526039602052604090204390555b602f548211156128085760405162461bcd60e51b815260206004820152602760248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152662e2d204d554e4960c81b6064820152608401610cbf565b602a546001600160a01b0384811691161480159061283f57506001600160a01b03831660009081526003602052604090205460ff16155b156128bb576031548261285185611353565b61285b9190613cb1565b11156128bb5760405162461bcd60e51b815260206004820152602960248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152687a652e2d204d554e4960b81b6064820152608401610cbf565b6001600160a01b03841660009081526006602052604090205460019060ff16806128fd57506001600160a01b03841660009081526006602052604090205460ff165b15612906575060005b6001600160a01b03841660009081526003602052604090205460ff161561297e57602e54600160a01b900460ff1615801561294a5750602e54600160a81b900460ff165b1561297e57600061295a30611353565b9050603354811061297c57603454811061297357506034545b61297c81612abd565b505b61298a85858584612e65565b95945050505050565b60008060006129a06131e6565b90925090506129af8183613c9d565b9250505090565b600080546001600160a01b038481169116148015906129e357506000546001600160a01b03838116911614155b8015612a0857506001600160a01b0382166000908152600a602052604090205460ff16155b8015612a2d57506001600160a01b0383166000908152600a602052604090205460ff16155b8015612a475750602b546001600160a01b03838116911614155b8015612a5b57506001600160a01b03821615155b8015612a7057506001600160a01b0383163014155b8015612a9557506001600160a01b03821660009081526006602052604090205460ff16155b8015610cde575050506001600160a01b031660009081526006602052604090205460ff161590565b602e805460ff60a01b1916600160a01b179055601e54601d54612ae09190613cb1565b612ae957612e55565b60006002601e54601d54612afd9190613cb1565b601d54612b0a9085613cfe565b612b149190613c9d565b612b1e9190613c9d565b90506000612b2c8284613c70565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b6657612b66613dbd565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be39190613f08565b81600181518110612bf657612bf6613dbd565b6001600160a01b03928316602091820292909201015260285460405163791ac94760e01b815291169063791ac94790612c3c908590600090869030904290600401613f25565b600060405180830381600087803b158015612c5657600080fd5b505af1158015612c6a573d6000803e3d6000fd5b5050505060006002601e54601d54612c829190613cb1565b601d54612c8f9047613cfe565b612c999190613c9d565b612ca39190613c9d565b90508315612d8557602854602d5460405163f305d71960e01b81523060048201526024810187905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d1b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d409190613f96565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612d918587613c70565b1115612e50576020546022544791600091612dac9084613c9d565b612db69190613cfe565b9050600060215460225484612dcb9190613c9d565b612dd59190613cfe565b602d546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612e10573d6000803e3d6000fd5b50602e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612e4b573d6000803e3d6000fd5b505050505b505050505b50602e805460ff60a01b19169055565b603554600090610100900460ff16612ef957612e818585613369565b603554610100900460ff16158015612e9e5750612e9e85856129b6565b15612ef95760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610cbf565b6000612f0786868686613477565b60808101516001600160a01b038816600090815260016020526040902054919250612f3191613c70565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612f689190613cb1565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff168015612fbc57506001600160a01b03851660009081526007602052604090205460ff16155b15613003576001600160a01b038616600090815260026020526040902054612fe5908590613c70565b6001600160a01b038716600090815260026020526040902055613143565b6001600160a01b03861660009081526007602052604090205460ff1615801561304457506001600160a01b03851660009081526007602052604090205460ff165b1561308c5780516001600160a01b03861660009081526002602052604090205461306e9190613cb1565b6001600160a01b038616600090815260026020526040902055613143565b6001600160a01b03861660009081526007602052604090205460ff1680156130cc57506001600160a01b03851660009081526007602052604090205460ff165b15613143576001600160a01b0386166000908152600260205260409020546130f5908590613c70565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546131299190613cb1565b6001600160a01b0386166000908152600260205260409020555b60408101511561315b5761315b868260400151613665565b60008160a001511180613172575060008160200151115b15613189576131898160a001518260200151613731565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516131d291815260200190565b60405180910390a350600195945050505050565b6026546025546000918291825b6009548110156133385782600160006009848154811061321557613215613dbd565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613280575081600260006009848154811061325957613259613dbd565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561329657602654602554945094505050509091565b60016000600983815481106132ad576132ad613dbd565b60009182526020808320909101546001600160a01b031683528201929092526040019020546132dc9084613c70565b925060026000600983815481106132f5576132f5613dbd565b60009182526020808320909101546001600160a01b031683528201929092526040019020546133249083613c70565b91508061333081613de9565b9150506131f3565b506025546026546133499190613c9d565b821015613360576026546025549350935050509091565b90939092509050565b603554610100900460ff16156133c15760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610cbf565b6133cb82826129b6565b1580156133e557506029546001600160a01b038281169116145b156112f5576001600160a01b0382166000908152600a602052604090819020805460ff191660019081179091556035805461ff00191661010017905542603755602e805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161346b91901515815260200190565b60405180910390a15050565b6134b06040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6134e96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006134f3612993565b90506134ff8186613cfe565b6080830152831561360f576001600160a01b03861660009081526003602052604090205460ff161561354257601554600e55601454600f5560165460105561358d565b6001600160a01b03871660009081526003602052604090205460ff161561357a57601154600e55601254600f5560135460105561358d565b601754600e55601854600f556019546010555b601f54600e5461359d9087613cfe565b6135a79190613c9d565b6020830152601f54601054600f546135bf9190613cb1565b6135c99087613cfe565b6135d39190613c9d565b6040830181905260208301516135e99190613cb1565b6135f39086613c70565b82526020820151613605908290613cfe565b60a0830152613628565b6000602083018190526040830181905285835260a08301525b8082604001516136389190613cfe565b8260a001516136479190613cb1565b82608001516136569190613c70565b60608301525095945050505050565b600061366f612993565b9050600061367d8284613cfe565b3060009081526001602052604090205490915061369b908290613cb1565b3060009081526001602090815260408083209390935560079052205460ff16156136eb57306000908152600260205260409020546136da908490613cb1565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160265461373f9190613c70565b602655602754613750908290613cb1565b6027555050565b82805461376390613c1f565b90600052602060002090601f01602090048101928261378557600085556137cb565b82601f1061379e57805160ff19168380011785556137cb565b828001600101855582156137cb579182015b828111156137cb5782518255916020019190600101906137b0565b506137d79291506137db565b5090565b5b808211156137d757600081556001016137dc565b600060208083528351808285015260005b8181101561381d57858101830151858201604001528201613801565b8181111561382f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610fbf57600080fd5b6000806040838503121561386d57600080fd5b823561387881613845565b946020939093013593505050565b60008060006060848603121561389b57600080fd5b83356138a681613845565b925060208401356138b681613845565b929592945050506040919091013590565b6000602082840312156138d957600080fd5b5035919050565b600080604083850312156138f357600080fd5b50508035926020909101359150565b60006020828403121561391457600080fd5b8135610cde81613845565b8035801515811461392f57600080fd5b919050565b6000806040838503121561394757600080fd5b823561395281613845565b91506139606020840161391f565b90509250929050565b60008060006060848603121561397e57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139d4576139d4613995565b604052919050565b600082601f8301126139ed57600080fd5b813567ffffffffffffffff811115613a0757613a07613995565b613a1a601f8201601f19166020016139ab565b818152846020838601011115613a2f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215613a6257600080fd5b8435613a6d81613845565b93506020850135613a7d81613845565b9250604085013567ffffffffffffffff80821115613a9a57600080fd5b613aa6888389016139dc565b93506060870135915080821115613abc57600080fd5b50613ac9878288016139dc565b91505092959194509250565b600060208284031215613ae757600080fd5b610cde8261391f565b60008060408385031215613b0357600080fd5b8235613b0e81613845565b91506020830135613b1e81613845565b809150509250929050565b60008060008060808587031215613b3f57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215613b6e57600080fd5b823567ffffffffffffffff80821115613b8657600080fd5b818501915085601f830112613b9a57600080fd5b8135602082821115613bae57613bae613995565b8160051b9250613bbf8184016139ab565b8281529284018101928181019089851115613bd957600080fd5b948201945b84861015613c035785359350613bf384613845565b8382529482019490820190613bde565b9650613c12905087820161391f565b9450505050509250929050565b600181811c90821680613c3357607f821691505b60208210811415613c5457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613c8257613c82613c5a565b500390565b634e487b7160e01b600052601260045260246000fd5b600082613cac57613cac613c87565b500490565b60008219821115613cc457613cc4613c5a565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615613d1857613d18613c5a565b500290565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415613dfd57613dfd613c5a565b5060010190565b600181815b80851115613e3f578160001904821115613e2557613e25613c5a565b80851615613e3257918102915b93841c9390800290613e09565b509250929050565b600082613e5657506001610bfc565b81613e6357506000610bfc565b8160018114613e795760028114613e8357613e9f565b6001915050610bfc565b60ff841115613e9457613e94613c5a565b50506001821b610bfc565b5060208310610133831016604e8410600b8410161715613ec2575081810a610bfc565b613ecc8383613e04565b8060001904821115613ee057613ee0613c5a565b029392505050565b6000610cde8383613e47565b600082613f0357613f03613c87565b500690565b600060208284031215613f1a57600080fd5b8151610cde81613845565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613f755784516001600160a01b031683529383019391830191600101613f50565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613fab57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220bf4c6e8e6b1d9b67c01ee6ce4ac9265eb262758bd7878e6be1b57a2ed3d7e3d164736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c8063798d4016116101f2578063c2ed286b1161010d578063e5cc218e116100a0578063efebfe8f1161006f578063efebfe8f14610ac0578063f048209f14610ae0578063f1d6512e14610b00578063f7b8cba114610b3957600080fd5b8063e5cc218e14610a54578063e7f4527b14610a74578063ebf600a314610a94578063ef6e661c14610aaa57600080fd5b8063d3456ca3116100dc578063d3456ca3146109ae578063d9e66460146109ce578063dd62ed3e146109ee578063e5adc7f814610a3457600080fd5b8063c2ed286b14610939578063c49b9a8014610959578063c95bab6914610979578063cf9eaf4d1461099957600080fd5b8063958dd46311610185578063a457c2d711610154578063a457c2d7146108cd578063a8b6c258146108ed578063a9059cbb14610903578063afe4260e1461092357600080fd5b8063958dd4631461086357806395d89b4114610883578063988cf801146108985780639a09a61b146108ae57600080fd5b8063893d20e8116101c1578063893d20e81461080f5780638a31167f1461082d5780638da5cb5b1461080f57806394e4443e1461084357600080fd5b8063798d40161461077657806380c581d114610796578063845bddd4146107b657806388f82020146107d657600080fd5b8063496e7e9e116102e257806358fa63ca116102755780636cefc2a7116102445780636cefc2a71461071657806370a082311461072b578063715018a61461074b57806371a74e0d1461076057600080fd5b806358fa63ca146106aa5780635beacb46146106ca5780635e395036146106ea5780636a74f2ea1461070057600080fd5b80634fb2e45d116102b15780634fb2e45d146106355780634fe6bc7f1461065557806352a605041461066a578063571ac8b01461068a57600080fd5b8063496e7e9e146105c65780634a74bb02146105e85780634b338efd146106095780634bbe49ba1461061f57600080fd5b8063270bcdfb1161035a5780633950935111610329578063395093511461055a5780633d0fe69c1461057a578063452ed4f11461059057806345494eab146105b057600080fd5b8063270bcdfb146104ec5780632d83811914610502578063313ce56714610522578063384f6b511461054457600080fd5b806313114a9d1161039657806313114a9d1461048257806314f0fc39146104a157806318160ddd146104b757806323b872dd146104cc57600080fd5b806303fd2a45146103d357806306fdde03146104105780630758d92414610432578063095ea7b31461045257600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b50602b546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b50610425610b59565b60405161040791906137f0565b34801561043e57600080fd5b506028546103f3906001600160a01b031681565b34801561045e57600080fd5b5061047261046d36600461385a565b610beb565b6040519015158152602001610407565b34801561048e57600080fd5b506027545b604051908152602001610407565b3480156104ad57600080fd5b50610493600e5481565b3480156104c357600080fd5b50602554610493565b3480156104d857600080fd5b506104726104e7366004613886565b610c02565b3480156104f857600080fd5b50610493601e5481565b34801561050e57600080fd5b5061049361051d3660046138c7565b610c55565b34801561052e57600080fd5b5060235460405160ff9091168152602001610407565b34801561055057600080fd5b50610493601d5481565b34801561056657600080fd5b5061047261057536600461385a565b610ce5565b34801561058657600080fd5b5061049360165481565b34801561059c57600080fd5b506029546103f3906001600160a01b031681565b3480156105bc57600080fd5b5061049360175481565b3480156105d257600080fd5b506105e66105e13660046138e0565b610d1c565b005b3480156105f457600080fd5b50602e5461047290600160a81b900460ff1681565b34801561061557600080fd5b5061049360185481565b34801561062b57600080fd5b5061049360305481565b34801561064157600080fd5b506105e6610650366004613902565b610db9565b34801561066157600080fd5b506105e6610f5b565b34801561067657600080fd5b506105e66106853660046138e0565b610fc2565b34801561069657600080fd5b506104726106a5366004613902565b610ff7565b3480156106b657600080fd5b50602c546103f3906001600160a01b031681565b3480156106d657600080fd5b506105e66106e5366004613934565b611005565b3480156106f657600080fd5b5061049360115481565b34801561070c57600080fd5b5061049360155481565b34801561072257600080fd5b506105e66112f9565b34801561073757600080fd5b50610493610746366004613902565b611353565b34801561075757600080fd5b506105e66113b2565b34801561076c57600080fd5b5061049360135481565b34801561078257600080fd5b506105e6610791366004613969565b611431565b3480156107a257600080fd5b506105e66107b1366004613934565b6114b7565b3480156107c257600080fd5b506105e66107d1366004613969565b6115a3565b3480156107e257600080fd5b506104726107f1366004613902565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561081b57600080fd5b506000546001600160a01b03166103f3565b34801561083957600080fd5b50610493600f5481565b34801561084f57600080fd5b506105e661085e366004613a4c565b611629565b34801561086f57600080fd5b506105e661087e366004613902565b611aa1565b34801561088f57600080fd5b50610425611dd1565b3480156108a457600080fd5b5061049360105481565b3480156108ba57600080fd5b5060355461047290610100900460ff1681565b3480156108d957600080fd5b506104726108e836600461385a565b611de0565b3480156108f957600080fd5b5061049360145481565b34801561090f57600080fd5b5061047261091e36600461385a565b611e17565b34801561092f57600080fd5b5061049360325481565b34801561094557600080fd5b506105e6610954366004613934565b611e24565b34801561096557600080fd5b506105e6610974366004613ad5565b611e79565b34801561098557600080fd5b506105e66109943660046138e0565b611efb565b3480156109a557600080fd5b506105e6611f98565b3480156109ba57600080fd5b506105e66109c9366004613902565b612059565b3480156109da57600080fd5b50602a546103f3906001600160a01b031681565b3480156109fa57600080fd5b50610493610a09366004613af0565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a4057600080fd5b506105e6610a4f366004613b29565b6120f9565b348015610a6057600080fd5b506105e6610a6f366004613969565b612162565b348015610a8057600080fd5b506105e6610a8f366004613b5b565b6121e8565b348015610aa057600080fd5b5061049360125481565b348015610ab657600080fd5b5061049360195481565b348015610acc57600080fd5b506105e6610adb366004613969565b612279565b348015610aec57600080fd5b506105e6610afb366004613902565b6122b1565b348015610b0c57600080fd5b50610472610b1b366004613902565b6001600160a01b031660009081526006602052604090205460ff1690565b348015610b4557600080fd5b506105e6610b54366004613934565b612351565b6060600c8054610b6890613c1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9490613c1f565b8015610be15780601f10610bb657610100808354040283529160200191610be1565b820191906000526020600020905b815481529060010190602001808311610bc457829003601f168201915b5050505050905090565b6000610bf83384846123a6565b5060015b92915050565b6000610c0f8484846124d9565b506001600160a01b038416600090815260056020908152604080832033808552925290912054610c4b918691610c46908690613c70565b6123a6565b5060019392505050565b6000602654821115610cc85760405162461bcd60e51b815260206004820152603160248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527065666c656374696f6e73202d204d554e4960781b60648201526084015b60405180910390fd5b6000610cd2612993565b9050610cde8184613c9d565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bf8918590610c46908690613cb1565b6000546001600160a01b03163314610d465760405162461bcd60e51b8152600401610cbf90613cc9565b60008183602554610d579190613cfe565b610d619190613c9d565b90506103e8602554610d739190613c9d565b811015610d925760405162461bcd60e51b8152600401610cbf90613d1d565b602f819055600b548290610da7908590613cfe565b610db19190613c9d565b603055505050565b6000546001600160a01b03163314610de35760405162461bcd60e51b8152600401610cbf90613cc9565b6001600160a01b038116610e095760405162461bcd60e51b8152600401610cbf90613d60565b602b546001600160a01b0382811691161415610e375760405162461bcd60e51b8152600401610cbf90613d60565b60008054610e50916001600160a01b0390911690611e24565b610e5b816001611e24565b610e66816001611005565b600054602d546001600160a01b0390811691161415610e9b57602d80546001600160a01b0319166001600160a01b0383161790555b600054610eb0906001600160a01b0316611353565b600080546001600160a01b039081168252600560209081526040808420868416855290915282209290925580549091610ee99116611353565b1115610f1057600054610f0e906001600160a01b031682610f0982611353565b6124d9565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610f855760405162461bcd60e51b8152600401610cbf90613cc9565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610fbf573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610fec5760405162461bcd60e51b8152600401610cbf90613cc9565b601d91909155601e55565b6000610bfc82600019610beb565b6000546001600160a01b0316331461102f5760405162461bcd60e51b8152600401610cbf90613cc9565b60018115151415611164576001600160a01b03821660009081526007602052604090205460ff16156110a35760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610cbf565b6001600160a01b038216600090815260016020526040902054156110fd576001600160a01b0382166000908152600160205260409020546110e390610c55565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b806112f5576001600160a01b03821660009081526007602052604090205460ff166111d15760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610cbf565b60005b6009548110156112f357826001600160a01b0316600982815481106111fb576111fb613dbd565b6000918252602090912001546001600160a01b031614156112e1576009805461122690600190613c70565b8154811061123657611236613dbd565b600091825260209091200154600980546001600160a01b03909216918390811061126257611262613dbd565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff1916905560098054806112ba576112ba613dd3565b600082815260209020810160001990810180546001600160a01b03191690550190556112f3565b806112eb81613de9565b9150506111d4565b505b5050565b6000546001600160a01b031633146113235760405162461bcd60e51b8152600401610cbf90613cc9565b6000601181905560128190556103e860138190556015829055601482905560165560178190556018819055601955565b6001600160a01b03811660009081526007602052604081205460ff161561139057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bfc90610c55565b6000546001600160a01b031633146113dc5760405162461bcd60e51b8152600401610cbf90613cc9565b600080546113f5916001600160a01b0390911690611e24565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461145b5760405162461bcd60e51b8152600401610cbf90613cc9565b601a54831115801561146f5750601b548211155b801561147d5750601c548111155b61148657600080fd5b611324816114948486613cb1565b61149e9190613cb1565b11156114a957600080fd5b601792909255601855601955565b6000546001600160a01b031633146114e15760405162461bcd60e51b8152600401610cbf90613cc9565b8061150857506001600160a01b03166000908152600360205260409020805460ff19169055565b60045415611578576000600454426115209190613c70565b116115785760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f74207365742074776f20706169727320696e206f6e6520626c6f636044820152616b2160f01b6064820152608401610cbf565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146115cd5760405162461bcd60e51b8152600401610cbf90613cc9565b601a5483111580156115e15750601b548211155b80156115ef5750601c548111155b6115f857600080fd5b611324816116068486613cb1565b6116109190613cb1565b111561161b57600080fd5b601192909255601255601355565b6000546001600160a01b031633146116535760405162461bcd60e51b8152600401610cbf90613cc9565b603a5460ff161561166357600080fd5b602e80546001600160a01b038087166001600160a01b03199283168117909355602d805487831693169290921782556000928352600660209081526040808520805460ff19908116600190811790925594549093168552909320805490921617905582516116d791600c9190850190613757565b5080516116eb90600d906020840190613757565b50633b9aca00600b556023805460ff1916601290811790915560245560245461171590600a613ee8565b600b546117229190613cfe565b602581905561173390600019613ef4565b61173f90600019613c70565b602655602a54602880546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561179e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c29190613f08565b6001600160a01b031663c9c65396602860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118479190613f08565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b79190613f08565b602980546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206028549094168352929052206000199055602554620186a090611921906103e8613cfe565b61192b9190613c9d565b602f55600b54620186a090611942906101f4613cfe565b61194c9190613c9d565b6030556025546103e89061196190600a613cfe565b61196b9190613c9d565b603155600b546103e89061198090600a613cfe565b61198a9190613c9d565b6032556025546127109061199f906005613cfe565b6119a99190613c9d565b6033556025546103e8906119be906005613cfe565b6119c89190613c9d565b603455602a546119e3906001600160a01b0316600019610beb565b50603a805460ff19166001908117909155602654906000611a0c6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611a386000546001600160a01b031690565b602c546025546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602854611a9b9030906001600160a01b03166000196123a6565b50505050565b6000546001600160a01b03163314611acb5760405162461bcd60e51b8152600401610cbf90613cc9565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b349190613f08565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba59190613f08565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c149190613f08565b90506001600160a01b038116611d8d57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c869190613f08565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf79190613f08565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d689190613f08565b602980546001600160a01b0319166001600160a01b0392909216919091179055611da9565b602980546001600160a01b0319166001600160a01b0383161790555b602880546001600160a01b0319166001600160a01b0384161790556112f330846000196123a6565b6060600d8054610b6890613c1f565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bf8918590610c46908690613c70565b6000610c4b3384846124d9565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b8152600401610cbf90613cc9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ea35760405162461bcd60e51b8152600401610cbf90613cc9565b602e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611ef090831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f255760405162461bcd60e51b8152600401610cbf90613cc9565b60008183602554611f369190613cfe565b611f409190613c9d565b90506103e8602554611f529190613c9d565b811015611f715760405162461bcd60e51b8152600401610cbf90613d1d565b6031819055600b548290611f86908590613cfe565b611f909190613c9d565b603255505050565b6000546001600160a01b03163314611fc25760405162461bcd60e51b8152600401610cbf90613cc9565b60355460ff16156120155760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610cbf565b612020306001611005565b602954612037906001600160a01b03166001611005565b6035805460ff19166001179055602e805460ff60a81b1916600160a81b179055565b6000546001600160a01b031633146120835760405162461bcd60e51b8152600401610cbf90613cc9565b602e546001600160a01b03828116911614156120d75760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610cbf565b602e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146121235760405162461bcd60e51b8152600401610cbf90613cc9565b82846025546121329190613cfe565b61213c9190613c9d565b603355602554819061214f908490613cfe565b6121599190613c9d565b60345550505050565b6000546001600160a01b0316331461218c5760405162461bcd60e51b8152600401610cbf90613cc9565b601a5483111580156121a05750601b548211155b80156121ae5750601c548111155b6121b757600080fd5b611324816121c58486613cb1565b6121cf9190613cb1565b11156121da57600080fd5b601592909255601455601655565b6000546001600160a01b031633146122125760405162461bcd60e51b8152600401610cbf90613cc9565b60005b82518110156112f357816008600085848151811061223557612235613dbd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061227181613de9565b915050612215565b6000546001600160a01b031633146122a35760405162461bcd60e51b8152600401610cbf90613cc9565b602092909255602155602255565b6000546001600160a01b031633146122db5760405162461bcd60e51b8152600401610cbf90613cc9565b602d546001600160a01b038281169116141561232f5760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610cbf565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461237b5760405162461bcd60e51b8152600401610cbf90613cc9565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b0383166124105760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f2061646460448201526a72657373202d204d554e4960a81b6064820152608401610cbf565b6001600160a01b0382166124785760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420617070726f766520746f20746865207a65726f2061646472656044820152687373202d204d554e4960b81b6064820152608401610cbf565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125465760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f20616460448201526b6472657373202d204d554e4960a01b6064820152608401610cbf565b6001600160a01b0383166125af5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f2061646472604482015269657373202d204d554e4960b01b6064820152608401610cbf565b600082116126185760405162461bcd60e51b815260206004820152603060248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201526f7468616e207a65726f202d204d554e4960801b6064820152608401610cbf565b6001600160a01b03841660009081526008602052604090205460ff1615801561265a57506001600160a01b03831660009081526008602052604090205460ff16155b801561267657503360009081526008602052604090205460ff16155b61267f57600080fd5b61268984846129b6565b156128bb5760355460ff166126e05760405162461bcd60e51b815260206004820152601f60248201527f54726164696e67206e6f742079657420656e61626c656421202d204d554e49006044820152606401610cbf565b60385460ff16156127a6576001600160a01b03841660009081526003602052604090205460ff161561275b57612717436001613cb1565b6001600160a01b038416600090815260396020526040902054141561273b57600080fd5b6001600160a01b03831660009081526039602052604090204390556127a6565b612766436001613cb1565b6001600160a01b038516600090815260396020526040902054141561278a57600080fd5b6001600160a01b03841660009081526039602052604090204390555b602f548211156128085760405162461bcd60e51b815260206004820152602760248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152662e2d204d554e4960c81b6064820152608401610cbf565b602a546001600160a01b0384811691161480159061283f57506001600160a01b03831660009081526003602052604090205460ff16155b156128bb576031548261285185611353565b61285b9190613cb1565b11156128bb5760405162461bcd60e51b815260206004820152602960248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152687a652e2d204d554e4960b81b6064820152608401610cbf565b6001600160a01b03841660009081526006602052604090205460019060ff16806128fd57506001600160a01b03841660009081526006602052604090205460ff165b15612906575060005b6001600160a01b03841660009081526003602052604090205460ff161561297e57602e54600160a01b900460ff1615801561294a5750602e54600160a81b900460ff165b1561297e57600061295a30611353565b9050603354811061297c57603454811061297357506034545b61297c81612abd565b505b61298a85858584612e65565b95945050505050565b60008060006129a06131e6565b90925090506129af8183613c9d565b9250505090565b600080546001600160a01b038481169116148015906129e357506000546001600160a01b03838116911614155b8015612a0857506001600160a01b0382166000908152600a602052604090205460ff16155b8015612a2d57506001600160a01b0383166000908152600a602052604090205460ff16155b8015612a475750602b546001600160a01b03838116911614155b8015612a5b57506001600160a01b03821615155b8015612a7057506001600160a01b0383163014155b8015612a9557506001600160a01b03821660009081526006602052604090205460ff16155b8015610cde575050506001600160a01b031660009081526006602052604090205460ff161590565b602e805460ff60a01b1916600160a01b179055601e54601d54612ae09190613cb1565b612ae957612e55565b60006002601e54601d54612afd9190613cb1565b601d54612b0a9085613cfe565b612b149190613c9d565b612b1e9190613c9d565b90506000612b2c8284613c70565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b6657612b66613dbd565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be39190613f08565b81600181518110612bf657612bf6613dbd565b6001600160a01b03928316602091820292909201015260285460405163791ac94760e01b815291169063791ac94790612c3c908590600090869030904290600401613f25565b600060405180830381600087803b158015612c5657600080fd5b505af1158015612c6a573d6000803e3d6000fd5b5050505060006002601e54601d54612c829190613cb1565b601d54612c8f9047613cfe565b612c999190613c9d565b612ca39190613c9d565b90508315612d8557602854602d5460405163f305d71960e01b81523060048201526024810187905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d1b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d409190613f96565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612d918587613c70565b1115612e50576020546022544791600091612dac9084613c9d565b612db69190613cfe565b9050600060215460225484612dcb9190613c9d565b612dd59190613cfe565b602d546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612e10573d6000803e3d6000fd5b50602e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612e4b573d6000803e3d6000fd5b505050505b505050505b50602e805460ff60a01b19169055565b603554600090610100900460ff16612ef957612e818585613369565b603554610100900460ff16158015612e9e5750612e9e85856129b6565b15612ef95760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610cbf565b6000612f0786868686613477565b60808101516001600160a01b038816600090815260016020526040902054919250612f3191613c70565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612f689190613cb1565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff168015612fbc57506001600160a01b03851660009081526007602052604090205460ff16155b15613003576001600160a01b038616600090815260026020526040902054612fe5908590613c70565b6001600160a01b038716600090815260026020526040902055613143565b6001600160a01b03861660009081526007602052604090205460ff1615801561304457506001600160a01b03851660009081526007602052604090205460ff165b1561308c5780516001600160a01b03861660009081526002602052604090205461306e9190613cb1565b6001600160a01b038616600090815260026020526040902055613143565b6001600160a01b03861660009081526007602052604090205460ff1680156130cc57506001600160a01b03851660009081526007602052604090205460ff165b15613143576001600160a01b0386166000908152600260205260409020546130f5908590613c70565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546131299190613cb1565b6001600160a01b0386166000908152600260205260409020555b60408101511561315b5761315b868260400151613665565b60008160a001511180613172575060008160200151115b15613189576131898160a001518260200151613731565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516131d291815260200190565b60405180910390a350600195945050505050565b6026546025546000918291825b6009548110156133385782600160006009848154811061321557613215613dbd565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613280575081600260006009848154811061325957613259613dbd565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561329657602654602554945094505050509091565b60016000600983815481106132ad576132ad613dbd565b60009182526020808320909101546001600160a01b031683528201929092526040019020546132dc9084613c70565b925060026000600983815481106132f5576132f5613dbd565b60009182526020808320909101546001600160a01b031683528201929092526040019020546133249083613c70565b91508061333081613de9565b9150506131f3565b506025546026546133499190613c9d565b821015613360576026546025549350935050509091565b90939092509050565b603554610100900460ff16156133c15760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610cbf565b6133cb82826129b6565b1580156133e557506029546001600160a01b038281169116145b156112f5576001600160a01b0382166000908152600a602052604090819020805460ff191660019081179091556035805461ff00191661010017905542603755602e805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161346b91901515815260200190565b60405180910390a15050565b6134b06040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6134e96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006134f3612993565b90506134ff8186613cfe565b6080830152831561360f576001600160a01b03861660009081526003602052604090205460ff161561354257601554600e55601454600f5560165460105561358d565b6001600160a01b03871660009081526003602052604090205460ff161561357a57601154600e55601254600f5560135460105561358d565b601754600e55601854600f556019546010555b601f54600e5461359d9087613cfe565b6135a79190613c9d565b6020830152601f54601054600f546135bf9190613cb1565b6135c99087613cfe565b6135d39190613c9d565b6040830181905260208301516135e99190613cb1565b6135f39086613c70565b82526020820151613605908290613cfe565b60a0830152613628565b6000602083018190526040830181905285835260a08301525b8082604001516136389190613cfe565b8260a001516136479190613cb1565b82608001516136569190613c70565b60608301525095945050505050565b600061366f612993565b9050600061367d8284613cfe565b3060009081526001602052604090205490915061369b908290613cb1565b3060009081526001602090815260408083209390935560079052205460ff16156136eb57306000908152600260205260409020546136da908490613cb1565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160265461373f9190613c70565b602655602754613750908290613cb1565b6027555050565b82805461376390613c1f565b90600052602060002090601f01602090048101928261378557600085556137cb565b82601f1061379e57805160ff19168380011785556137cb565b828001600101855582156137cb579182015b828111156137cb5782518255916020019190600101906137b0565b506137d79291506137db565b5090565b5b808211156137d757600081556001016137dc565b600060208083528351808285015260005b8181101561381d57858101830151858201604001528201613801565b8181111561382f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610fbf57600080fd5b6000806040838503121561386d57600080fd5b823561387881613845565b946020939093013593505050565b60008060006060848603121561389b57600080fd5b83356138a681613845565b925060208401356138b681613845565b929592945050506040919091013590565b6000602082840312156138d957600080fd5b5035919050565b600080604083850312156138f357600080fd5b50508035926020909101359150565b60006020828403121561391457600080fd5b8135610cde81613845565b8035801515811461392f57600080fd5b919050565b6000806040838503121561394757600080fd5b823561395281613845565b91506139606020840161391f565b90509250929050565b60008060006060848603121561397e57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139d4576139d4613995565b604052919050565b600082601f8301126139ed57600080fd5b813567ffffffffffffffff811115613a0757613a07613995565b613a1a601f8201601f19166020016139ab565b818152846020838601011115613a2f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215613a6257600080fd5b8435613a6d81613845565b93506020850135613a7d81613845565b9250604085013567ffffffffffffffff80821115613a9a57600080fd5b613aa6888389016139dc565b93506060870135915080821115613abc57600080fd5b50613ac9878288016139dc565b91505092959194509250565b600060208284031215613ae757600080fd5b610cde8261391f565b60008060408385031215613b0357600080fd5b8235613b0e81613845565b91506020830135613b1e81613845565b809150509250929050565b60008060008060808587031215613b3f57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215613b6e57600080fd5b823567ffffffffffffffff80821115613b8657600080fd5b818501915085601f830112613b9a57600080fd5b8135602082821115613bae57613bae613995565b8160051b9250613bbf8184016139ab565b8281529284018101928181019089851115613bd957600080fd5b948201945b84861015613c035785359350613bf384613845565b8382529482019490820190613bde565b9650613c12905087820161391f565b9450505050509250929050565b600181811c90821680613c3357607f821691505b60208210811415613c5457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613c8257613c82613c5a565b500390565b634e487b7160e01b600052601260045260246000fd5b600082613cac57613cac613c87565b500490565b60008219821115613cc457613cc4613c5a565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615613d1857613d18613c5a565b500290565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415613dfd57613dfd613c5a565b5060010190565b600181815b80851115613e3f578160001904821115613e2557613e25613c5a565b80851615613e3257918102915b93841c9390800290613e09565b509250929050565b600082613e5657506001610bfc565b81613e6357506000610bfc565b8160018114613e795760028114613e8357613e9f565b6001915050610bfc565b60ff841115613e9457613e94613c5a565b50506001821b610bfc565b5060208310610133831016604e8410600b8410161715613ec2575081810a610bfc565b613ecc8383613e04565b8060001904821115613ee057613ee0613c5a565b029392505050565b6000610cde8383613e47565b600082613f0357613f03613c87565b500690565b600060208284031215613f1a57600080fd5b8151610cde81613845565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613f755784516001600160a01b031683529383019391830191600101613f50565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613fab57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220bf4c6e8e6b1d9b67c01ee6ce4ac9265eb262758bd7878e6be1b57a2ed3d7e3d164736f6c634300080a0033

Deployed Bytecode Sourcemap

6048:24073:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7904:64;;;;;;;;;;-1:-1:-1;7904:64:0;;;;-1:-1:-1;;;;;7904:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;7904:64:0;;;;;;;;13031:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7795:35::-;;;;;;;;;;-1:-1:-1;7795:35:0;;;;-1:-1:-1;;;;;7795:35:0;;;13702:161;;;;;;;;;;-1:-1:-1;13702:161:0;;;;;:::i;:::-;;:::i;:::-;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;13702:161:0;1514:187:1;20108:87:0;;;;;;;;;;-1:-1:-1;20177:10:0;;20108:87;;;1852:25:1;;;1840:2;1825:18;20108:87:0;1706:177:1;6756:28:0;;;;;;;;;;;;;;;;12782:83;;;;;;;;;;-1:-1:-1;12855:7:0;;12782:83;;13999:263;;;;;;;;;;-1:-1:-1;13999:263:0;;;;;:::i;:::-;;:::i;7383:34::-;;;;;;;;;;;;;;;;20492:257;;;;;;;;;;-1:-1:-1;20492:257:0;;;;;:::i;:::-;;:::i;12872:71::-;;;;;;;;;;-1:-1:-1;12931:9:0;;12872:71;;12931:9;;;;2676:36:1;;2664:2;2649:18;12872:71:0;2534:184:1;7342:34:0;;;;;;;;;;;;;;;;14270:212;;;;;;;;;;-1:-1:-1;14270:212:0;;;;;:::i;:::-;;:::i;7057:33::-;;;;;;;;;;;;;;;;7838:21;;;;;;;;;;-1:-1:-1;7838:21:0;;;;-1:-1:-1;;;;;7838:21:0;;;7098:36;;;;;;;;;;;;;;;;17539:313;;;;;;;;;;-1:-1:-1;17539:313:0;;;;;:::i;:::-;;:::i;:::-;;8162:41;;;;;;;;;;-1:-1:-1;8162:41:0;;;;-1:-1:-1;;;8162:41:0;;;;;;7142:31;;;;;;;;;;;;;;;;8242:23;;;;;;;;;;;;;;;;11782:790;;;;;;;;;;-1:-1:-1;11782:790:0;;;;;:::i;:::-;;:::i;28932:126::-;;;;;;;;;;;;;:::i;17364:167::-;;;;;;;;;;-1:-1:-1;17364:167:0;;;;;:::i;:::-;;:::i;13871:120::-;;;;;;;;;;-1:-1:-1;13871:120:0;;;;;:::i;:::-;;:::i;7976:64::-;;;;;;;;;;-1:-1:-1;7976:64:0;;;;-1:-1:-1;;;;;7976:64:0;;;19200:900;;;;;;;;;;-1:-1:-1;19200:900:0;;;;;:::i;:::-;;:::i;6860:37::-;;;;;;;;;;;;;;;;7019:30;;;;;;;;;;;;;;;;29822:296;;;;;;;;;;;;;:::i;13323:196::-;;;;;;;;;;-1:-1:-1;13323:196:0;;;;;:::i;:::-;;:::i;12580:194::-;;;;;;;;;;;;;:::i;6942:35::-;;;;;;;;;;;;;;;;16763:419;;;;;;;;;;-1:-1:-1;16763:419:0;;;;;:::i;:::-;;:::i;15267:423::-;;;;;;;;;;-1:-1:-1;15267:423:0;;;;;:::i;:::-;;:::i;15951:396::-;;;;;;;;;;-1:-1:-1;15951:396:0;;;;;:::i;:::-;;:::i;15698:118::-;;;;;;;;;;-1:-1:-1;15698:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;15790:18:0;15766:4;15790:18;;;:9;:18;;;;;;;;;15698:118;13108:71;;;;;;;;;;-1:-1:-1;13151:7:0;11760:6;-1:-1:-1;;;;;11760:6:0;13108:71;;6792:23;;;;;;;;;;;;;;;;10104:1583;;;;;;;;;;-1:-1:-1;10104:1583:0;;;;;:::i;:::-;;:::i;14720:539::-;;;;;;;;;;-1:-1:-1;14720:539:0;;;;;:::i;:::-;;:::i;12949:75::-;;;;;;;;;;;;;:::i;6823:29::-;;;;;;;;;;;;;;;;8438:36;;;;;;;;;;-1:-1:-1;8438:36:0;;;;;;;;;;;14490:222;;;;;;;;;;-1:-1:-1;14490:222:0;;;;;:::i;:::-;;:::i;6984:27::-;;;;;;;;;;;;;;;;13527:167;;;;;;;;;;-1:-1:-1;13527:167:0;;;;;:::i;:::-;;:::i;8306:26::-;;;;;;;;;;;;;;;;19062:130;;;;;;;;;;-1:-1:-1;19062:130:0;;;;;:::i;:::-;;:::i;18883:171::-;;;;;;;;;;-1:-1:-1;18883:171:0;;;;;:::i;:::-;;:::i;17860:324::-;;;;;;;;;;-1:-1:-1;17860:324:0;;;;;:::i;:::-;;:::i;24946:278::-;;;;;;;;;;;;;:::i;18491:194::-;;;;;;;;;;-1:-1:-1;18491:194:0;;;;;:::i;:::-;;:::i;7867:29::-;;;;;;;;;;-1:-1:-1;7867:29:0;;;;-1:-1:-1;;;;;7867:29:0;;;13185:130;;;;;;;;;;-1:-1:-1;13185:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;13287:16:0;;;13269:7;13287:16;;;:8;:16;;;;;;;;:25;;;;;;;;;;;;;13185:130;18192:291;;;;;;;;;;-1:-1:-1;18192:291:0;;;;;:::i;:::-;;:::i;16355:400::-;;;;;;;;;;-1:-1:-1;16355:400:0;;;;;:::i;:::-;;:::i;29499:201::-;;;;;;;;;;-1:-1:-1;29499:201:0;;;;;:::i;:::-;;:::i;6905:29::-;;;;;;;;;;;;;;;;7181:34;;;;;;;;;;;;;;;;17190:166;;;;;;;;;;-1:-1:-1;17190:166:0;;;;;:::i;:::-;;:::i;18693:184::-;;;;;;;;;;-1:-1:-1;18693:184:0;;;;;:::i;:::-;;:::i;15824:119::-;;;;;;;;;;-1:-1:-1;15824:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15910:25:0;15886:4;15910:25;;;:16;:25;;;;;;;;;15824:119;29709:105;;;;;;;;;;-1:-1:-1;29709:105:0;;;;;:::i;:::-;;:::i;13031:71::-;13070:13;13094:5;13087:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13031:71;:::o;13702:161::-;13777:4;13794:39;188:10;13817:7;13826:6;13794:8;:39::i;:::-;-1:-1:-1;13851:4:0;13702:161;;;;;:::o;13999:263::-;14097:4;14114:36;14124:6;14132:9;14143:6;14114:9;:36::i;:::-;-1:-1:-1;;;;;;14192:16:0;;;;;;:8;:16;;;;;;;;188:10;14192:30;;;;;;;;;14161:71;;14170:6;;14192:39;;14225:6;;14192:39;:::i;:::-;14161:8;:71::i;:::-;-1:-1:-1;14250:4:0;13999:263;;;;;:::o;20492:257::-;20558:7;20597;;20586;:18;;20578:80;;;;-1:-1:-1;;;20578:80:0;;8996:2:1;20578:80:0;;;8978:21:1;9035:2;9015:18;;;9008:30;9074:34;9054:18;;;9047:62;-1:-1:-1;;;9125:18:1;;;9118:47;9182:19;;20578:80:0;;;;;;;;;20669:19;20692:10;:8;:10::i;:::-;20669:33;-1:-1:-1;20720:21:0;20669:33;20720:7;:21;:::i;:::-;20713:28;20492:257;-1:-1:-1;;;20492:257:0:o;14270:212::-;188:10;14358:4;14407:22;;;:8;:22;;;;;;;;-1:-1:-1;;;;;14407:31:0;;;;;;;;;;14358:4;;14375:77;;14398:7;;14407:44;;14441:10;;14407:44;:::i;17539:313::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;17634:13:::1;17672:7;17661;17651;;:17;;;;:::i;:::-;17650:29;;;;:::i;:::-;17634:45;;17718:4;17708:7;;:14;;;;:::i;:::-;17698:5;:25;;17690:73;;;;-1:-1:-1::0;;;17690:73:0::1;;;;;;;:::i;:::-;17774:7;:15:::0;;;17812:11:::1;::::0;17837:7;;17812:21:::1;::::0;17826:7;;17812:21:::1;:::i;:::-;17811:33;;;;:::i;:::-;17800:8;:44:::0;-1:-1:-1;;;17539:313:0:o;11782:790::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11863:22:0;::::1;11855:96;;;;-1:-1:-1::0;;;11855:96:0::1;;;;;;;:::i;:::-;11982:4;::::0;-1:-1:-1;;;;;11970:16:0;;::::1;11982:4:::0;::::1;11970:16;;11962:90;;;;-1:-1:-1::0;;;11962:90:0::1;;;;;;;:::i;:::-;12082:6;::::0;;12063:33:::1;::::0;-1:-1:-1;;;;;12082:6:0;;::::1;::::0;12063:18:::1;:33::i;:::-;12107:34;12126:8;12136:4;12107:18;:34::i;:::-;12152:39;12176:8;12186:4;12152:23;:39::i;:::-;12236:6;::::0;12216:8:::1;::::0;-1:-1:-1;;;;;12216:8:0;;::::1;12236:6:::0;::::1;12216:27;12212:74;;;12258:8;:28:::0;;-1:-1:-1;;;;;;12258:28:0::1;-1:-1:-1::0;;;;;12258:28:0;::::1;;::::0;;12212:74:::1;12346:6;::::0;12336:17:::1;::::0;-1:-1:-1;;;;;12346:6:0::1;12336:9;:17::i;:::-;12307:16;12316:6:::0;;-1:-1:-1;;;;;12316:6:0;;::::1;12307:16:::0;;:8:::1;:16;::::0;;;;;;;:26;;::::1;::::0;;;;;;;:46;;;;12377:6;;12307:16;;12367:17:::1;::::0;12377:6:::1;12367:9;:17::i;:::-;:21;12364:99;;;12415:6;::::0;12405:46:::1;::::0;-1:-1:-1;;;;;12415:6:0::1;12423:8:::0;12433:17:::1;12415:6:::0;12433:9:::1;:17::i;:::-;12405:9;:46::i;:::-;;12364:99;12483:6;:17:::0;;-1:-1:-1;;;;;;12483:17:0::1;-1:-1:-1::0;;;;;12483:17:0;::::1;::::0;;::::1;::::0;;12516:38:::1;::::0;12483:17;;;;12516:38:::1;::::0;12483:6;12516:38:::1;11782:790:::0;:::o;28932:126::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;11733:7;11760:6;;29002:48:::1;::::0;-1:-1:-1;;;;;11760:6:0;;;;29028:21:::1;29002:48:::0;::::1;;;::::0;29028:21;;29002:48;11733:7;29002:48;29028:21;11760:6;29002:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28932:126::o:0;17364:167::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;17461:15:::1;:27:::0;;;;17499:12:::1;:24:::0;17364:167::o;13871:120::-;13924:4;13948:35;13956:7;-1:-1:-1;;13948:7:0;:35::i;19200:900::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;19307:4:::1;19296:15:::0;::::1;;;19292:801;;;-1:-1:-1::0;;;;;19337:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;19336:19;19328:60;;;::::0;-1:-1:-1;;;19328:60:0;;11172:2:1;19328:60:0::1;::::0;::::1;11154:21:1::0;11211:2;11191:18;;;11184:30;11250;11230:18;;;11223:58;11298:18;;19328:60:0::1;10970:352:1::0;19328:60:0::1;-1:-1:-1::0;;;;;19406:16:0;::::1;19425:1;19406:16:::0;;;:7:::1;:16;::::0;;;;;:20;19403:116:::1;;-1:-1:-1::0;;;;;19486:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;19466:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;19447:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;19403:116:::1;-1:-1:-1::0;;;;;;19533:18:0::1;;::::0;;;:9:::1;:18;::::0;;;;:25;;-1:-1:-1;;19533:25:0::1;19554:4;19533:25:::0;;::::1;::::0;;;19573:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;19573:23:0::1;::::0;;::::1;::::0;;19200:900::o;19292:801::-:1;19618:16:::0;19614:479:::1;;-1:-1:-1::0;;;;;19659:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;19651:59;;;::::0;-1:-1:-1;;;19651:59:0;;11529:2:1;19651:59:0::1;::::0;::::1;11511:21:1::0;11568:2;11548:18;;;11541:30;11607;11587:18;;;11580:58;11655:18;;19651:59:0::1;11327:352:1::0;19651:59:0::1;19730:9;19725:357;19749:9;:16:::0;19745:20;::::1;19725:357;;;19811:7;-1:-1:-1::0;;;;;19795:23:0::1;:9;19805:1;19795:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19795:12:0::1;:23;19791:276;;;19858:9;19868:16:::0;;:20:::1;::::0;19887:1:::1;::::0;19868:20:::1;:::i;:::-;19858:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;19843:9:::1;:12:::0;;-1:-1:-1;;;;;19858:31:0;;::::1;::::0;19853:1;;19843:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;19843:46:0::1;-1:-1:-1::0;;;;;19843:46:0;;::::1;;::::0;;19912:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;19955:9:::1;:18:::0;;;;:26;;-1:-1:-1;;19955:26:0::1;::::0;;20004:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20004:15:0;;;;;-1:-1:-1;;;;;;20004:15:0::1;::::0;;;;;20042:5:::1;;19791:276;19767:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19725:357;;;;19614:479;19200:900:::0;;:::o;29822:296::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;29892:1:::1;29879:10;:14:::0;;;29904:7:::1;:11:::0;;;29939:4:::1;29926:10;:17:::0;;;29954:11:::1;:15:::0;;;29980:8:::1;:12:::0;;;30003:11:::1;:18:::0;30032:17:::1;:21:::0;;;30064:12:::1;:16:::0;;;30091:15:::1;:19:::0;29822:296::o;13323:196::-;-1:-1:-1;;;;;13413:18:0;;13389:7;13413:18;;;:9;:18;;;;;;;;13409:47;;;-1:-1:-1;;;;;;13440:16:0;;;;;:7;:16;;;;;;;13323:196::o;13409:47::-;-1:-1:-1;;;;;13494:16:0;;;;;;:7;:16;;;;;;13474:37;;:19;:37::i;12580:194::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;12666:6:::1;::::0;;12647:33:::1;::::0;-1:-1:-1;;;;;12666:6:0;;::::1;::::0;12647:18:::1;:33::i;:::-;12708:1;12691:19:::0;;-1:-1:-1;;;;;;12691:19:0::1;::::0;;12726:40:::1;::::0;12708:1;;12726:40:::1;::::0;12708:1;;12726:40:::1;12580:194::o:0;16763:419::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;16891:11:::1;;16880:7;:22;;:62;;;;;16936:6;;16923:9;:19;;16880:62;:105;;;;;16976:9;;16963;:22;;16880:105;16872:132;;;::::0;::::1;;17058:4;17045:9:::0;17023:19:::1;17033:9:::0;17023:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;17015:48;;;::::0;::::1;;17074:17;:27:::0;;;;17112:12:::1;:24:::0;17147:15:::1;:27:::0;16763:419::o;15267:423::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;15348:16;15344:339:::1;;-1:-1:-1::0;;;;;;15381:13:0::1;15397:5;15381:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;15381:21:0::1;::::0;;19200:900::o;15344:339::-:1;15439:18;::::0;:23;15435:151:::1;;15530:1;15509:18;;15491:15;:36;;;;:::i;:::-;:40;15483:87;;;::::0;-1:-1:-1;;;15483:87:0;;12290:2:1;15483:87:0::1;::::0;::::1;12272:21:1::0;12329:2;12309:18;;;12302:30;12368:34;12348:18;;;12341:62;-1:-1:-1;;;12419:18:1;;;12412:32;12461:19;;15483:87:0::1;12088:398:1::0;15483:87:0::1;-1:-1:-1::0;;;;;15600:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15600:20:0::1;15616:4;15600:20;::::0;;15656:15:::1;15635:18;:36:::0;15267:423;;:::o;15951:396::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;16073:11:::1;;16062:7;:22;;:62;;;;;16118:6;;16105:9;:19;;16062:62;:105;;;;;16158:9;;16145;:22;;16062:105;16054:132;;;::::0;::::1;;16240:4;16227:9:::0;16205:19:::1;16215:9:::0;16205:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16197:48;;;::::0;::::1;;16256:10;:20:::0;;;;16287:7:::1;:19:::0;16317:10:::1;:22:::0;15951:396::o;10104:1583::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;10273:8:::1;::::0;::::1;;10272:9;10264:18;;;::::0;::::1;;10295:13;:40:::0;;-1:-1:-1;;;;;10295:40:0;;::::1;-1:-1:-1::0;;;;;;10295:40:0;;::::1;::::0;::::1;::::0;;;10346:8:::1;:26:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10295:13:::1;10385:31:::0;;;:16:::1;:31;::::0;;;;;;;:38;;-1:-1:-1;;10385:38:0;;::::1;10295:40:::0;10385:38;;::::1;::::0;;;10451:8;;;;::::1;10434:26:::0;;;;;:33;;;;::::1;;::::0;;10480:18;;::::1;::::0;:5:::1;::::0;:18;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10509:22:0;;::::1;::::0;:7:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10556:13:0::1;10542:11;:27:::0;10627:9:::1;:14:::0;;-1:-1:-1;;10627:14:0::1;10639:2;10627:14:::0;;::::1;::::0;;;10656:12:::1;:24:::0;10816:12:::1;::::0;10812:16:::1;::::0;:2:::1;:16;:::i;:::-;10797:11;;:32;;;;:::i;:::-;10787:7;:42:::0;;;10858:13:::1;::::0;-1:-1:-1;;10858:13:0::1;:::i;:::-;10851:21;::::0;-1:-1:-1;;10851:21:0::1;:::i;:::-;10840:7;:33:::0;10917:14:::1;::::0;10886:9:::1;:46:::0;;-1:-1:-1;;;;;;10886:46:0::1;-1:-1:-1::0;;;;;10917:14:0;;::::1;10886:46:::0;;::::1;::::0;;10970:19:::1;::::0;;-1:-1:-1;;;10970:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;10917:14;10970:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10952:49:0::1;;11002:9;;;;;;;;;-1:-1:-1::0;;;;;11002:9:0::1;-1:-1:-1::0;;;;;11002:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10952:82;::::0;-1:-1:-1;;;;;;10952:82:0::1;::::0;;;;;;-1:-1:-1;;;;;14468:15:1;;;10952:82:0::1;::::0;::::1;14450:34:1::0;11028:4:0::1;14500:18:1::0;;;14493:43;14385:18;;10952:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10943:6;:91:::0;;-1:-1:-1;;;;;;10943:91:0::1;-1:-1:-1::0;;;;;10943:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;11045:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;11045:22:0::1;-1:-1:-1::0;11045:22:0::1;::::0;;11095:4:::1;11078:23:::0;;:8:::1;:23:::0;;;;;11110:9:::1;::::0;;;::::1;11078:43:::0;;;;;;-1:-1:-1;;11078:63:0;;11173:7:::1;::::0;11191:6:::1;::::0;11173:14:::1;::::0;11183:4:::1;11173:14;:::i;:::-;11172:25;;;;:::i;:::-;11162:7;:35:::0;11220:11:::1;::::0;11241:6:::1;::::0;11220:17:::1;::::0;11234:3:::1;11220:17;:::i;:::-;11219:28;;;;:::i;:::-;11208:8;:39:::0;11272:7:::1;::::0;11288:4:::1;::::0;11272:12:::1;::::0;11282:2:::1;11272:12;:::i;:::-;11271:21;;;;:::i;:::-;11258:10;:34:::0;11318:11:::1;::::0;11338:4:::1;::::0;11318:16:::1;::::0;11332:2:::1;11318:16;:::i;:::-;11317:25;;;;:::i;:::-;11303:11;:39:::0;11370:7:::1;::::0;11385:5:::1;::::0;11370:11:::1;::::0;11380:1:::1;11370:11;:::i;:::-;11369:21;;;;:::i;:::-;11353:13;:37:::0;11415:7:::1;::::0;11430:4:::1;::::0;11415:11:::1;::::0;11425:1:::1;11415:11;:::i;:::-;11414:20;;;;:::i;:::-;11401:10;:33:::0;11455:14:::1;::::0;11447:42:::1;::::0;-1:-1:-1;;;;;11455:14:0::1;-1:-1:-1::0;;11447:7:0::1;:42::i;:::-;-1:-1:-1::0;11502:8:0::1;:15:::0;;-1:-1:-1;;11502:15:0::1;11513:4;11502:15:::0;;::::1;::::0;;;11547:7:::1;::::0;;11502:8:::1;11536:7;11733::::0;11760:6;-1:-1:-1;;;;;11760:6:0;;11695:79;11536:7:::1;-1:-1:-1::0;;;;;11528:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11528:16:0;:26;11585:7:::1;11733::::0;11760:6;-1:-1:-1;;;;;11760:6:0;;11695:79;11585:7:::1;11579:4;::::0;11594:7:::1;::::0;11570:32:::1;::::0;1852:25:1;;;-1:-1:-1;;;;;11570:32:0;;::::1;::::0;11579:4;;::::1;::::0;11570:32:::1;::::0;1840:2:1;1825:18;11570:32:0::1;;;;;;;11647:9;::::0;11615:62:::1;::::0;11632:4:::1;::::0;-1:-1:-1;;;;;11647:9:0::1;-1:-1:-1::0;;11615:8:0::1;:62::i;:::-;10104:1583:::0;;;;:::o;14720:539::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;14794:29:::1;14845:9;14794:61;;14866:11;14898:10;-1:-1:-1::0;;;;;14898:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14880:47:0::1;;14936:4;14943:10;-1:-1:-1::0;;;;;14943:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14880:81;::::0;-1:-1:-1;;;;;;14880:81:0::1;::::0;;;;;;-1:-1:-1;;;;;14468:15:1;;;14880:81:0::1;::::0;::::1;14450:34:1::0;14520:15;;14500:18;;;14493:43;14385:18;;14880:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14866:95:::0;-1:-1:-1;;;;;;14976:17:0;::::1;14972:197;;15037:10;-1:-1:-1::0;;;;;15037:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15019:50:0::1;;15078:4;15085:10;-1:-1:-1::0;;;;;15085:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15019:84;::::0;-1:-1:-1;;;;;;15019:84:0::1;::::0;;;;;;-1:-1:-1;;;;;14468:15:1;;;15019:84:0::1;::::0;::::1;14450:34:1::0;14520:15;;14500:18;;;14493:43;14385:18;;15019:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15010:6;:93:::0;;-1:-1:-1;;;;;;15010:93:0::1;-1:-1:-1::0;;;;;15010:93:0;;;::::1;::::0;;;::::1;::::0;;14972:197:::1;;;15145:6;:12:::0;;-1:-1:-1;;;;;;15145:12:0::1;-1:-1:-1::0;;;;;15145:12:0;::::1;;::::0;;14972:197:::1;15179:9;:22:::0;;-1:-1:-1;;;;;;15179:22:0::1;-1:-1:-1::0;;;;;15179:22:0;::::1;;::::0;;15212:39:::1;15229:4;15236:9:::0;-1:-1:-1;;15212:8:0::1;:39::i;12949:75::-:0;12990:13;13014:7;13007:14;;;;;:::i;14490:222::-;188:10;14583:4;14632:22;;;:8;:22;;;;;;;;-1:-1:-1;;;;;14632:31:0;;;;;;;;;;14583:4;;14600:82;;14623:7;;14632:49;;14666:15;;14632:49;:::i;13527:167::-;13605:4;13622:42;188:10;13646:9;13657:6;13622:9;:42::i;19062:130::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19149:25:0;;;::::1;;::::0;;;:16:::1;:25;::::0;;;;:35;;-1:-1:-1;;19149:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19062:130::o;18883:171::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;18960:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18960:32:0::1;-1:-1:-1::0;;;;18960:32:0;;::::1;;::::0;;19008:38:::1;::::0;::::1;::::0;::::1;::::0;18984:8;1679:14:1;1672:22;1654:41;;1642:2;1627:18;;1514:187;19008:38:0::1;;;;;;;;18883:171:::0;:::o;17860:324::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;17953:13:::1;17994:7;17980:10;17970:7;;:20;;;;:::i;:::-;17969:32;;;;:::i;:::-;17953:48;;18041:4;18031:7;;:14;;;;:::i;:::-;18021:5;:25;;18013:73;;;;-1:-1:-1::0;;;18013:73:0::1;;;;;;;:::i;:::-;18097:10;:18:::0;;;18141:11:::1;::::0;18169:7;;18141:24:::1;::::0;18155:10;;18141:24:::1;:::i;:::-;18140:36;;;;:::i;:::-;18126:11;:50:::0;-1:-1:-1;;;17860:324:0:o;24946:278::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;25004:9:::1;::::0;::::1;;25003:10;24995:50;;;::::0;-1:-1:-1;;;24995:50:0;;14749:2:1;24995:50:0::1;::::0;::::1;14731:21:1::0;14788:2;14768:18;;;14761:30;14827:29;14807:18;;;14800:57;14874:18;;24995:50:0::1;14547:351:1::0;24995:50:0::1;25056:44;25088:4;25095;25056:23;:44::i;:::-;25135:6;::::0;25111:37:::1;::::0;-1:-1:-1;;;;;25135:6:0::1;::::0;25111:23:::1;:37::i;:::-;25161:9;:16:::0;;-1:-1:-1;;25161:16:0::1;25173:4;25161:16;::::0;;25188:21:::1;:28:::0;;-1:-1:-1;;;;25188:28:0::1;-1:-1:-1::0;;;25188:28:0::1;::::0;;24946:278::o;18491:194::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;18582:13:::1;::::0;-1:-1:-1;;;;;18582:26:0;;::::1;:13:::0;::::1;:26;;18574:58;;;::::0;-1:-1:-1;;;18574:58:0;;15105:2:1;18574:58:0::1;::::0;::::1;15087:21:1::0;15144:2;15124:18;;;15117:30;-1:-1:-1;;;15163:18:1;;;15156:49;15222:18;;18574:58:0::1;14903:343:1::0;18574:58:0::1;18643:13;:34:::0;;-1:-1:-1;;;;;;18643:34:0::1;-1:-1:-1::0;;;;;18643:34:0;;;::::1;::::0;;;::::1;::::0;;18491:194::o;18192:291::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;18394:16:::1;18374;18364:7;;:26;;;;:::i;:::-;18363:47;;;;:::i;:::-;18347:13;:63:::0;18435:7:::1;::::0;18462:13;;18435:23:::1;::::0;18445:13;;18435:23:::1;:::i;:::-;18434:41;;;;:::i;:::-;18421:10;:54:::0;-1:-1:-1;;;;18192:291:0:o;16355:400::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;16478:11:::1;;16467:7;:22;;:62;;;;;16523:6;;16510:9;:19;;16467:62;:105;;;;;16563:9;;16550;:22;;16467:105;16459:132;;;::::0;::::1;;16645:4;16632:9:::0;16610:19:::1;16620:9:::0;16610:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16602:48;;;::::0;::::1;;16661:11;:21:::0;;;;16693:8:::1;:20:::0;16724:11:::1;:23:::0;16355:400::o;29499:201::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;29599:9:::1;29595:98;29618:8;:15;29614:1;:19;29595:98;;;29676:5;29654:6;:19;29661:8;29670:1;29661:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29654:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29654:19:0;:27;;-1:-1:-1;;29654:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29635:3;::::1;::::0;::::1;:::i;:::-;;;;29595:98;;17190:166:::0;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;17280:11:::1;:16:::0;;;;17307:8:::1;:13:::0;17331:12:::1;:17:::0;17190:166::o;18693:184::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;18784:8:::1;::::0;-1:-1:-1;;;;;18784:21:0;;::::1;:8:::0;::::1;:21;;18776:53;;;::::0;-1:-1:-1;;;18776:53:0;;15105:2:1;18776:53:0::1;::::0;::::1;15087:21:1::0;15144:2;15124:18;;;15117:30;-1:-1:-1;;;15163:18:1;;;15156:49;15222:18;;18776:53:0::1;14903:343:1::0;18776:53:0::1;18840:8;:29:::0;;-1:-1:-1;;;;;;18840:29:0::1;-1:-1:-1::0;;;;;18840:29:0;;;::::1;::::0;;;::::1;::::0;;18693:184::o;29709:105::-;9200:6;;-1:-1:-1;;;;;9200:6:0;188:10;9200:22;9192:67;;;;-1:-1:-1;;;9192:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29783:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;29783:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29709:105::o;20761:353::-;-1:-1:-1;;;;;20856:20:0;;20848:76;;;;-1:-1:-1;;;20848:76:0;;15453:2:1;20848:76:0;;;15435:21:1;15492:2;15472:18;;;15465:30;15531:34;15511:18;;;15504:62;-1:-1:-1;;;15582:18:1;;;15575:41;15633:19;;20848:76:0;15251:407:1;20848:76:0;-1:-1:-1;;;;;20943:21:0;;20935:75;;;;-1:-1:-1;;;20935:75:0;;15865:2:1;20935:75:0;;;15847:21:1;15904:2;15884:18;;;15877:30;15943:34;15923:18;;;15916:62;-1:-1:-1;;;15994:18:1;;;15987:39;16043:19;;20935:75:0;15663:405:1;20935:75:0;-1:-1:-1;;;;;21023:16:0;;;;;;;:8;:16;;;;;;;;:25;;;;;;;;;;;;;:34;;;21073:33;;1852:25:1;;;21073:33:0;;1825:18:1;21073:33:0;;;;;;;20761:353;;;:::o;21122:1855::-;21201:4;-1:-1:-1;;;;;21226:18:0;;21218:75;;;;-1:-1:-1;;;21218:75:0;;16275:2:1;21218:75:0;;;16257:21:1;16314:2;16294:18;;;16287:30;16353:34;16333:18;;;16326:62;-1:-1:-1;;;16404:18:1;;;16397:42;16456:19;;21218:75:0;16073:408:1;21218:75:0;-1:-1:-1;;;;;21312:16:0;;21304:71;;;;-1:-1:-1;;;21304:71:0;;16688:2:1;21304:71:0;;;16670:21:1;16727:2;16707:18;;;16700:30;16766:34;16746:18;;;16739:62;-1:-1:-1;;;16817:18:1;;;16810:40;16867:19;;21304:71:0;16486:406:1;21304:71:0;21403:1;21394:6;:10;21386:71;;;;-1:-1:-1;;;21386:71:0;;17099:2:1;21386:71:0;;;17081:21:1;17138:2;17118:18;;;17111:30;17177:34;17157:18;;;17150:62;-1:-1:-1;;;17228:18:1;;;17221:46;17284:19;;21386:71:0;16897:412:1;21386:71:0;-1:-1:-1;;;;;21477:12:0;;;;;;:6;:12;;;;;;;;21476:13;:28;;;;-1:-1:-1;;;;;;21494:10:0;;;;;;:6;:10;;;;;;;;21493:11;21476:28;:51;;;;-1:-1:-1;21516:10:0;21509:18;;;;:6;:18;;;;;;;;21508:19;21476:51;21468:60;;;;;;21542:20;21553:4;21559:2;21542:10;:20::i;:::-;21539:775;;;21583:9;;;;21579:91;;21613:41;;-1:-1:-1;;;21613:41:0;;17516:2:1;21613:41:0;;;17498:21:1;17555:2;17535:18;;;17528:30;17594:33;17574:18;;;17567:61;17645:18;;21613:41:0;17314:355:1;21579:91:0;21688:15;;;;21684:355;;;-1:-1:-1;;;;;21728:13:0;;;;;;:7;:13;;;;;;;;21724:300;;;21790:16;:12;21805:1;21790:16;:::i;:::-;-1:-1:-1;;;;;21773:13:0;;;;;;:9;:13;;;;;;:33;;21765:42;;;;;;-1:-1:-1;;;;;21830:13:0;;;;;;:9;:13;;;;;21846:12;21830:28;;21724:300;;;21934:16;:12;21949:1;21934:16;:::i;:::-;-1:-1:-1;;;;;21915:15:0;;;;;;:9;:15;;;;;;:35;;21907:44;;;;;;-1:-1:-1;;;;;21974:15:0;;;;;;:9;:15;;;;;21992:12;21974:30;;21724:300;22071:7;;22061:6;:17;;22053:69;;;;-1:-1:-1;;;22053:69:0;;17876:2:1;22053:69:0;;;17858:21:1;17915:2;17895:18;;;17888:30;17954:34;17934:18;;;17927:62;-1:-1:-1;;;18005:18:1;;;17998:37;18052:19;;22053:69:0;17674:403:1;22053:69:0;22146:14;;-1:-1:-1;;;;;22140:20:0;;;22146:14;;22140:20;;;;:36;;-1:-1:-1;;;;;;22165:11:0;;;;;;:7;:11;;;;;;;;22164:12;22140:36;22137:166;;;22231:10;;22221:6;22205:13;22215:2;22205:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;22197:90;;;;-1:-1:-1;;;22197:90:0;;18284:2:1;22197:90:0;;;18266:21:1;18323:2;18303:18;;;18296:30;18362:34;18342:18;;;18335:62;-1:-1:-1;;;18413:18:1;;;18406:39;18462:19;;22197:90:0;18082:405:1;22197:90:0;-1:-1:-1;;;;;22357:22:0;;22324:12;22357:22;;;:16;:22;;;;;;22339:4;;22357:22;;;:46;;-1:-1:-1;;;;;;22383:20:0;;;;;;:16;:20;;;;;;;;22357:46;22354:92;;;-1:-1:-1;22429:5:0;22354:92;-1:-1:-1;;;;;22462:11:0;;;;;;:7;:11;;;;;;;;22458:457;;;22495:16;;-1:-1:-1;;;22495:16:0;;;;22494:17;:59;;;;-1:-1:-1;22532:21:0;;-1:-1:-1;;;22532:21:0;;;;22494:59;22490:408;;;22588:28;22619:24;22637:4;22619:9;:24::i;:::-;22588:55;;22690:13;;22666:20;:37;22662:221;;22755:10;;22731:20;:34;22728:77;;-1:-1:-1;22792:10:0;;22728:77;22827:36;22842:20;22827:14;:36::i;:::-;22569:329;22490:408;22933:36;22943:4;22949:2;22953:6;22961:7;22933:9;:36::i;:::-;22926:43;21122:1855;-1:-1:-1;;;;;21122:1855:0:o;28053:161::-;28095:7;28116:15;28133;28152:19;:17;:19::i;:::-;28115:56;;-1:-1:-1;28115:56:0;-1:-1:-1;28189:17:0;28115:56;;28189:17;:::i;:::-;28182:24;;;;28053:161;:::o;20203:281::-;20272:4;11760:6;;-1:-1:-1;;;;;20296:15:0;;;11760:6;;20296:15;;;;:33;;-1:-1:-1;11733:7:0;11760:6;-1:-1:-1;;;;;20316:13:0;;;11760:6;;20316:13;;20296:33;:50;;;;-1:-1:-1;;;;;;20334:12:0;;;;;;:8;:12;;;;;;;;20333:13;20296:50;:69;;;;-1:-1:-1;;;;;;20351:14:0;;;;;;:8;:14;;;;;;;;20350:15;20296:69;:83;;;;-1:-1:-1;20375:4:0;;-1:-1:-1;;;;;20369:10:0;;;20375:4;;20369:10;;20296:83;:103;;;;-1:-1:-1;;;;;;20383:16:0;;;;20296:103;:128;;;;-1:-1:-1;;;;;;20403:21:0;;20419:4;20403:21;;20296:128;:153;;;;-1:-1:-1;;;;;;20429:20:0;;;;;;:16;:20;;;;;;;;20428:21;20296:153;:180;;;;-1:-1:-1;;;;;;;;20454:22:0;;;;;:16;:22;;;;;;;;20453:23;;20203:281::o;22985:1515::-;9074:16;:23;;-1:-1:-1;;;;9074:23:0;-1:-1:-1;;;9074:23:0;;;23093:12:::1;::::0;23075:15:::1;::::0;:30:::1;::::0;23093:12;23075:30:::1;:::i;:::-;23071:61;;23125:7;;23071:61;23142:17;23242:1;23225:12;;23207:15;;:30;;;;:::i;:::-;23187:15;::::0;23164:38:::1;::::0;:20;:38:::1;:::i;:::-;23163:75;;;;:::i;:::-;23162:81;;;;:::i;:::-;23142:101:::0;-1:-1:-1;23256:20:0::1;23279:32;23142:101:::0;23279:20;:32:::1;:::i;:::-;23348:16;::::0;;23362:1:::1;23348:16:::0;;;;;::::1;::::0;;23256:55;;-1:-1:-1;23324:21:0::1;::::0;23348:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23348:16:0::1;23324:40;;23393:4;23375;23380:1;23375:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23375:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23419:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;23419:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;23375:7;;23419:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23409:4;23414:1;23409:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23409:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23448:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;23448:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;23523:12;;23448:9:::1;::::0;23566:4;;23593::::1;::::0;23613:15:::1;::::0;23448:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23654:24;23762:1;23745:12;;23727:15;;:30;;;;:::i;:::-;23707:15;::::0;23683:39:::1;::::0;:21:::1;:39;:::i;:::-;23682:76;;;;:::i;:::-;23681:82;;;;:::i;:::-;23654:109:::0;-1:-1:-1;23780:13:0;;23776:348:::1;;23810:9;::::0;23981:8:::1;::::0;23810:228:::1;::::0;-1:-1:-1;;;23810:228:0;;23887:4:::1;23810:228;::::0;::::1;19826:34:1::0;19876:18;;;19869:34;;;23810:9:0::1;19919:18:1::0;;;19912:34;;;19962:18;;;19955:34;-1:-1:-1;;;;;23981:8:0;;::::1;20005:19:1::0;;;19998:44;24008:15:0::1;20058:19:1::0;;;20051:35;23810:9:0;::::1;::::0;:25:::1;::::0;23843:16;;19760:19:1;;23810:228:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24058:54:0::1;::::0;;20610:25:1;;;20666:2;20651:18;;20644:34;;;20694:18;;;20687:34;;;24058:54:0::1;::::0;-1:-1:-1;20598:2:1;20583:18;24058:54:0::1;;;;;;;23776:348;24173:1;24138:32;24161:9:::0;24138:20;:32:::1;:::i;:::-;:36;24134:359;;;24306:11;::::0;24291:12:::1;::::0;24218:21:::1;::::0;24193::::1;::::0;24276:28:::1;::::0;24218:21;24276:28:::1;:::i;:::-;:42;;;;:::i;:::-;24255:63;;24333:15;24381:8;;24366:12;;24351:13;:28;;;;:::i;:::-;:39;;;;:::i;:::-;24392:8;::::0;:26:::1;::::0;24333:57;;-1:-1:-1;;;;;;24392:8:0::1;::::0;:26;::::1;;;::::0;24333:57;;24392:8:::1;:26:::0;:8;:26;24333:57;24392:8;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24434:13:0::1;::::0;:34:::1;::::0;-1:-1:-1;;;;;24434:13:0;;::::1;::::0;:34;::::1;;;::::0;24457:10;;24434:13:::1;:34:::0;:13;:34;24457:10;24434:13;:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24176:317;;;24134:359;23060:1440;;;;9108:1;-1:-1:-1::0;9120:16:0;:24;;-1:-1:-1;;;;9120:24:0;;;22985:1515::o;25438:1258::-;25558:16;;25532:4;;25558:16;;;;;25553:237;;25595:28;25614:4;25620:2;25595:18;:28::i;:::-;25647:16;;;;;;;25646:17;:41;;;;;25667:20;25678:4;25684:2;25667:10;:20::i;:::-;25642:137;;;25712:47;;-1:-1:-1;;;25712:47:0;;20934:2:1;25712:47:0;;;20916:21:1;20973:2;20953:18;;;20946:30;21012:34;20992:18;;;20985:62;-1:-1:-1;;;21063:18:1;;;21056:35;21108:19;;25712:47:0;20732:401:1;25642:137:0;25810:25;25838:38;25849:4;25855:2;25859:7;25868;25838:10;:38::i;:::-;25921:14;;;;-1:-1:-1;;;;;25905:13:0;;;;;;:7;:13;;;;;;25810:66;;-1:-1:-1;25905:30:0;;;:::i;:::-;-1:-1:-1;;;;;25889:13:0;;;;;;;:7;:13;;;;;;:46;;;;25974:22;;;;25960:11;;;;;;;;;;:36;;25974:22;25960:36;:::i;:::-;-1:-1:-1;;;;;25946:11:0;;;;;;;:7;:11;;;;;;;;:50;;;;26013:15;;;;;:9;:15;;;;;;;:33;;;;-1:-1:-1;;;;;;26033:13:0;;;;;;:9;:13;;;;;;;;26032:14;26013:33;26009:404;;;-1:-1:-1;;;;;26079:13:0;;;;;;:7;:13;;;;;;:23;;26095:7;;26079:23;:::i;:::-;-1:-1:-1;;;;;26063:13:0;;;;;;:7;:13;;;;;:39;26009:404;;;-1:-1:-1;;;;;26125:15:0;;;;;;:9;:15;;;;;;;;26124:16;:33;;;;-1:-1:-1;;;;;;26144:13:0;;;;;;:9;:13;;;;;;;;26124:33;26120:293;;;26202:22;;-1:-1:-1;;;;;26188:11:0;;26202:22;26188:11;;;:7;:11;;;;;;:36;;26202:22;26188:36;:::i;:::-;-1:-1:-1;;;;;26174:11:0;;;;;;:7;:11;;;;;:50;26120:293;;;-1:-1:-1;;;;;26248:15:0;;;;;;:9;:15;;;;;;;;:32;;;;-1:-1:-1;;;;;;26267:13:0;;;;;;:9;:13;;;;;;;;26248:32;26244:169;;;-1:-1:-1;;;;;26313:13:0;;;;;;:7;:13;;;;;;:23;;26329:7;;26313:23;:::i;:::-;-1:-1:-1;;;;;26297:13:0;;;;;;;:7;:13;;;;;;:39;;;;26379:22;;26365:11;;;;;;;;;;:36;;26379:22;26365:36;:::i;:::-;-1:-1:-1;;;;;26351:11:0;;;;;;:7;:11;;;;;:50;26244:169;26429:17;;;;:21;26425:79;;26465:39;26480:4;26486:6;:17;;;26465:14;:39::i;:::-;26533:1;26519:6;:11;;;:15;:34;;;;26552:1;26538:6;:11;;;:15;26519:34;26515:91;;;26568:38;26581:6;:11;;;26594:6;:11;;;26568:12;:38::i;:::-;26639:2;-1:-1:-1;;;;;26624:42:0;26633:4;-1:-1:-1;;;;;26624:42:0;;26643:6;:22;;;26624:42;;;;1852:25:1;;1840:2;1825:18;;1706:177;26624:42:0;;;;;;;;-1:-1:-1;26684:4:0;;25438:1258;-1:-1:-1;;;;;25438:1258:0:o;28222:547::-;28320:7;;28356;;28273;;;;;28374:283;28398:9;:16;28394:20;;28374:283;;;28464:7;28440;:21;28448:9;28458:1;28448:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28448:12:0;28440:21;;;;;;;;;;;;;:31;;:66;;;28499:7;28475;:21;28483:9;28493:1;28483:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28483:12:0;28475:21;;;;;;;;;;;;;:31;28440:66;28436:97;;;28516:7;;28525;;28508:25;;;;;;;28222:547;;:::o;28436:97::-;28568:7;:21;28576:9;28586:1;28576:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28576:12:0;28568:21;;;;;;;;;;;;;28558:31;;:7;:31;:::i;:::-;28548:41;;28624:7;:21;28632:9;28642:1;28632:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28632:12:0;28624:21;;;;;;;;;;;;;28614:31;;:7;:31;:::i;:::-;28604:41;-1:-1:-1;28416:3:0;;;;:::i;:::-;;;;28374:283;;;;28691:7;;28681;;:17;;;;:::i;:::-;28671:7;:27;28667:58;;;28708:7;;28717;;28700:25;;;;;;28222:547;;:::o;28667:58::-;28744:7;;28753;;-1:-1:-1;28222:547:0;-1:-1:-1;28222:547:0:o;24516:422::-;24599:16;;;;;;;24598:17;24590:57;;;;-1:-1:-1;;;24590:57:0;;21340:2:1;24590:57:0;;;21322:21:1;21379:2;21359:18;;;21352:30;21418:29;21398:18;;;21391:57;21465:18;;24590:57:0;21138:351:1;24590:57:0;24663:20;24674:4;24680:2;24663:10;:20::i;:::-;24662:21;:37;;;;-1:-1:-1;24693:6:0;;-1:-1:-1;;;;;24687:12:0;;;24693:6;;24687:12;24662:37;24658:273;;;-1:-1:-1;;;;;24716:14:0;;;;;;:8;:14;;;;;;;:21;;-1:-1:-1;;24716:21:0;24733:4;24716:21;;;;;;24752:16;:23;;-1:-1:-1;;24752:23:0;24716:21;24752:23;;;24805:15;24790:12;:30;24837:21;:28;;-1:-1:-1;;;;24837:28:0;-1:-1:-1;;;24837:28:0;;;24885:34;;;;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;;1514:187;24885:34:0;;;;;;;;24516:422;;:::o;26704:1341::-;26799:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26799:18:0;26830:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26830:25:0;26866:19;26888:10;:8;:10::i;:::-;26866:32;-1:-1:-1;26928:21:0;26866:32;26928:7;:21;:::i;:::-;26911:14;;;:38;26962:948;;;;-1:-1:-1;;;;;26993:11:0;;;;;;:7;:11;;;;;;;;26989:455;;;27037:11;;27025:9;:23;27074:8;;27067:4;:15;27111:11;;27101:7;:21;26989:455;;;-1:-1:-1;;;;;27148:13:0;;;;;;:7;:13;;;;;;;;27144:300;;;27194:10;;27182:9;:22;27230:7;;27223:4;:14;27266:10;;27256:7;:20;27144:300;;;27329:17;;27317:9;:29;27372:12;;27365:4;:19;27413:15;;27403:7;:25;27144:300;27498:16;;27485:9;;27475:19;;:7;:19;:::i;:::-;27474:40;;;;:::i;:::-;27460:11;;;:54;27580:16;;27568:7;;27561:4;;:14;;27568:7;27561:14;:::i;:::-;27550:26;;:7;:26;:::i;:::-;27549:47;;;;:::i;:::-;27529:17;;;:67;;;27647:11;;;;:31;;27529:67;27647:31;:::i;:::-;27636:43;;:7;:43;:::i;:::-;27611:68;;27710:11;;;;:25;;27724:11;;27710:25;:::i;:::-;27696:11;;;:39;26962:948;;;27782:1;27768:11;;;:15;;;27798:17;;;:21;;;27834:32;;;27883:11;;;:15;26962:948;28000:11;27980:6;:17;;;:31;;;;:::i;:::-;27965:6;:11;;;:47;;;;:::i;:::-;27947:6;:14;;;:66;;;;:::i;:::-;27922:22;;;:91;-1:-1:-1;27922:22:0;26704:1341;-1:-1:-1;;;;;26704:1341:0:o;29070:421::-;29150:19;29173:10;:8;:10::i;:::-;29150:33;-1:-1:-1;29194:18:0;29215:24;29150:33;29215:10;:24;:::i;:::-;29291:4;29275:22;;;;:7;:22;;;;;;29194:45;;-1:-1:-1;29275:35:0;;29194:45;;29275:35;:::i;:::-;29266:4;29250:22;;;;:7;:22;;;;;;;;:60;;;;29324:9;:24;;;;;;29321:102;;;29404:4;29388:22;;;;:7;:22;;;;;;:35;;29413:10;;29388:35;:::i;:::-;29379:4;29363:22;;;;:7;:22;;;;;:60;29321:102;29439:43;;1852:25:1;;;29464:4:0;;-1:-1:-1;;;;;29439:43:0;;;;;1840:2:1;1825:18;29439:43:0;;;;;;;29139:352;;29070:421;;:::o;28781:143::-;28871:4;28861:7;;:14;;;;:::i;:::-;28851:7;:24;28899:10;;:17;;28912:4;;28899:17;:::i;:::-;28886:10;:30;-1:-1:-1;;28781:143:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;222:597:1;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;1058:131::-;-1:-1:-1;;;;;1133:31:1;;1123:42;;1113:70;;1179:1;1176;1169:12;1194:315;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1378:9;1365:23;1397:31;1422:5;1397:31;:::i;:::-;1447:5;1499:2;1484:18;;;;1471:32;;-1:-1:-1;;;1194:315:1:o;1888:456::-;1965:6;1973;1981;2034:2;2022:9;2013:7;2009:23;2005:32;2002:52;;;2050:1;2047;2040:12;2002:52;2089:9;2076:23;2108:31;2133:5;2108:31;:::i;:::-;2158:5;-1:-1:-1;2215:2:1;2200:18;;2187:32;2228:33;2187:32;2228:33;:::i;:::-;1888:456;;2280:7;;-1:-1:-1;;;2334:2:1;2319:18;;;;2306:32;;1888:456::o;2349:180::-;2408:6;2461:2;2449:9;2440:7;2436:23;2432:32;2429:52;;;2477:1;2474;2467:12;2429:52;-1:-1:-1;2500:23:1;;2349:180;-1:-1:-1;2349:180:1:o;2723:248::-;2791:6;2799;2852:2;2840:9;2831:7;2827:23;2823:32;2820:52;;;2868:1;2865;2858:12;2820:52;-1:-1:-1;;2891:23:1;;;2961:2;2946:18;;;2933:32;;-1:-1:-1;2723:248:1:o;2976:247::-;3035:6;3088:2;3076:9;3067:7;3063:23;3059:32;3056:52;;;3104:1;3101;3094:12;3056:52;3143:9;3130:23;3162:31;3187:5;3162:31;:::i;3228:160::-;3293:20;;3349:13;;3342:21;3332:32;;3322:60;;3378:1;3375;3368:12;3322:60;3228:160;;;:::o;3393:315::-;3458:6;3466;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;3574:9;3561:23;3593:31;3618:5;3593:31;:::i;:::-;3643:5;-1:-1:-1;3667:35:1;3698:2;3683:18;;3667:35;:::i;:::-;3657:45;;3393:315;;;;;:::o;3713:316::-;3790:6;3798;3806;3859:2;3847:9;3838:7;3834:23;3830:32;3827:52;;;3875:1;3872;3865:12;3827:52;-1:-1:-1;;3898:23:1;;;3968:2;3953:18;;3940:32;;-1:-1:-1;4019:2:1;4004:18;;;3991:32;;3713:316;-1:-1:-1;3713:316:1:o;4034:127::-;4095:10;4090:3;4086:20;4083:1;4076:31;4126:4;4123:1;4116:15;4150:4;4147:1;4140:15;4166:275;4237:2;4231:9;4302:2;4283:13;;-1:-1:-1;;4279:27:1;4267:40;;4337:18;4322:34;;4358:22;;;4319:62;4316:88;;;4384:18;;:::i;:::-;4420:2;4413:22;4166:275;;-1:-1:-1;4166:275:1:o;4446:531::-;4489:5;4542:3;4535:4;4527:6;4523:17;4519:27;4509:55;;4560:1;4557;4550:12;4509:55;4596:6;4583:20;4622:18;4618:2;4615:26;4612:52;;;4644:18;;:::i;:::-;4688:55;4731:2;4712:13;;-1:-1:-1;;4708:27:1;4737:4;4704:38;4688:55;:::i;:::-;4768:2;4759:7;4752:19;4814:3;4807:4;4802:2;4794:6;4790:15;4786:26;4783:35;4780:55;;;4831:1;4828;4821:12;4780:55;4896:2;4889:4;4881:6;4877:17;4870:4;4861:7;4857:18;4844:55;4944:1;4919:16;;;4937:4;4915:27;4908:38;;;;4923:7;4446:531;-1:-1:-1;;;4446:531:1:o;4982:836::-;5104:6;5112;5120;5128;5181:3;5169:9;5160:7;5156:23;5152:33;5149:53;;;5198:1;5195;5188:12;5149:53;5237:9;5224:23;5256:31;5281:5;5256:31;:::i;:::-;5306:5;-1:-1:-1;5363:2:1;5348:18;;5335:32;5376:33;5335:32;5376:33;:::i;:::-;5428:7;-1:-1:-1;5486:2:1;5471:18;;5458:32;5509:18;5539:14;;;5536:34;;;5566:1;5563;5556:12;5536:34;5589:50;5631:7;5622:6;5611:9;5607:22;5589:50;:::i;:::-;5579:60;;5692:2;5681:9;5677:18;5664:32;5648:48;;5721:2;5711:8;5708:16;5705:36;;;5737:1;5734;5727:12;5705:36;;5760:52;5804:7;5793:8;5782:9;5778:24;5760:52;:::i;:::-;5750:62;;;4982:836;;;;;;;:::o;5823:180::-;5879:6;5932:2;5920:9;5911:7;5907:23;5903:32;5900:52;;;5948:1;5945;5938:12;5900:52;5971:26;5987:9;5971:26;:::i;6268:388::-;6336:6;6344;6397:2;6385:9;6376:7;6372:23;6368:32;6365:52;;;6413:1;6410;6403:12;6365:52;6452:9;6439:23;6471:31;6496:5;6471:31;:::i;:::-;6521:5;-1:-1:-1;6578:2:1;6563:18;;6550:32;6591:33;6550:32;6591:33;:::i;:::-;6643:7;6633:17;;;6268:388;;;;;:::o;6661:385::-;6747:6;6755;6763;6771;6824:3;6812:9;6803:7;6799:23;6795:33;6792:53;;;6841:1;6838;6831:12;6792:53;-1:-1:-1;;6864:23:1;;;6934:2;6919:18;;6906:32;;-1:-1:-1;6985:2:1;6970:18;;6957:32;;7036:2;7021:18;7008:32;;-1:-1:-1;6661:385:1;-1:-1:-1;6661:385:1:o;7051:1091::-;7141:6;7149;7202:2;7190:9;7181:7;7177:23;7173:32;7170:52;;;7218:1;7215;7208:12;7170:52;7258:9;7245:23;7287:18;7328:2;7320:6;7317:14;7314:34;;;7344:1;7341;7334:12;7314:34;7382:6;7371:9;7367:22;7357:32;;7427:7;7420:4;7416:2;7412:13;7408:27;7398:55;;7449:1;7446;7439:12;7398:55;7485:2;7472:16;7507:4;7530:2;7526;7523:10;7520:36;;;7536:18;;:::i;:::-;7582:2;7579:1;7575:10;7565:20;;7605:28;7629:2;7625;7621:11;7605:28;:::i;:::-;7667:15;;;7737:11;;;7733:20;;;7698:12;;;;7765:19;;;7762:39;;;7797:1;7794;7787:12;7762:39;7821:11;;;;7841:217;7857:6;7852:3;7849:15;7841:217;;;7937:3;7924:17;7911:30;;7954:31;7979:5;7954:31;:::i;:::-;7998:18;;;7874:12;;;;8036;;;;7841:217;;;8077:5;-1:-1:-1;8101:35:1;;-1:-1:-1;8117:18:1;;;8101:35;:::i;:::-;8091:45;;;;;;7051:1091;;;;;:::o;8147:380::-;8226:1;8222:12;;;;8269;;;8290:61;;8344:4;8336:6;8332:17;8322:27;;8290:61;8397:2;8389:6;8386:14;8366:18;8363:38;8360:161;;;8443:10;8438:3;8434:20;8431:1;8424:31;8478:4;8475:1;8468:15;8506:4;8503:1;8496:15;8360:161;;8147:380;;;:::o;8532:127::-;8593:10;8588:3;8584:20;8581:1;8574:31;8624:4;8621:1;8614:15;8648:4;8645:1;8638:15;8664:125;8704:4;8732:1;8729;8726:8;8723:34;;;8737:18;;:::i;:::-;-1:-1:-1;8774:9:1;;8664:125::o;9212:127::-;9273:10;9268:3;9264:20;9261:1;9254:31;9304:4;9301:1;9294:15;9328:4;9325:1;9318:15;9344:120;9384:1;9410;9400:35;;9415:18;;:::i;:::-;-1:-1:-1;9449:9:1;;9344:120::o;9469:128::-;9509:3;9540:1;9536:6;9533:1;9530:13;9527:39;;;9546:18;;:::i;:::-;-1:-1:-1;9582:9:1;;9469:128::o;9602:356::-;9804:2;9786:21;;;9823:18;;;9816:30;9882:34;9877:2;9862:18;;9855:62;9949:2;9934:18;;9602:356::o;9963:168::-;10003:7;10069:1;10065;10061:6;10057:14;10054:1;10051:21;10046:1;10039:9;10032:17;10028:45;10025:71;;;10076:18;;:::i;:::-;-1:-1:-1;10116:9:1;;9963:168::o;10136:399::-;10338:2;10320:21;;;10377:2;10357:18;;;10350:30;10416:34;10411:2;10396:18;;10389:62;-1:-1:-1;;;10482:2:1;10467:18;;10460:33;10525:3;10510:19;;10136:399::o;10540:425::-;10742:2;10724:21;;;10781:2;10761:18;;;10754:30;10820:34;10815:2;10800:18;;10793:62;10891:31;10886:2;10871:18;;10864:59;10955:3;10940:19;;10540:425::o;11684:127::-;11745:10;11740:3;11736:20;11733:1;11726:31;11776:4;11773:1;11766:15;11800:4;11797:1;11790:15;11816:127;11877:10;11872:3;11868:20;11865:1;11858:31;11908:4;11905:1;11898:15;11932:4;11929:1;11922:15;11948:135;11987:3;-1:-1:-1;;12008:17:1;;12005:43;;;12028:18;;:::i;:::-;-1:-1:-1;12075:1:1;12064:13;;11948:135::o;12491:422::-;12580:1;12623:5;12580:1;12637:270;12658:7;12648:8;12645:21;12637:270;;;12717:4;12713:1;12709:6;12705:17;12699:4;12696:27;12693:53;;;12726:18;;:::i;:::-;12776:7;12766:8;12762:22;12759:55;;;12796:16;;;;12759:55;12875:22;;;;12835:15;;;;12637:270;;;12641:3;12491:422;;;;;:::o;12918:806::-;12967:5;12997:8;12987:80;;-1:-1:-1;13038:1:1;13052:5;;12987:80;13086:4;13076:76;;-1:-1:-1;13123:1:1;13137:5;;13076:76;13168:4;13186:1;13181:59;;;;13254:1;13249:130;;;;13161:218;;13181:59;13211:1;13202:10;;13225:5;;;13249:130;13286:3;13276:8;13273:17;13270:43;;;13293:18;;:::i;:::-;-1:-1:-1;;13349:1:1;13335:16;;13364:5;;13161:218;;13463:2;13453:8;13450:16;13444:3;13438:4;13435:13;13431:36;13425:2;13415:8;13412:16;13407:2;13401:4;13398:12;13394:35;13391:77;13388:159;;;-1:-1:-1;13500:19:1;;;13532:5;;13388:159;13579:34;13604:8;13598:4;13579:34;:::i;:::-;13649:6;13645:1;13641:6;13637:19;13628:7;13625:32;13622:58;;;13660:18;;:::i;:::-;13698:20;;12918:806;-1:-1:-1;;;12918:806:1:o;13729:131::-;13789:5;13818:36;13845:8;13839:4;13818:36;:::i;13865:112::-;13897:1;13923;13913:35;;13928:18;;:::i;:::-;-1:-1:-1;13962:9:1;;13865:112::o;13982:251::-;14052:6;14105:2;14093:9;14084:7;14080:23;14076:32;14073:52;;;14121:1;14118;14111:12;14073:52;14153:9;14147:16;14172:31;14197:5;14172:31;:::i;18492:980::-;18754:4;18802:3;18791:9;18787:19;18833:6;18822:9;18815:25;18859:2;18897:6;18892:2;18881:9;18877:18;18870:34;18940:3;18935:2;18924:9;18920:18;18913:31;18964:6;18999;18993:13;19030:6;19022;19015:22;19068:3;19057:9;19053:19;19046:26;;19107:2;19099:6;19095:15;19081:29;;19128:1;19138:195;19152:6;19149:1;19146:13;19138:195;;;19217:13;;-1:-1:-1;;;;;19213:39:1;19201:52;;19308:15;;;;19273:12;;;;19249:1;19167:9;19138:195;;;-1:-1:-1;;;;;;;19389:32:1;;;;19384:2;19369:18;;19362:60;-1:-1:-1;;;19453:3:1;19438:19;19431:35;19350:3;18492:980;-1:-1:-1;;;18492:980:1:o;20097:306::-;20185:6;20193;20201;20254:2;20242:9;20233:7;20229:23;20225:32;20222:52;;;20270:1;20267;20260:12;20222:52;20299:9;20293:16;20283:26;;20349:2;20338:9;20334:18;20328:25;20318:35;;20393:2;20382:9;20378:18;20372:25;20362:35;;20097:306;;;;;:::o

Swarm Source

ipfs://bf4c6e8e6b1d9b67c01ee6ce4ac9265eb262758bd7878e6be1b57a2ed3d7e3d1

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.