contract ERC20Interface {
      // Get the total token supply
      function totalSupply() external view returns (uint256);
   
      // Get the account balance of another account with address _owner
      function balanceOf(address _owner) external view returns (uint256);
   
      // Send _value amount of tokens to address _to
      function transfer(address _to, uint256 _value) external returns (bool);
   
      // Send _value amount of tokens from address _from to address _to
      function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
   
      // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
      // If this function is called again it overwrites the current allowance with _value.
      // this function is required for some DEX functionality
      function approve(address _spender, uint256 _value) external returns (bool);
   
      // Returns the amount which _spender is still allowed to withdraw from _owner
      function allowance(address _owner, address _spender) external view returns (uint256);
   
      // Triggered when tokens are transferred.
      event Transfer(address indexed _from, address indexed _to, uint256 _value);
   
      // Triggered whenever approve(address _spender, uint256 _value) is called.
      event Approval(address indexed _owner, address indexed _spender, uint256 _value);
  }
// ----------------------------------------------------------------------------------------------
// Owner Nechesov Andrey
// Facebook.com/Nechesov 
// Copyright (c) 2020. 
// ----------------------------------------------------------------------------------------------    
function allowance(address _owner, address _spender) external view returns (uint256);

// Returns the amount which _spender is still allowed to withdraw from _owner