ETH Price: $3,397.11 (+6.44%)
Gas: 23 Gwei

Token

314 (314)
 

Overview

Max Total Supply

4,339,055.536482844647325211 314

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000733981 314

Value
$0.00
0x12a5104f28952273d116e48fc53651ef6731472a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ERC314Token

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-28
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

interface IEERC314 {
  event Transfer(address indexed from, address indexed to, uint256 value);
  event AddLiquidity(uint32 _blockToUnlockLiquidity, uint256 value);
  event RemoveLiquidity(uint256 value);
  event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out);
}

abstract contract ERC314 is IEERC314 {
    mapping(address account => uint256) private _balances;
    mapping(address account => uint256) private _lastTxTime;
    mapping(address account => uint32) private lastTransaction;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    uint256 public _maxWallet;
    uint32 public blockToUnlockLiquidity;

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

    string private _name;
    string private _symbol;

    address public owner;
    address public liquidityProvider;

    bool public tradingEnable;
    bool public liquidityAdded;
    bool public maxWalletEnable;

  modifier onlyOwner() {
    require(msg.sender == owner, 'Ownable: caller is not the owner');
    _;
  }

  modifier onlyLiquidityProvider() {
    require(msg.sender == liquidityProvider, 'You are not the liquidity provider');
    _;
  }

 address payable public feeReceiver;
  constructor(string memory name_, string memory symbol_, uint256 totalSupply_) {
    _name = name_;
    _symbol = symbol_;
    _totalSupply = totalSupply_;
    _maxWallet = totalSupply_ * 100 / 100;
    address receiver = 0xb33aE298655042AEB1A8172875B56C02B6c358B4;
    feeReceiver = payable(0x9D2D4178785A8f05e28d5F2733cA4F30A23Fe795);
    owner = receiver;
    tradingEnable = false;
    maxWalletEnable = true;

    // _balances[receiver] = totalSupply_ * 50 / 100;
    uint256 liquidityAmount = 0 * 10 ** 18;
    // uint256 liquidityAmount = totalSupply_ / 2; // for test
    _balances[address(this)] = liquidityAmount;
    _balances[receiver] = totalSupply_ - liquidityAmount;
    emit Transfer(address(0), address(this), liquidityAmount);
    emit Transfer(address(0), receiver, totalSupply_ - liquidityAmount);

    liquidityAdded = false;

    excludeOf[receiver] = true;
    excludeOf[feeReceiver] = true;
    excludeOf[address(this)] = true;

    // excludeCoolingOf[receiver] =true;
    
  }

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

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

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

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

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

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual returns (bool) {
        address _owner = msg.sender;
        _approve(_owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);

        if (to == address(this)) {
            sell(from, amount);
        } else {
            _transfer(from, to, amount);
        }

        return true;
    }


    // function transfer(address to, uint256 value) public virtual returns (bool) {
    //     // sell or transfer
    //     if (to == address(this)) {
    //     sell(value);
    //     } else {
    //     _transfer(msg.sender, to, value);
    //     }
    //     return true;
    // }

    function transfer(address to, uint256 value) public virtual returns (bool) {
        // sell or transfer
        if (to == address(this)) {
            sell(msg.sender, value);
        } else {
            _transfer(msg.sender, to, value);
        }
        return true;
    }

    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 _spendAllowance(
        address _owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(_owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(_owner, spender, currentAllowance - amount);
            }
        }
    }


    uint256 public cooldownSec = 5;
    function setCooldownSec(uint256 newValue) public onlyOwner{
        require(newValue <= 60,"too long");
        cooldownSec = newValue;
    }

    mapping(address => bool) public excludeCoolingOf;
    function setExcludeCoolingOf(
        address[] memory accounts,
        bool _ok
    ) external onlyOwner {
        for (uint i = 0; i < accounts.length; i++) {
            excludeCoolingOf[accounts[i]] = _ok;
        }
    }

    mapping(address => bool) public excludeOf;
    function setExcludeOf(
        address[] memory accounts,
        bool _ok
    ) external onlyOwner {
        for (uint i = 0; i < accounts.length; i++) {
            excludeOf[accounts[i]] = _ok;
        }
    }

    bool public checkIfCA = true;
    function enableCheckIfCA(bool status) public onlyOwner{
        checkIfCA = status;
    }

    function isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

  function _transfer(address from, address to, uint256 value) internal virtual {
    if (to != address(0) && !excludeCoolingOf[msg.sender]) {
      require(lastTransaction[msg.sender] != block.number, "You can't make two transactions in the same block");
      lastTransaction[msg.sender] = uint32(block.number);

      require(block.timestamp >= _lastTxTime[msg.sender] + cooldownSec, 'Sender must wait for cooldown');
      _lastTxTime[msg.sender] = block.timestamp;
    }

    if (from != address(this) && to != address(this) && !excludeOf[from] && !excludeOf[to] && checkIfCA){
        require(!isContract(to),"cant add other lp");
    }

    require(_balances[from] >= value, 'ERC20: transfer amount exceeds balance');

    unchecked {
      _balances[from] = _balances[from] - value;
    }

    if (to == address(0)) {
      unchecked {
        _totalSupply -= value;
      }
    } else {
      unchecked {
        _balances[to] += value;
      }
    }

    emit Transfer(from, to, value);
  }

  function getReserves() public view returns (uint256, uint256) {
    return (address(this).balance, _balances[address(this)]);
  }

  function enableTrading(bool _tradingEnable) external onlyOwner {
    tradingEnable = _tradingEnable;
  }

  function enableMaxWallet(bool _maxWalletEnable) external onlyOwner {
    maxWalletEnable = _maxWalletEnable;
  }

  function setMaxWallet(uint256 _maxWallet_) external onlyOwner {
    _maxWallet = _maxWallet_;
  }

  function renounceOwnership() external onlyOwner {
    owner = address(0);
  }

  function addLiquidity(uint32 _blockToUnlockLiquidity) public payable onlyOwner {
    require(liquidityAdded == false, 'Liquidity already added');

    liquidityAdded = true;

    require(msg.value > 0, 'No ETH sent');
    require(block.number < _blockToUnlockLiquidity, 'Block number too low');

    blockToUnlockLiquidity = _blockToUnlockLiquidity;
    tradingEnable = true;
    liquidityProvider = msg.sender;

    emit AddLiquidity(_blockToUnlockLiquidity, msg.value);
  }

  function removeLiquidity() public onlyLiquidityProvider {
    require(block.number > blockToUnlockLiquidity, 'Liquidity locked');

    tradingEnable = false;

    payable(msg.sender).transfer(address(this).balance);

    emit RemoveLiquidity(address(this).balance);
  }

  function extendLiquidityLock(uint32 _blockToUnlockLiquidity) public onlyLiquidityProvider {
    require(blockToUnlockLiquidity < _blockToUnlockLiquidity, "You can't shorten duration");

    blockToUnlockLiquidity = _blockToUnlockLiquidity;
  }

  function getAmountOut(uint256 value, bool _buy) public view returns (uint256) {
    (uint256 reserveETH, uint256 reserveToken) = getReserves();

    if (_buy) {
      return (value * reserveToken) / (reserveETH + value);
    } else {
      return (value * reserveETH) / (reserveToken + value);
    }
  }

    uint256 public buyFee = 300;
    uint256 public sellFee = 300;
    function setFee(uint256 newBuy, uint256 newSell) public onlyOwner{
        buyFee = newBuy;
        sellFee = newSell;
    }

    uint256 public buyBurnFee = 14;
    uint256 public sellBurnFee = 14;
    function setBurnFee(uint256 newBuyBurn, uint256 newSellBurn) public onlyOwner{
        buyBurnFee = newBuyBurn;
        sellBurnFee = newSellBurn;
    }

  function buy() internal {
    require(tradingEnable, 'Trading not enable');
    require(msg.sender == tx.origin, "Only external calls allowed");

    uint256 msgValue = msg.value;
    uint256 feeValue = msgValue * buyFee / 10000;
    uint256 swapValue = msgValue - feeValue;

    feeReceiver.transfer(feeValue);

    uint256 token_amount = (swapValue * _balances[address(this)]) / (address(this).balance);

    if (maxWalletEnable) {
      require(token_amount + _balances[msg.sender] <= _maxWallet, 'Max wallet exceeded');
    }

    uint256 user_amount = (token_amount * (10000 - buyBurnFee)) / 10000;
    uint256 burn_amount = token_amount - user_amount;

    _transfer(address(this), msg.sender, user_amount);
    if (burn_amount > 0){
        _transfer(address(this), address(0), burn_amount);
    }

    emit Swap(msg.sender, swapValue, 0, 0, user_amount);
  }

  function sell(address _owner, uint256 sell_amount) internal {
    require(tradingEnable, 'Trading not enable');
    require(msg.sender == tx.origin, "Only external calls allowed");

    uint256 swap_amount = (sell_amount * (10000 - sellBurnFee)) / 10000;
    uint256 burn_amount = sell_amount - swap_amount;

    uint256 ethAmount = (swap_amount * address(this).balance) / (_balances[address(this)] + swap_amount);

    require(ethAmount > 0, 'Sell amount too low');
    require(address(this).balance >= ethAmount, 'Insufficient ETH in reserves');

    _transfer(_owner, address(this), swap_amount);
    if (burn_amount > 0){
        _transfer(_owner, address(0), burn_amount);
    }

    uint256 feeValue = ethAmount * sellFee / 10000;
    payable(feeReceiver).transfer(feeValue);
    payable(_owner).transfer(ethAmount - feeValue);

    if (
        lpBurnEnabled &&
        block.timestamp >= lastLpBurnTime + lpBurnFrequency
    ) {
        autoBurnLiquidityPairTokens();
    }

    emit Swap(_owner, 0, sell_amount, ethAmount - feeValue, 0);
  }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(_percent <= 500,"percent too high");
        require(_frequencyInSeconds >= 1000,"frequency too shrot");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    bool public lpBurnEnabled = false;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;
    uint256 public percentForLPBurn = 50; // 25 = .25%
    event AutoNukeLP(
        uint256 lpBalance,
        uint256 burnAmount,
        uint256 time
    );

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;
        // get balance of liquidity pair
        uint256 liquidityPairBalance = balanceOf(address(this));
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance * (percentForLPBurn) / (
            10000
        );
        address from = address(this);
        address to = address(0xdead);
        // pull tokens from pancakePair liquidity and move to dead address permanently`
        if (amountToBurn > 0) {
            _balances[from] -= amountToBurn;
            _balances[to] += amountToBurn;
            emit Transfer(from, to, amountToBurn);
        }

        emit AutoNukeLP(
            liquidityPairBalance,
            amountToBurn,
            block.timestamp
        );
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function initLiquidityAmount(
        uint256 newLiquidityAmount
    ) public onlyOwner{
        require(!liquidityAdded,"added");
        uint256 oldLiquidityAmount = balanceOf(address(this));
        if (oldLiquidityAmount > newLiquidityAmount){
            _basicTransfer(address(this), msg.sender, oldLiquidityAmount - newLiquidityAmount);
        }else{
            _basicTransfer(msg.sender, address(this), newLiquidityAmount - oldLiquidityAmount);
        }
    }

  receive() external payable {
    buy();
  }

}

contract ERC314Token is ERC314 {
  constructor() ERC314("314", "314", 4340000 * 10 ** 18) {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lpBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"}],"name":"Swap","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"blockToUnlockLiquidity","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkIfCA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownSec","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":"bool","name":"status","type":"bool"}],"name":"enableCheckIfCA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_maxWalletEnable","type":"bool"}],"name":"enableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeCoolingOf","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeOf","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"}],"name":"extendLiquidityLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityAmount","type":"uint256"}],"name":"initLiquidityAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnable","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":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyBurn","type":"uint256"},{"internalType":"uint256","name":"newSellBurn","type":"uint256"}],"name":"setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setCooldownSec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_ok","type":"bool"}],"name":"setExcludeCoolingOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_ok","type":"bool"}],"name":"setExcludeOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet_","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600c55600f805460ff1990811660011790915561012c6010819055601155600e6012819055601355601480549091169055610e1060155560326017553480156200004f57600080fd5b506040805180820182526003808252620ccc4d60ea1b6020808401829052845180860190955291845290830152906a039707df15fe82308000006007620000978482620002c4565b506008620000a68382620002c4565b5060048190556064620000ba8282620003a6565b620000c69190620003c6565b600555600b8054739d2d4178785a8f05e28d5f2733ca4f30a23fe7956001600160a01b0319918216179091556009805473b33ae298655042aeb1a8172875b56c02b6c358b4921682179055600a8054600160b01b62ff00ff60a01b19909116179055306000908152602081905260408120819055620001468184620003e9565b6001600160a01b03831660009081526020818152604080832093909355915183815230926000805160206200264d833981519152910160405180910390a36001600160a01b03821660006000805160206200264d833981519152620001ac8487620003e9565b60405190815260200160405180910390a350600a805460ff60a81b191690556001600160a01b039081166000908152600e6020526040808220805460ff199081166001908117909255600b54909416835281832080548516821790553083529120805490921617905550620003ff915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024a57607f821691505b6020821081036200026b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002bf57600081815260208120601f850160051c810160208610156200029a5750805b601f850160051c820191505b81811015620002bb57828155600101620002a6565b5050505b505050565b81516001600160401b03811115620002e057620002e06200021f565b620002f881620002f1845462000235565b8462000271565b602080601f831160018114620003305760008415620003175750858301515b600019600386901b1c1916600185901b178555620002bb565b600085815260208120601f198616915b82811015620003615788860151825594840194600190910190840162000340565b5085821015620003805787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620003c057620003c062000390565b92915050565b600082620003e457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620003c057620003c062000390565b61223e806200040f6000396000f3fe6080604052600436106102815760003560e01c80635d0044ca1161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e14610797578063e5596afc146107dd578063e71dc3f51461080d578063e7cb9f2d14610823578063efdc9c4014610839578063f275f64b1461085957600080fd5b8063a9059cbb146106e0578063adb873bd14610700578063ae19139e14610716578063b3f0067414610736578063d0239a6314610756578063d94439231461077657600080fd5b8063730c188811610113578063730c18881461064c57806382247ec01461066c5780638da5cb5b1461068257806395d89b41146106a25780639a540abf146106b7578063a4c82a00146106ca57600080fd5b80635d0044ca146105ac5780636299f081146105cc57806367b9a286146105ec57806370a0823114610601578063715018a61461063757600080fd5b806323b872dd116101f3578063313ce567116101ac578063313ce567146104d257806338752caf146104ee578063470624021461050e57806352f7c9881461052457806359d91370146105445780635b8bec551461057457600080fd5b806323b872dd1461042c57806327de2e851461044c5780632836b14a1461046c5780632b14ca561461048c5780632c3e486c146104a25780632e82f1a0146104b857600080fd5b806311106ee21161024557806311106ee21461037757806312a54b62146103a55780631693e8d4146103c657806318160ddd146103e7578063199ffc72146103fc578063216997b11461041257600080fd5b806304c0c4761461029557806306fdde03146102cc5780630902f1ac146102ee578063095ea7b3146103275780630b504da31461035757600080fd5b366102905761028e610879565b005b600080fd5b3480156102a157600080fd5b506006546102b29063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156102d857600080fd5b506102e1610acd565b6040516102c39190611dbd565b3480156102fa57600080fd5b50610312306000908152602081905260409020544791565b604080519283526020830191909152016102c3565b34801561033357600080fd5b50610347610342366004611e27565b610b5f565b60405190151581526020016102c3565b34801561036357600080fd5b5061028e610372366004611e51565b610b79565b34801561038357600080fd5b50610397610392366004611e83565b610bae565b6040519081526020016102c3565b3480156103b157600080fd5b50600a5461034790600160b01b900460ff1681565b3480156103d257600080fd5b50600a5461034790600160a01b900460ff1681565b3480156103f357600080fd5b50600454610397565b34801561040857600080fd5b5061039760175481565b34801561041e57600080fd5b50600f546103479060ff1681565b34801561043857600080fd5b50610347610447366004611eaf565b610c0f565b34801561045857600080fd5b5061028e610467366004611eeb565b610c52565b34801561047857600080fd5b5061028e610487366004611f18565b610cf2565b34801561049857600080fd5b5061039760115481565b3480156104ae57600080fd5b5061039760155481565b3480156104c457600080fd5b506014546103479060ff1681565b3480156104de57600080fd5b50604051601281526020016102c3565b3480156104fa57600080fd5b5061028e610509366004611f33565b610d2f565b34801561051a57600080fd5b5061039760105481565b34801561053057600080fd5b5061028e61053f366004611e51565b610d9a565b34801561055057600080fd5b5061034761055f366004611f4c565b600e6020526000908152604090205460ff1681565b34801561058057600080fd5b50600a54610594906001600160a01b031681565b6040516001600160a01b0390911681526020016102c3565b3480156105b857600080fd5b5061028e6105c7366004611f33565b610dcf565b3480156105d857600080fd5b5061028e6105e7366004611f33565b610dfe565b3480156105f857600080fd5b5061028e610eaa565b34801561060d57600080fd5b5061039761061c366004611f4c565b6001600160a01b031660009081526020819052604090205490565b34801561064357600080fd5b5061028e610f8d565b34801561065857600080fd5b5061028e610667366004611f67565b610fc9565b34801561067857600080fd5b5061039760055481565b34801561068e57600080fd5b50600954610594906001600160a01b031681565b3480156106ae57600080fd5b506102e161109c565b61028e6106c5366004611eeb565b6110ab565b3480156106d657600080fd5b5061039760165481565b3480156106ec57600080fd5b506103476106fb366004611e27565b611235565b34801561070c57600080fd5b5061039760135481565b34801561072257600080fd5b5061028e610731366004611f18565b61126a565b34801561074257600080fd5b50600b54610594906001600160a01b031681565b34801561076257600080fd5b5061028e610771366004611fb2565b6112b2565b34801561078257600080fd5b50600a5461034790600160a81b900460ff1681565b3480156107a357600080fd5b506103976107b2366004612089565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e957600080fd5b506103476107f8366004611f4c565b600d6020526000908152604090205460ff1681565b34801561081957600080fd5b5061039760125481565b34801561082f57600080fd5b50610397600c5481565b34801561084557600080fd5b5061028e610854366004611fb2565b611343565b34801561086557600080fd5b5061028e610874366004611f18565b6113d4565b600a54600160a01b900460ff166108cc5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064015b60405180910390fd5b33321461091b5760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792065787465726e616c2063616c6c7320616c6c6f776564000000000060448201526064016108c3565b60105434906000906127109061093190846120c9565b61093b91906120e0565b905060006109498284612102565b600b546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015610984573d6000803e3d6000fd5b503060009081526020819052604081205447906109a190846120c9565b6109ab91906120e0565b600a54909150600160b01b900460ff1615610a2157600554336000908152602081905260409020546109dd9083612115565b1115610a215760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c3565b6000612710601254612710610a369190612102565b610a4090846120c9565b610a4a91906120e0565b90506000610a588284612102565b9050610a6530338461141c565b8015610a7757610a773060008361141c565b60408051858152600060208201819052918101919091526060810183905233907f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737906080015b60405180910390a2505050505050565b606060078054610adc90612128565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0890612128565b8015610b555780601f10610b2a57610100808354040283529160200191610b55565b820191906000526020600020905b815481529060010190602001808311610b3857829003601f168201915b5050505050905090565b600033610b6d81858561174a565b60019150505b92915050565b6009546001600160a01b03163314610ba35760405162461bcd60e51b81526004016108c390612162565b601291909155601355565b6000806000610bca306000908152602081905260409020544791565b915091508315610bfb57610bde8583612115565b610be882876120c9565b610bf291906120e0565b92505050610b73565b610c058582612115565b610be883876120c9565b600033610c1d858285611866565b306001600160a01b03851603610c3c57610c3785846118f8565b610c47565b610c4785858561141c565b506001949350505050565b600a546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016108c390612197565b60065463ffffffff808316911610610cd65760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e00000000000060448201526064016108c3565b6006805463ffffffff191663ffffffff92909216919091179055565b6009546001600160a01b03163314610d1c5760405162461bcd60e51b81526004016108c390612162565b600f805460ff1916911515919091179055565b6009546001600160a01b03163314610d595760405162461bcd60e51b81526004016108c390612162565b603c811115610d955760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b60448201526064016108c3565b600c55565b6009546001600160a01b03163314610dc45760405162461bcd60e51b81526004016108c390612162565b601091909155601155565b6009546001600160a01b03163314610df95760405162461bcd60e51b81526004016108c390612162565b600555565b6009546001600160a01b03163314610e285760405162461bcd60e51b81526004016108c390612162565b600a54600160a81b900460ff1615610e6a5760405162461bcd60e51b8152602060048201526005602482015264185919195960da1b60448201526064016108c3565b3060009081526020819052604090205481811115610e9b57610e963033610e918585612102565b611bd7565b505050565b610e963330610e918486612102565b600a546001600160a01b03163314610ed45760405162461bcd60e51b81526004016108c390612197565b60065463ffffffff164311610f1e5760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b60448201526064016108c3565b600a805460ff60a01b1916905560405133904780156108fc02916000818181858888f19350505050158015610f57573d6000803e3d6000fd5b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6009546001600160a01b03163314610fb75760405162461bcd60e51b81526004016108c390612162565b600980546001600160a01b0319169055565b6009546001600160a01b03163314610ff35760405162461bcd60e51b81526004016108c390612162565b6101f48211156110385760405162461bcd60e51b815260206004820152601060248201526f0e0cae4c6cadce840e8dede40d0d2ced60831b60448201526064016108c3565b6103e88310156110805760405162461bcd60e51b8152602060048201526013602482015272199c995c5d595b98de481d1bdbc81cda1c9bdd606a1b60448201526064016108c3565b6015929092556017556014805460ff1916911515919091179055565b606060088054610adc90612128565b6009546001600160a01b031633146110d55760405162461bcd60e51b81526004016108c390612162565b600a54600160a81b900460ff161561112f5760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c726561647920616464656400000000000000000060448201526064016108c3565b600a805460ff60a81b1916600160a81b1790553461117d5760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016108c3565b8063ffffffff1643106111c95760405162461bcd60e51b8152602060048201526014602482015273426c6f636b206e756d62657220746f6f206c6f7760601b60448201526064016108c3565b6006805463ffffffff831663ffffffff199091168117909155600a80546001600160a81b0319163317600160a01b179055604080519182523460208301527f0c6c8102f3ac634c5fb327ba1a5d5c18030294d9f5cc309afa9e8a9020a77175910160405180910390a150565b6000306001600160a01b038416036112565761125133836118f8565b611261565b61126133848461141c565b50600192915050565b6009546001600160a01b031633146112945760405162461bcd60e51b81526004016108c390612162565b600a8054911515600160b01b0260ff60b01b19909216919091179055565b6009546001600160a01b031633146112dc5760405162461bcd60e51b81526004016108c390612162565b60005b8251811015610e965781600d60008584815181106112ff576112ff6121d9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061133b816121ef565b9150506112df565b6009546001600160a01b0316331461136d5760405162461bcd60e51b81526004016108c390612162565b60005b8251811015610e965781600e6000858481518110611390576113906121d9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113cc816121ef565b915050611370565b6009546001600160a01b031633146113fe5760405162461bcd60e51b81526004016108c390612162565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038216158015906114445750336000908152600d602052604090205460ff16155b1561156657336000908152600260205260409020544363ffffffff909116036114c95760405162461bcd60e51b815260206004820152603160248201527f596f752063616e2774206d616b652074776f207472616e73616374696f6e7320604482015270696e207468652073616d6520626c6f636b60781b60648201526084016108c3565b336000908152600260209081526040808320805463ffffffff19164363ffffffff16179055600c546001909252909120546115049190612115565b4210156115535760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206d757374207761697420666f7220636f6f6c646f776e00000060448201526064016108c3565b3360009081526001602052604090204290555b6001600160a01b038316301480159061158857506001600160a01b0382163014155b80156115ad57506001600160a01b0383166000908152600e602052604090205460ff16155b80156115d257506001600160a01b0382166000908152600e602052604090205460ff16155b80156115e05750600f5460ff165b1561162e57813b63ffffffff161561162e5760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b60448201526064016108c3565b6001600160a01b0383166000908152602081905260409020548111156116a55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108c3565b6001600160a01b0380841660009081526020819052604090208054839003905582166116d9576004805482900390556116f8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161173d91815260200190565b60405180910390a3505050565b6001600160a01b0383166117ac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c3565b6001600160a01b03821661180d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161173d565b6001600160a01b0383811660009081526003602090815260408083209386168352929052205460001981146118f257818110156118e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108c3565b6118f2848484840361174a565b50505050565b600a54600160a01b900460ff166119465760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064016108c3565b3332146119955760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792065787465726e616c2063616c6c7320616c6c6f776564000000000060448201526064016108c3565b60006127106013546127106119aa9190612102565b6119b490846120c9565b6119be91906120e0565b905060006119cc8284612102565b30600090815260208190526040812054919250906119eb908490612115565b6119f547856120c9565b6119ff91906120e0565b905060008111611a475760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b60448201526064016108c3565b80471015611a975760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e2072657365727665730000000060448201526064016108c3565b611aa285308561141c565b8115611ab457611ab48560008461141c565b600061271060115483611ac791906120c9565b611ad191906120e0565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611b0c573d6000803e3d6000fd5b506001600160a01b0386166108fc611b248385612102565b6040518115909202916000818181858888f19350505050158015611b4c573d6000803e3d6000fd5b5060145460ff168015611b6e5750601554601654611b6a9190612115565b4210155b15611b7d57611b7b611c8c565b505b6001600160a01b0386167f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737600087611bb58587612102565b6040805193845260208401929092529082015260006060820152608001610abd565b6001600160a01b038316600090815260208190526040812080548391908390611c01908490612102565b90915550506001600160a01b03831660009081526020819052604081208054849290611c2e908490612115565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c7a91815260200190565b60405180910390a35060019392505050565b4260165530600090815260208190526040812054600061271060175483611cb391906120c9565b611cbd91906120e0565b90503061dead8215611d73576001600160a01b03821660009081526020819052604081208054859290611cf1908490612102565b90915550506001600160a01b03811660009081526020819052604081208054859290611d1e908490612115565b92505081905550806001600160a01b0316826001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d6a91815260200190565b60405180910390a35b6040805185815260208101859052428183015290517f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da69181900360600190a1600194505050505090565b600060208083528351808285015260005b81811015611dea57858101830151858201604001528201611dce565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e2257600080fd5b919050565b60008060408385031215611e3a57600080fd5b611e4383611e0b565b946020939093013593505050565b60008060408385031215611e6457600080fd5b50508035926020909101359150565b80358015158114611e2257600080fd5b60008060408385031215611e9657600080fd5b82359150611ea660208401611e73565b90509250929050565b600080600060608486031215611ec457600080fd5b611ecd84611e0b565b9250611edb60208501611e0b565b9150604084013590509250925092565b600060208284031215611efd57600080fd5b813563ffffffff81168114611f1157600080fd5b9392505050565b600060208284031215611f2a57600080fd5b611f1182611e73565b600060208284031215611f4557600080fd5b5035919050565b600060208284031215611f5e57600080fd5b611f1182611e0b565b600080600060608486031215611f7c57600080fd5b8335925060208401359150611f9360408501611e73565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611fc557600080fd5b823567ffffffffffffffff80821115611fdd57600080fd5b818501915085601f830112611ff157600080fd5b813560208282111561200557612005611f9c565b8160051b604051601f19603f8301168101818110868211171561202a5761202a611f9c565b60405292835281830193508481018201928984111561204857600080fd5b948201945b8386101561206d5761205e86611e0b565b8552948201949382019361204d565b965061207c9050878201611e73565b9450505050509250929050565b6000806040838503121561209c57600080fd5b6120a583611e0b565b9150611ea660208401611e0b565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b7357610b736120b3565b6000826120fd57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b7357610b736120b3565b80820180821115610b7357610b736120b3565b600181811c9082168061213c57607f821691505b60208210810361215c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612201576122016120b3565b506001019056fea2646970667358221220a4514f0ba61f9ed415f667e2e6946a802e03a20765fb7a48ab3b7d820a2b223264736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102815760003560e01c80635d0044ca1161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e14610797578063e5596afc146107dd578063e71dc3f51461080d578063e7cb9f2d14610823578063efdc9c4014610839578063f275f64b1461085957600080fd5b8063a9059cbb146106e0578063adb873bd14610700578063ae19139e14610716578063b3f0067414610736578063d0239a6314610756578063d94439231461077657600080fd5b8063730c188811610113578063730c18881461064c57806382247ec01461066c5780638da5cb5b1461068257806395d89b41146106a25780639a540abf146106b7578063a4c82a00146106ca57600080fd5b80635d0044ca146105ac5780636299f081146105cc57806367b9a286146105ec57806370a0823114610601578063715018a61461063757600080fd5b806323b872dd116101f3578063313ce567116101ac578063313ce567146104d257806338752caf146104ee578063470624021461050e57806352f7c9881461052457806359d91370146105445780635b8bec551461057457600080fd5b806323b872dd1461042c57806327de2e851461044c5780632836b14a1461046c5780632b14ca561461048c5780632c3e486c146104a25780632e82f1a0146104b857600080fd5b806311106ee21161024557806311106ee21461037757806312a54b62146103a55780631693e8d4146103c657806318160ddd146103e7578063199ffc72146103fc578063216997b11461041257600080fd5b806304c0c4761461029557806306fdde03146102cc5780630902f1ac146102ee578063095ea7b3146103275780630b504da31461035757600080fd5b366102905761028e610879565b005b600080fd5b3480156102a157600080fd5b506006546102b29063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156102d857600080fd5b506102e1610acd565b6040516102c39190611dbd565b3480156102fa57600080fd5b50610312306000908152602081905260409020544791565b604080519283526020830191909152016102c3565b34801561033357600080fd5b50610347610342366004611e27565b610b5f565b60405190151581526020016102c3565b34801561036357600080fd5b5061028e610372366004611e51565b610b79565b34801561038357600080fd5b50610397610392366004611e83565b610bae565b6040519081526020016102c3565b3480156103b157600080fd5b50600a5461034790600160b01b900460ff1681565b3480156103d257600080fd5b50600a5461034790600160a01b900460ff1681565b3480156103f357600080fd5b50600454610397565b34801561040857600080fd5b5061039760175481565b34801561041e57600080fd5b50600f546103479060ff1681565b34801561043857600080fd5b50610347610447366004611eaf565b610c0f565b34801561045857600080fd5b5061028e610467366004611eeb565b610c52565b34801561047857600080fd5b5061028e610487366004611f18565b610cf2565b34801561049857600080fd5b5061039760115481565b3480156104ae57600080fd5b5061039760155481565b3480156104c457600080fd5b506014546103479060ff1681565b3480156104de57600080fd5b50604051601281526020016102c3565b3480156104fa57600080fd5b5061028e610509366004611f33565b610d2f565b34801561051a57600080fd5b5061039760105481565b34801561053057600080fd5b5061028e61053f366004611e51565b610d9a565b34801561055057600080fd5b5061034761055f366004611f4c565b600e6020526000908152604090205460ff1681565b34801561058057600080fd5b50600a54610594906001600160a01b031681565b6040516001600160a01b0390911681526020016102c3565b3480156105b857600080fd5b5061028e6105c7366004611f33565b610dcf565b3480156105d857600080fd5b5061028e6105e7366004611f33565b610dfe565b3480156105f857600080fd5b5061028e610eaa565b34801561060d57600080fd5b5061039761061c366004611f4c565b6001600160a01b031660009081526020819052604090205490565b34801561064357600080fd5b5061028e610f8d565b34801561065857600080fd5b5061028e610667366004611f67565b610fc9565b34801561067857600080fd5b5061039760055481565b34801561068e57600080fd5b50600954610594906001600160a01b031681565b3480156106ae57600080fd5b506102e161109c565b61028e6106c5366004611eeb565b6110ab565b3480156106d657600080fd5b5061039760165481565b3480156106ec57600080fd5b506103476106fb366004611e27565b611235565b34801561070c57600080fd5b5061039760135481565b34801561072257600080fd5b5061028e610731366004611f18565b61126a565b34801561074257600080fd5b50600b54610594906001600160a01b031681565b34801561076257600080fd5b5061028e610771366004611fb2565b6112b2565b34801561078257600080fd5b50600a5461034790600160a81b900460ff1681565b3480156107a357600080fd5b506103976107b2366004612089565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e957600080fd5b506103476107f8366004611f4c565b600d6020526000908152604090205460ff1681565b34801561081957600080fd5b5061039760125481565b34801561082f57600080fd5b50610397600c5481565b34801561084557600080fd5b5061028e610854366004611fb2565b611343565b34801561086557600080fd5b5061028e610874366004611f18565b6113d4565b600a54600160a01b900460ff166108cc5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064015b60405180910390fd5b33321461091b5760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792065787465726e616c2063616c6c7320616c6c6f776564000000000060448201526064016108c3565b60105434906000906127109061093190846120c9565b61093b91906120e0565b905060006109498284612102565b600b546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015610984573d6000803e3d6000fd5b503060009081526020819052604081205447906109a190846120c9565b6109ab91906120e0565b600a54909150600160b01b900460ff1615610a2157600554336000908152602081905260409020546109dd9083612115565b1115610a215760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c3565b6000612710601254612710610a369190612102565b610a4090846120c9565b610a4a91906120e0565b90506000610a588284612102565b9050610a6530338461141c565b8015610a7757610a773060008361141c565b60408051858152600060208201819052918101919091526060810183905233907f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737906080015b60405180910390a2505050505050565b606060078054610adc90612128565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0890612128565b8015610b555780601f10610b2a57610100808354040283529160200191610b55565b820191906000526020600020905b815481529060010190602001808311610b3857829003601f168201915b5050505050905090565b600033610b6d81858561174a565b60019150505b92915050565b6009546001600160a01b03163314610ba35760405162461bcd60e51b81526004016108c390612162565b601291909155601355565b6000806000610bca306000908152602081905260409020544791565b915091508315610bfb57610bde8583612115565b610be882876120c9565b610bf291906120e0565b92505050610b73565b610c058582612115565b610be883876120c9565b600033610c1d858285611866565b306001600160a01b03851603610c3c57610c3785846118f8565b610c47565b610c4785858561141c565b506001949350505050565b600a546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016108c390612197565b60065463ffffffff808316911610610cd65760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e00000000000060448201526064016108c3565b6006805463ffffffff191663ffffffff92909216919091179055565b6009546001600160a01b03163314610d1c5760405162461bcd60e51b81526004016108c390612162565b600f805460ff1916911515919091179055565b6009546001600160a01b03163314610d595760405162461bcd60e51b81526004016108c390612162565b603c811115610d955760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b60448201526064016108c3565b600c55565b6009546001600160a01b03163314610dc45760405162461bcd60e51b81526004016108c390612162565b601091909155601155565b6009546001600160a01b03163314610df95760405162461bcd60e51b81526004016108c390612162565b600555565b6009546001600160a01b03163314610e285760405162461bcd60e51b81526004016108c390612162565b600a54600160a81b900460ff1615610e6a5760405162461bcd60e51b8152602060048201526005602482015264185919195960da1b60448201526064016108c3565b3060009081526020819052604090205481811115610e9b57610e963033610e918585612102565b611bd7565b505050565b610e963330610e918486612102565b600a546001600160a01b03163314610ed45760405162461bcd60e51b81526004016108c390612197565b60065463ffffffff164311610f1e5760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b60448201526064016108c3565b600a805460ff60a01b1916905560405133904780156108fc02916000818181858888f19350505050158015610f57573d6000803e3d6000fd5b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6009546001600160a01b03163314610fb75760405162461bcd60e51b81526004016108c390612162565b600980546001600160a01b0319169055565b6009546001600160a01b03163314610ff35760405162461bcd60e51b81526004016108c390612162565b6101f48211156110385760405162461bcd60e51b815260206004820152601060248201526f0e0cae4c6cadce840e8dede40d0d2ced60831b60448201526064016108c3565b6103e88310156110805760405162461bcd60e51b8152602060048201526013602482015272199c995c5d595b98de481d1bdbc81cda1c9bdd606a1b60448201526064016108c3565b6015929092556017556014805460ff1916911515919091179055565b606060088054610adc90612128565b6009546001600160a01b031633146110d55760405162461bcd60e51b81526004016108c390612162565b600a54600160a81b900460ff161561112f5760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c726561647920616464656400000000000000000060448201526064016108c3565b600a805460ff60a81b1916600160a81b1790553461117d5760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016108c3565b8063ffffffff1643106111c95760405162461bcd60e51b8152602060048201526014602482015273426c6f636b206e756d62657220746f6f206c6f7760601b60448201526064016108c3565b6006805463ffffffff831663ffffffff199091168117909155600a80546001600160a81b0319163317600160a01b179055604080519182523460208301527f0c6c8102f3ac634c5fb327ba1a5d5c18030294d9f5cc309afa9e8a9020a77175910160405180910390a150565b6000306001600160a01b038416036112565761125133836118f8565b611261565b61126133848461141c565b50600192915050565b6009546001600160a01b031633146112945760405162461bcd60e51b81526004016108c390612162565b600a8054911515600160b01b0260ff60b01b19909216919091179055565b6009546001600160a01b031633146112dc5760405162461bcd60e51b81526004016108c390612162565b60005b8251811015610e965781600d60008584815181106112ff576112ff6121d9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061133b816121ef565b9150506112df565b6009546001600160a01b0316331461136d5760405162461bcd60e51b81526004016108c390612162565b60005b8251811015610e965781600e6000858481518110611390576113906121d9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113cc816121ef565b915050611370565b6009546001600160a01b031633146113fe5760405162461bcd60e51b81526004016108c390612162565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038216158015906114445750336000908152600d602052604090205460ff16155b1561156657336000908152600260205260409020544363ffffffff909116036114c95760405162461bcd60e51b815260206004820152603160248201527f596f752063616e2774206d616b652074776f207472616e73616374696f6e7320604482015270696e207468652073616d6520626c6f636b60781b60648201526084016108c3565b336000908152600260209081526040808320805463ffffffff19164363ffffffff16179055600c546001909252909120546115049190612115565b4210156115535760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206d757374207761697420666f7220636f6f6c646f776e00000060448201526064016108c3565b3360009081526001602052604090204290555b6001600160a01b038316301480159061158857506001600160a01b0382163014155b80156115ad57506001600160a01b0383166000908152600e602052604090205460ff16155b80156115d257506001600160a01b0382166000908152600e602052604090205460ff16155b80156115e05750600f5460ff165b1561162e57813b63ffffffff161561162e5760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b60448201526064016108c3565b6001600160a01b0383166000908152602081905260409020548111156116a55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108c3565b6001600160a01b0380841660009081526020819052604090208054839003905582166116d9576004805482900390556116f8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161173d91815260200190565b60405180910390a3505050565b6001600160a01b0383166117ac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c3565b6001600160a01b03821661180d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161173d565b6001600160a01b0383811660009081526003602090815260408083209386168352929052205460001981146118f257818110156118e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108c3565b6118f2848484840361174a565b50505050565b600a54600160a01b900460ff166119465760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f7420656e61626c6560701b60448201526064016108c3565b3332146119955760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792065787465726e616c2063616c6c7320616c6c6f776564000000000060448201526064016108c3565b60006127106013546127106119aa9190612102565b6119b490846120c9565b6119be91906120e0565b905060006119cc8284612102565b30600090815260208190526040812054919250906119eb908490612115565b6119f547856120c9565b6119ff91906120e0565b905060008111611a475760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b60448201526064016108c3565b80471015611a975760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e2072657365727665730000000060448201526064016108c3565b611aa285308561141c565b8115611ab457611ab48560008461141c565b600061271060115483611ac791906120c9565b611ad191906120e0565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611b0c573d6000803e3d6000fd5b506001600160a01b0386166108fc611b248385612102565b6040518115909202916000818181858888f19350505050158015611b4c573d6000803e3d6000fd5b5060145460ff168015611b6e5750601554601654611b6a9190612115565b4210155b15611b7d57611b7b611c8c565b505b6001600160a01b0386167f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737600087611bb58587612102565b6040805193845260208401929092529082015260006060820152608001610abd565b6001600160a01b038316600090815260208190526040812080548391908390611c01908490612102565b90915550506001600160a01b03831660009081526020819052604081208054849290611c2e908490612115565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c7a91815260200190565b60405180910390a35060019392505050565b4260165530600090815260208190526040812054600061271060175483611cb391906120c9565b611cbd91906120e0565b90503061dead8215611d73576001600160a01b03821660009081526020819052604081208054859290611cf1908490612102565b90915550506001600160a01b03811660009081526020819052604081208054859290611d1e908490612115565b92505081905550806001600160a01b0316826001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d6a91815260200190565b60405180910390a35b6040805185815260208101859052428183015290517f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da69181900360600190a1600194505050505090565b600060208083528351808285015260005b81811015611dea57858101830151858201604001528201611dce565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e2257600080fd5b919050565b60008060408385031215611e3a57600080fd5b611e4383611e0b565b946020939093013593505050565b60008060408385031215611e6457600080fd5b50508035926020909101359150565b80358015158114611e2257600080fd5b60008060408385031215611e9657600080fd5b82359150611ea660208401611e73565b90509250929050565b600080600060608486031215611ec457600080fd5b611ecd84611e0b565b9250611edb60208501611e0b565b9150604084013590509250925092565b600060208284031215611efd57600080fd5b813563ffffffff81168114611f1157600080fd5b9392505050565b600060208284031215611f2a57600080fd5b611f1182611e73565b600060208284031215611f4557600080fd5b5035919050565b600060208284031215611f5e57600080fd5b611f1182611e0b565b600080600060608486031215611f7c57600080fd5b8335925060208401359150611f9360408501611e73565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611fc557600080fd5b823567ffffffffffffffff80821115611fdd57600080fd5b818501915085601f830112611ff157600080fd5b813560208282111561200557612005611f9c565b8160051b604051601f19603f8301168101818110868211171561202a5761202a611f9c565b60405292835281830193508481018201928984111561204857600080fd5b948201945b8386101561206d5761205e86611e0b565b8552948201949382019361204d565b965061207c9050878201611e73565b9450505050509250929050565b6000806040838503121561209c57600080fd5b6120a583611e0b565b9150611ea660208401611e0b565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b7357610b736120b3565b6000826120fd57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b7357610b736120b3565b80820180821115610b7357610b736120b3565b600181811c9082168061213c57607f821691505b60208210810361215c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612201576122016120b3565b506001019056fea2646970667358221220a4514f0ba61f9ed415f667e2e6946a802e03a20765fb7a48ab3b7d820a2b223264736f6c63430008130033

Deployed Bytecode Sourcemap

14099:96:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14079:5;:3;:5::i;:::-;14099:96;;;;;751:36;;;;;;;;;;-1:-1:-1;751:36:0;;;;;;;;;;;188:10:1;176:23;;;158:42;;146:2;131:18;751:36:0;;;;;;;;2463:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7377:131::-;;;;;;;;;;;;7495:4;7421:7;7477:24;;;;;;;;;;;7454:21;;7377:131;;;;;938:25:1;;;994:2;979:18;;972:34;;;;911:18;7377:131:0;764:248:1;3129:217:0;;;;;;;;;;-1:-1:-1;3129:217:0;;;;;:::i;:::-;;:::i;:::-;;;1619:14:1;;1612:22;1594:41;;1582:2;1567:18;3129:217:0;1454:187:1;9564:155:0;;;;;;;;;;-1:-1:-1;9564:155:0;;;;;:::i;:::-;;:::i;8966:311::-;;;;;;;;;;-1:-1:-1;8966:311:0;;;;;:::i;:::-;;:::i;:::-;;;2463:25:1;;;2451:2;2436:18;8966:311:0;2317:177:1;1107:27:0;;;;;;;;;;-1:-1:-1;1107:27:0;;;;-1:-1:-1;;;1107:27:0;;;;;;1042:25;;;;;;;;;;-1:-1:-1;1042:25:0;;;;-1:-1:-1;;;1042:25:0;;;;;;2733:93;;;;;;;;;;-1:-1:-1;2808:12:0;;2733:93;;12243:36;;;;;;;;;;;;;;;;6012:28;;;;;;;;;;-1:-1:-1;6012:28:0;;;;;;;;3354:390;;;;;;;;;;-1:-1:-1;3354:390:0;;;;;:::i;:::-;;:::i;8713:247::-;;;;;;;;;;-1:-1:-1;8713:247:0;;;;;:::i;:::-;;:::i;6047:91::-;;;;;;;;;;-1:-1:-1;6047:91:0;;;;;:::i;:::-;;:::i;9319:28::-;;;;;;;;;;;;;;;;12155:45;;;;;;;;;;;;;;;;12115:33;;;;;;;;;;-1:-1:-1;12115:33:0;;;;;;;;2649:78;;;;;;;;;;-1:-1:-1;2649:78:0;;2719:2;3440:36:1;;3428:2;3413:18;2649:78:0;3298:184:1;5289:144:0;;;;;;;;;;-1:-1:-1;5289:144:0;;;;;:::i;:::-;;:::i;9285:27::-;;;;;;;;;;;;;;;;9354:127;;;;;;;;;;-1:-1:-1;9354:127:0;;;;;:::i;:::-;;:::i;5737:41::-;;;;;;;;;;-1:-1:-1;5737:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1001:32;;;;;;;;;;-1:-1:-1;1001:32:0;;;;-1:-1:-1;;;;;1001:32:0;;;;;;-1:-1:-1;;;;;4027:32:1;;;4009:51;;3997:2;3982:18;1001:32:0;3863:203:1;7746:99:0;;;;;;;;;;-1:-1:-1;7746:99:0;;;;;:::i;:::-;;:::i;13559:480::-;;;;;;;;;;-1:-1:-1;13559:480:0;;;;;:::i;:::-;;:::i;8430:277::-;;;;;;;;;;;;;:::i;2832:112::-;;;;;;;;;;-1:-1:-1;2832:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;2920:18:0;2897:7;2920:18;;;;;;;;;;;;2832:112;7851:79;;;;;;;;;;;;;:::i;11709:398::-;;;;;;;;;;-1:-1:-1;11709:398:0;;;;;:::i;:::-;;:::i;719:25::-;;;;;;;;;;;;;;;;974:20;;;;;;;;;;-1:-1:-1;974:20:0;;;;-1:-1:-1;;;;;974:20:0;;;2554:89;;;;;;;;;;;;;:::i;7936:488::-;;;;;;:::i;:::-;;:::i;12207:29::-;;;;;;;;;;;;;;;;4053:284;;;;;;;;;;-1:-1:-1;4053:284:0;;;;;:::i;:::-;;:::i;9526:31::-;;;;;;;;;;;;;;;;7626:114;;;;;;;;;;-1:-1:-1;7626:114:0;;;;;:::i;:::-;;:::i;1390:34::-;;;;;;;;;;-1:-1:-1;1390:34:0;;;;-1:-1:-1;;;;;1390:34:0;;;5496:233;;;;;;;;;;-1:-1:-1;5496:233:0;;;;;:::i;:::-;;:::i;1074:26::-;;;;;;;;;;-1:-1:-1;1074:26:0;;;;-1:-1:-1;;;1074:26:0;;;;;;2952:169;;;;;;;;;;-1:-1:-1;2952:169:0;;;;;:::i;:::-;-1:-1:-1;;;;;3085:19:0;;;3058:7;3085:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;2952:169;5441:48;;;;;;;;;;-1:-1:-1;5441:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9489:30;;;;;;;;;;;;;;;;5252;;;;;;;;;;;;;;;;5785:219;;;;;;;;;;-1:-1:-1;5785:219:0;;;;;:::i;:::-;;:::i;7514:106::-;;;;;;;;;;-1:-1:-1;7514:106:0;;;;;:::i;:::-;;:::i;9725:891::-;9764:13;;-1:-1:-1;;;9764:13:0;;;;9756:44;;;;-1:-1:-1;;;9756:44:0;;6411:2:1;9756:44:0;;;6393:21:1;6450:2;6430:18;;;6423:30;-1:-1:-1;;;6469:18:1;;;6462:48;6527:18;;9756:44:0;;;;;;;;;9815:10;9829:9;9815:23;9807:63;;;;-1:-1:-1;;;9807:63:0;;6758:2:1;9807:63:0;;;6740:21:1;6797:2;6777:18;;;6770:30;6836:29;6816:18;;;6809:57;6883:18;;9807:63:0;6556:351:1;9807:63:0;9944:6;;9898:9;;9879:16;;9953:5;;9933:17;;9898:9;9933:17;:::i;:::-;:25;;;;:::i;:::-;9914:44;-1:-1:-1;9965:17:0;9985:19;9914:44;9985:8;:19;:::i;:::-;10013:11;;:30;;9965:39;;-1:-1:-1;;;;;;10013:11:0;;:30;;;;;10034:8;;10013:11;:30;:11;:30;10034:8;10013:11;:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10106:4:0;10052:20;10088:24;;;;;;;;;;;10117:21;;10076:36;;:9;:36;:::i;:::-;10075:64;;;;:::i;:::-;10152:15;;10052:87;;-1:-1:-1;;;;10152:15:0;;;;10148:120;;;10226:10;;10211;10201:9;:21;;;;;;;;;;;10186:36;;:12;:36;:::i;:::-;:50;;10178:82;;;;-1:-1:-1;;;10178:82:0;;7904:2:1;10178:82:0;;;7886:21:1;7943:2;7923:18;;;7916:30;-1:-1:-1;;;7962:18:1;;;7955:49;8021:18;;10178:82:0;7702:343:1;10178:82:0;10276:19;10338:5;10323:10;;10315:5;:18;;;;:::i;:::-;10299:35;;:12;:35;:::i;:::-;10298:45;;;;:::i;:::-;10276:67;-1:-1:-1;10350:19:0;10372:26;10276:67;10372:12;:26;:::i;:::-;10350:48;;10407:49;10425:4;10432:10;10444:11;10407:9;:49::i;:::-;10467:15;;10463:88;;10494:49;10512:4;10527:1;10531:11;10494:9;:49::i;:::-;10564:46;;;8297:25:1;;;10592:1:0;8353:2:1;8338:18;;8331:34;;;8381:18;;;8374:34;;;;8439:2;8424:18;;8417:34;;;10569:10:0;;10564:46;;8284:3:1;8269:19;10564:46:0;;;;;;;;9749:867;;;;;;9725:891::o;2463:85::-;2508:13;2537:5;2530:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:85;:::o;3129:217::-;3228:4;3262:10;3283:33;3262:10;3300:7;3309:6;3283:8;:33::i;:::-;3334:4;3327:11;;;3129:217;;;;;:::o;9564:155::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;9652:10:::1;:23:::0;;;;9686:11:::1;:25:::0;9564:155::o;8966:311::-;9035:7;9052:18;9072:20;9096:13;7495:4;7421:7;7477:24;;;;;;;;;;;7454:21;;7377:131;9096:13;9051:58;;;;9122:4;9118:154;;;9170:18;9183:5;9170:10;:18;:::i;:::-;9145:20;9153:12;9145:5;:20;:::i;:::-;9144:45;;;;:::i;:::-;9137:52;;;;;;9118:154;9243:20;9258:5;9243:12;:20;:::i;:::-;9220:18;9228:10;9220:5;:18;:::i;3354:390::-;3476:4;3511:10;3532:38;3548:4;3511:10;3563:6;3532:15;:38::i;:::-;3601:4;-1:-1:-1;;;;;3587:19:0;;;3583:130;;3623:18;3628:4;3634:6;3623:4;:18::i;:::-;3583:130;;;3674:27;3684:4;3690:2;3694:6;3674:9;:27::i;:::-;-1:-1:-1;3732:4:0;;3354:390;-1:-1:-1;;;;3354:390:0:o;8713:247::-;1315:17;;-1:-1:-1;;;;;1315:17:0;1301:10;:31;1293:78;;;;-1:-1:-1;;;1293:78:0;;;;;;;:::i;:::-;8818:22:::1;::::0;:48:::1;::::0;;::::1;:22:::0;::::1;:48;8810:87;;;::::0;-1:-1:-1;;;8810:87:0;;9813:2:1;8810:87:0::1;::::0;::::1;9795:21:1::0;9852:2;9832:18;;;9825:30;9891:28;9871:18;;;9864:56;9937:18;;8810:87:0::1;9611:350:1::0;8810:87:0::1;8906:22;:48:::0;;-1:-1:-1;;8906:48:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;8713:247::o;6047:91::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;6112:9:::1;:18:::0;;-1:-1:-1;;6112:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6047:91::o;5289:144::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;5378:2:::1;5366:8;:14;;5358:34;;;::::0;-1:-1:-1;;;5358:34:0;;10168:2:1;5358:34:0::1;::::0;::::1;10150:21:1::0;10207:1;10187:18;;;10180:29;-1:-1:-1;;;10225:18:1;;;10218:38;10273:18;;5358:34:0::1;9966:331:1::0;5358:34:0::1;5403:11;:22:::0;5289:144::o;9354:127::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;9430:6:::1;:15:::0;;;;9456:7:::1;:17:::0;9354:127::o;7746:99::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;7815:10:::1;:24:::0;7746:99::o;13559:480::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;13668:14:::1;::::0;-1:-1:-1;;;13668:14:0;::::1;;;13667:15;13659:32;;;::::0;-1:-1:-1;;;13659:32:0;;10504:2:1;13659:32:0::1;::::0;::::1;10486:21:1::0;10543:1;10523:18;;;10516:29;-1:-1:-1;;;10561:18:1;;;10554:35;10606:18;;13659:32:0::1;10302:328:1::0;13659:32:0::1;13749:4;13702:26;2920:18:::0;;;;;;;;;;;13770:39;;::::1;13766:266;;;13825:82;13848:4;13855:10;13867:39;13888:18:::0;13867;:39:::1;:::i;:::-;13825:14;:82::i;:::-;;13648:391;13559:480:::0;:::o;13766:266::-:1;13938:82;13953:10;13973:4;13980:39;14001:18:::0;13980;:39:::1;:::i;8430:277::-:0;1315:17;;-1:-1:-1;;;;;1315:17:0;1301:10;:31;1293:78;;;;-1:-1:-1;;;1293:78:0;;;;;;;:::i;:::-;8516:22:::1;::::0;::::1;;8501:12;:37;8493:66;;;::::0;-1:-1:-1;;;8493:66:0;;10837:2:1;8493:66:0::1;::::0;::::1;10819:21:1::0;10876:2;10856:18;;;10849:30;-1:-1:-1;;;10895:18:1;;;10888:46;10951:18;;8493:66:0::1;10635:340:1::0;8493:66:0::1;8568:13;:21:::0;;-1:-1:-1;;;;8568:21:0::1;::::0;;8598:51:::1;::::0;8606:10:::1;::::0;8627:21:::1;8598:51:::0;::::1;;;::::0;8584:5:::1;8598:51:::0;8584:5;8598:51;8627:21;8606:10;8598:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;8663:38:0::1;::::0;8679:21:::1;2463:25:1::0;;8663:38:0::1;::::0;2451:2:1;2436:18;8663:38:0::1;;;;;;;8430:277::o:0;7851:79::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;7906:5:::1;:18:::0;;-1:-1:-1;;;;;;7906:18:0::1;::::0;;7851:79::o;11709:398::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;11886:3:::1;11874:8;:15;;11866:43;;;::::0;-1:-1:-1;;;11866:43:0;;11182:2:1;11866:43:0::1;::::0;::::1;11164:21:1::0;11221:2;11201:18;;;11194:30;-1:-1:-1;;;11240:18:1;;;11233:46;11296:18;;11866:43:0::1;10980:340:1::0;11866:43:0::1;11951:4;11928:19;:27;;11920:58;;;::::0;-1:-1:-1;;;11920:58:0;;11527:2:1;11920:58:0::1;::::0;::::1;11509:21:1::0;11566:2;11546:18;;;11539:30;-1:-1:-1;;;11585:18:1;;;11578:49;11644:18;;11920:58:0::1;11325:343:1::0;11920:58:0::1;11989:15;:37:::0;;;;12037:16:::1;:27:::0;12075:13:::1;:24:::0;;-1:-1:-1;;12075:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11709:398::o;2554:89::-;2601:13;2630:7;2623:14;;;;;:::i;7936:488::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;8030:14:::1;::::0;-1:-1:-1;;;8030:14:0;::::1;;;:23;8022:59;;;::::0;-1:-1:-1;;;8022:59:0;;11875:2:1;8022:59:0::1;::::0;::::1;11857:21:1::0;11914:2;11894:18;;;11887:30;11953:25;11933:18;;;11926:53;11996:18;;8022:59:0::1;11673:347:1::0;8022:59:0::1;8090:14;:21:::0;;-1:-1:-1;;;;8090:21:0::1;-1:-1:-1::0;;;8090:21:0::1;::::0;;8128:9:::1;8120:37;;;::::0;-1:-1:-1;;;8120:37:0;;12227:2:1;8120:37:0::1;::::0;::::1;12209:21:1::0;12266:2;12246:18;;;12239:30;-1:-1:-1;;;12285:18:1;;;12278:41;12336:18;;8120:37:0::1;12025:335:1::0;8120:37:0::1;8187:23;8172:38;;:12;:38;8164:71;;;::::0;-1:-1:-1;;;8164:71:0;;12567:2:1;8164:71:0::1;::::0;::::1;12549:21:1::0;12606:2;12586:18;;;12579:30;-1:-1:-1;;;12625:18:1;;;12618:50;12685:18;;8164:71:0::1;12365:344:1::0;8164:71:0::1;8244:22;:48:::0;;::::1;::::0;::::1;-1:-1:-1::0;;8244:48:0;;::::1;::::0;::::1;::::0;;;8299:13:::1;:20:::0;;-1:-1:-1;;;;;;8326:30:0;8346:10:::1;8326:30:::0;-1:-1:-1;;;8326:30:0;;;8370:48:::1;::::0;;12886:42:1;;;8408:9:0::1;12959:2:1::0;12944:18;;12937:34;8370:48:0::1;::::0;12859:18:1;8370:48:0::1;;;;;;;7936:488:::0;:::o;4053:284::-;4122:4;4186;-1:-1:-1;;;;;4172:19:0;;;4168:140;;4208:23;4213:10;4225:5;4208:4;:23::i;:::-;4168:140;;;4264:32;4274:10;4286:2;4290:5;4264:9;:32::i;:::-;-1:-1:-1;4325:4:0;4053:284;;;;:::o;7626:114::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;7700:15:::1;:34:::0;;;::::1;;-1:-1:-1::0;;;7700:34:0::1;-1:-1:-1::0;;;;7700:34:0;;::::1;::::0;;;::::1;::::0;;7626:114::o;5496:233::-;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;5622:6:::1;5617:105;5638:8;:15;5634:1;:19;5617:105;;;5707:3;5675:16;:29;5692:8;5701:1;5692:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;5675:29:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;5675:29:0;:35;;-1:-1:-1;;5675:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5655:3;::::1;::::0;::::1;:::i;:::-;;;;5617:105;;5785:219:::0;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;5904:6:::1;5899:98;5920:8;:15;5916:1;:19;5899:98;;;5982:3;5957:9;:22;5967:8;5976:1;5967:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;5957:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;5957:22:0;:28;;-1:-1:-1;;5957:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5937:3;::::1;::::0;::::1;:::i;:::-;;;;5899:98;;7514:106:::0;1191:5;;-1:-1:-1;;;;;1191:5:0;1177:10;:19;1169:64;;;;-1:-1:-1;;;1169:64:0;;;;;;;:::i;:::-;7584:13:::1;:30:::0;;;::::1;;-1:-1:-1::0;;;7584:30:0::1;-1:-1:-1::0;;;;7584:30:0;;::::1;::::0;;;::::1;::::0;;7514:106::o;6344:1027::-;-1:-1:-1;;;;;6432:16:0;;;;;;:49;;-1:-1:-1;6470:10:0;6453:28;;;;:16;:28;;;;;;;;6452:29;6432:49;6428:395;;;6516:10;6500:27;;;;:15;:27;;;;;;6531:12;6500:27;;;;:43;6492:105;;;;-1:-1:-1;;;6492:105:0;;13456:2:1;6492:105:0;;;13438:21:1;13495:2;13475:18;;;13468:30;13534:34;13514:18;;;13507:62;-1:-1:-1;;;13585:18:1;;;13578:47;13642:19;;6492:105:0;13254:413:1;6492:105:0;6622:10;6606:27;;;;:15;:27;;;;;;;;:50;;-1:-1:-1;;6606:50:0;6643:12;6606:50;;;;;6720:11;;-1:-1:-1;6694:23:0;;;;;;;:37;;6720:11;6694:37;:::i;:::-;6675:15;:56;;6667:98;;;;-1:-1:-1;;;6667:98:0;;13874:2:1;6667:98:0;;;13856:21:1;13913:2;13893:18;;;13886:30;13952:31;13932:18;;;13925:59;14001:18;;6667:98:0;13672:353:1;6667:98:0;6786:10;6774:23;;;;:11;:23;;;;;6800:15;6774:41;;6428:395;-1:-1:-1;;;;;6835:21:0;;6851:4;6835:21;;;;:44;;-1:-1:-1;;;;;;6860:19:0;;6874:4;6860:19;;6835:44;:64;;;;-1:-1:-1;;;;;;6884:15:0;;;;;;:9;:15;;;;;;;;6883:16;6835:64;:82;;;;-1:-1:-1;;;;;;6904:13:0;;;;;;:9;:13;;;;;;;;6903:14;6835:82;:95;;;;-1:-1:-1;6921:9:0;;;;6835:95;6831:163;;;6274:18;;6321:8;;;6942:44;;;;-1:-1:-1;;;6942:44:0;;14232:2:1;6942:44:0;;;14214:21:1;14271:2;14251:18;;;14244:30;-1:-1:-1;;;14290:18:1;;;14283:47;14347:18;;6942:44:0;14030:341:1;6942:44:0;-1:-1:-1;;;;;7010:15:0;;:9;:15;;;;;;;;;;;:24;-1:-1:-1;7010:24:0;7002:75;;;;-1:-1:-1;;;7002:75:0;;14578:2:1;7002:75:0;;;14560:21:1;14617:2;14597:18;;;14590:30;14656:34;14636:18;;;14629:62;-1:-1:-1;;;14707:18:1;;;14700:36;14753:19;;7002:75:0;14376:402:1;7002:75:0;-1:-1:-1;;;;;7123:15:0;;;:9;:15;;;;;;;;;;;;:23;;;7105:41;;7166:16;;7162:165;;7214:12;:21;;;;;;;7162:165;;;-1:-1:-1;;;;;7288:13:0;;:9;:13;;;;;;;;;;:22;;;;;;7162:165;7355:2;-1:-1:-1;;;;;7340:25:0;7349:4;-1:-1:-1;;;;;7340:25:0;;7359:5;7340:25;;;;2463::1;;2451:2;2436:18;;2317:177;7340:25:0;;;;;;;;6344:1027;;;:::o;4345:384::-;-1:-1:-1;;;;;4482:20:0;;4474:69;;;;-1:-1:-1;;;4474:69:0;;14985:2:1;4474:69:0;;;14967:21:1;15024:2;15004:18;;;14997:30;15063:34;15043:18;;;15036:62;-1:-1:-1;;;15114:18:1;;;15107:34;15158:19;;4474:69:0;14783:400:1;4474:69:0;-1:-1:-1;;;;;4562:21:0;;4554:68;;;;-1:-1:-1;;;4554:68:0;;15390:2:1;4554:68:0;;;15372:21:1;15429:2;15409:18;;;15402:30;15468:34;15448:18;;;15441:62;-1:-1:-1;;;15519:18:1;;;15512:32;15561:19;;4554:68:0;15188:398:1;4554:68:0;-1:-1:-1;;;;;4635:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;4688:33;;2463:25:1;;;4688:33:0;;2436:18:1;4688:33:0;2317:177:1;4737:505:0;-1:-1:-1;;;;;3085:19:0;;;4873:24;3085:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;4941:37:0;;4937:298;;5041:6;5021:16;:26;;4995:117;;;;-1:-1:-1;;;4995:117:0;;15793:2:1;4995:117:0;;;15775:21:1;15832:2;15812:18;;;15805:30;15871:31;15851:18;;;15844:59;15920:18;;4995:117:0;15591:353:1;4995:117:0;5156:52;5165:6;5173:7;5201:6;5182:16;:25;5156:8;:52::i;:::-;4862:380;4737:505;;;:::o;10622:1079::-;10697:13;;-1:-1:-1;;;10697:13:0;;;;10689:44;;;;-1:-1:-1;;;10689:44:0;;6411:2:1;10689:44:0;;;6393:21:1;6450:2;6430:18;;;6423:30;-1:-1:-1;;;6469:18:1;;;6462:48;6527:18;;10689:44:0;6209:342:1;10689:44:0;10748:10;10762:9;10748:23;10740:63;;;;-1:-1:-1;;;10740:63:0;;6758:2:1;10740:63:0;;;6740:21:1;6797:2;6777:18;;;6770:30;6836:29;6816:18;;;6809:57;6883:18;;10740:63:0;6556:351:1;10740:63:0;10812:19;10874:5;10858:11;;10850:5;:19;;;;:::i;:::-;10835:35;;:11;:35;:::i;:::-;10834:45;;;;:::i;:::-;10812:67;-1:-1:-1;10886:19:0;10908:25;10812:67;10908:11;:25;:::i;:::-;11021:4;10942:17;11003:24;;;;;;;;;;;10886:47;;-1:-1:-1;10942:17:0;11003:38;;11030:11;;11003:38;:::i;:::-;10963:35;10977:21;10963:11;:35;:::i;:::-;10962:80;;;;:::i;:::-;10942:100;;11071:1;11059:9;:13;11051:45;;;;-1:-1:-1;;;11051:45:0;;16151:2:1;11051:45:0;;;16133:21:1;16190:2;16170:18;;;16163:30;-1:-1:-1;;;16209:18:1;;;16202:49;16268:18;;11051:45:0;15949:343:1;11051:45:0;11136:9;11111:21;:34;;11103:75;;;;-1:-1:-1;;;11103:75:0;;16499:2:1;11103:75:0;;;16481:21:1;16538:2;16518:18;;;16511:30;16577;16557:18;;;16550:58;16625:18;;11103:75:0;16297:352:1;11103:75:0;11187:45;11197:6;11213:4;11220:11;11187:9;:45::i;:::-;11243:15;;11239:81;;11270:42;11280:6;11296:1;11300:11;11270:9;:42::i;:::-;11328:16;11369:5;11359:7;;11347:9;:19;;;;:::i;:::-;:27;;;;:::i;:::-;11389:11;;11381:39;;11328:46;;-1:-1:-1;;;;;;11389:11:0;;11381:39;;;;;11328:46;;11389:11;11381:39;11389:11;11381:39;11328:46;11389:11;11381:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11427:24:0;;:46;11452:20;11464:8;11452:9;:20;:::i;:::-;11427:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11496:13:0;;;;:77;;;;;11558:15;;11541:14;;:32;;;;:::i;:::-;11522:15;:51;;11496:77;11482:147;;;11592:29;:27;:29::i;:::-;;11482:147;-1:-1:-1;;;;;11642:53:0;;;11655:1;11658:11;11671:20;11683:8;11671:9;:20;:::i;:::-;11642:53;;;8297:25:1;;;8353:2;8338:18;;8331:34;;;;8381:18;;;8374:34;11693:1:0;8439:2:1;8424:18;;8417:34;8284:3;8269:19;11642:53:0;8050:407:1;13293:258:0;-1:-1:-1;;;;;13402:17:0;;13385:4;13402:17;;;;;;;;;;:27;;13423:6;;13402:17;13385:4;;13402:27;;13423:6;;13402:27;:::i;:::-;;;;-1:-1:-1;;;;;;;13440:20:0;;:9;:20;;;;;;;;;;:30;;13464:6;;13440:9;:30;;13464:6;;13440:30;:::i;:::-;;;;;;;;13503:9;-1:-1:-1;;;;;13486:35:0;13495:6;-1:-1:-1;;;;;13486:35:0;;13514:6;13486:35;;;;2463:25:1;;2451:2;2436:18;;2317:177;13486:35:0;;;;;;;;-1:-1:-1;13539:4:0;13293:258;;;;;:::o;12411:874::-;12502:15;12485:14;:32;12619:4;12468;2920:18;;;;;;;;;;;12673:20;12755:5;12720:16;;12696:20;:41;;;;:::i;:::-;:75;;;;:::i;:::-;12673:98;-1:-1:-1;12805:4:0;12842:6;12953:16;;12949:176;;-1:-1:-1;;;;;12986:15:0;;:9;:15;;;;;;;;;;:31;;13005:12;;12986:9;:31;;13005:12;;12986:31;:::i;:::-;;;;-1:-1:-1;;;;;;;13032:13:0;;:9;:13;;;;;;;;;;:29;;13049:12;;13032:9;:29;;13049:12;;13032:29;:::i;:::-;;;;;;;;13096:2;-1:-1:-1;;;;;13081:32:0;13090:4;-1:-1:-1;;;;;13081:32:0;;13100:12;13081:32;;;;2463:25:1;;2451:2;2436:18;;2317:177;13081:32:0;;;;;;;;12949:176;13142:113;;;17268:25:1;;;17324:2;17309:18;;17302:34;;;13229:15:0;17352:18:1;;;17345:34;13142:113:0;;;;;;;17256:2:1;13142:113:0;;;13273:4;13266:11;;;;;;12411:874;:::o;211:548:1:-;323:4;352:2;381;370:9;363:21;413:6;407:13;456:6;451:2;440:9;436:18;429:34;481:1;491:140;505:6;502:1;499:13;491:140;;;600:14;;;596:23;;590:30;566:17;;;585:2;562:26;555:66;520:10;;491:140;;;495:3;680:1;675:2;666:6;655:9;651:22;647:31;640:42;750:2;743;739:7;734:2;726:6;722:15;718:29;707:9;703:45;699:54;691:62;;;;211:548;;;;:::o;1017:173::-;1085:20;;-1:-1:-1;;;;;1134:31:1;;1124:42;;1114:70;;1180:1;1177;1170:12;1114:70;1017:173;;;:::o;1195:254::-;1263:6;1271;1324:2;1312:9;1303:7;1299:23;1295:32;1292:52;;;1340:1;1337;1330:12;1292:52;1363:29;1382:9;1363:29;:::i;:::-;1353:39;1439:2;1424:18;;;;1411:32;;-1:-1:-1;;;1195:254:1:o;1646:248::-;1714:6;1722;1775:2;1763:9;1754:7;1750:23;1746:32;1743:52;;;1791:1;1788;1781:12;1743:52;-1:-1:-1;;1814:23:1;;;1884:2;1869:18;;;1856:32;;-1:-1:-1;1646:248:1:o;1899:160::-;1964:20;;2020:13;;2013:21;2003:32;;1993:60;;2049:1;2046;2039:12;2064:248;2129:6;2137;2190:2;2178:9;2169:7;2165:23;2161:32;2158:52;;;2206:1;2203;2196:12;2158:52;2242:9;2229:23;2219:33;;2271:35;2302:2;2291:9;2287:18;2271:35;:::i;:::-;2261:45;;2064:248;;;;;:::o;2499:328::-;2576:6;2584;2592;2645:2;2633:9;2624:7;2620:23;2616:32;2613:52;;;2661:1;2658;2651:12;2613:52;2684:29;2703:9;2684:29;:::i;:::-;2674:39;;2732:38;2766:2;2755:9;2751:18;2732:38;:::i;:::-;2722:48;;2817:2;2806:9;2802:18;2789:32;2779:42;;2499:328;;;;;:::o;2832:276::-;2890:6;2943:2;2931:9;2922:7;2918:23;2914:32;2911:52;;;2959:1;2956;2949:12;2911:52;2998:9;2985:23;3048:10;3041:5;3037:22;3030:5;3027:33;3017:61;;3074:1;3071;3064:12;3017:61;3097:5;2832:276;-1:-1:-1;;;2832:276:1:o;3113:180::-;3169:6;3222:2;3210:9;3201:7;3197:23;3193:32;3190:52;;;3238:1;3235;3228:12;3190:52;3261:26;3277:9;3261:26;:::i;3487:180::-;3546:6;3599:2;3587:9;3578:7;3574:23;3570:32;3567:52;;;3615:1;3612;3605:12;3567:52;-1:-1:-1;3638:23:1;;3487:180;-1:-1:-1;3487:180:1:o;3672:186::-;3731:6;3784:2;3772:9;3763:7;3759:23;3755:32;3752:52;;;3800:1;3797;3790:12;3752:52;3823:29;3842:9;3823:29;:::i;4071:316::-;4145:6;4153;4161;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4266:9;4253:23;4243:33;;4323:2;4312:9;4308:18;4295:32;4285:42;;4346:35;4377:2;4366:9;4362:18;4346:35;:::i;:::-;4336:45;;4071:316;;;;;:::o;4616:127::-;4677:10;4672:3;4668:20;4665:1;4658:31;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:1191;4838:6;4846;4899:2;4887:9;4878:7;4874:23;4870:32;4867:52;;;4915:1;4912;4905:12;4867:52;4955:9;4942:23;4984:18;5025:2;5017:6;5014:14;5011:34;;;5041:1;5038;5031:12;5011:34;5079:6;5068:9;5064:22;5054:32;;5124:7;5117:4;5113:2;5109:13;5105:27;5095:55;;5146:1;5143;5136:12;5095:55;5182:2;5169:16;5204:4;5227:2;5223;5220:10;5217:36;;;5233:18;;:::i;:::-;5279:2;5276:1;5272:10;5311:2;5305:9;5374:2;5370:7;5365:2;5361;5357:11;5353:25;5345:6;5341:38;5429:6;5417:10;5414:22;5409:2;5397:10;5394:18;5391:46;5388:72;;;5440:18;;:::i;:::-;5476:2;5469:22;5526:18;;;5560:15;;;;-1:-1:-1;5602:11:1;;;5598:20;;;5630:19;;;5627:39;;;5662:1;5659;5652:12;5627:39;5686:11;;;;5706:148;5722:6;5717:3;5714:15;5706:148;;;5788:23;5807:3;5788:23;:::i;:::-;5776:36;;5739:12;;;;5832;;;;5706:148;;;5873:6;-1:-1:-1;5898:35:1;;-1:-1:-1;5914:18:1;;;5898:35;:::i;:::-;5888:45;;;;;;4748:1191;;;;;:::o;5944:260::-;6012:6;6020;6073:2;6061:9;6052:7;6048:23;6044:32;6041:52;;;6089:1;6086;6079:12;6041:52;6112:29;6131:9;6112:29;:::i;:::-;6102:39;;6160:38;6194:2;6183:9;6179:18;6160:38;:::i;6912:127::-;6973:10;6968:3;6964:20;6961:1;6954:31;7004:4;7001:1;6994:15;7028:4;7025:1;7018:15;7044:168;7117:9;;;7148;;7165:15;;;7159:22;;7145:37;7135:71;;7186:18;;:::i;7217:217::-;7257:1;7283;7273:132;;7327:10;7322:3;7318:20;7315:1;7308:31;7362:4;7359:1;7352:15;7390:4;7387:1;7380:15;7273:132;-1:-1:-1;7419:9:1;;7217:217::o;7439:128::-;7506:9;;;7527:11;;;7524:37;;;7541:18;;:::i;7572:125::-;7637:9;;;7658:10;;;7655:36;;;7671:18;;:::i;8462:380::-;8541:1;8537:12;;;;8584;;;8605:61;;8659:4;8651:6;8647:17;8637:27;;8605:61;8712:2;8704:6;8701:14;8681:18;8678:38;8675:161;;8758:10;8753:3;8749:20;8746:1;8739:31;8793:4;8790:1;8783:15;8821:4;8818:1;8811:15;8675:161;;8462:380;;;:::o;8847:356::-;9049:2;9031:21;;;9068:18;;;9061:30;9127:34;9122:2;9107:18;;9100:62;9194:2;9179:18;;8847:356::o;9208:398::-;9410:2;9392:21;;;9449:2;9429:18;;;9422:30;9488:34;9483:2;9468:18;;9461:62;-1:-1:-1;;;9554:2:1;9539:18;;9532:32;9596:3;9581:19;;9208:398::o;12982:127::-;13043:10;13038:3;13034:20;13031:1;13024:31;13074:4;13071:1;13064:15;13098:4;13095:1;13088:15;13114:135;13153:3;13174:17;;;13171:43;;13194:18;;:::i;:::-;-1:-1:-1;13241:1:1;13230:13;;13114:135::o

Swarm Source

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