 function transferFrom(address from, address to, uint256 value) public returns (bool) {
    require(value <= _balances[from]);
    require(value <= _allowed[from][msg.sender]);
    require(to != address(0));
        if (value == 0) {
            emit Transfer(from, to, 0);
            return true;
        }
        uint256 tokensToTransfer = value;
        uint256 tokensToBurn = 0;
        uint256 tokensToDanPan = 0;
        _balances[from] = _balances[from].sub(value);
        if (!_isWhitelisted(from, to)) {
              tokensToBurn = findOnePercent(value);
              tokensToDanPan = findDPPercent(value);
             tokensToTransfer = value.sub(tokensToBurn).sub(tokensToDanPan);
            _totalSupply = _totalSupply.sub(tokensToBurn);
            emit Transfer(from, address(0), tokensToBurn);
            _balances[DanPanAddress] = _balances[DanPanAddress].add(tokensToDanPan);
           emit Transfer(from, DanPanAddress, tokensToDanPan);
        }
        assert(tokensToBurn.add(tokensToTransfer).add(tokensToDanPan) == value);
        _balances[to] = _balances[to].add(tokensToTransfer);
	_allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        emit Transfer(from, to, tokensToTransfer);
    return true;
  }