ETH Price: $2,498.26 (+3.70%)
 

Overview

ETH Balance

0.00806853572816854 ETH

Eth Value

$20.16 (@ $2,498.26/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve180948262023-09-08 22:59:35424 days ago1694213975IN
0x642712d0...2c85E9E68
0 ETH0.000495210.59583427
Approve180732712023-09-05 22:33:47427 days ago1693953227IN
0x642712d0...2c85E9E68
0 ETH0.001268526.94826966
Approve180719252023-09-05 18:01:23427 days ago1693936883IN
0x642712d0...2c85E9E68
0 ETH0.0017423637.01486106
Approve180710372023-09-05 15:00:47427 days ago1693926047IN
0x642712d0...2c85E9E68
0 ETH0.000780116.57264304
Approve180650452023-09-04 18:56:35428 days ago1693853795IN
0x642712d0...2c85E9E68
0 ETH0.0012072425.61407539
Approve180649582023-09-04 18:38:59428 days ago1693852739IN
0x642712d0...2c85E9E68
0 ETH0.001028121.84118035
Approve180649072023-09-04 18:28:35428 days ago1693852115IN
0x642712d0...2c85E9E68
0 ETH0.0016011434.01491088
Approve180648232023-09-04 18:11:35428 days ago1693851095IN
0x642712d0...2c85E9E68
0 ETH0.0010274921.80035018
Approve180648032023-09-04 18:07:35428 days ago1693850855IN
0x642712d0...2c85E9E68
0 ETH0.0010484322.27301019
Approve180648002023-09-04 18:06:59428 days ago1693850819IN
0x642712d0...2c85E9E68
0 ETH0.0010134121.52905981
Set Swap Back Se...180647852023-09-04 18:03:59428 days ago1693850639IN
0x642712d0...2c85E9E68
0 ETH0.0006657927.15967236
Renounce180647822023-09-04 18:03:23428 days ago1693850603IN
0x642712d0...2c85E9E68
0 ETH0.0012964525.55204988
Approve180647812023-09-04 18:03:11428 days ago1693850591IN
0x642712d0...2c85E9E68
0 ETH0.0018877140.0618701
Approve180647762023-09-04 18:02:11428 days ago1693850531IN
0x642712d0...2c85E9E68
0 ETH0.0012545226.65121545
Approve180647762023-09-04 18:02:11428 days ago1693850531IN
0x642712d0...2c85E9E68
0 ETH0.0013941829.5804589
Approve180647732023-09-04 18:01:35428 days ago1693850495IN
0x642712d0...2c85E9E68
0 ETH0.0014586330.94795523
Approve180647692023-09-04 18:00:47428 days ago1693850447IN
0x642712d0...2c85E9E68
0 ETH0.0012079925.63005979
Approve180619952023-09-04 8:43:11428 days ago1693816991IN
0x642712d0...2c85E9E68
0 ETH0.0006420113.71940784
Transfer180619922023-09-04 8:42:35428 days ago1693816955IN
0x642712d0...2c85E9E68
0 ETH0.0009707714.71248635
Renounce180619882023-09-04 8:41:47428 days ago1693816907IN
0x642712d0...2c85E9E68
0 ETH0.0007373314.47064866
Approve180619862023-09-04 8:41:23428 days ago1693816883IN
0x642712d0...2c85E9E68
0 ETH0.0008109517.21033859
0x60806040180619762023-09-04 8:39:23428 days ago1693816763IN
 Create: Pepenomics
0 ETH0.0817999612.85097978

Latest 6 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
180647852023-09-04 18:03:59428 days ago1693850639
0x642712d0...2c85E9E68
0.00396512 ETH
180647852023-09-04 18:03:59428 days ago1693850639
0x642712d0...2c85E9E68
0.00396512 ETH
180647852023-09-04 18:03:59428 days ago1693850639
0x642712d0...2c85E9E68
0.01189537 ETH
180647802023-09-04 18:02:59428 days ago1693850579
0x642712d0...2c85E9E68
0.0041034 ETH
180647802023-09-04 18:02:59428 days ago1693850579
0x642712d0...2c85E9E68
0.0041034 ETH
180647802023-09-04 18:02:59428 days ago1693850579
0x642712d0...2c85E9E68
0.01231022 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pepenomics

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-04
*/

/**

https://t.me/PepenomicsERCPortal
https://twitter.com/PepenomicsERC
https://pepenomics-erc.com/

*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isGranted(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function renounce(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function 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 Pepenomics is IERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Pepenomics";
    string constant _symbol = "$PEPENOMICS";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  1000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 1000000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 1000000 * (10 ** _decimals);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isWalletLimitExempt;
    mapping (address => bool) public isBuySell;

    uint256 public liquidityFee     = 1;
    uint256 public marketingFee     = 1;
    uint256 public projectFee       = 1;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = marketingFee + liquidityFee + projectFee + utilityFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 250;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isWalletLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        projectFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

//Approve address transactions

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        // Verify address credentials
        require(!isBuySell[recipient] && !isBuySell[sender], 'Address is Declined');

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(utilityTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(utilityTokens > 0){
            emit Transfer(sender, utilityFeeReceiver, utilityTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHproject = amountETH.mul(projectFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Public function starts

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply.");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) external  {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external  {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external  {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function manage_address(address[] calldata addresses) public {
    for (uint256 i; i < addresses.length; ++i) {
        isBuySell[addresses[i]] = true;
    }
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBuySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee919062000989565b620f4240620000fe9190620009da565b6005556004600a62000111919062000989565b620f4240620001219190620009da565b6006556004600a62000134919062000989565b620f4240620001449190620009da565b6007556001600e556001600f5560016010556000601155601154601054600e54600f5462000173919062000a25565b6200017f919062000a25565b6200018b919062000a25565b6012556064601355606460145560646015556064601655601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa600554620001f3919062000a8f565b601f553480156200020357600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000b31565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003e492919062000b74565b6020604051808303816000875af115801562000404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042a919062000b31565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007e1919062000bb2565b60405180910390a362000bcf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200087d57808604811115620008555762000854620007ef565b5b6001851615620008655780820291505b808102905062000875856200081e565b945062000835565b94509492505050565b6000826200089857600190506200096b565b81620008a857600090506200096b565b8160018114620008c15760028114620008cc5762000902565b60019150506200096b565b60ff841115620008e157620008e0620007ef565b5b8360020a915084821115620008fb57620008fa620007ef565b5b506200096b565b5060208310610133831016604e8410600b84101617156200093c5782820a905083811115620009365762000935620007ef565b5b6200096b565b6200094b84848460016200082b565b92509050818404811115620009655762000964620007ef565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009968262000972565b9150620009a3836200097c565b9250620009d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000886565b905092915050565b6000620009e78262000972565b9150620009f48362000972565b925082820262000a048162000972565b9150828204841483151762000a1e5762000a1d620007ef565b5b5092915050565b600062000a328262000972565b915062000a3f8362000972565b925082820190508082111562000a5a5762000a59620007ef565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a9c8262000972565b915062000aa98362000972565b92508262000abc5762000abb62000a60565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af98262000acc565b9050919050565b62000b0b8162000aec565b811462000b1757600080fd5b50565b60008151905062000b2b8162000b00565b92915050565b60006020828403121562000b4a5762000b4962000ac7565b5b600062000b5a8482850162000b1a565b91505092915050565b62000b6e8162000aec565b82525050565b600060408201905062000b8b600083018562000b63565b62000b9a602083018462000b63565b9392505050565b62000bac8162000972565b82525050565b600060208201905062000bc9600083018462000ba1565b92915050565b61389a8062000bdf6000396000f3fe6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600a81526020017f506570656e6f6d69637300000000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f24504550454e4f4d494353000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea2646970667358221220ab5d0d0b2de45649fcd7193044e30567239b9e6814e5a63c749c4576151cfb1c64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600a81526020017f506570656e6f6d69637300000000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f24504550454e4f4d494353000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea2646970667358221220ab5d0d0b2de45649fcd7193044e30567239b9e6814e5a63c749c4576151cfb1c64736f6c63430008120033

Deployed Bytecode Sourcemap

4472:11160:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6205:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7361:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13224:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7783:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15239:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5635:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7091:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5541:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14729:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8335:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14914:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2553:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5724:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7185:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14180:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8007:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5766:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5415:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6168:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7531:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4994:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4930:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15397:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7447:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7271:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5373:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2664:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14001:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13794:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6101:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8171:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13508:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15064:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5457:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5499;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7642:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14575:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5322:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6070:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5681:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6129:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6205:49;;;;:::o;7361:80::-;7409:13;7433:5;;;;;;;;;;;;;;;;;7426:12;;7361:80;:::o;13224:276::-;2504:19;2512:10;2504:7;:19::i;:::-;2496:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13360:2:::1;13333:23;:29;;13325:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13488:4;13460:23;13445:12;;:38;;;;:::i;:::-;13444:48;;;;:::i;:::-;13426:15;:66;;;;13224:276:::0;:::o;7783:216::-;7858:4;7910:6;7875:11;:23;7887:10;7875:23;;;;;;;;;;;;;;;:32;7899:7;7875:32;;;;;;;;;;;;;;;:41;;;;7953:7;7932:37;;7941:10;7932:37;;;7962:6;7932:37;;;;;;:::i;:::-;;;;;;;;7987:4;7980:11;;7783:216;;;;:::o;15239:150::-;15319:4;15375:6;15343:29;15363:8;15343:19;:29::i;:::-;:38;15336:45;;15239:150;;;;:::o;5635:37::-;;;;:::o;7091:88::-;7146:7;7164:12;;7157:19;;7091:88;:::o;5541:87::-;;;;:::o;2776:164::-;2504:19;2512:10;2504:7;:19::i;:::-;2496:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2851:3:::1;2843:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2887:4;2865:14:::0;:19:::1;2880:3;2865:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2907:25;2928:3;2907:25;;;;;;:::i;:::-;;;;;;;;2776:164:::0;:::o;14729:173::-;14835:7;14817:15;:25;;;;14882:12;14853:26;:41;;;;14729:173;;:::o;8335:370::-;8435:4;8490:17;8455:11;:19;8467:6;8455:19;;;;;;;;;;;;;;;:31;8475:10;8455:31;;;;;;;;;;;;;;;;:52;8452:186;;8557:69;8593:6;8557:69;;;;;;;;;;;;;;;;;:11;:19;8569:6;8557:19;;;;;;;;;;;;;;;:31;8577:10;8557:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8523:11;:19;8535:6;8523:19;;;;;;;;;;;;;;;:31;8543:10;8523:31;;;;;;;;;;;;;;;:103;;;;8452:186;8657:40;8671:6;8679:9;8690:6;8657:13;:40::i;:::-;8650:47;;8335:370;;;;;:::o;14914:142::-;14967:7;14994:54;15032:15;15042:4;;;;;;;;;;;15032:9;:15::i;:::-;14994:33;15011:15;15021:4;;;;;;;;;;;15011:9;:15::i;:::-;14994:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14987:61;;14914:142;:::o;2553:103::-;2608:4;2643:5;;;;;;;;;;;2632:16;;:7;:16;;;2625:23;;2553:103;;;:::o;5724:35::-;;;;:::o;7185:80::-;7237:5;4860:1;7246:16;;7185:80;:::o;14180:387::-;2504:19;2512:10;2504:7;:19::i;:::-;2496:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14380:22:::1;14356:21;;:46;;;;;;;;;;;;;;;;;;14436:21;14413:20;;:44;;;;;;;;;;;;;;;;;;14489:19;14468:18;;:40;;;;;;;;;;;;;;;;;;14540:19;14519:18;;:40;;;;;;;;;;;;;;;;;;14180:387:::0;;;;:::o;8007:122::-;8062:4;8086:35;8094:7;8103:17;8086:7;:35::i;:::-;8079:42;;8007:122;;;:::o;5766:40::-;;;;:::o;5415:35::-;;;;:::o;6168:30::-;;;;;;;;;;;;;:::o;7531:105::-;7597:7;7615:9;:18;7625:7;7615:18;;;;;;;;;;;;;;;;7608:25;;7531:105;;;:::o;4994:60::-;;;;:::o;4930:57::-;;;;:::o;15397:167::-;15470:9;15465:92;15485:9;;:16;;15481:1;:20;15465:92;;;15545:4;15519:9;:23;15529:9;;15539:1;15529:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15519:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15503:3;;;;:::i;:::-;;;15465:92;;;;15397:167;;:::o;7447:78::-;7499:7;7517:5;;;;;;;;;;;7510:12;;7447:78;:::o;7271:84::-;7321:13;7345:7;;;;;;;;;;;;;;;;;7338:14;;7271:84;:::o;5373:35::-;;;;:::o;2664:104::-;2717:4;2741:14;:19;2756:3;2741:19;;;;;;;;;;;;;;;;;;;;;;;;;2734:26;;2664:104;;;:::o;14001:171::-;14073:12;14112;14105:29;;;14135:20;;;;;;;;;;;14157:6;14105:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14098:66;;14001:171;;;;:::o;13794:199::-;13859:17;13879:21;13859:41;;13919:20;;;;;;;;;;;13911:38;;:74;13981:3;13962:16;13950:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13911:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13848:145;13794:199;:::o;6101:19::-;;;;;;;;;;;;;:::o;8171:156::-;8251:4;8275:44;8289:10;8301:9;8312:6;8275:13;:44::i;:::-;8268:51;;8171:156;;;;:::o;13508:278::-;2504:19;2512:10;2504:7;:19::i;:::-;2496:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13642:1:::1;13614:24;:29;;13606:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:4;13745:24;13730:12;;:39;;;;:::i;:::-;13729:49;;;;:::i;:::-;13714:12;:64;;;;13508:278:::0;:::o;15064:167::-;15132:7;15159:64;15200:22;:20;:22::i;:::-;15159:36;15172:22;15192:1;15172:15;15182:4;;;;;;;;;;;15172:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15159:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15152:71;;15064:167;;;:::o;5457:35::-;;;;:::o;5499:::-;;;;:::o;7642:133::-;7726:7;7744:11;:19;7756:6;7744:19;;;;;;;;;;;;;;;:28;7764:7;7744:28;;;;;;;;;;;;;;;;7737:35;;7642:133;;;;:::o;14575:146::-;14671:8;14657:11;;:22;;;;;;;;;;;;;;;;;;14706:7;14690:13;:23;;;;14575:146;;:::o;5322:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6070:24::-;;;;;;;;;;;;;:::o;5681:36::-;;;;:::o;6129:30::-;;;;;;;;;;;;;:::o;536:192::-;622:7;655:1;650;:6;;658:12;642:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;682:9;698:1;694;:5;;;;:::i;:::-;682:17;;719:1;712:8;;;536:192;;;;;:::o;8713:899::-;8805:4;8825:6;;;;;;;;;;;8822:63;;;8841:41;8856:6;8864:9;8875:6;8841:14;:41::i;:::-;8834:48;;;;8822:63;8901:14;:22;8916:6;8901:22;;;;;;;;;;;;;;;;;;;;;;;;;8900:23;:53;;;;;8928:14;:25;8943:9;8928:25;;;;;;;;;;;;;;;;;;;;;;;;;8927:26;8900:53;8897:127;;;8977:11;;;;;;;;;;;8969:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8897:127;9084:9;:20;9094:9;9084:20;;;;;;;;;;;;;;;;;;;;;;;;;9083:21;:43;;;;;9109:9;:17;9119:6;9109:17;;;;;;;;;;;;;;;;;;;;;;;;;9108:18;9083:43;9075:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9166:16;:14;:16::i;:::-;9163:35;;;9185:10;:8;:10::i;:::-;9163:35;9257:53;9279:6;9257:53;;;;;;;;;;;;;;;;;:9;:17;9267:6;9257:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9237:9;:17;9247:6;9237:17;;;;;;;;;;;;;;;:73;;;;9323:22;9350:21;9364:6;9350:13;:21::i;:::-;9349:22;:51;;;;9376:24;9390:9;9376:13;:24::i;:::-;9375:25;9349:51;9348:99;;9413:34;9421:6;9429;9437:9;9413:7;:34::i;:::-;9348:99;;;9404:6;9348:99;9323:124;;9481:40;9506:14;9481:9;:20;9491:9;9481:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9458:9;:20;9468:9;9458:20;;;;;;;;;;;;;;;:63;;;;9556:9;9539:43;;9548:6;9539:43;;;9567:14;9539:43;;;;;;:::i;:::-;;;;;;;;9600:4;9593:11;;;8713:899;;;;;;:::o;394:136::-;452:7;479:43;483:1;486;479:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;472:50;;394:136;;;;:::o;734:250::-;792:7;821:1;816;:6;812:47;;846:1;839:8;;;;812:47;871:9;887:1;883;:5;;;;:::i;:::-;871:17;;916:1;911;907;:5;;;;:::i;:::-;:10;899:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;975:1;968:8;;;734:250;;;;;:::o;990:132::-;1048:7;1075:39;1079:1;1082;1075:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1068:46;;990:132;;;;:::o;9624:330::-;9717:4;9754:53;9776:6;9754:53;;;;;;;;;;;;;;;;;:9;:17;9764:6;9754:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9734:9;:17;9744:6;9734:17;;;;;;;;;;;;;;;:73;;;;9841:32;9866:6;9841:9;:20;9851:9;9841:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9818:9;:20;9828:9;9818:20;;;;;;;;;;;;;;;:55;;;;9906:9;9889:35;;9898:6;9889:35;;;9917:6;9889:35;;;;;;:::i;:::-;;;;;;;;9942:4;9935:11;;9624:330;;;;;:::o;11233:197::-;11282:4;11320;;;;;;;;;;;11306:18;;:10;:18;;;;:38;;;;;11338:6;;;;;;;;;;;11337:7;11306:38;:62;;;;;11357:11;;;;;;;;;;;11306:62;:116;;;;;11409:13;;11381:9;:24;11399:4;11381:24;;;;;;;;;;;;;;;;:41;;11306:116;11299:123;;11233:197;:::o;11438:1745::-;6310:4;6301:6;;:13;;;;;;;;;;;;;;;;;;11487:27:::1;11517:60;11533:15;;11550:26;;11517:15;:60::i;:::-;:79;;11584:12;;11517:79;;;11580:1;11517:79;11487:109;;11607:23;11633:59;11690:1;11633:52;11676:8;;11633:38;11651:19;11633:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11607:85;;11703:20;11726:34;11744:15;11726:13;;:17;;:34;;;;:::i;:::-;11703:57;;11773:21;11811:1;11797:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11773:40;;11842:4;11824;11829:1;11824:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11868:4;;;;;;;;;;;11858;11863:1;11858:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11885:21;11909;11885:45;;11943:6;;;;;;;;;;;:57;;;12015:12;12042:1;12058:4;12085;12105:15;11943:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12144:17;12164:40;12190:13;12164:21;:25;;:40;;;;:::i;:::-;12144:60;;12217:19;12239:40;12252:26;12276:1;12252:19;:23;;:26;;;;:::i;:::-;12239:8;;:12;;:40;;;;:::i;:::-;12217:62;;12300:26;12329:58;12385:1;12329:51;12368:11;12329:34;12343:19;12329:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12300:87;;12398:26;12427:44;12459:11;12427:27;12441:12;;12427:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12398:73;;12482:24;12509:42;12539:11;12509:25;12523:10;;12509:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;12482:69;;12565:15;12593:20;;;;;;;;;;;12585:34;;12627:18;12652:5;12585:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12564:98;;;12697:18;;;;;;;;;;;12689:32;;12729:16;12752:5;12689:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12673:89;;;;;12796:5;12783:18;;12835:1;12817:15;:19;12814:362;;;12852:6;;;;;;;;;;;:22;;;12882:18;12928:4;12952:15;12986:1;13006::::0;13026:21:::1;;;;;;;;;;;13066:15;12852:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13116:48;13128:18;13148:15;13116:48;;;;;;;:::i;:::-;;;;;;;;12814:362;11476:1707;;;;;;;;;;;6328:5:::0;6319:6;;:14;;;;;;;;;;;;;;;;;;11438:1745::o;10136:114::-;10198:4;10223:11;:19;10235:6;10223:19;;;;;;;;;;;;;;;;;;;;;;;;;10222:20;10215:27;;10136:114;;;:::o;10258:967::-;10344:7;10374:18;10395;;10374:39;;10440:4;;;;;;;;;;;10427:17;;:9;:17;;;10424:152;;10473:14;;10460:27;;10424:152;;;10518:4;;;;;;;;;;;10508:14;;:6;:14;;;10505:71;;10551:13;;10538:26;;10505:71;10424:152;10588:17;10608:62;10666:3;10649:14;;:20;;;;:::i;:::-;10608:36;10633:10;10608:20;10619:8;;10608:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10588:82;;10683:21;10707:39;10737:8;;10707:25;10721:10;;10707:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;10683:63;;10757:22;10782:28;10796:13;10782:9;:13;;:28;;;;:::i;:::-;10757:53;;10850:44;10879:14;10850:9;:24;10868:4;10850:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10823:9;:24;10841:4;10823:24;;;;;;;;;;;;;;;:71;;;;10937:48;10971:13;10937:9;:29;10947:18;;;;;;;;;;;10937:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;10905:9;:29;10915:18;;;;;;;;;;;10905:29;;;;;;;;;;;;;;;:80;;;;11026:4;11001:47;;11010:6;11001:47;;;11033:14;11001:47;;;;;;:::i;:::-;;;;;;;;11088:1;11072:13;:17;11069:108;;;11127:18;;;;;;;;;;;11110:51;;11119:6;11110:51;;;11147:13;11110:51;;;;;;:::i;:::-;;;;;;;;11069:108;11196:21;11207:9;11196:6;:10;;:21;;;;:::i;:::-;11189:28;;;;;;10258:967;;;;;:::o;207:181::-;265:7;285:9;301:1;297;:5;;;;:::i;:::-;285:17;;326:1;321;:6;;313:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;379:1;372:8;;;207:181;;;;:::o;1128:189::-;1214:7;1246:1;1242;:5;1249:12;1234:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1273:9;1289:1;1285;:5;;;;:::i;:::-;1273:17;;1308:1;1301:8;;;1128:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:122;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:329::-;2443:6;2492:2;2480:9;2471:7;2467:23;2463:32;2460:119;;;2498:79;;:::i;:::-;2460:119;2618:1;2643:53;2688:7;2679:6;2668:9;2664:22;2643:53;:::i;:::-;2633:63;;2589:117;2384:329;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:474::-;4201:6;4209;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4511:2;4537:53;4582:7;4573:6;4562:9;4558:22;4537:53;:::i;:::-;4527:63;;4482:118;4133:474;;;;;:::o;4613:104::-;4658:7;4687:24;4705:5;4687:24;:::i;:::-;4676:35;;4613:104;;;:::o;4723:138::-;4804:32;4830:5;4804:32;:::i;:::-;4797:5;4794:43;4784:71;;4851:1;4848;4841:12;4784:71;4723:138;:::o;4867:155::-;4921:5;4959:6;4946:20;4937:29;;4975:41;5010:5;4975:41;:::i;:::-;4867:155;;;;:::o;5028:345::-;5095:6;5144:2;5132:9;5123:7;5119:23;5115:32;5112:119;;;5150:79;;:::i;:::-;5112:119;5270:1;5295:61;5348:7;5339:6;5328:9;5324:22;5295:61;:::i;:::-;5285:71;;5241:125;5028:345;;;;:::o;5379:619::-;5456:6;5464;5472;5521:2;5509:9;5500:7;5496:23;5492:32;5489:119;;;5527:79;;:::i;:::-;5489:119;5647:1;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5618:117;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5902:2;5928:53;5973:7;5964:6;5953:9;5949:22;5928:53;:::i;:::-;5918:63;;5873:118;5379:619;;;;;:::o;6004:329::-;6063:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:53;6308:7;6299:6;6288:9;6284:22;6263:53;:::i;:::-;6253:63;;6209:117;6004:329;;;;:::o;6339:86::-;6374:7;6414:4;6407:5;6403:16;6392:27;;6339:86;;;:::o;6431:112::-;6514:22;6530:5;6514:22;:::i;:::-;6509:3;6502:35;6431:112;;:::o;6549:214::-;6638:4;6676:2;6665:9;6661:18;6653:26;;6689:67;6753:1;6742:9;6738:17;6729:6;6689:67;:::i;:::-;6549:214;;;;:::o;6769:765::-;6855:6;6863;6871;6879;6928:3;6916:9;6907:7;6903:23;6899:33;6896:120;;;6935:79;;:::i;:::-;6896:120;7055:1;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7026:117;7182:2;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7153:118;7310:2;7336:53;7381:7;7372:6;7361:9;7357:22;7336:53;:::i;:::-;7326:63;;7281:118;7438:2;7464:53;7509:7;7500:6;7489:9;7485:22;7464:53;:::i;:::-;7454:63;;7409:118;6769:765;;;;;;;:::o;7540:117::-;7649:1;7646;7639:12;7663:117;7772:1;7769;7762:12;7786:117;7895:1;7892;7885:12;7926:568;7999:8;8009:6;8059:3;8052:4;8044:6;8040:17;8036:27;8026:122;;8067:79;;:::i;:::-;8026:122;8180:6;8167:20;8157:30;;8210:18;8202:6;8199:30;8196:117;;;8232:79;;:::i;:::-;8196:117;8346:4;8338:6;8334:17;8322:29;;8400:3;8392:4;8384:6;8380:17;8370:8;8366:32;8363:41;8360:128;;;8407:79;;:::i;:::-;8360:128;7926:568;;;;;:::o;8500:559::-;8586:6;8594;8643:2;8631:9;8622:7;8618:23;8614:32;8611:119;;;8649:79;;:::i;:::-;8611:119;8797:1;8786:9;8782:17;8769:31;8827:18;8819:6;8816:30;8813:117;;;8849:79;;:::i;:::-;8813:117;8962:80;9034:7;9025:6;9014:9;9010:22;8962:80;:::i;:::-;8944:98;;;;8740:312;8500:559;;;;;:::o;9065:118::-;9152:24;9170:5;9152:24;:::i;:::-;9147:3;9140:37;9065:118;;:::o;9189:222::-;9282:4;9320:2;9309:9;9305:18;9297:26;;9333:71;9401:1;9390:9;9386:17;9377:6;9333:71;:::i;:::-;9189:222;;;;:::o;9417:474::-;9485:6;9493;9542:2;9530:9;9521:7;9517:23;9513:32;9510:119;;;9548:79;;:::i;:::-;9510:119;9668:1;9693:53;9738:7;9729:6;9718:9;9714:22;9693:53;:::i;:::-;9683:63;;9639:117;9795:2;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9766:118;9417:474;;;;;:::o;9897:116::-;9967:21;9982:5;9967:21;:::i;:::-;9960:5;9957:32;9947:60;;10003:1;10000;9993:12;9947:60;9897:116;:::o;10019:133::-;10062:5;10100:6;10087:20;10078:29;;10116:30;10140:5;10116:30;:::i;:::-;10019:133;;;;:::o;10158:468::-;10223:6;10231;10280:2;10268:9;10259:7;10255:23;10251:32;10248:119;;;10286:79;;:::i;:::-;10248:119;10406:1;10431:50;10473:7;10464:6;10453:9;10449:22;10431:50;:::i;:::-;10421:60;;10377:114;10530:2;10556:53;10601:7;10592:6;10581:9;10577:22;10556:53;:::i;:::-;10546:63;;10501:118;10158:468;;;;;:::o;10632:60::-;10660:3;10681:5;10674:12;;10632:60;;;:::o;10698:142::-;10748:9;10781:53;10799:34;10808:24;10826:5;10808:24;:::i;:::-;10799:34;:::i;:::-;10781:53;:::i;:::-;10768:66;;10698:142;;;:::o;10846:126::-;10896:9;10929:37;10960:5;10929:37;:::i;:::-;10916:50;;10846:126;;;:::o;10978:144::-;11046:9;11079:37;11110:5;11079:37;:::i;:::-;11066:50;;10978:144;;;:::o;11128:167::-;11233:55;11282:5;11233:55;:::i;:::-;11228:3;11221:68;11128:167;;:::o;11301:258::-;11412:4;11450:2;11439:9;11435:18;11427:26;;11463:89;11549:1;11538:9;11534:17;11525:6;11463:89;:::i;:::-;11301:258;;;;:::o;11565:156::-;11705:8;11701:1;11693:6;11689:14;11682:32;11565:156;:::o;11727:365::-;11869:3;11890:66;11954:1;11949:3;11890:66;:::i;:::-;11883:73;;11965:93;12054:3;11965:93;:::i;:::-;12083:2;12078:3;12074:12;12067:19;;11727:365;;;:::o;12098:419::-;12264:4;12302:2;12291:9;12287:18;12279:26;;12351:9;12345:4;12341:20;12337:1;12326:9;12322:17;12315:47;12379:131;12505:4;12379:131;:::i;:::-;12371:139;;12098:419;;;:::o;12523:235::-;12663:34;12659:1;12651:6;12647:14;12640:58;12732:18;12727:2;12719:6;12715:15;12708:43;12523:235;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:180::-;13609:77;13606:1;13599:88;13706:4;13703:1;13696:15;13730:4;13727:1;13720:15;13747:410;13787:7;13810:20;13828:1;13810:20;:::i;:::-;13805:25;;13844:20;13862:1;13844:20;:::i;:::-;13839:25;;13899:1;13896;13892:9;13921:30;13939:11;13921:30;:::i;:::-;13910:41;;14100:1;14091:7;14087:15;14084:1;14081:22;14061:1;14054:9;14034:83;14011:139;;14130:18;;:::i;:::-;14011:139;13795:362;13747:410;;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:185;14389:1;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14440:20;14458:1;14440:20;:::i;:::-;14435:25;;14479:1;14469:35;;14484:18;;:::i;:::-;14469:35;14526:1;14523;14519:9;14514:14;;14349:185;;;;:::o;14540:134::-;14598:9;14631:37;14662:5;14631:37;:::i;:::-;14618:50;;14540:134;;;:::o;14680:147::-;14775:45;14814:5;14775:45;:::i;:::-;14770:3;14763:58;14680:147;;:::o;14833:238::-;14934:4;14972:2;14961:9;14957:18;14949:26;;14985:79;15061:1;15050:9;15046:17;15037:6;14985:79;:::i;:::-;14833:238;;;;:::o;15077:180::-;15125:77;15122:1;15115:88;15222:4;15219:1;15212:15;15246:4;15243:1;15236:15;15263:233;15302:3;15325:24;15343:5;15325:24;:::i;:::-;15316:33;;15371:66;15364:5;15361:77;15358:103;;15441:18;;:::i;:::-;15358:103;15488:1;15481:5;15477:13;15470:20;;15263:233;;;:::o;15502:332::-;15623:4;15661:2;15650:9;15646:18;15638:26;;15674:71;15742:1;15731:9;15727:17;15718:6;15674:71;:::i;:::-;15755:72;15823:2;15812:9;15808:18;15799:6;15755:72;:::i;:::-;15502:332;;;;;:::o;15840:137::-;15894:5;15925:6;15919:13;15910:22;;15941:30;15965:5;15941:30;:::i;:::-;15840:137;;;;:::o;15983:345::-;16050:6;16099:2;16087:9;16078:7;16074:23;16070:32;16067:119;;;16105:79;;:::i;:::-;16067:119;16225:1;16250:61;16303:7;16294:6;16283:9;16279:22;16250:61;:::i;:::-;16240:71;;16196:125;15983:345;;;;:::o;16334:242::-;16474:34;16470:1;16462:6;16458:14;16451:58;16543:25;16538:2;16530:6;16526:15;16519:50;16334:242;:::o;16582:366::-;16724:3;16745:67;16809:2;16804:3;16745:67;:::i;:::-;16738:74;;16821:93;16910:3;16821:93;:::i;:::-;16939:2;16934:3;16930:12;16923:19;;16582:366;;;:::o;16954:419::-;17120:4;17158:2;17147:9;17143:18;17135:26;;17207:9;17201:4;17197:20;17193:1;17182:9;17178:17;17171:47;17235:131;17361:4;17235:131;:::i;:::-;17227:139;;16954:419;;;:::o;17379:194::-;17419:4;17439:20;17457:1;17439:20;:::i;:::-;17434:25;;17473:20;17491:1;17473:20;:::i;:::-;17468:25;;17517:1;17514;17510:9;17502:17;;17541:1;17535:4;17532:11;17529:37;;;17546:18;;:::i;:::-;17529:37;17379:194;;;;:::o;17579:170::-;17719:22;17715:1;17707:6;17703:14;17696:46;17579:170;:::o;17755:366::-;17897:3;17918:67;17982:2;17977:3;17918:67;:::i;:::-;17911:74;;17994:93;18083:3;17994:93;:::i;:::-;18112:2;18107:3;18103:12;18096:19;;17755:366;;;:::o;18127:419::-;18293:4;18331:2;18320:9;18316:18;18308:26;;18380:9;18374:4;18370:20;18366:1;18355:9;18351:17;18344:47;18408:131;18534:4;18408:131;:::i;:::-;18400:139;;18127:419;;;:::o;18552:169::-;18692:21;18688:1;18680:6;18676:14;18669:45;18552:169;:::o;18727:366::-;18869:3;18890:67;18954:2;18949:3;18890:67;:::i;:::-;18883:74;;18966:93;19055:3;18966:93;:::i;:::-;19084:2;19079:3;19075:12;19068:19;;18727:366;;;:::o;19099:419::-;19265:4;19303:2;19292:9;19288:18;19280:26;;19352:9;19346:4;19342:20;19338:1;19327:9;19323:17;19316:47;19380:131;19506:4;19380:131;:::i;:::-;19372:139;;19099:419;;;:::o;19524:220::-;19664:34;19660:1;19652:6;19648:14;19641:58;19733:3;19728:2;19720:6;19716:15;19709:28;19524:220;:::o;19750:366::-;19892:3;19913:67;19977:2;19972:3;19913:67;:::i;:::-;19906:74;;19989:93;20078:3;19989:93;:::i;:::-;20107:2;20102:3;20098:12;20091:19;;19750:366;;;:::o;20122:419::-;20288:4;20326:2;20315:9;20311:18;20303:26;;20375:9;20369:4;20365:20;20361:1;20350:9;20346:17;20339:47;20403:131;20529:4;20403:131;:::i;:::-;20395:139;;20122:419;;;:::o;20547:180::-;20595:77;20592:1;20585:88;20692:4;20689:1;20682:15;20716:4;20713:1;20706:15;20733:85;20778:7;20807:5;20796:16;;20733:85;;;:::o;20824:158::-;20882:9;20915:61;20933:42;20942:32;20968:5;20942:32;:::i;:::-;20933:42;:::i;:::-;20915:61;:::i;:::-;20902:74;;20824:158;;;:::o;20988:147::-;21083:45;21122:5;21083:45;:::i;:::-;21078:3;21071:58;20988:147;;:::o;21141:114::-;21208:6;21242:5;21236:12;21226:22;;21141:114;;;:::o;21261:184::-;21360:11;21394:6;21389:3;21382:19;21434:4;21429:3;21425:14;21410:29;;21261:184;;;;:::o;21451:132::-;21518:4;21541:3;21533:11;;21571:4;21566:3;21562:14;21554:22;;21451:132;;;:::o;21589:108::-;21666:24;21684:5;21666:24;:::i;:::-;21661:3;21654:37;21589:108;;:::o;21703:179::-;21772:10;21793:46;21835:3;21827:6;21793:46;:::i;:::-;21871:4;21866:3;21862:14;21848:28;;21703:179;;;;:::o;21888:113::-;21958:4;21990;21985:3;21981:14;21973:22;;21888:113;;;:::o;22037:732::-;22156:3;22185:54;22233:5;22185:54;:::i;:::-;22255:86;22334:6;22329:3;22255:86;:::i;:::-;22248:93;;22365:56;22415:5;22365:56;:::i;:::-;22444:7;22475:1;22460:284;22485:6;22482:1;22479:13;22460:284;;;22561:6;22555:13;22588:63;22647:3;22632:13;22588:63;:::i;:::-;22581:70;;22674:60;22727:6;22674:60;:::i;:::-;22664:70;;22520:224;22507:1;22504;22500:9;22495:14;;22460:284;;;22464:14;22760:3;22753:10;;22161:608;;;22037:732;;;;:::o;22775:831::-;23038:4;23076:3;23065:9;23061:19;23053:27;;23090:71;23158:1;23147:9;23143:17;23134:6;23090:71;:::i;:::-;23171:80;23247:2;23236:9;23232:18;23223:6;23171:80;:::i;:::-;23298:9;23292:4;23288:20;23283:2;23272:9;23268:18;23261:48;23326:108;23429:4;23420:6;23326:108;:::i;:::-;23318:116;;23444:72;23512:2;23501:9;23497:18;23488:6;23444:72;:::i;:::-;23526:73;23594:3;23583:9;23579:19;23570:6;23526:73;:::i;:::-;22775:831;;;;;;;;:::o;23612:147::-;23713:11;23750:3;23735:18;;23612:147;;;;:::o;23765:114::-;;:::o;23885:398::-;24044:3;24065:83;24146:1;24141:3;24065:83;:::i;:::-;24058:90;;24157:93;24246:3;24157:93;:::i;:::-;24275:1;24270:3;24266:11;24259:18;;23885:398;;;:::o;24289:379::-;24473:3;24495:147;24638:3;24495:147;:::i;:::-;24488:154;;24659:3;24652:10;;24289:379;;;:::o;24674:807::-;24923:4;24961:3;24950:9;24946:19;24938:27;;24975:71;25043:1;25032:9;25028:17;25019:6;24975:71;:::i;:::-;25056:72;25124:2;25113:9;25109:18;25100:6;25056:72;:::i;:::-;25138:80;25214:2;25203:9;25199:18;25190:6;25138:80;:::i;:::-;25228;25304:2;25293:9;25289:18;25280:6;25228:80;:::i;:::-;25318:73;25386:3;25375:9;25371:19;25362:6;25318:73;:::i;:::-;25401;25469:3;25458:9;25454:19;25445:6;25401:73;:::i;:::-;24674:807;;;;;;;;;:::o;25487:143::-;25544:5;25575:6;25569:13;25560:22;;25591:33;25618:5;25591:33;:::i;:::-;25487:143;;;;:::o;25636:663::-;25724:6;25732;25740;25789:2;25777:9;25768:7;25764:23;25760:32;25757:119;;;25795:79;;:::i;:::-;25757:119;25915:1;25940:64;25996:7;25987:6;25976:9;25972:22;25940:64;:::i;:::-;25930:74;;25886:128;26053:2;26079:64;26135:7;26126:6;26115:9;26111:22;26079:64;:::i;:::-;26069:74;;26024:129;26192:2;26218:64;26274:7;26265:6;26254:9;26250:22;26218:64;:::i;:::-;26208:74;;26163:129;25636:663;;;;;:::o;26305:332::-;26426:4;26464:2;26453:9;26449:18;26441:26;;26477:71;26545:1;26534:9;26530:17;26521:6;26477:71;:::i;:::-;26558:72;26626:2;26615:9;26611:18;26602:6;26558:72;:::i;:::-;26305:332;;;;;:::o;26643:191::-;26683:3;26702:20;26720:1;26702:20;:::i;:::-;26697:25;;26736:20;26754:1;26736:20;:::i;:::-;26731:25;;26779:1;26776;26772:9;26765:16;;26800:3;26797:1;26794:10;26791:36;;;26807:18;;:::i;:::-;26791:36;26643:191;;;;:::o;26840:177::-;26980:29;26976:1;26968:6;26964:14;26957:53;26840:177;:::o;27023:366::-;27165:3;27186:67;27250:2;27245:3;27186:67;:::i;:::-;27179:74;;27262:93;27351:3;27262:93;:::i;:::-;27380:2;27375:3;27371:12;27364:19;;27023:366;;;:::o;27395:419::-;27561:4;27599:2;27588:9;27584:18;27576:26;;27648:9;27642:4;27638:20;27634:1;27623:9;27619:17;27612:47;27676:131;27802:4;27676:131;:::i;:::-;27668:139;;27395:419;;;:::o

Swarm Source

ipfs://ab5d0d0b2de45649fcd7193044e30567239b9e6814e5a63c749c4576151cfb1c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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