<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def decode_jwt_token(token, secret):
 """ Validates and decodes the JWT token Token checked for - signature of JWT token - token issued date is valid :param token: jwt token :param secret: client specific secret :return boolean: True if valid token, False otherwise :raises TokenIssuerError: if iss field not present :raises TokenIssuedAtError: if iat field not present :raises jwt.DecodeError: If signature validation fails """

    try:
        # check signature of the token
        decoded_token = jwt.decode(
            token,
            key=secret.encode(),
            verify=True,
            algorithms=[__algorithm__],
            leeway=__bound__
        )
        # token has all the required fields
        if 'iss' not in decoded_token:
            raise TokenIssuerError
        if 'iat' not in decoded_token:
            raise TokenIssuedAtError

        # check iat time is within bounds
        now = epoch_seconds()
        iat = int(decoded_token['iat'])
        if now > (iat + __bound__):
            raise TokenExpiredError("Token has expired", decoded_token)
        if iat > (now + __bound__):
            raise TokenExpiredError("Token can not be in the future", decoded_token)

        return True
    except jwt.InvalidIssuedAtError:
        raise TokenExpiredError("Token has invalid iat field", decode_token(token))
    except jwt.DecodeError:
        raise TokenDecodeError