ETH Price: $3,323.69 (-3.99%)

Token

PolkaSet (PSET)
 

Overview

Max Total Supply

5,118,900 PSET

Holders

162

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
25,222.806328113 PSET

Value
$0.00
0x6d3C4171d6807378CF6482732873E675d28A8c72
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x5e64Cce0...2d6e3e10f
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PolkaSet

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-12
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

library SafeCast {

    function toUint128(uint256 value) internal pure returns (uint128) {
        require(value < 2**128, "SafeCast: value doesn\'t fit in 128 bits");
        return uint128(value);
    }

    function toUint64(uint256 value) internal pure returns (uint64) {
        require(value < 2**64, "SafeCast: value doesn\'t fit in 64 bits");
        return uint64(value);
    }

    function toUint32(uint256 value) internal pure returns (uint32) {
        require(value < 2**32, "SafeCast: value doesn\'t fit in 32 bits");
        return uint32(value);
    }

    function toUint16(uint256 value) internal pure returns (uint16) {
        require(value < 2**16, "SafeCast: value doesn\'t fit in 16 bits");
        return uint16(value);
    }

    function toUint8(uint256 value) internal pure returns (uint8) {
        require(value < 2**8, "SafeCast: value doesn\'t fit in 8 bits");
        return uint8(value);
    }
    
    function toUint256(int256 value) internal pure returns (uint256) {
        require(value >= 0, "SafeCast: value must be positive");
        return uint256(value);
    }

    function toInt256(uint256 value) internal pure returns (int256) {
        require(value < 2**255, "SafeCast: value doesn't fit in an int256");
        return int256(value);
    }
}

contract Initializable {

  bool private initialized;

  bool private initializing;

  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Already Initialized");

    bool isTopLevelCall = !initializing;
    if (isTopLevelCall) {
      initializing = true;
      initialized = true;
    }

    _;

    if (isTopLevelCall) {
      initializing = false;
    }
  }

  function isConstructor() private view returns (bool) {
    address self = address(this);
    uint256 cs;
    assembly { cs := extcodesize(self) }
    return cs == 0;
  }

  uint256[50] private ______gap;
}

contract ContextUpgradeSafe is Initializable {

    function __Context_init() internal initializer {
        __Context_init_unchained();
    }

    function __Context_init_unchained() internal initializer {
    }

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }

    uint256[50] private __gap;
}

contract OwnableUpgradeSafe is Initializable, ContextUpgradeSafe {
    address private _owner;

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

    function __Ownable_init() internal initializer {
        __Context_init_unchained();
        __Ownable_init_unchained();
    }

    function __Ownable_init_unchained() internal initializer {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);

    }

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

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

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

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

    uint256[49] private __gap;
}

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract ERC20UpgradeSafe is Initializable, ContextUpgradeSafe, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    function __ERC20_init(string memory name, string memory symbol) internal initializer {
        __Context_init_unchained();
        __ERC20_init_unchained(name, symbol);
    }

    function __ERC20_init_unchained(string memory name, string memory symbol) internal initializer {


        _name = name;
        _symbol = symbol;
        _decimals = 18;

    }

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

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

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }

    uint256[44] private __gap;
}

contract PolkaSet is ERC20UpgradeSafe, OwnableUpgradeSafe {
    
    using SafeCast for int256;
    using SafeMath for uint256;
    
    struct Transaction {
        bool enabled;
        address destination;
        bytes data;
    }

    event TransactionFailed(address indexed destination, uint index, bytes data);

    Transaction[] public transactions;

    uint256 private _epoch;
    event LogRebase(uint256 indexed epoch, uint256 totalSupply);

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
	
	uint256 private _totalSupply;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal;
    uint256 private _tFeeTotal;
    
    uint256 private constant DECIMALS = 9;
    uint256 private constant RATE_PRECISION = 10 ** DECIMALS;
    
    uint256 public _tFeePercent;
    
    address public _rebaser;
    
    uint256 public _limitTransferAmount;
    uint256 public _limitMaxBalance;
    uint256 public _limitSellFeePercent;
    
    uint256 public _limitTimestamp;
    
    function initialize()
        public
        initializer
    {
        __ERC20_init("PolkaSet", "PSET");
        _setupDecimals(uint8(DECIMALS));
        __Ownable_init();
        
        _totalSupply = 23000 * 10**9 ;
        _rTotal = (MAX - (MAX % _totalSupply));
        
        _rebaser = _msgSender();
        
        _tFeePercent = 300; // 3%

        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _totalSupply);

        excludeAccount(_msgSender());
        excludeAccount(address(this));
        
    }
    
    function setRebaser(address rebaser) external onlyOwner() {
        _rebaser = rebaser;
    }
    
    function setTransferFeePercent(uint256 tFeePercent) external onlyOwner() {

        _tFeePercent = tFeePercent;
    }
    
    function setLimit(uint256 transferAmount, uint256 maxBalance, uint256 sellFeePercent) external onlyOwner() {
        require(_limitTimestamp == 0, "Limit changes not allowed");
        
        _limitTransferAmount = transferAmount;
        _limitMaxBalance = maxBalance;
        _limitSellFeePercent = sellFeePercent;

        _limitTimestamp = now;
    }
    
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }
    
    function rebase(int256 supplyDelta)
        external
        returns (uint256)
    {
        require(_msgSender() == owner() || _msgSender() == _rebaser, "Sender not authorized");
        
        _epoch = _epoch.add(1);
		
        if (supplyDelta == 0) {
            emit LogRebase(_epoch, _totalSupply);
            return _totalSupply;
        }
        
        uint256 uSupplyDelta = (supplyDelta < 0 ? -supplyDelta : supplyDelta).toUint256();
        uint256 rate = uSupplyDelta.mul(RATE_PRECISION).div(_totalSupply);
        uint256 multiplier;
        
        if (supplyDelta < 0) {
            multiplier = RATE_PRECISION.sub(rate);
        } else {
            multiplier = RATE_PRECISION.add(rate);
        }
        
        if (supplyDelta < 0) {
            _totalSupply = _totalSupply.sub(uSupplyDelta);
        } else {
            _totalSupply = _totalSupply.add(uSupplyDelta);
        }
        
        if (_totalSupply > MAX) {
            _totalSupply = MAX;
        }
        
        for (uint256 i = 0; i < _excluded.length; i++) {
            if(_tOwned[_excluded[i]] > 0) {
                _tOwned[_excluded[i]] = _tOwned[_excluded[i]].mul(multiplier).div(RATE_PRECISION);
            }
        }
        
        emit LogRebase(_epoch, _totalSupply);

		for (uint i = 0; i < transactions.length; i++) {
            Transaction storage t = transactions[i];
            if (t.enabled) {
                bool result = externalCall(t.destination, t.data);
                if (!result) {
                    emit TransactionFailed(t.destination, i, t.data);
                    revert("Transaction Failed");
                }
            }
        }

        return _totalSupply;
    }
    
    /**
     * @notice Adds a transaction that gets called for a downstream receiver of rebases
     * @param destination Address of contract destination
     * @param data Transaction data payload
     */
	
    function addTransaction(address destination, bytes memory data)
        external
        onlyOwner
    {
        transactions.push(Transaction({
            enabled: true,
            destination: destination,
            data: data
        }));
    }
	
	/**
     * @param index Index of transaction to remove.
     *              Transaction ordering may have changed since adding.
     */

    function removeTransaction(uint index)
        external
        onlyOwner
    {
        require(index < transactions.length, "index out of bounds");

        if (index < transactions.length - 1) {
            transactions[index] = transactions[transactions.length - 1];
        }

        transactions.pop();
    }
	
	/**
     * @param index Index of transaction. Transaction ordering may have changed since adding.
     * @param enabled True for enabled, false for disabled.
     */

    function setTransactionEnabled(uint index, bool enabled)
        external
        onlyOwner
    {
        require(index < transactions.length, "index must be in range of stored tx list");
        transactions[index].enabled = enabled;
    }
	
	/**
     * @return Number of transactions, both enabled and disabled, in transactions list.
     */

    function transactionsSize()
        external
        view
        returns (uint256)
    {
        return transactions.length;
    }
	

    function externalCall(address destination, bytes memory data)
        internal
        returns (bool)
    {
        bool result;
        assembly {  // solhint-disable-line no-inline-assembly
            // "Allocate" memory for output
            // (0x40 is where "free memory" pointer is stored by convention)
            let outputAddress := mload(0x40)

            // First 32 bytes are the padded length of data, so exclude that
            let dataAddress := add(data, 32)

            result := call(
                // 34710 is the value that solidity is currently emitting
                // It includes callGas (700) + callVeryLow (3, to pay for SUB)
                // + callValueTransferGas (9000) + callNewAccountGas
                // (25000, in case the destination address does not exist and needs creating)
                sub(gas(), 34710),


                destination,
                0, // transfer value in wei
                dataAddress,
                mload(data),  // Size of the input, in bytes. Stored in position 0 of the array.
                outputAddress,
                0  // Output is ignored, therefore the output size is zero
            )
        }
        return result;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromRefraction(_rOwned[account]);
    }

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual override returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual override returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

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

    function refract(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount, _tFeePercent);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function refractionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _totalSupply, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount, _tFeePercent);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount, _tFeePercent);
            return rTransferAmount;
        }
    }

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

    function excludeAccount(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromRefraction(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) public onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

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

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(sender == address(this) || sender == owner()) {
            _transferBothExcluded(sender, recipient, amount, 0);
        } else if(_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount, _tFeePercent);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
                _transferToExcluded(sender, recipient, amount, _tFeePercent);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount, _tFeePercent);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount, 0);
        } else {
            _transferStandard(sender, recipient, amount, _tFeePercent);
        }
    }
    

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

    function _transferToExcluded(address sender, address recipient, uint256 tAmount, uint256 tFeePercent) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount, tFeePercent);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _refractFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount, uint256 tFeePercent) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount, tFeePercent);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _refractFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount, uint256 tFeePercent) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount, tFeePercent);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _refractFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    function _getTValues(uint256 tAmount, uint256 tFeePercent) private pure returns (uint256, uint256) {
        uint256 tFee = tAmount.mul(tFeePercent).div(10000);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

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

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _totalSupply;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _totalSupply);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_totalSupply)) return (_rTotal, _totalSupply);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"TransactionFailed","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":"_limitMaxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitSellFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rebaser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"addTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"refract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"refractionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transferAmount","type":"uint256"},{"internalType":"uint256","name":"maxBalance","type":"uint256"},{"internalType":"uint256","name":"sellFeePercent","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rebaser","type":"address"}],"name":"setRebaser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setTransactionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFeePercent","type":"uint256"}],"name":"setTransferFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromRefraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionsSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50613049806100206000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80635c31a7131161013057806397d0677b116100b8578063dd62ed3e1161007c578063dd62ed3e1461070d578063e46adf621461073b578063f2cc0c1814610761578063f2fde38b14610787578063f84354f1146107ad57610227565b806397d0677b146105bc5780639ace38c2146105e1578063a457c2d71461068f578063a9059cbb146106bb578063cba0e996146106e757610227565b80637d449789116100ff5780637d449789146105945780638129fc1c1461059c5780638da5cb5b146105a457806391d4ec18146105ac57806395d89b41146105b457610227565b80635c31a713146105185780636e9dde991461054157806370a0823114610566578063715018a61461058c57610227565b806323b872dd116101b3578063313ce56711610182578063313ce5671461048557806339509351146104a35780633aa8d4be146104cf578063456e0a5d146104f357806346c3bd1f146104fb57610227565b806323b872dd146104225780632ae427dc146104585780632bc1281e14610460578063303bb0b61461046857610227565b8063126e19be116101fa578063126e19be1461032057806313114a9d146103d857806314f43f7e146103e057806318160ddd146103fd5780631f36d9251461040557610227565b806306fdde031461022c57806308d1dd8a146102a9578063095ea7b3146102c35780630ab114f914610303575b600080fd5b6102346107d3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026e578181015183820152602001610256565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b1610869565b60408051918252519081900360200190f35b6102ef600480360360408110156102d957600080fd5b506001600160a01b03813516906020013561086f565b604080519115158252519081900360200190f35b6102b16004803603602081101561031957600080fd5b503561088d565b6103d66004803603604081101561033657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184600183028401116401000000008311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d2e945050505050565b005b6102b1610e4f565b6103d6600480360360208110156103f657600080fd5b5035610e55565b6102b1610f30565b6103d66004803603602081101561041b57600080fd5b5035610f36565b6102ef6004803603606081101561043857600080fd5b506001600160a01b03813581169160208101359091169060400135610f93565b6102b161101a565b6102b1611020565b6102b16004803603602081101561047e57600080fd5b5035611026565b61048d611086565b6040805160ff9092168252519081900360200190f35b6102ef600480360360408110156104b957600080fd5b506001600160a01b03813516906020013561108f565b6104d76110dd565b604080516001600160a01b039092168252519081900360200190f35b6102b16110ec565b6103d66004803603602081101561051157600080fd5b50356110f2565b6103d66004803603606081101561052e57600080fd5b508035906020810135906040013561128a565b6103d66004803603604081101561055757600080fd5b50803590602001351515611349565b6102b16004803603602081101561057c57600080fd5b50356001600160a01b0316611412565b6103d6611474565b6102b1611516565b6103d661151c565b6104d76116fc565b6102b161170b565b610234611711565b6102b1600480360360408110156105d257600080fd5b50803590602001351515611772565b6105fe600480360360208110156105f757600080fd5b5035611808565b604051808415158152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561065257818101518382015260200161063a565b50505050905090810190601f16801561067f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6102ef600480360360408110156106a557600080fd5b506001600160a01b0381351690602001356118cd565b6102ef600480360360408110156106d157600080fd5b506001600160a01b038135169060200135611935565b6102ef600480360360208110156106fd57600080fd5b50356001600160a01b0316611949565b6102b16004803603604081101561072357600080fd5b506001600160a01b0381358116916020013516611967565b6103d66004803603602081101561075157600080fd5b50356001600160a01b0316611992565b6103d66004803603602081101561077757600080fd5b50356001600160a01b0316611a0c565b6103d66004803603602081101561079d57600080fd5b50356001600160a01b0316611b92565b6103d6600480360360208110156107c357600080fd5b50356001600160a01b0316611c8b565b60688054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561085f5780601f106108345761010080835404028352916020019161085f565b820191906000526020600020905b81548152906001019060200180831161084257829003601f168201915b5050505050905090565b60d85481565b600061088361087c611e4c565b8484611e50565b5060015b92915050565b60006108976116fc565b6001600160a01b03166108a8611e4c565b6001600160a01b031614806108d7575060d4546001600160a01b03166108cc611e4c565b6001600160a01b0316145b610920576040805162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08185d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b60ca5461092e906001611f3c565b60ca55816109775760ca5460d05460408051918252517f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f29181900360200190a25060d054610d29565b60006109946000841261098a578361098f565b836000035b611f96565b60d0549091506000906109b5906109af84633b9aca00611ff1565b9061204a565b90506000808512156109d6576109cf633b9aca008361208c565b90506109e7565b6109e4633b9aca0083611f3c565b90505b6000851215610a055760d0546109fd908461208c565b60d055610a16565b60d054610a129084611f3c565b60d0555b60005b60cf54811015610ae857600060cc600060cf8481548110610a3657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541115610ae057610aa96009600a0a6109af8460cc600060cf8781548110610a7e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205490611ff1565b60cc600060cf8481548110610aba57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b600101610a19565b5060ca5460d05460408051918252517f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f29181900360200190a260005b60c954811015610d1f57600060c98281548110610b3d57fe5b60009182526020909120600290910201805490915060ff1615610d165780546001808301805460408051602060026101009685161587026000190190941693909304601f8101849004840282018401909252818152600095610c059590046001600160a01b0316939092909190830182828015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b50505050506120ce565b905080610d145781546040805185815260208101828152600180870180546002610100938216158402600019019091160494840185905294046001600160a01b0316937f8091ecaaa54ebb82e02d36c2c336528e0fcb9b3430fc1291ac88295032b9c263938893919290606083019084908015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b5050935050505060405180910390a26040805162461bcd60e51b8152602060048201526012602482015271151c985b9cd858dd1a5bdb8811985a5b195960721b604482015290519081900360640190fd5b505b50600101610b24565b5060d05493505050505b919050565b610d36611e4c565b6097546001600160a01b03908116911614610d86576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6040805160608101825260018082526001600160a01b03808616602080850191825294840186815260c980549485018155600052845160029094027f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2881018054935190941661010002610100600160a81b031995151560ff19909416939093179490941691909117825551805193949193610e48937f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2901929190910190612d09565b5050505050565b60d25490565b6000610e5f611e4c565b6001600160a01b038116600090815260ce602052604090205490915060ff1615610eba5760405162461bcd60e51b815260040180806020018281038252602c815260200180612fc3602c913960400191505060405180910390fd5b6000610ec88360d3546120f1565b505050506001600160a01b038316600090815260cb6020526040902054909150610ef2908261208c565b6001600160a01b038316600090815260cb602052604090205560d154610f18908261208c565b60d15560d254610f289084611f3c565b60d255505050565b60d05490565b610f3e611e4c565b6097546001600160a01b03908116911614610f8e576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60d355565b6000610fa084848461213f565b61101084610fac611e4c565b61100b85604051806060016040528060288152602001612edf602891396001600160a01b038a16600090815260cd6020526040812090610fea611e4c565b6001600160a01b03168152602081019190915260400160002054919061236b565b611e50565b5060019392505050565b60d35481565b60d55481565b600060d1548211156110695760405162461bcd60e51b815260040180806020018281038252602a815260200180612f50602a913960400191505060405180910390fd5b6000611073612402565b905061107f838261204a565b9392505050565b606a5460ff1690565b600061088361109c611e4c565b8461100b8560cd60006110ad611e4c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611f3c565b60d4546001600160a01b031681565b60d65481565b6110fa611e4c565b6097546001600160a01b0390811691161461114a576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60c9548110611196576040805162461bcd60e51b8152602060048201526013602482015272696e646578206f7574206f6620626f756e647360681b604482015290519081900360640190fd5b60c954600019018110156112475760c9805460001981019081106111b657fe5b906000526020600020906002020160c982815481106111d157fe5b6000918252602090912082546002928302909101805460ff191660ff9092161515919091178082558354610100600160a81b0319909116610100918290046001600160a01b03168202178255600180850180549394611243948387019492938116159092026000190190911604612d83565b5050505b60c980548061125257fe5b60008281526020812060026000199093019283020180546001600160a81b0319168155906112836001830182612df8565b5050905550565b611292611e4c565b6097546001600160a01b039081169116146112e2576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60d85415611337576040805162461bcd60e51b815260206004820152601960248201527f4c696d6974206368616e676573206e6f7420616c6c6f77656400000000000000604482015290519081900360640190fd5b60d59290925560d65560d7554260d855565b611351611e4c565b6097546001600160a01b039081169116146113a1576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60c95482106113e15760405162461bcd60e51b8152600401808060200182810382526028815260200180612e966028913960400191505060405180910390fd5b8060c983815481106113ef57fe5b60009182526020909120600290910201805460ff19169115159190911790555050565b6001600160a01b038116600090815260ce602052604081205460ff161561145257506001600160a01b038116600090815260cc6020526040902054610d29565b6001600160a01b038216600090815260cb602052604090205461088790611026565b61147c611e4c565b6097546001600160a01b039081169116146114cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6097546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3609780546001600160a01b0319169055565b60d75481565b600054610100900460ff16806115355750611535612425565b80611543575060005460ff16155b61158a576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff161580156115b5576000805460ff1961ff0019909116610100171660011790555b6115fb60405180604001604052806008815260200167141bdb1ad854d95d60c21b815250604051806040016040528060048152602001631414d15560e21b81525061242b565b61160560096124ec565b61160d612502565b6514eb1ad4700060d055650e7910707fff1960d15561162a611e4c565b60d480546001600160a01b0319166001600160a01b039290921691909117905561012c60d35560d15460cb600061165f611e4c565b6001600160a01b03168152602081019190915260400160002055611681611e4c565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60d0546040518082815260200191505060405180910390a36116de6116d9611e4c565b611a0c565b6116e730611a0c565b80156116f9576000805461ff00191690555b50565b6097546001600160a01b031690565b60c95490565b60698054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561085f5780601f106108345761010080835404028352916020019161085f565b600060d0548311156117cb576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816117ec5760006117de8460d3546120f1565b509294506108879350505050565b60006117fa8460d3546120f1565b509194506108879350505050565b60c9818154811061181557fe5b6000918252602091829020600291820201805460018083018054604080516101009483161585026000190190921696909604601f810188900488028201880190965285815260ff84169750919092046001600160a01b031694929390928301828280156118c35780601f10611898576101008083540402835291602001916118c3565b820191906000526020600020905b8154815290600101906020018083116118a657829003601f168201915b5050505050905083565b60006108836118da611e4c565b8461100b85604051806060016040528060258152602001612fef6025913960cd6000611904611e4c565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061236b565b6000610883611942611e4c565b848461213f565b6001600160a01b0316600090815260ce602052604090205460ff1690565b6001600160a01b03918216600090815260cd6020908152604080832093909416825291909152205490565b61199a611e4c565b6097546001600160a01b039081169116146119ea576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60d480546001600160a01b0319166001600160a01b0392909216919091179055565b611a14611e4c565b6097546001600160a01b03908116911614611a64576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260ce602052604090205460ff1615611ad2576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260cb602052604090205415611b2c576001600160a01b038116600090815260cb6020526040902054611b1290611026565b6001600160a01b038216600090815260cc60205260409020555b6001600160a01b0316600081815260ce60205260408120805460ff1916600190811790915560cf805491820181559091527facb8d954e2cfef495862221e91bd7523613cf8808827cb33edfe4904cc51bf290180546001600160a01b0319169091179055565b611b9a611e4c565b6097546001600160a01b03908116911614611bea576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6001600160a01b038116611c2f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e4e6026913960400191505060405180910390fd5b6097546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3609780546001600160a01b0319166001600160a01b0392909216919091179055565b611c93611e4c565b6097546001600160a01b03908116911614611ce3576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260ce602052604090205460ff16611d50576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60cf54811015611e4857816001600160a01b031660cf8281548110611d7457fe5b6000918252602090912001546001600160a01b03161415611e405760cf80546000198101908110611da157fe5b60009182526020909120015460cf80546001600160a01b039092169183908110611dc757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918416815260cc8252604080822082905560ce90925220805460ff1916905560cf805480611e1957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611e48565b600101611d53565b5050565b3390565b6001600160a01b038316611e955760405162461bcd60e51b8152600401808060200182810382526024815260200180612f9f6024913960400191505060405180910390fd5b6001600160a01b038216611eda5760405162461bcd60e51b8152600401808060200182810382526022815260200180612e746022913960400191505060405180910390fd5b6001600160a01b03808416600081815260cd6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008282018381101561107f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080821215611fed576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b60008261200057506000610887565b8282028284828161200d57fe5b041461107f5760405162461bcd60e51b8152600401808060200182810382526021815260200180612ebe6021913960400191505060405180910390fd5b600061107f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ab565b600061107f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061236b565b6000806040516020840160008286518360008a6187965a03f19695505050505050565b60008060008060008060006121068989612610565b915091506000612114612402565b905060008060006121268d868661263e565b919f909e50909c50959a50939850939650505050505050565b6001600160a01b0383166121845760405162461bcd60e51b8152600401808060200182810382526025815260200180612f7a6025913960400191505060405180910390fd5b600081116121c35760405162461bcd60e51b8152600401808060200182810382526029815260200180612f276029913960400191505060405180910390fd5b6001600160a01b0383163014806121f257506121dd6116fc565b6001600160a01b0316836001600160a01b0316145b1561220957612204838383600061267a565b612366565b6001600160a01b038316600090815260ce602052604090205460ff16801561224a57506001600160a01b038216600090815260ce602052604090205460ff16155b1561225d5761220483838360d3546127c9565b6001600160a01b038316600090815260ce602052604090205460ff1615801561229e57506001600160a01b038216600090815260ce602052604090205460ff165b156122b15761220483838360d354612869565b6001600160a01b038316600090815260ce602052604090205460ff161580156122f357506001600160a01b038216600090815260ce602052604090205460ff16155b156123065761220483838360d3546128ab565b6001600160a01b038316600090815260ce602052604090205460ff16801561234657506001600160a01b038216600090815260ce602052604090205460ff165b1561235857612204838383600061267a565b61236683838360d3546128ab565b505050565b600081848411156123fa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5781810151838201526020016123a7565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061240f6128ed565b909250905061241e828261204a565b9250505090565b303b1590565b600054610100900460ff16806124445750612444612425565b80612452575060005460ff16155b612499576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff161580156124c4576000805460ff1961ff0019909116610100171660011790555b6124cc612a50565b6124d68383612afc565b8015612366576000805461ff0019169055505050565b606a805460ff191660ff92909216919091179055565b600054610100900460ff168061251b575061251b612425565b80612529575060005460ff16155b612570576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff1615801561259b576000805460ff1961ff0019909116610100171660011790555b6125a3612a50565b6116e7612be0565b600081836125fa5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123bf5781810151838201526020016123a7565b50600083858161260657fe5b0495945050505050565b600080806126246127106109af8787611ff1565b90506000612632868361208c565b96919550909350505050565b600080808061264d8786611ff1565b9050600061265b8787611ff1565b90506000612669838361208c565b929992985090965090945050505050565b600080600080600061268c87876120f1565b6001600160a01b038e16600090815260cc6020526040902054949950929750909550935091506126bc908861208c565b6001600160a01b038a16600090815260cc602090815260408083209390935560cb905220546126eb908661208c565b6001600160a01b03808b16600090815260cb6020908152604080832094909455918b16815260cc90915220546127219083611f3c565b6001600160a01b038916600090815260cc602090815260408083209390935560cb905220546127509085611f3c565b6001600160a01b038916600090815260cb60205260409020556127738382612ce5565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050505050505050565b60008060008060006127db87876120f1565b6001600160a01b038e16600090815260cc60205260409020549499509297509095509350915061280b908861208c565b6001600160a01b038a16600090815260cc602090815260408083209390935560cb9052205461283a908661208c565b6001600160a01b03808b16600090815260cb602052604080822093909355908a16815220546127509085611f3c565b600080600080600061287b87876120f1565b6001600160a01b038e16600090815260cb6020526040902054949950929750909550935091506126eb908661208c565b60008060008060006128bd87876120f1565b6001600160a01b038e16600090815260cb60205260409020549499509297509095509350915061283a908661208c565b60d15460d0546000918291825b60cf54811015612a1e578260cb600060cf848154811061291657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061297b57508160cc600060cf848154811061295457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156129925760d15460d05494509450505050612a4c565b6129d260cb600060cf84815481106129a657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061208c565b9250612a1460cc600060cf84815481106129e857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061208c565b91506001016128fa565b5060d05460d154612a2e9161204a565b821015612a465760d15460d054935093505050612a4c565b90925090505b9091565b600054610100900460ff1680612a695750612a69612425565b80612a77575060005460ff16155b612abe576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff161580156116e7576000805460ff1961ff00199091166101001716600117905580156116f9576000805461ff001916905550565b600054610100900460ff1680612b155750612b15612425565b80612b23575060005460ff16155b612b6a576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff16158015612b95576000805460ff1961ff0019909116610100171660011790555b8251612ba8906068906020860190612d09565b508151612bbc906069906020850190612d09565b50606a805460ff191660121790558015612366576000805461ff0019169055505050565b600054610100900460ff1680612bf95750612bf9612425565b80612c07575060005460ff16155b612c4e576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff16158015612c79576000805460ff1961ff0019909116610100171660011790555b6000612c83611e4c565b609780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156116f9576000805461ff001916905550565b60d154612cf2908361208c565b60d15560d254612d029082611f3c565b60d2555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d4a57805160ff1916838001178555612d77565b82800160010185558215612d77579182015b82811115612d77578251825591602001919060010190612d5c565b50611fed929150612e38565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612dbc5780548555612d77565b82800160010185558215612d7757600052602060002091601f016020900482015b82811115612d77578254825591600101919060010190612ddd565b50805460018160011615610100020316600290046000825580601f10612e1e57506116f9565b601f0160209004906000526020600020908101906116f991905b5b80821115611fed5760008155600101612e3956fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373696e646578206d75737420626520696e2072616e6765206f662073746f726564207478206c697374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f416d6f756e74206d757374206265206c657373207468616e20746f74616c2072656672616374696f6e7345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e9a4487c8fdb67ca04e8e78de456a8b91406ac2b77a057decefcdf4c0643d72064736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102275760003560e01c80635c31a7131161013057806397d0677b116100b8578063dd62ed3e1161007c578063dd62ed3e1461070d578063e46adf621461073b578063f2cc0c1814610761578063f2fde38b14610787578063f84354f1146107ad57610227565b806397d0677b146105bc5780639ace38c2146105e1578063a457c2d71461068f578063a9059cbb146106bb578063cba0e996146106e757610227565b80637d449789116100ff5780637d449789146105945780638129fc1c1461059c5780638da5cb5b146105a457806391d4ec18146105ac57806395d89b41146105b457610227565b80635c31a713146105185780636e9dde991461054157806370a0823114610566578063715018a61461058c57610227565b806323b872dd116101b3578063313ce56711610182578063313ce5671461048557806339509351146104a35780633aa8d4be146104cf578063456e0a5d146104f357806346c3bd1f146104fb57610227565b806323b872dd146104225780632ae427dc146104585780632bc1281e14610460578063303bb0b61461046857610227565b8063126e19be116101fa578063126e19be1461032057806313114a9d146103d857806314f43f7e146103e057806318160ddd146103fd5780631f36d9251461040557610227565b806306fdde031461022c57806308d1dd8a146102a9578063095ea7b3146102c35780630ab114f914610303575b600080fd5b6102346107d3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026e578181015183820152602001610256565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b1610869565b60408051918252519081900360200190f35b6102ef600480360360408110156102d957600080fd5b506001600160a01b03813516906020013561086f565b604080519115158252519081900360200190f35b6102b16004803603602081101561031957600080fd5b503561088d565b6103d66004803603604081101561033657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184600183028401116401000000008311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d2e945050505050565b005b6102b1610e4f565b6103d6600480360360208110156103f657600080fd5b5035610e55565b6102b1610f30565b6103d66004803603602081101561041b57600080fd5b5035610f36565b6102ef6004803603606081101561043857600080fd5b506001600160a01b03813581169160208101359091169060400135610f93565b6102b161101a565b6102b1611020565b6102b16004803603602081101561047e57600080fd5b5035611026565b61048d611086565b6040805160ff9092168252519081900360200190f35b6102ef600480360360408110156104b957600080fd5b506001600160a01b03813516906020013561108f565b6104d76110dd565b604080516001600160a01b039092168252519081900360200190f35b6102b16110ec565b6103d66004803603602081101561051157600080fd5b50356110f2565b6103d66004803603606081101561052e57600080fd5b508035906020810135906040013561128a565b6103d66004803603604081101561055757600080fd5b50803590602001351515611349565b6102b16004803603602081101561057c57600080fd5b50356001600160a01b0316611412565b6103d6611474565b6102b1611516565b6103d661151c565b6104d76116fc565b6102b161170b565b610234611711565b6102b1600480360360408110156105d257600080fd5b50803590602001351515611772565b6105fe600480360360208110156105f757600080fd5b5035611808565b604051808415158152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561065257818101518382015260200161063a565b50505050905090810190601f16801561067f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6102ef600480360360408110156106a557600080fd5b506001600160a01b0381351690602001356118cd565b6102ef600480360360408110156106d157600080fd5b506001600160a01b038135169060200135611935565b6102ef600480360360208110156106fd57600080fd5b50356001600160a01b0316611949565b6102b16004803603604081101561072357600080fd5b506001600160a01b0381358116916020013516611967565b6103d66004803603602081101561075157600080fd5b50356001600160a01b0316611992565b6103d66004803603602081101561077757600080fd5b50356001600160a01b0316611a0c565b6103d66004803603602081101561079d57600080fd5b50356001600160a01b0316611b92565b6103d6600480360360208110156107c357600080fd5b50356001600160a01b0316611c8b565b60688054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561085f5780601f106108345761010080835404028352916020019161085f565b820191906000526020600020905b81548152906001019060200180831161084257829003601f168201915b5050505050905090565b60d85481565b600061088361087c611e4c565b8484611e50565b5060015b92915050565b60006108976116fc565b6001600160a01b03166108a8611e4c565b6001600160a01b031614806108d7575060d4546001600160a01b03166108cc611e4c565b6001600160a01b0316145b610920576040805162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08185d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b60ca5461092e906001611f3c565b60ca55816109775760ca5460d05460408051918252517f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f29181900360200190a25060d054610d29565b60006109946000841261098a578361098f565b836000035b611f96565b60d0549091506000906109b5906109af84633b9aca00611ff1565b9061204a565b90506000808512156109d6576109cf633b9aca008361208c565b90506109e7565b6109e4633b9aca0083611f3c565b90505b6000851215610a055760d0546109fd908461208c565b60d055610a16565b60d054610a129084611f3c565b60d0555b60005b60cf54811015610ae857600060cc600060cf8481548110610a3657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541115610ae057610aa96009600a0a6109af8460cc600060cf8781548110610a7e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205490611ff1565b60cc600060cf8481548110610aba57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b600101610a19565b5060ca5460d05460408051918252517f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f29181900360200190a260005b60c954811015610d1f57600060c98281548110610b3d57fe5b60009182526020909120600290910201805490915060ff1615610d165780546001808301805460408051602060026101009685161587026000190190941693909304601f8101849004840282018401909252818152600095610c059590046001600160a01b0316939092909190830182828015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b50505050506120ce565b905080610d145781546040805185815260208101828152600180870180546002610100938216158402600019019091160494840185905294046001600160a01b0316937f8091ecaaa54ebb82e02d36c2c336528e0fcb9b3430fc1291ac88295032b9c263938893919290606083019084908015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b5050935050505060405180910390a26040805162461bcd60e51b8152602060048201526012602482015271151c985b9cd858dd1a5bdb8811985a5b195960721b604482015290519081900360640190fd5b505b50600101610b24565b5060d05493505050505b919050565b610d36611e4c565b6097546001600160a01b03908116911614610d86576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6040805160608101825260018082526001600160a01b03808616602080850191825294840186815260c980549485018155600052845160029094027f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2881018054935190941661010002610100600160a81b031995151560ff19909416939093179490941691909117825551805193949193610e48937f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2901929190910190612d09565b5050505050565b60d25490565b6000610e5f611e4c565b6001600160a01b038116600090815260ce602052604090205490915060ff1615610eba5760405162461bcd60e51b815260040180806020018281038252602c815260200180612fc3602c913960400191505060405180910390fd5b6000610ec88360d3546120f1565b505050506001600160a01b038316600090815260cb6020526040902054909150610ef2908261208c565b6001600160a01b038316600090815260cb602052604090205560d154610f18908261208c565b60d15560d254610f289084611f3c565b60d255505050565b60d05490565b610f3e611e4c565b6097546001600160a01b03908116911614610f8e576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60d355565b6000610fa084848461213f565b61101084610fac611e4c565b61100b85604051806060016040528060288152602001612edf602891396001600160a01b038a16600090815260cd6020526040812090610fea611e4c565b6001600160a01b03168152602081019190915260400160002054919061236b565b611e50565b5060019392505050565b60d35481565b60d55481565b600060d1548211156110695760405162461bcd60e51b815260040180806020018281038252602a815260200180612f50602a913960400191505060405180910390fd5b6000611073612402565b905061107f838261204a565b9392505050565b606a5460ff1690565b600061088361109c611e4c565b8461100b8560cd60006110ad611e4c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611f3c565b60d4546001600160a01b031681565b60d65481565b6110fa611e4c565b6097546001600160a01b0390811691161461114a576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60c9548110611196576040805162461bcd60e51b8152602060048201526013602482015272696e646578206f7574206f6620626f756e647360681b604482015290519081900360640190fd5b60c954600019018110156112475760c9805460001981019081106111b657fe5b906000526020600020906002020160c982815481106111d157fe5b6000918252602090912082546002928302909101805460ff191660ff9092161515919091178082558354610100600160a81b0319909116610100918290046001600160a01b03168202178255600180850180549394611243948387019492938116159092026000190190911604612d83565b5050505b60c980548061125257fe5b60008281526020812060026000199093019283020180546001600160a81b0319168155906112836001830182612df8565b5050905550565b611292611e4c565b6097546001600160a01b039081169116146112e2576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60d85415611337576040805162461bcd60e51b815260206004820152601960248201527f4c696d6974206368616e676573206e6f7420616c6c6f77656400000000000000604482015290519081900360640190fd5b60d59290925560d65560d7554260d855565b611351611e4c565b6097546001600160a01b039081169116146113a1576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60c95482106113e15760405162461bcd60e51b8152600401808060200182810382526028815260200180612e966028913960400191505060405180910390fd5b8060c983815481106113ef57fe5b60009182526020909120600290910201805460ff19169115159190911790555050565b6001600160a01b038116600090815260ce602052604081205460ff161561145257506001600160a01b038116600090815260cc6020526040902054610d29565b6001600160a01b038216600090815260cb602052604090205461088790611026565b61147c611e4c565b6097546001600160a01b039081169116146114cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6097546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3609780546001600160a01b0319169055565b60d75481565b600054610100900460ff16806115355750611535612425565b80611543575060005460ff16155b61158a576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff161580156115b5576000805460ff1961ff0019909116610100171660011790555b6115fb60405180604001604052806008815260200167141bdb1ad854d95d60c21b815250604051806040016040528060048152602001631414d15560e21b81525061242b565b61160560096124ec565b61160d612502565b6514eb1ad4700060d055650e7910707fff1960d15561162a611e4c565b60d480546001600160a01b0319166001600160a01b039290921691909117905561012c60d35560d15460cb600061165f611e4c565b6001600160a01b03168152602081019190915260400160002055611681611e4c565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60d0546040518082815260200191505060405180910390a36116de6116d9611e4c565b611a0c565b6116e730611a0c565b80156116f9576000805461ff00191690555b50565b6097546001600160a01b031690565b60c95490565b60698054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561085f5780601f106108345761010080835404028352916020019161085f565b600060d0548311156117cb576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816117ec5760006117de8460d3546120f1565b509294506108879350505050565b60006117fa8460d3546120f1565b509194506108879350505050565b60c9818154811061181557fe5b6000918252602091829020600291820201805460018083018054604080516101009483161585026000190190921696909604601f810188900488028201880190965285815260ff84169750919092046001600160a01b031694929390928301828280156118c35780601f10611898576101008083540402835291602001916118c3565b820191906000526020600020905b8154815290600101906020018083116118a657829003601f168201915b5050505050905083565b60006108836118da611e4c565b8461100b85604051806060016040528060258152602001612fef6025913960cd6000611904611e4c565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061236b565b6000610883611942611e4c565b848461213f565b6001600160a01b0316600090815260ce602052604090205460ff1690565b6001600160a01b03918216600090815260cd6020908152604080832093909416825291909152205490565b61199a611e4c565b6097546001600160a01b039081169116146119ea576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b60d480546001600160a01b0319166001600160a01b0392909216919091179055565b611a14611e4c565b6097546001600160a01b03908116911614611a64576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260ce602052604090205460ff1615611ad2576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260cb602052604090205415611b2c576001600160a01b038116600090815260cb6020526040902054611b1290611026565b6001600160a01b038216600090815260cc60205260409020555b6001600160a01b0316600081815260ce60205260408120805460ff1916600190811790915560cf805491820181559091527facb8d954e2cfef495862221e91bd7523613cf8808827cb33edfe4904cc51bf290180546001600160a01b0319169091179055565b611b9a611e4c565b6097546001600160a01b03908116911614611bea576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6001600160a01b038116611c2f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e4e6026913960400191505060405180910390fd5b6097546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3609780546001600160a01b0319166001600160a01b0392909216919091179055565b611c93611e4c565b6097546001600160a01b03908116911614611ce3576040805162461bcd60e51b81526020600482018190526024820152600080516020612f07833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260ce602052604090205460ff16611d50576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60cf54811015611e4857816001600160a01b031660cf8281548110611d7457fe5b6000918252602090912001546001600160a01b03161415611e405760cf80546000198101908110611da157fe5b60009182526020909120015460cf80546001600160a01b039092169183908110611dc757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918416815260cc8252604080822082905560ce90925220805460ff1916905560cf805480611e1957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611e48565b600101611d53565b5050565b3390565b6001600160a01b038316611e955760405162461bcd60e51b8152600401808060200182810382526024815260200180612f9f6024913960400191505060405180910390fd5b6001600160a01b038216611eda5760405162461bcd60e51b8152600401808060200182810382526022815260200180612e746022913960400191505060405180910390fd5b6001600160a01b03808416600081815260cd6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008282018381101561107f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080821215611fed576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b60008261200057506000610887565b8282028284828161200d57fe5b041461107f5760405162461bcd60e51b8152600401808060200182810382526021815260200180612ebe6021913960400191505060405180910390fd5b600061107f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ab565b600061107f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061236b565b6000806040516020840160008286518360008a6187965a03f19695505050505050565b60008060008060008060006121068989612610565b915091506000612114612402565b905060008060006121268d868661263e565b919f909e50909c50959a50939850939650505050505050565b6001600160a01b0383166121845760405162461bcd60e51b8152600401808060200182810382526025815260200180612f7a6025913960400191505060405180910390fd5b600081116121c35760405162461bcd60e51b8152600401808060200182810382526029815260200180612f276029913960400191505060405180910390fd5b6001600160a01b0383163014806121f257506121dd6116fc565b6001600160a01b0316836001600160a01b0316145b1561220957612204838383600061267a565b612366565b6001600160a01b038316600090815260ce602052604090205460ff16801561224a57506001600160a01b038216600090815260ce602052604090205460ff16155b1561225d5761220483838360d3546127c9565b6001600160a01b038316600090815260ce602052604090205460ff1615801561229e57506001600160a01b038216600090815260ce602052604090205460ff165b156122b15761220483838360d354612869565b6001600160a01b038316600090815260ce602052604090205460ff161580156122f357506001600160a01b038216600090815260ce602052604090205460ff16155b156123065761220483838360d3546128ab565b6001600160a01b038316600090815260ce602052604090205460ff16801561234657506001600160a01b038216600090815260ce602052604090205460ff165b1561235857612204838383600061267a565b61236683838360d3546128ab565b505050565b600081848411156123fa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5781810151838201526020016123a7565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061240f6128ed565b909250905061241e828261204a565b9250505090565b303b1590565b600054610100900460ff16806124445750612444612425565b80612452575060005460ff16155b612499576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff161580156124c4576000805460ff1961ff0019909116610100171660011790555b6124cc612a50565b6124d68383612afc565b8015612366576000805461ff0019169055505050565b606a805460ff191660ff92909216919091179055565b600054610100900460ff168061251b575061251b612425565b80612529575060005460ff16155b612570576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff1615801561259b576000805460ff1961ff0019909116610100171660011790555b6125a3612a50565b6116e7612be0565b600081836125fa5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123bf5781810151838201526020016123a7565b50600083858161260657fe5b0495945050505050565b600080806126246127106109af8787611ff1565b90506000612632868361208c565b96919550909350505050565b600080808061264d8786611ff1565b9050600061265b8787611ff1565b90506000612669838361208c565b929992985090965090945050505050565b600080600080600061268c87876120f1565b6001600160a01b038e16600090815260cc6020526040902054949950929750909550935091506126bc908861208c565b6001600160a01b038a16600090815260cc602090815260408083209390935560cb905220546126eb908661208c565b6001600160a01b03808b16600090815260cb6020908152604080832094909455918b16815260cc90915220546127219083611f3c565b6001600160a01b038916600090815260cc602090815260408083209390935560cb905220546127509085611f3c565b6001600160a01b038916600090815260cb60205260409020556127738382612ce5565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050505050505050565b60008060008060006127db87876120f1565b6001600160a01b038e16600090815260cc60205260409020549499509297509095509350915061280b908861208c565b6001600160a01b038a16600090815260cc602090815260408083209390935560cb9052205461283a908661208c565b6001600160a01b03808b16600090815260cb602052604080822093909355908a16815220546127509085611f3c565b600080600080600061287b87876120f1565b6001600160a01b038e16600090815260cb6020526040902054949950929750909550935091506126eb908661208c565b60008060008060006128bd87876120f1565b6001600160a01b038e16600090815260cb60205260409020549499509297509095509350915061283a908661208c565b60d15460d0546000918291825b60cf54811015612a1e578260cb600060cf848154811061291657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061297b57508160cc600060cf848154811061295457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156129925760d15460d05494509450505050612a4c565b6129d260cb600060cf84815481106129a657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061208c565b9250612a1460cc600060cf84815481106129e857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061208c565b91506001016128fa565b5060d05460d154612a2e9161204a565b821015612a465760d15460d054935093505050612a4c565b90925090505b9091565b600054610100900460ff1680612a695750612a69612425565b80612a77575060005460ff16155b612abe576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff161580156116e7576000805460ff1961ff00199091166101001716600117905580156116f9576000805461ff001916905550565b600054610100900460ff1680612b155750612b15612425565b80612b23575060005460ff16155b612b6a576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff16158015612b95576000805460ff1961ff0019909116610100171660011790555b8251612ba8906068906020860190612d09565b508151612bbc906069906020850190612d09565b50606a805460ff191660121790558015612366576000805461ff0019169055505050565b600054610100900460ff1680612bf95750612bf9612425565b80612c07575060005460ff16155b612c4e576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600054610100900460ff16158015612c79576000805460ff1961ff0019909116610100171660011790555b6000612c83611e4c565b609780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156116f9576000805461ff001916905550565b60d154612cf2908361208c565b60d15560d254612d029082611f3c565b60d2555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d4a57805160ff1916838001178555612d77565b82800160010185558215612d77579182015b82811115612d77578251825591602001919060010190612d5c565b50611fed929150612e38565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612dbc5780548555612d77565b82800160010185558215612d7757600052602060002091601f016020900482015b82811115612d77578254825591600101919060010190612ddd565b50805460018160011615610100020316600290046000825580601f10612e1e57506116f9565b601f0160209004906000526020600020908101906116f991905b5b80821115611fed5760008155600101612e3956fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373696e646578206d75737420626520696e2072616e6765206f662073746f726564207478206c697374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f416d6f756e74206d757374206265206c657373207468616e20746f74616c2072656672616374696f6e7345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e9a4487c8fdb67ca04e8e78de456a8b91406ac2b77a057decefcdf4c0643d72064736f6c634300060c0033

Deployed Bytecode Sourcemap

9771:16596:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6752:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10987:30;;;:::i;:::-;;;;;;;;;;;;;;;;17545:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17545:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12340:1761;;;;;;;;;;;;;;;;-1:-1:-1;12340:1761:0;;:::i;14327:260::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14327:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14327:260:0;;-1:-1:-1;14327:260:0;;-1:-1:-1;;;;;14327:260:0:i;:::-;;18674:87;;;:::i;18769:390::-;;;;;;;;;;;;;;;;-1:-1:-1;18769:390:0;;:::i;12228:100::-;;;:::i;11720:120::-;;;;;;;;;;;;;;;;-1:-1:-1;11720:120:0;;:::i;17714:313::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17714:313:0;;;;;;;;;;;;;;;;;:::i;10783:27::-;;;:::i;10859:35::-;;;:::i;19642:253::-;;;;;;;;;;;;;;;;-1:-1:-1;19642:253:0;;:::i;6938:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18035:227;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18035:227:0;;;;;;;;:::i;10823:23::-;;;:::i;:::-;;;;-1:-1:-1;;;;;10823:23:0;;;;;;;;;;;;;;10901:31;;;:::i;14739:325::-;;;;;;;;;;;;;;;;-1:-1:-1;14739:325:0;;:::i;11852:364::-;;;;;;;;;;;;;;;;-1:-1:-1;11852:364:0;;;;;;;;;;;;:::i;15246:246::-;;;;;;;;;;;;;;;;-1:-1:-1;15246:246:0;;;;;;;;;:::i;17013:198::-;;;;;;;;;;;;;;;;-1:-1:-1;17013:198:0;-1:-1:-1;;;;;17013:198:0;;:::i;3400:148::-;;;:::i;10939:35::-;;;:::i;11030:571::-;;;:::i;3186:79::-;;;:::i;15607:137::-;;;:::i;6843:87::-;;;:::i;19167:467::-;;;;;;;;;;;;;;;;-1:-1:-1;19167:467:0;;;;;;;;;:::i;10107:33::-;;;;;;;;;;;;;;;;-1:-1:-1;10107:33:0;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;10107:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18270:278;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18270:278:0;;;;;;;;:::i;17219:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17219:167:0;;;;;;;;:::i;18556:110::-;;;;;;;;;;;;;;;;-1:-1:-1;18556:110:0;-1:-1:-1;;;;;18556:110:0;;:::i;17394:143::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17394:143:0;;;;;;;;;;:::i;11613:95::-;;;;;;;;;;;;;;;;-1:-1:-1;11613:95:0;-1:-1:-1;;;;;11613:95:0;;:::i;19903:330::-;;;;;;;;;;;;;;;;-1:-1:-1;19903:330:0;-1:-1:-1;;;;;19903:330:0;;:::i;3556:244::-;;;;;;;;;;;;;;;;-1:-1:-1;3556:244:0;-1:-1:-1;;;;;3556:244:0;;:::i;20241:476::-;;;;;;;;;;;;;;;;-1:-1:-1;20241:476:0;-1:-1:-1;;;;;20241:476:0;;:::i;6752:83::-;6822:5;6815:12;;;;;;;;-1:-1:-1;;6815:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6789:13;;6815:12;;6822:5;;6815:12;;6822:5;6815:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6752:83;:::o;10987:30::-;;;;:::o;17545:161::-;17620:4;17637:39;17646:12;:10;:12::i;:::-;17660:7;17669:6;17637:8;:39::i;:::-;-1:-1:-1;17694:4:0;17545:161;;;;;:::o;12340:1761::-;12412:7;12461;:5;:7::i;:::-;-1:-1:-1;;;;;12445:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;12445:23:0;;:51;;;-1:-1:-1;12488:8:0;;-1:-1:-1;;;;;12488:8:0;12472:12;:10;:12::i;:::-;-1:-1:-1;;;;;12472:24:0;;12445:51;12437:85;;;;;-1:-1:-1;;;12437:85:0;;;;;;;;;;;;-1:-1:-1;;;12437:85:0;;;;;;;;;;;;;;;12552:6;;:13;;12563:1;12552:10;:13::i;:::-;12543:6;:22;12584:16;12580:119;;12632:6;;12640:12;;12622:31;;;;;;;;;;;;;;;;-1:-1:-1;12675:12:0;;12668:19;;12580:119;12719:20;12742:58;12757:1;12743:11;:15;:44;;12776:11;12743:44;;;12762:11;12761:12;;12743:44;12742:56;:58::i;:::-;12863:12;;12719:81;;-1:-1:-1;12811:12:0;;12826:50;;:32;12719:81;10756:14;12826:16;:32::i;:::-;:36;;:50::i;:::-;12811:65;;12887:18;12944:1;12930:11;:15;12926:155;;;12975:24;10756:14;12994:4;12975:18;:24::i;:::-;12962:37;;12926:155;;;13045:24;10756:14;13064:4;13045:18;:24::i;:::-;13032:37;;12926:155;13119:1;13105:11;:15;13101:171;;;13152:12;;:30;;13169:12;13152:16;:30::i;:::-;13137:12;:45;13101:171;;;13230:12;;:30;;13247:12;13230:16;:30::i;:::-;13215:12;:45;13101:171;13386:9;13381:219;13405:9;:16;13401:20;;13381:219;;;13470:1;13446:7;:21;13454:9;13464:1;13454:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13454:12:0;13446:21;;;;;;;;;;;;;:25;13443:146;;;13516:57;10706:1;10756:2;:14;13516:37;13542:10;13516:7;:21;13524:9;13534:1;13524:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13524:12:0;13516:21;;;;;;;;;;;;;;:25;:37::i;:57::-;13492:7;:21;13500:9;13510:1;13500:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13500:12:0;13492:21;;;;;;;;;;;;:81;13443:146;13423:3;;13381:219;;;-1:-1:-1;13635:6:0;;13643:12;;13625:31;;;;;;;;;;;;;;;;13668:6;13663:399;13684:12;:19;13680:23;;13663:399;;;13725:21;13749:12;13762:1;13749:15;;;;;;;;;;;;;;;;;;;;;13783:9;;13749:15;;-1:-1:-1;13783:9:0;;13779:272;;;13840:13;;;13855:6;;;13827:35;;;;;;;13840:13;13827:35;;;;;;-1:-1:-1;;13827:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13827:35:0;;13840:13;;-1:-1:-1;;;;;13840:13:0;;13827:35;;13855:6;;13827:35;;;13855:6;13827:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:35::i;:::-;13813:49;;13886:6;13881:155;;13940:13;;13922:43;;;;;;;;;;;;13940:13;13958:6;;;13922:43;;;13940:13;13922:43;;;;;;-1:-1:-1;;13922:43:0;;;;;;;;;;;13940:13;;-1:-1:-1;;;;;13940:13:0;;13922:43;;;;13958:6;;13922:43;;;;;13958:6;;13922:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13988:28;;;-1:-1:-1;;;13988:28:0;;;;;;;;;;;;-1:-1:-1;;;13988:28:0;;;;;;;;;;;;;;13881:155;13779:272;;-1:-1:-1;13705:3:0;;13663:399;;;;14081:12;;14074:19;;;;;12340:1761;;;;:::o;14327:260::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;14462:116:::1;::::0;;::::1;::::0;::::1;::::0;;14498:4:::1;14462:116:::0;;;-1:-1:-1;;;;;14462:116:0;;::::1;;::::0;;::::1;::::0;;;;;;;;;14444:12:::1;:135:::0;;;;::::1;::::0;;-1:-1:-1;14444:135:0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;;-1:-1:-1::0;;;;;;14444:135:0;::::1;;-1:-1:-1::0;;14444:135:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;;;14462:116;;14444:135;;::::1;::::0;;;;;;;::::1;::::0;::::1;:::i;:::-;;;;14327:260:::0;;:::o;18674:87::-;18743:10;;18674:87;:::o;18769:390::-;18821:14;18838:12;:10;:12::i;:::-;-1:-1:-1;;;;;18870:19:0;;;;;;:11;:19;;;;;;18821:29;;-1:-1:-1;18870:19:0;;18869:20;18861:77;;;;-1:-1:-1;;;18861:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18950:15;18973:33;18984:7;18993:12;;18973:10;:33::i;:::-;-1:-1:-1;;;;;;;;;19035:15:0;;;;;;:7;:15;;;;;;18949:57;;-1:-1:-1;19035:28:0;;18949:57;19035:19;:28::i;:::-;-1:-1:-1;;;;;19017:15:0;;;;;;:7;:15;;;;;:46;19084:7;;:20;;19096:7;19084:11;:20::i;:::-;19074:7;:30;19128:10;;:23;;19143:7;19128:14;:23::i;:::-;19115:10;:36;-1:-1:-1;;;18769:390:0:o;12228:100::-;12308:12;;12228:100;:::o;11720:120::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;11806:12:::1;:26:::0;11720:120::o;17714:313::-;17812:4;17829:36;17839:6;17847:9;17858:6;17829:9;:36::i;:::-;17876:121;17885:6;17893:12;:10;:12::i;:::-;17907:89;17945:6;17907:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17907:19:0;;;;;;:11;:19;;;;;;17927:12;:10;:12::i;:::-;-1:-1:-1;;;;;17907:33:0;;;;;;;;;;;;-1:-1:-1;17907:33:0;;;:89;:37;:89::i;:::-;17876:8;:121::i;:::-;-1:-1:-1;18015:4:0;17714:313;;;;;:::o;10783:27::-;;;;:::o;10859:35::-;;;;:::o;19642:253::-;19708:7;19747;;19736;:18;;19728:73;;;;-1:-1:-1;;;19728:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19812:19;19835:10;:8;:10::i;:::-;19812:33;-1:-1:-1;19863:24:0;:7;19812:33;19863:11;:24::i;:::-;19856:31;19642:253;-1:-1:-1;;;19642:253:0:o;6938:83::-;7004:9;;;;6938:83;:::o;18035:227::-;18132:4;18149:83;18158:12;:10;:12::i;:::-;18172:7;18181:50;18220:10;18181:11;:25;18193:12;:10;:12::i;:::-;-1:-1:-1;;;;;18181:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18181:25:0;;;:34;;;;;;;;;;;:38;:50::i;10823:23::-;;;-1:-1:-1;;;;;10823:23:0;;:::o;10901:31::-;;;;:::o;14739:325::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;14847:12:::1;:19:::0;14839:27;::::1;14831:59;;;::::0;;-1:-1:-1;;;14831:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14831:59:0;;;;;;;;;;;;;::::1;;14915:12;:19:::0;-1:-1:-1;;14915:23:0;14907:31;::::1;14903:123;;;14977:12;14990:19:::0;;-1:-1:-1;;14990:23:0;;;14977:37;::::1;;;;;;;;;;;;;;;14955:12;14968:5;14955:19;;;;;;;;;::::0;;;::::1;::::0;;;:59;;:19:::1;::::0;;::::1;::::0;;::::1;:59:::0;;-1:-1:-1;;14955:59:0::1;;::::0;;::::1;;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;;;;;14955:59:0;;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;;14955:59:0::1;::::0;::::1;;::::0;;-1:-1:-1;14955:59:0;;::::1;::::0;;:19;;:59:::1;::::0;;;::::1;::::0;;;;::::1;;::::0;;::::1;-1:-1:-1::0;;14955:59:0;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;14903:123:0::1;15038:12;:18;;;;;;;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;15038:18:0;;;;;::::1;;::::0;;-1:-1:-1;;;;;;15038:18:0;;;;::::1;;::::0;::::1;::::0;::::1;:::i;:::-;;;;;14739:325:::0;:::o;11852:364::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;11978:15:::1;::::0;:20;11970:58:::1;;;::::0;;-1:-1:-1;;;11970:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12049:20;:37:::0;;;;12097:16:::1;:29:::0;12137:20:::1;:37:::0;12205:3:::1;12187:15;:21:::0;11852:364::o;15246:246::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;15372:12:::1;:19:::0;15364:27;::::1;15356:80;;;;-1:-1:-1::0;;;15356:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15477:7;15447:12;15460:5;15447:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:37:::0;;-1:-1:-1;;15447:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;15246:246:0:o;17013:198::-;-1:-1:-1;;;;;17103:20:0;;17079:7;17103:20;;;:11;:20;;;;;;;;17099:49;;;-1:-1:-1;;;;;;17132:16:0;;;;;;:7;:16;;;;;;17125:23;;17099:49;-1:-1:-1;;;;;17186:16:0;;;;;;:7;:16;;;;;;17166:37;;:19;:37::i;3400:148::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;3491:6:::1;::::0;3470:40:::1;::::0;3507:1:::1;::::0;-1:-1:-1;;;;;3491:6:0::1;::::0;3470:40:::1;::::0;3507:1;;3470:40:::1;3521:6;:19:::0;;-1:-1:-1;;;;;;3521:19:0::1;::::0;;3400:148::o;10939:35::-;;;;:::o;11030:571::-;1525:12;;;;;;;;:31;;;1541:15;:13;:15::i;:::-;1525:47;;;-1:-1:-1;1561:11:0;;;;1560:12;1525:47;1517:79;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;;;;1605:19;1628:12;;;;;;1627:13;1647:83;;;;1676:12;:19;;-1:-1:-1;;;;1676:19:0;;;;;1704:18;1691:4;1704:18;;;1647:83;11105:32:::1;;;;;;;;;;;;;;-1:-1:-1::0;;;11105:32:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;11105:32:0::1;;::::0;:12:::1;:32::i;:::-;11148:31;10706:1;11148:14;:31::i;:::-;11190:16;:14;:16::i;:::-;11242:13;11227:12;:28:::0;-1:-1:-1;;11267:7:0::1;:38:::0;11337:12:::1;:10;:12::i;:::-;11326:8;:23:::0;;-1:-1:-1;;;;;;11326:23:0::1;-1:-1:-1::0;;;;;11326:23:0;;;::::1;::::0;;;::::1;::::0;;11385:3:::1;11370:12;:18:::0;11431:7:::1;::::0;11407::::1;-1:-1:-1::0;11415:12:0::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;11407:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11407:21:0;:31;11475:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;11454:48:0::1;11471:1;-1:-1:-1::0;;;;;11454:48:0::1;;11489:12;;11454:48;;;;;;;;;;;;;;;;;;11515:28;11530:12;:10;:12::i;:::-;11515:14;:28::i;:::-;11554:29;11577:4;11554:14;:29::i;:::-;1752:14:::0;1748:57;;;1792:5;1777:20;;-1:-1:-1;;1777:20:0;;;1748:57;11030:571;:::o;3186:79::-;3251:6;;-1:-1:-1;;;;;3251:6:0;3186:79;:::o;15607:137::-;15717:12;:19;15607:137;:::o;6843:87::-;6915:7;6908:14;;;;;;;;-1:-1:-1;;6908:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6882:13;;6908:14;;6915:7;;6908:14;;6915:7;6908:14;;;;;;;;;;;;;;;;;;;;;;;;19167:467;19257:7;19296:12;;19285:7;:23;;19277:67;;;;;-1:-1:-1;;;19277:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19360:17;19355:272;;19395:15;19418:33;19429:7;19438:12;;19418:10;:33::i;:::-;-1:-1:-1;19394:57:0;;-1:-1:-1;19466:14:0;;-1:-1:-1;;;;19466:14:0;19355:272;19515:23;19545:33;19556:7;19565:12;;19545:10;:33::i;:::-;-1:-1:-1;19513:65:0;;-1:-1:-1;19593:22:0;;-1:-1:-1;;;;19593:22:0;10107:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10107:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10107:33:0;;;;-1:-1:-1;;;;;10107:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18270:278::-;18372:4;18389:129;18398:12;:10;:12::i;:::-;18412:7;18421:96;18460:15;18421:96;;;;;;;;;;;;;;;;;:11;:25;18433:12;:10;:12::i;:::-;-1:-1:-1;;;;;18421:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18421:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;17219:167::-;17297:4;17314:42;17324:12;:10;:12::i;:::-;17338:9;17349:6;17314:9;:42::i;18556:110::-;-1:-1:-1;;;;;18638:20:0;18614:4;18638:20;;;:11;:20;;;;;;;;;18556:110::o;17394:143::-;-1:-1:-1;;;;;17502:18:0;;;17475:7;17502:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17394:143::o;11613:95::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;11682:8:::1;:18:::0;;-1:-1:-1;;;;;;11682:18:0::1;-1:-1:-1::0;;;;;11682:18:0;;;::::1;::::0;;;::::1;::::0;;11613:95::o;19903:330::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19983:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;19982:21;19974:61;;;::::0;;-1:-1:-1;;;19974:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20049:16:0;::::1;20068:1;20049:16:::0;;;:7:::1;:16;::::0;;;;;:20;20046:108:::1;;-1:-1:-1::0;;;;;20125:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20105:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20086:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20046:108:::1;-1:-1:-1::0;;;;;20164:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20164:27:0::1;20187:4;20164:27:::0;;::::1;::::0;;;20202:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20202:23:0::1;::::0;;::::1;::::0;;19903:330::o;3556:244::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3645:22:0;::::1;3637:73;;;;-1:-1:-1::0;;;3637:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3747:6;::::0;3726:38:::1;::::0;-1:-1:-1;;;;;3726:38:0;;::::1;::::0;3747:6:::1;::::0;3726:38:::1;::::0;3747:6:::1;::::0;3726:38:::1;3775:6;:17:::0;;-1:-1:-1;;;;;;3775:17:0::1;-1:-1:-1::0;;;;;3775:17:0;;;::::1;::::0;;;::::1;::::0;;3556:244::o;20241:476::-;3323:12;:10;:12::i;:::-;3313:6;;-1:-1:-1;;;;;3313:6:0;;;:22;;;3305:67;;;;;-1:-1:-1;;;3305:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3305:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20320:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20312:60;;;::::0;;-1:-1:-1;;;20312:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20388:9;20383:327;20407:9;:16:::0;20403:20;::::1;20383:327;;;20465:7;-1:-1:-1::0;;;;;20449:23:0::1;:9;20459:1;20449:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20449:12:0::1;:23;20445:254;;;20508:9;20518:16:::0;;-1:-1:-1;;20518:20:0;;;20508:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20493:9:::1;:12:::0;;-1:-1:-1;;;;;20508:31:0;;::::1;::::0;20503:1;;20493:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20493:46:0::1;-1:-1:-1::0;;;;;20493:46:0;;::::1;;::::0;;20558:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20597:11:::1;:20:::0;;;;:28;;-1:-1:-1;;20597:28:0::1;::::0;;20644:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20644:15:0;;;;;-1:-1:-1;;;;;;20644:15:0::1;::::0;;;;;20678:5:::1;;20445:254;20425:3;;20383:327;;;;20241:476:::0;:::o;2260:106::-;2348:10;2260:106;:::o;20725:347::-;-1:-1:-1;;;;;20828:19:0;;20820:68;;;;-1:-1:-1;;;20820:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20907:21:0;;20899:68;;;;-1:-1:-1;;;20899:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20980:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21032:32;;;;;;;;;;;;;;;;;20725:347;;;:::o;4561:181::-;4619:7;4651:5;;;4675:6;;;;4667:46;;;;;-1:-1:-1;;;4667:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:171;1083:7;1120:1;1111:5;:10;;1103:55;;;;;-1:-1:-1;;;1103:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1184:5:0;1027:171::o;5098:250::-;5156:7;5180:6;5176:47;;-1:-1:-1;5210:1:0;5203:8;;5176:47;5247:5;;;5251:1;5247;:5;:1;5271:5;;;;;:10;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5356:132;5414:7;5441:39;5445:1;5448;5441:39;;;;;;;;;;;;;;;;;:3;:39::i;4750:136::-;4808:7;4835:43;4839:1;4842;4835:43;;;;;;;;;;;;;;;;;:3;:43::i;15755:1250::-;15853:4;15875:11;16115:4;16109:11;16243:2;16237:4;16233:13;16890:1;16858:13;16766:4;16760:11;16730;16685:1;16655:11;16626:5;16619;16615:17;16272:691;16262:701;15755:1250;-1:-1:-1;;;;;;15755:1250:0:o;24546:445::-;24626:7;24635;24644;24653;24662;24683:23;24708:12;24724:33;24736:7;24745:11;24724;:33::i;:::-;24682:75;;;;24768:19;24791:10;:8;:10::i;:::-;24768:33;;24813:15;24830:23;24855:12;24871:39;24883:7;24892:4;24898:11;24871;:39::i;:::-;24812:98;;;;-1:-1:-1;24812:98:0;;-1:-1:-1;24961:15:0;;-1:-1:-1;24978:4:0;;-1:-1:-1;24546:445:0;;-1:-1:-1;;;;;;;24546:445:0:o;21080:1054::-;-1:-1:-1;;;;;21187:20:0;;21179:70;;;;-1:-1:-1;;;21179:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21277:1;21268:6;:10;21260:64;;;;-1:-1:-1;;;21260:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21338:23:0;;21356:4;21338:23;;:44;;;21375:7;:5;:7::i;:::-;-1:-1:-1;;;;;21365:17:0;:6;-1:-1:-1;;;;;21365:17:0;;21338:44;21335:792;;;21399:51;21421:6;21429:9;21440:6;21448:1;21399:21;:51::i;:::-;21335:792;;;-1:-1:-1;;;;;21471:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;21495:22:0;;;;;;:11;:22;;;;;;;;21494:23;21471:46;21468:659;;;21534:62;21556:6;21564:9;21575:6;21583:12;;21534:21;:62::i;21468:659::-;-1:-1:-1;;;;;21619:19:0;;;;;;:11;:19;;;;;;;;21618:20;:46;;;;-1:-1:-1;;;;;;21642:22:0;;;;;;:11;:22;;;;;;;;21618:46;21614:513;;;21685:60;21705:6;21713:9;21724:6;21732:12;;21685:19;:60::i;21614:513::-;-1:-1:-1;;;;;21768:19:0;;;;;;:11;:19;;;;;;;;21767:20;:47;;;;-1:-1:-1;;;;;;21792:22:0;;;;;;:11;:22;;;;;;;;21791:23;21767:47;21763:364;;;21831:58;21849:6;21857:9;21868:6;21876:12;;21831:17;:58::i;21763:364::-;-1:-1:-1;;;;;21911:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;21934:22:0;;;;;;:11;:22;;;;;;;;21911:45;21907:220;;;21973:51;21995:6;22003:9;22014:6;22022:1;21973:21;:51::i;21907:220::-;22057:58;22075:6;22083:9;22094:6;22102:12;;22057:17;:58::i;:::-;21080:1054;;;:::o;4894:192::-;4980:7;5016:12;5008:6;;;;5000:29;;;;-1:-1:-1;;;5000:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5052:5:0;;;4894:192::o;25612:163::-;25653:7;25674:15;25691;25710:19;:17;:19::i;:::-;25673:56;;-1:-1:-1;25673:56:0;-1:-1:-1;25747:20:0;25673:56;;25747:11;:20::i;:::-;25740:27;;;;25612:163;:::o;1816:174::-;1899:4;1945:17;1977:7;1816:174;:::o;6375:177::-;1525:12;;;;;;;;:31;;;1541:15;:13;:15::i;:::-;1525:47;;;-1:-1:-1;1561:11:0;;;;1560:12;1525:47;1517:79;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;;;;1605:19;1628:12;;;;;;1627:13;1647:83;;;;1676:12;:19;;-1:-1:-1;;;;1676:19:0;;;;;1704:18;1691:4;1704:18;;;1647:83;6471:26:::1;:24;:26::i;:::-;6508:36;6531:4;6537:6;6508:22;:36::i;:::-;1752:14:::0;1748:57;;;1792:5;1777:20;;-1:-1:-1;;1777:20:0;;;6375:177;;;:::o;9540:90::-;9601:9;:21;;-1:-1:-1;;9601:21:0;;;;;;;;;;;;9540:90::o;2843:129::-;1525:12;;;;;;;;:31;;;1541:15;:13;:15::i;:::-;1525:47;;;-1:-1:-1;1561:11:0;;;;1560:12;1525:47;1517:79;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;;;;1605:19;1628:12;;;;;;1627:13;1647:83;;;;1676:12;:19;;-1:-1:-1;;;;1676:19:0;;;;;1704:18;1691:4;1704:18;;;1647:83;2901:26:::1;:24;:26::i;:::-;2938;:24;:26::i;5496:189::-:0;5582:7;5617:12;5610:5;5602:28;;;;-1:-1:-1;;;5602:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5641:9;5657:1;5653;:5;;;;;;;5496:189;-1:-1:-1;;;;;5496:189:0:o;24999:263::-;25080:7;;;25124:35;25153:5;25124:24;:7;25136:11;25124;:24::i;:35::-;25109:50;-1:-1:-1;25170:23:0;25196:17;:7;25109:50;25196:11;:17::i;:::-;25170:43;25249:4;;-1:-1:-1;24999:263:0;;-1:-1:-1;;;;24999:263:0:o;25270:334::-;25365:7;;;;25421:24;:7;25433:11;25421;:24::i;:::-;25403:42;-1:-1:-1;25456:12:0;25471:21;:4;25480:11;25471:8;:21::i;:::-;25456:36;-1:-1:-1;25503:23:0;25529:17;:7;25456:36;25529:11;:17::i;:::-;25565:7;;;;-1:-1:-1;25591:4:0;;-1:-1:-1;25270:334:0;;-1:-1:-1;;;;;25270:334:0:o;23764:619::-;23888:15;23905:23;23930:12;23944:23;23969:12;23985:32;23996:7;24005:11;23985:10;:32::i;:::-;-1:-1:-1;;;;;24046:15:0;;;;;;:7;:15;;;;;;23887:130;;-1:-1:-1;23887:130:0;;-1:-1:-1;23887:130:0;;-1:-1:-1;23887:130:0;-1:-1:-1;23887:130:0;-1:-1:-1;24046:28:0;;24066:7;24046:19;:28::i;:::-;-1:-1:-1;;;;;24028:15:0;;;;;;:7;:15;;;;;;;;:46;;;;24103:7;:15;;;;:28;;24123:7;24103:19;:28::i;:::-;-1:-1:-1;;;;;24085:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;24163:18;;;;;:7;:18;;;;;:39;;24186:15;24163:22;:39::i;:::-;-1:-1:-1;;;;;24142:18:0;;;;;;:7;:18;;;;;;;;:60;;;;24234:7;:18;;;;:39;;24257:15;24234:22;:39::i;:::-;-1:-1:-1;;;;;24213:18:0;;;;;;:7;:18;;;;;:60;24292:23;24304:4;24310;24292:11;:23::i;:::-;24348:9;-1:-1:-1;;;;;24331:44:0;24340:6;-1:-1:-1;;;;;24331:44:0;;24359:15;24331:44;;;;;;;;;;;;;;;;;;23764:619;;;;;;;;;:::o;23213:543::-;23337:15;23354:23;23379:12;23393:23;23418:12;23434:32;23445:7;23454:11;23434:10;:32::i;:::-;-1:-1:-1;;;;;23495:15:0;;;;;;:7;:15;;;;;;23336:130;;-1:-1:-1;23336:130:0;;-1:-1:-1;23336:130:0;;-1:-1:-1;23336:130:0;-1:-1:-1;23336:130:0;-1:-1:-1;23495:28:0;;23515:7;23495:19;:28::i;:::-;-1:-1:-1;;;;;23477:15:0;;;;;;:7;:15;;;;;;;;:46;;;;23552:7;:15;;;;:28;;23572:7;23552:19;:28::i;:::-;-1:-1:-1;;;;;23534:15:0;;;;;;;:7;:15;;;;;;:46;;;;23612:18;;;;;;;:39;;23635:15;23612:22;:39::i;22642:563::-;22764:15;22781:23;22806:12;22820:23;22845:12;22861:32;22872:7;22881:11;22861:10;:32::i;:::-;-1:-1:-1;;;;;22922:15:0;;;;;;:7;:15;;;;;;22763:130;;-1:-1:-1;22763:130:0;;-1:-1:-1;22763:130:0;;-1:-1:-1;22763:130:0;-1:-1:-1;22763:130:0;-1:-1:-1;22922:28:0;;22763:130;22922:19;:28::i;22148:486::-;22268:15;22285:23;22310:12;22324:23;22349:12;22365:32;22376:7;22385:11;22365:10;:32::i;:::-;-1:-1:-1;;;;;22426:15:0;;;;;;:7;:15;;;;;;22267:130;;-1:-1:-1;22267:130:0;;-1:-1:-1;22267:130:0;;-1:-1:-1;22267:130:0;-1:-1:-1;22267:130:0;-1:-1:-1;22426:28:0;;22267:130;22426:19;:28::i;25783:581::-;25880:7;;25916:12;;25833:7;;;;;25945:294;25969:9;:16;25965:20;;25945:294;;;26035:7;26011;:21;26019:9;26029:1;26019:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26019:12:0;26011:21;;;;;;;;;;;;;:31;;:66;;;26070:7;26046;:21;26054:9;26064:1;26054:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26054:12:0;26046:21;;;;;;;;;;;;;:31;26011:66;26007:102;;;26087:7;;26096:12;;26079:30;;;;;;;;;26007:102;26134:34;26146:7;:21;26154:9;26164:1;26154:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26154:12:0;26146:21;;;;;;;;;;;;;26134:7;;:11;:34::i;:::-;26124:44;;26193:34;26205:7;:21;26213:9;26223:1;26213:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26213:12:0;26205:21;;;;;;;;;;;;;26193:7;;:11;:34::i;:::-;26183:44;-1:-1:-1;25987:3:0;;25945:294;;;-1:-1:-1;26275:12:0;;26263:7;;:25;;:11;:25::i;:::-;26253:7;:35;26249:71;;;26298:7;;26307:12;;26290:30;;;;;;;;26249:71;26339:7;;-1:-1:-1;26348:7:0;-1:-1:-1;25783:581:0;;;:::o;2187:65::-;1525:12;;;;;;;;:31;;;1541:15;:13;:15::i;:::-;1525:47;;;-1:-1:-1;1561:11:0;;;;1560:12;1525:47;1517:79;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;;;;1605:19;1628:12;;;;;;1627:13;1647:83;;;;1676:12;:19;;-1:-1:-1;;;;1676:19:0;;;;;1704:18;1691:4;1704:18;;;1752:14;1748:57;;;1792:5;1777:20;;-1:-1:-1;;1777:20:0;;;2187:65;:::o;6560:184::-;1525:12;;;;;;;;:31;;;1541:15;:13;:15::i;:::-;1525:47;;;-1:-1:-1;1561:11:0;;;;1560:12;1525:47;1517:79;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;;;;1605:19;1628:12;;;;;;1627:13;1647:83;;;;1676:12;:19;;-1:-1:-1;;;;1676:19:0;;;;;1704:18;1691:4;1704:18;;;1647:83;6670:12;;::::1;::::0;:5:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6693:16:0;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6720:9:0::1;:14:::0;;-1:-1:-1;;6720:14:0::1;6732:2;6720:14;::::0;;1748:57;;;;1792:5;1777:20;;-1:-1:-1;;1777:20:0;;;6560:184;;;:::o;2980:198::-;1525:12;;;;;;;;:31;;;1541:15;:13;:15::i;:::-;1525:47;;;-1:-1:-1;1561:11:0;;;;1560:12;1525:47;1517:79;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;-1:-1:-1;;;1517:79:0;;;;;;;;;;;;;;;1605:19;1628:12;;;;;;1627:13;1647:83;;;;1676:12;:19;;-1:-1:-1;;;;1676:19:0;;;;;1704:18;1691:4;1704:18;;;1647:83;3048:17:::1;3068:12;:10;:12::i;:::-;3091:6;:18:::0;;-1:-1:-1;;;;;;3091:18:0::1;-1:-1:-1::0;;;;;3091:18:0;::::1;::::0;;::::1;::::0;;;3125:43:::1;::::0;3091:18;;-1:-1:-1;3091:18:0;-1:-1:-1;;3125:43:0::1;::::0;-1:-1:-1;;3125:43:0::1;1738:1;1752:14:::0;1748:57;;;1792:5;1777:20;;-1:-1:-1;;1777:20:0;;;2980:198;:::o;24391:147::-;24469:7;;:17;;24481:4;24469:11;:17::i;:::-;24459:7;:27;24510:10;;:20;;24525:4;24510:14;:20::i;:::-;24497:10;:33;-1:-1:-1;;24391:147:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://e9a4487c8fdb67ca04e8e78de456a8b91406ac2b77a057decefcdf4c0643d720
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.