
    AVh              '          d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZm Z m!Z! ddl"m#Z#  ejH                  dg d      Z% eddd      Z&d^de#e!ejN                  f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de(d e(d!e)fd"Z*  ed#       ejV                  e*            Z,de#e!ejN                  f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de#e!e&f   de(d e(d!e)fd$Z- ejH                  d%g d&      Z. ed'dd      Z/d_de#e!ejN                  f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   d(e#e!e/f   d)e#e!e/f   d*e#e!e/f   d+e#e!e/f   d,e#e!e/f   d-e#e!e/f   d.e#e!e/f   d/e#e!e/f   d0e#e!e/f   d!e)f&d1Z0  ed2       ejV                  e0            Z1de#e!ejN                  f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   de#e!e/f   d(e#e!e/f   d)e#e!e/f   d*e#e!e/f   d+e#e!e/f   d,e#e!e/f   d-e#e!e/f   d.e#e!e/f   d/e#e!e/f   d0e#e!e/f   d!e)f&d3Z2 ejH                  d4g d&      Z3 ed5dd      Z4d_de#e!ejN                  f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   d(e#e!e4f   d)e#e!e4f   d*e#e!e4f   d+e#e!e4f   d,e#e!e4f   d-e#e!e4f   d.e#e!e4f   d/e#e!e4f   d0e#e!e4f   d!e)f&d6Z5  ed7       ejV                  e5            Z6de#e!ejN                  f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   de#e!e4f   d(e#e!e4f   d)e#e!e4f   d*e#e!e4f   d+e#e!e4f   d,e#e!e4f   d-e#e!e4f   d.e#e!e4f   d/e#e!e4f   d0e#e!e4f   d!e)f&d8Z7 ejH                  d9g d      Z8 ed:dd      Z9d`de#e!ejN                  f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   d e(d!e)fd;Z:  ed<       ejV                  e:            Z;de#e!ejN                  f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   de#e!e9f   d e(d!e)fd=Z< ejH                  d>g d?      Z= ed@ej|                  A      Z?d_de#e!e?f   de#e!e?f   dBe#e!e?f   dCe#e!e?f   dDe#e!e?f   dEe#e!e?f   fdFZ@  edG       ejV                  e@            ZAde#e!e?f   de#e!e?f   dBe#e!e?f   dCe#e!e?f   dDe#e!e?f   dEe#e!e?f   fdHZB ejH                  dIg dJ      ZC edKej|                  A      ZDd_de#e!eDf   de#e!eDf   dBe#e!eDf   dCe#e!eDf   dDe#e!eDf   dEe#e!eDf   dLe#e!eDf   dMe#e!eDf   dNe#e!eDf   dOe#e!eDf   fdPZE  edQ       ejV                  eE            ZFde#e!eDf   de#e!eDf   dBe#e!eDf   dCe#e!eDf   dDe#e!eDf   dEe#e!eDf   dLe#e!eDf   dMe#e!eDf   dNe#e!eDf   dOe#e!eDf   fdRZG ejH                  dSg d      ZH edTdd      ZId^de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de(d e(d!e)fdUZJ  edV       ejV                  eJ            ZKde#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de#e!eIf   de(d e(d!e)fdWZL ejH                  dXg dY      ZM edZdd      ZNd_de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   d(e#e!eNf   d)e#e!eNf   d*e#e!eNf   d+e#e!eNf   d,e#e!eNf   d-e#e!eNf   d/e#e!eNf   d0e#e!eNf   d!e)f"d[ZO  ed\       ejV                  eO            ZPde#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   de#e!eNf   d(e#e!eNf   d)e#e!eNf   d*e#e!eNf   d+e#e!eNf   d,e#e!eNf   d-e#e!eNf   d/e#e!eNf   d0e#e!eNf   d!e)f"d]ZQy)azUPython wrappers around TensorFlow ops.

This file is MACHINE GENERATED! Do not edit.
    N)
pywrap_tfe)context)core)execute)dtypes)annotation_types)op_def_registry)ops)op_def_library)deprecated_endpoints)dispatch)	tf_export)TypeVarListAny)	Annotated	BlockLSTM)icsfocicohTV_BlockLSTM_Tz_atypes.Float32z_atypes.Halfseq_len_maxxcs_prevh_prevwwciwcfwcobforget_bias	cell_clipuse_peepholec                    t         j                   xs t        j                         }|j                  }|j                  r>	 t	        j
                  |d|| ||||||||d|	d|
d|      }t        j                  |      }|S |	d}	t        j                   |	d      }	|
d}
t        j                   |
d      }
|d	}t        j"                  |d      }t%        j&                  d| |||||||||	|
||
      \  }}}}|dd }t        j(                         rjd|j+                  d      d|j+                  d      d|j-                  d      d|j/                  d      f}|j0                  }t        j2                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
|||      S # t        j                  $ r Y w xY w)a  Computes the LSTM cell forward propagation for all the time steps.

  This is equivalent to applying LSTMBlockCell in a loop, like so:

  ```python
  for x1 in unpack(x):
    i1, cs1, f1, o1, ci1, co1, h1 = LSTMBlock(
      x1, cs_prev, h_prev, w, wci, wcf, wco, b)
    cs_prev = cs1
    h_prev = h1
    i.append(i1)
    cs.append(cs1)
    f.append(f1)
    o.append(o1)
    ci.append(ci1)
    co.append(co1)
    h.append(h1)
  return pack(i), pack(cs), pack(f), pack(o), pack(ci), pack(ch), pack(h)
  ```

  Args:
    seq_len_max: A `Tensor` of type `int64`.
      Maximum time length actually used by this input. Outputs are padded
      with zeros beyond this length.
    x: A `Tensor`. Must be one of the following types: `half`, `float32`.
      The sequence input to the LSTM, shape (timelen, batch_size, num_inputs).
    cs_prev: A `Tensor`. Must have the same type as `x`.
      Value of the initial cell state.
    h_prev: A `Tensor`. Must have the same type as `x`.
      Initial output of cell (to be used for peephole).
    w: A `Tensor`. Must have the same type as `x`. The weight matrix.
    wci: A `Tensor`. Must have the same type as `x`.
      The weight matrix for input gate peephole connection.
    wcf: A `Tensor`. Must have the same type as `x`.
      The weight matrix for forget gate peephole connection.
    wco: A `Tensor`. Must have the same type as `x`.
      The weight matrix for output gate peephole connection.
    b: A `Tensor`. Must have the same type as `x`. The bias vector.
    forget_bias: An optional `float`. Defaults to `1`. The forget gate bias.
    cell_clip: An optional `float`. Defaults to `3`.
      Value to clip the 'cs' value to.
    use_peephole: An optional `bool`. Defaults to `False`.
      Whether to use peephole weights.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (i, cs, f, o, ci, co, h).

    i: A `Tensor`. Has the same type as `x`.
    cs: A `Tensor`. Has the same type as `x`.
    f: A `Tensor`. Has the same type as `x`.
    o: A `Tensor`. Has the same type as `x`.
    ci: A `Tensor`. Has the same type as `x`.
    co: A `Tensor`. Has the same type as `x`.
    h: A `Tensor`. Has the same type as `x`.
  r   r%   r&   r'   Nr%   r&   r'   namectx      F)r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r*   T)_contextr   _thread_local_datais_eagerr   TFE_Py_FastPathExecute_BlockLSTMOutput_make_core_NotOkStatusException_opsraise_from_not_ok_status_FallbackExceptionblock_lstm_eager_fallback_SymbolicException_execute
make_float	make_bool_op_def_library_apply_op_helpermust_record_gradientget_attr_get_attr_bool_get_attr_typeinputsrecord_gradient)r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r*   _ctxtld_resulte__op_outputs_attrs_inputs_flats                         Q/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/ops/gen_rnn_ops.py
block_lstmrQ      s.   r 
			0h..0$#\\
11k4a&!S#Q{K&g !&&w/gn K##K?+I!!)[9)L##L.A,'887"aScsa!,	".T	;!QX
 QK'""$S\\-8+ll;'  0#  %'F ::L\674""7+'	.I && -
##At,,## 
&
q'61c3Q!Y#$D: : ## 
s0    <F G F;;GGG1 1HHzraw_ops.BlockLSTMc           
      b   |	d}	t        j                  |	d      }	|
d}
t        j                  |
d      }
|d}t        j                  |d      }t        j                  ||||||||g|t        j
                  t        j                  g      \  }}|\  }}}}}}}}t        j                  | t        j                        } | ||||||||g	}d|	d|
d|d|f}t        j                  dd	||||
      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr,   r%   r-   r&   Fr'   r.   s	   BlockLSTM   rE   attrsr+   r*   r   )r<   r=   r>   args_to_matching_eager_dtypeshalffloat32r7   convert_to_tensorint64r   rA   rF   r3   r4   )r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r*   r+   _attr_T	_inputs_TrO   rN   rI   s                      rP   r:   r:      s[   K##K?+I!!)[9)L##L.A,667FAsTWY\^_7`behohthtv}  wF  wF  hI  J'9.7+1gvq#sC&&{GMMB+q'61c3QG,;Y,W.&\1\#)s?'""$\674""7+'	.    BlockLSTMGrad)x_gradcs_prev_gradh_prev_gradw_gradwci_gradwcf_gradwco_gradb_gradTV_BlockLSTMGrad_Tr   r   r   r   r   r   r   cs_gradh_gradc                    t         j                   xs t        j                         }|j                  }|j                  rC	 t	        j
                  |d|| |||||||||	|
|||||||d|      }t        j                  |      }|S t        j                   |d      }t#        j$                  	 di d| d|d|d|d	|d
|d|d|d|d|	d|
d|d|d|d|d|d|d|d|d|\  }}}}|dd }t        j&                         rHd|j)                  d      d|j+                  d      f}|j,                  }t        j.                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
||||||||||      S # t        j                  $ r Y dw xY w)a
  Computes the LSTM cell backward propagation for the entire time sequence.

  This implementation is to be used in conjunction of LSTMBlock.

  Args:
    seq_len_max: A `Tensor` of type `int64`.
      Maximum time length actually used by this input. Outputs are padded
      with zeros beyond this length.
    x: A `Tensor`. Must be one of the following types: `half`, `float32`.
      The sequence input to the LSTM, shape (timelen, batch_size, num_inputs).
    cs_prev: A `Tensor`. Must have the same type as `x`.
      Value of the initial cell state.
    h_prev: A `Tensor`. Must have the same type as `x`.
      Initial output of cell (to be used for peephole).
    w: A `Tensor`. Must have the same type as `x`. The weight matrix.
    wci: A `Tensor`. Must have the same type as `x`.
      The weight matrix for input gate peephole connection.
    wcf: A `Tensor`. Must have the same type as `x`.
      The weight matrix for forget gate peephole connection.
    wco: A `Tensor`. Must have the same type as `x`.
      The weight matrix for output gate peephole connection.
    b: A `Tensor`. Must have the same type as `x`. The bias vector.
    i: A `Tensor`. Must have the same type as `x`.
      The input gate over the whole time sequence.
    cs: A `Tensor`. Must have the same type as `x`.
      The cell state before the tanh over the whole time sequence.
    f: A `Tensor`. Must have the same type as `x`.
      The forget gate over the whole time sequence.
    o: A `Tensor`. Must have the same type as `x`.
      The output gate over the whole time sequence.
    ci: A `Tensor`. Must have the same type as `x`.
      The cell input over the whole time sequence.
    co: A `Tensor`. Must have the same type as `x`.
      The cell after the tanh over the whole time sequence.
    h: A `Tensor`. Must have the same type as `x`.
      The output h vector over the whole time sequence.
    cs_grad: A `Tensor`. Must have the same type as `x`.
      The current gradient of cs.
    h_grad: A `Tensor`. Must have the same type as `x`.
      The gradient of h vector.
    use_peephole: A `bool`. Whether to use peephole weights.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (x_grad, cs_prev_grad, h_prev_grad, w_grad, wci_grad, wcf_grad, wco_grad, b_grad).

    x_grad: A `Tensor`. Has the same type as `x`.
    cs_prev_grad: A `Tensor`. Has the same type as `x`.
    h_prev_grad: A `Tensor`. Has the same type as `x`.
    w_grad: A `Tensor`. Has the same type as `x`.
    wci_grad: A `Tensor`. Has the same type as `x`.
    wcf_grad: A `Tensor`. Has the same type as `x`.
    wco_grad: A `Tensor`. Has the same type as `x`.
    b_grad: A `Tensor`. Has the same type as `x`.
  r_   r'   Nr'   r*   r+   r   r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   r   ri   rj   r*   r.   )r_   )r/   r   r0   r1   r   r2   _BlockLSTMGradOutputr4   r5   r6   r7   r8   r9   block_lstm_grad_eager_fallbackr;   r<   r>   r?   r@   rA   rC   rD   rE   rF   r   r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   r   ri   rj   r'   r*   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                                rP   block_lstm_gradrp      s}   p 
			0h..0$#\\
11ot[!WfaS!QAq"b!Wfng %**73gn ##L.A,'88?%0?45??F? &?*+?14?:=?CF?JK? ? "$? ()? -.? 35? :<? @A? ")	? 28	?
 '3?
 :>?!QX QK'""$c00@#  %'F::Lvw8 &&w/'	.7 && -
##At,,## 
+
q'61c3Q2q!
b!Wf<d  ## 
1    AE% %F,8FF,+F,0G G'&G'zraw_ops.BlockLSTMGradc                     t        j                  |d      }t        j                  |||||||||	|
|||||||g|t        j                  t        j
                  g      \  }}|\  }}}}}}}}}	}
}}}}}}}t        j                  | t        j                        } | |||||||||	|
|||||||g}d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr'   r.   s   BlockLSTMGrad   rT   r_   )r<   r>   rV   rW   rX   rY   r7   rZ   r[   r   rA   rF   rm   r4   r   r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   r   ri   rj   r'   r*   r+   r\   r]   rO   rN   rI   s                             rP   rn   rn     sp   ##L.A,667FAsTWY\^_abdfhiklnprtvw  zA  CI  8J  LO  RY  R^  R^  `g  `o  `o  Qr  s'9W`T1gvq#sCAr1aRGV&&{GMMB+q'61c3Q2qRSUWY[]^`giop,L#w7&-q#)s?'""$vw8 &&w/'	.r^   BlockLSTMGradV2TV_BlockLSTMGradV2_Tc                    t         j                   xs t        j                         }|j                  }|j                  rC	 t	        j
                  |d|| |||||||||	|
|||||||d|      }t        j                  |      }|S t        j                   |d      }t#        j$                  	 di d| d|d|d|d	|d
|d|d|d|d|	d|
d|d|d|d|d|d|d|d|d|\  }}}}|dd }t        j&                         rHd|j)                  d      d|j+                  d      f}|j,                  }t        j.                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
||||||||||      S # t        j                  $ r Y dw xY w)a
  Computes the LSTM cell backward propagation for the entire time sequence.

  This implementation is to be used in conjunction of BlockLSTMV2.

  Args:
    seq_len_max: A `Tensor` of type `int64`.
      Maximum time length actually used by this input. Outputs are padded
      with zeros beyond this length.
    x: A `Tensor`. Must be one of the following types: `half`, `float32`.
      The sequence input to the LSTM, shape (timelen, batch_size, num_inputs).
    cs_prev: A `Tensor`. Must have the same type as `x`.
      Value of the initial cell state.
    h_prev: A `Tensor`. Must have the same type as `x`.
      Initial output of cell (to be used for peephole).
    w: A `Tensor`. Must have the same type as `x`. The weight matrix.
    wci: A `Tensor`. Must have the same type as `x`.
      The weight matrix for input gate peephole connection.
    wcf: A `Tensor`. Must have the same type as `x`.
      The weight matrix for forget gate peephole connection.
    wco: A `Tensor`. Must have the same type as `x`.
      The weight matrix for output gate peephole connection.
    b: A `Tensor`. Must have the same type as `x`. The bias vector.
    i: A `Tensor`. Must have the same type as `x`.
      The input gate over the whole time sequence.
    cs: A `Tensor`. Must have the same type as `x`.
      The cell state before the tanh over the whole time sequence.
    f: A `Tensor`. Must have the same type as `x`.
      The forget gate over the whole time sequence.
    o: A `Tensor`. Must have the same type as `x`.
      The output gate over the whole time sequence.
    ci: A `Tensor`. Must have the same type as `x`.
      The cell input over the whole time sequence.
    co: A `Tensor`. Must have the same type as `x`.
      The cell after the tanh over the whole time sequence.
    h: A `Tensor`. Must have the same type as `x`.
      The output h vector over the whole time sequence.
    cs_grad: A `Tensor`. Must have the same type as `x`.
      The current gradient of cs.
    h_grad: A `Tensor`. Must have the same type as `x`.
      The gradient of h vector.
    use_peephole: A `bool`. Whether to use peephole weights.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (x_grad, cs_prev_grad, h_prev_grad, w_grad, wci_grad, wcf_grad, wco_grad, b_grad).

    x_grad: A `Tensor`. Has the same type as `x`.
    cs_prev_grad: A `Tensor`. Has the same type as `x`.
    h_prev_grad: A `Tensor`. Has the same type as `x`.
    w_grad: A `Tensor`. Has the same type as `x`.
    wci_grad: A `Tensor`. Has the same type as `x`.
    wcf_grad: A `Tensor`. Has the same type as `x`.
    wco_grad: A `Tensor`. Has the same type as `x`.
    b_grad: A `Tensor`. Has the same type as `x`.
  ru   r'   Nrl   r   r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   r   ri   rj   r*   r.   )ru   )r/   r   r0   r1   r   r2   _BlockLSTMGradV2Outputr4   r5   r6   r7   r8   r9   !block_lstm_grad_v2_eager_fallbackr;   r<   r>   r?   r@   rA   rC   rD   rE   rF   ro   s                                rP   block_lstm_grad_v2rz   "  s   p 
			0h..0$#\\
11{AwS#q!RAr2q'6&g ',,W5gn ##L.A,'88A'2A67AAHA"(A,-A36A<?AEHALMA A $&A *+A /0A 57A <>A BCA $+	A 4:	A
 )5A
 <@A!QX QK'""$c00@#  %'F::L<:"((1'	.7 && -
##At,,## 
.
q'61c3Q2q!
b!Wf<d  ## 
rq   zraw_ops.BlockLSTMGradV2c                     t        j                  |d      }t        j                  |||||||||	|
|||||||g|t        j                  t        j
                  g      \  }}|\  }}}}}}}}}	}
}}}}}}}t        j                  | t        j                        } | |||||||||	|
|||||||g}d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr'   r.   s   BlockLSTMGradV2rs   rT   ru   )r<   r>   rV   rW   rX   rY   r7   rZ   r[   r   rA   rF   rx   r4   rt   s                             rP   ry   ry     sp   ##L.A,667FAsTWY\^_abdfhiklnprtvw  zA  CI  8J  LO  RY  R^  R^  `g  `o  `o  Qr  s'9W`T1gvq#sCAr1aRGV&&{GMMB+q'61c3Q2qRSUWY[]^`giop,L#w7&/<#)s?'""$<:"((1'	.r^   BlockLSTMV2TV_BlockLSTMV2_Tc                    t         j                   xs t        j                         }|j                  }|j                  r<	 t	        j
                  |d|| ||||||||d|	d|
      }t        j                  |      }|S |	d}	t        j                   |	d      }	|
d}
t        j"                  |
d      }
t%        j&                  d| |||||||||	|
|      \  }}}}|dd }t        j(                         rYd|j+                  d      d|j-                  d      d	|j/                  d	      f}|j0                  }t        j2                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
||      S # t        j                  $ r Y ]w xY w)
a%	  Computes the LSTM cell forward propagation for all the time steps.

  This is equivalent to applying LSTMBlockCell in a loop, like so:

  ```python
  for x1 in unpack(x):
    i1, cs1, f1, o1, ci1, co1, h1 = LSTMBlock(
      x1, cs_prev, h_prev, w, wci, wcf, wco, b)
    cs_prev = cs1
    h_prev = h1
    i.append(i1)
    cs.append(cs1)
    f.append(f1)
    o.append(o1)
    ci.append(ci1)
    co.append(co1)
    h.append(h1)
  return pack(i), pack(cs), pack(f), pack(o), pack(ci), pack(ch), pack(h)

  Note that unlike LSTMBlockCell (and BlockLSTM) which uses ICFO gate layout,
  this op uses IFCO. So in order for the following snippet to be equivalent
  all gate-related outputs should be reordered.
  ```

  Args:
    seq_len_max: A `Tensor` of type `int64`.
      Maximum time length actually used by this input. Outputs are padded
      with zeros beyond this length.
    x: A `Tensor`. Must be one of the following types: `half`, `float32`.
      The sequence input to the LSTM, shape (timelen, batch_size, num_inputs).
    cs_prev: A `Tensor`. Must have the same type as `x`.
      Value of the initial cell state.
    h_prev: A `Tensor`. Must have the same type as `x`.
      Initial output of cell (to be used for peephole).
    w: A `Tensor`. Must have the same type as `x`. The weight matrix.
    wci: A `Tensor`. Must have the same type as `x`.
      The weight matrix for input gate peephole connection.
    wcf: A `Tensor`. Must have the same type as `x`.
      The weight matrix for forget gate peephole connection.
    wco: A `Tensor`. Must have the same type as `x`.
      The weight matrix for output gate peephole connection.
    b: A `Tensor`. Must have the same type as `x`. The bias vector.
    cell_clip: An optional `float`. Defaults to `0`.
      Value to clip the 'cs' value to.
    use_peephole: An optional `bool`. Defaults to `False`.
      Whether to use peephole weights.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (i, cs, f, o, ci, co, h).

    i: A `Tensor`. Has the same type as `x`.
    cs: A `Tensor`. Has the same type as `x`.
    f: A `Tensor`. Has the same type as `x`.
    o: A `Tensor`. Has the same type as `x`.
    ci: A `Tensor`. Has the same type as `x`.
    co: A `Tensor`. Has the same type as `x`.
    h: A `Tensor`. Has the same type as `x`.
  r|   r&   r'   N)r&   r'   r*   r+   r   F)r   r   r   r   r    r!   r"   r#   r$   r&   r'   r*   r.   )r/   r   r0   r1   r   r2   _BlockLSTMV2Outputr4   r5   r6   r7   r8   r9   block_lstmv2_eager_fallbackr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   )r   r   r   r   r    r!   r"   r#   r$   r&   r'   r*   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                        rP   block_lstmv2r     s   x 
			0h..0$#\\	11mT;7FAsS![)^\Kg #((1gn I!!)[9)L##L.A,'88;!W$s!* 	"!QX
 QK'""$3<<4n  0#  %'F ::L|VW6$$W-'	.? && -
##At,,## 
(
q'61c3QLtO O ## 
s0    :E F&2FF&%F&*G GGzraw_ops.BlockLSTMV2c           
      *   |	d}	t        j                  |	d      }	|
d}
t        j                  |
d      }
t        j                  ||||||||g|t        j
                  t        j                  g      \  }}|\  }}}}}}}}t        j                  | t        j                        } | ||||||||g	}d|	d|
d|f}t        j                  dd||||      }t        j                         rt        j                  d	|||       t        j                  |      }|S )
Nr   r&   Fr'   r.   s   BlockLSTMV2rS   rT   r|   )r<   r=   r>   rV   rW   rX   rY   r7   rZ   r[   r   rA   rF   r   r4   )r   r   r   r   r    r!   r"   r#   r$   r&   r'   r*   r+   r\   r]   rO   rN   rI   s                     rP   r   r     s:   I!!)[9)L##L.A,667FAsTWY\^_7`behohthtv}  wF  wF  hI  J'9.7+1gvq#sC&&{GMMB+q'61c3QG,NL#	&^Q|#)s?'""$|VW6$$W-'	.r^   GRUBlockCell)rucr   TV_GRUBlockCell_T)boundw_ruw_cb_rub_cc                    t         j                   xs t        j                         }|j                  }|j                  r5	 t	        j
                  |d|| |||||	      }	t        j                  |	      }	|	S t        j                   d| ||||||      \  }}}}|dd }	t#        j$                         r7d|j'                  d      f}|j(                  }t#        j*                  d|||	       t        j                  |	      }	|	S # t        j                  $ r }
t        j                  |
|       Y d}
~
nd}
~
wt        j                  $ r Y nw xY w	 t        | |||||||      S # t        j                  $ r Y w xY w)a?  Computes the GRU cell forward propagation for 1 time step.

  Args
      x: Input to the GRU cell.
      h_prev: State input from the previous GRU cell.
      w_ru: Weight matrix for the reset and update gate.
      w_c: Weight matrix for the cell connection gate.
      b_ru: Bias vector for the reset and update gate.
      b_c: Bias vector for the cell connection gate.

  Returns
      r: Output of the reset gate.
      u: Output of the update gate.
      c: Output of the cell connection gate.
      h: Current state of the GRU cell.

  Note on notation of the variables:

  Concatenation of a and b is represented by a_b
  Element-wise dot product of a and b is represented by ab
  Element-wise dot product is represented by \circ
  Matrix multiplication is represented by *

  Biases are initialized with :
  `b_ru` - constant_initializer(1.0)
  `b_c` - constant_initializer(0.0)

  This kernel op implements the following mathematical equations:

  ```
  x_h_prev = [x, h_prev]

  [r_bar u_bar] = x_h_prev * w_ru + b_ru

  r = sigmoid(r_bar)
  u = sigmoid(u_bar)

  h_prevr = h_prev \circ r

  x_h_prevr = [x h_prevr]

  c_bar = x_h_prevr * w_c + b_c
  c = tanh(c_bar)

  h = (1-u) \circ c + u \circ h_prev
  ```

  Args:
    x: A `Tensor`. Must be one of the following types: `float32`.
    h_prev: A `Tensor`. Must have the same type as `x`.
    w_ru: A `Tensor`. Must have the same type as `x`.
    w_c: A `Tensor`. Must have the same type as `x`.
    b_ru: A `Tensor`. Must have the same type as `x`.
    b_c: A `Tensor`. Must have the same type as `x`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (r, u, c, h).

    r: A `Tensor`. Has the same type as `x`.
    u: A `Tensor`. Has the same type as `x`.
    c: A `Tensor`. Has the same type as `x`.
    h: A `Tensor`. Has the same type as `x`.
  r   Nr*   r+   )r   r   r   r   r   r   r*   r.   )r/   r   r0   r1   r   r2   _GRUBlockCellOutputr4   r5   r6   r7   r8   r9   gru_block_cell_eager_fallbackr;   r?   r@   r<   rA   rD   rE   rF   )r   r   r   r   r   r   r*   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                   rP   gru_block_cellr     su   B 
			0h..0$#\\11ndAvtS$Eg#))'2gn (88!F3Td,!QX QK'""$3%%c*+F::Lfg7%%g.'	.) && -
##At,,## 
*
VT3c$@ @## 
s0    3C= =ED++EEE E10E1zraw_ops.GRUBlockCellc                 F   t        j                  | |||||g|t        j                  g      \  }}	|	\  } }}}}}| |||||g}
d|f}t        j                  dd|
|||      }t        j
                         rt        j                  d|
||       t        j                  |      }|S )Nr.   s   GRUBlockCell   rT   r   )	r<   rV   rW   rY   r   rA   rF   r   r4   )r   r   r   r   r   r   r*   r+   r\   r]   rO   rN   rI   s                rP   r   r     s    6664dTW7XZ]`g`o`o_rs'9&/#1fdCsVT3c2,>&_a#)s?'""$fg7%%g.'	.r^   GRUBlockCellGrad)d_xd_h_prevd_c_bard_r_bar_u_barTV_GRUBlockCellGrad_Tr   r   r   d_hc                    t         j                   xs t        j                         }|j                  }|j                  r9	 t	        j
                  |d|
| |||||||||	      }t        j                  |      }|S t        j                   d| |||||||||	|
      \  }}}}|dd }t#        j$                         r7d|j'                  d      f}|j(                  }t#        j*                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||
       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
|      S # t        j                  $ r Y w xY w)a6  Computes the GRU cell back-propagation for 1 time step.

  Args
      x: Input to the GRU cell.
      h_prev: State input from the previous GRU cell.
      w_ru: Weight matrix for the reset and update gate.
      w_c: Weight matrix for the cell connection gate.
      b_ru: Bias vector for the reset and update gate.
      b_c: Bias vector for the cell connection gate.
      r: Output of the reset gate.
      u: Output of the update gate.
      c: Output of the cell connection gate.
      d_h: Gradients of the h_new wrt to objective function.

  Returns
      d_x: Gradients of the x wrt to objective function.
      d_h_prev: Gradients of the h wrt to objective function.
      d_c_bar Gradients of the c_bar wrt to objective function.
      d_r_bar_u_bar Gradients of the r_bar & u_bar wrt to objective function.

  This kernel op implements the following mathematical equations:

  Note on notation of the variables:

  Concatenation of a and b is represented by a_b
  Element-wise dot product of a and b is represented by ab
  Element-wise dot product is represented by \circ
  Matrix multiplication is represented by *

  Additional notes for clarity:

  `w_ru` can be segmented into 4 different matrices.
  ```
  w_ru = [w_r_x w_u_x
          w_r_h_prev w_u_h_prev]
  ```
  Similarly, `w_c` can be segmented into 2 different matrices.
  ```
  w_c = [w_c_x w_c_h_prevr]
  ```
  Same goes for biases.
  ```
  b_ru = [b_ru_x b_ru_h]
  b_c = [b_c_x b_c_h]
  ```
  Another note on notation:
  ```
  d_x = d_x_component_1 + d_x_component_2

  where d_x_component_1 = d_r_bar * w_r_x^T + d_u_bar * w_r_x^T
  and d_x_component_2 = d_c_bar * w_c_x^T

  d_h_prev = d_h_prev_component_1 + d_h_prevr \circ r + d_h \circ u
  where d_h_prev_componenet_1 = d_r_bar * w_r_h_prev^T + d_u_bar * w_r_h_prev^T
  ```

  Mathematics behind the Gradients below:
  ```
  d_c_bar = d_h \circ (1-u) \circ (1-c \circ c)
  d_u_bar = d_h \circ (h-c) \circ u \circ (1-u)

  d_r_bar_u_bar = [d_r_bar d_u_bar]

  [d_x_component_1 d_h_prev_component_1] = d_r_bar_u_bar * w_ru^T

  [d_x_component_2 d_h_prevr] = d_c_bar * w_c^T

  d_x = d_x_component_1 + d_x_component_2

  d_h_prev = d_h_prev_component_1 + d_h_prevr \circ r + u
  ```
  Below calculation is performed in the python wrapper for the Gradients
  (not in the gradient kernel.)
  ```
  d_w_ru = x_h_prevr^T * d_c_bar

  d_w_c = x_h_prev^T * d_r_bar_u_bar

  d_b_ru = sum of d_r_bar_u_bar along axis = 0

  d_b_c = sum of d_c_bar along axis = 0
  ```

  Args:
    x: A `Tensor`. Must be one of the following types: `float32`.
    h_prev: A `Tensor`. Must have the same type as `x`.
    w_ru: A `Tensor`. Must have the same type as `x`.
    w_c: A `Tensor`. Must have the same type as `x`.
    b_ru: A `Tensor`. Must have the same type as `x`.
    b_c: A `Tensor`. Must have the same type as `x`.
    r: A `Tensor`. Must have the same type as `x`.
    u: A `Tensor`. Must have the same type as `x`.
    c: A `Tensor`. Must have the same type as `x`.
    d_h: A `Tensor`. Must have the same type as `x`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (d_x, d_h_prev, d_c_bar, d_r_bar_u_bar).

    d_x: A `Tensor`. Has the same type as `x`.
    d_h_prev: A `Tensor`. Has the same type as `x`.
    d_c_bar: A `Tensor`. Has the same type as `x`.
    d_r_bar_u_bar: A `Tensor`. Has the same type as `x`.
  r   Nr   )r   r   r   r   r   r   r   r   r   r   r*   r.   )r/   r   r0   r1   r   r2   _GRUBlockCellGradOutputr4   r5   r6   r7   r8   r9   "gru_block_cell_grad_eager_fallbackr;   r?   r@   r<   rA   rD   rE   rF   )r   r   r   r   r   r   r   r   r   r   r*   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                       rP   gru_block_cell_gradr     s   R 
			0h..0$#\\	11 $64dCA	3g (--g6gn (88aTs #qA$H!QX QK'""$3%%c*+F::LL&';#))'2'	.) && -
##At,,## 
/
VT3c1aCdN N## 
s0    7D ED33EEE' 'E>=E>zraw_ops.GRUBlockCellGradc                 ^   t        j                  | |||||||||	g
|t        j                  g      \  }}|\
  } }}}}}}}}}	| |||||||||	g
}d|f}t        j                  dd||||
      }t        j
                         rt        j                  d|||       t        j                  |      }|S )Nr.   s   GRUBlockCellGradr   rT   r   )	r<   rV   rW   rY   r   rA   rF   r   r4   )r   r   r   r   r   r   r   r   r   r   r*   r+   r\   r]   rO   rN   rI   s                    rP   r   r      s    6664dTWYZ\]_`be7fhknun}n}  nA  B'94=11fdCsAq!SVT3c1aC@,>&0!L#)s?'""$L&';#))'2'	.r^   LSTMBlockCellTV_LSTMBlockCell_Tc                    t         j                   xs t        j                         }|j                  }|j                  r=	 t	        j
                  |d|| |||||||d|d|	d|
      }t        j                  |      }|S |d}t        j                   |d      }|	d}	t        j                   |	d      }	|
d	}
t        j"                  |
d      }
t%        j&                  d| |||||||||	|
|
      \  }}}}|dd }t        j(                         rjd|j+                  d      d|j+                  d      d|j-                  d      d|j/                  d      f}|j0                  }t        j2                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
||      S # t        j                  $ r Y w xY w)aR  Computes the LSTM cell forward propagation for 1 time step.

  This implementation uses 1 weight matrix and 1 bias vector, and there's an
  optional peephole connection.

  This kernel op implements the following mathematical equations:

  ```python
  xh = [x, h_prev]
  [i, f, ci, o] = xh * w + b
  f = f + forget_bias

  if not use_peephole:
    wci = wcf = wco = 0

  i = sigmoid(cs_prev * wci + i)
  f = sigmoid(cs_prev * wcf + f)
  ci = tanh(ci)

  cs = ci .* i + cs_prev .* f
  cs = clip(cs, cell_clip)

  o = sigmoid(cs * wco + o)
  co = tanh(cs)
  h = co .* o
  ```

  Args:
    x: A `Tensor`. Must be one of the following types: `half`, `float32`.
      The input to the LSTM cell, shape (batch_size, num_inputs).
    cs_prev: A `Tensor`. Must have the same type as `x`.
      Value of the cell state at previous time step.
    h_prev: A `Tensor`. Must have the same type as `x`.
      Output of the previous cell at previous time step.
    w: A `Tensor`. Must have the same type as `x`. The weight matrix.
    wci: A `Tensor`. Must have the same type as `x`.
      The weight matrix for input gate peephole connection.
    wcf: A `Tensor`. Must have the same type as `x`.
      The weight matrix for forget gate peephole connection.
    wco: A `Tensor`. Must have the same type as `x`.
      The weight matrix for output gate peephole connection.
    b: A `Tensor`. Must have the same type as `x`. The bias vector.
    forget_bias: An optional `float`. Defaults to `1`. The forget gate bias.
    cell_clip: An optional `float`. Defaults to `3`.
      Value to clip the 'cs' value to.
    use_peephole: An optional `bool`. Defaults to `False`.
      Whether to use peephole weights.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (i, cs, f, o, ci, co, h).

    i: A `Tensor`. Has the same type as `x`.
    cs: A `Tensor`. Has the same type as `x`.
    f: A `Tensor`. Has the same type as `x`.
    o: A `Tensor`. Has the same type as `x`.
    ci: A `Tensor`. Has the same type as `x`.
    co: A `Tensor`. Has the same type as `x`.
    h: A `Tensor`. Has the same type as `x`.
  r   r%   r&   r'   Nr)   r,   r-   F)r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r*   r.   )r/   r   r0   r1   r   r2   _LSTMBlockCellOutputr4   r5   r6   r7   r8   r9   lstm_block_cell_eager_fallbackr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   )r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r*   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                        rP   lstm_block_cellr   4  s)   z 
			0h..0$#\\
11otQCc1{KNg %**73gn K##K?+I!!)[9)L##L.A,'881gfs cQK#,<"	$!QX
 QK'""$S\\-8+ll;'  0#  %'F ::Lvw8 &&w/'	.G && -
##At,,## 
+
Wfac3{LtO O ## 
s0    ;F GF99GGG. .HHzraw_ops.LSTMBlockCellc           
         |d}t        j                  |d      }|	d}	t        j                  |	d      }	|
d}
t        j                  |
d      }
t        j                  | |||||||g|t        j
                  t        j                  g      \  }}|\  } }}}}}}}| |||||||g}d|d|	d|
d|f}t        j                  dd	||||
      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr,   r%   r-   r&   Fr'   r.   s   LSTMBlockCellrS   rT   r   )r<   r=   r>   rV   rW   rX   rY   r   rA   rF   r   r4   )r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r*   r+   r\   r]   rO   rN   rI   s                     rP   r   r     sD   K##K?+I!!)[9)L##L.A,667FAsTWY\^_7`behohthtv}  wF  wF  hI  J'9.7+1gvq#sCWfac3:,;Y,W.&-q#)s?'""$vw8 &&w/'	.r^   LSTMBlockCellGrad)ra   dicford   re   rf   TV_LSTMBlockCellGrad_Tc                    t         j                   xs t        j                         }|j                  }|j                  rA	 t	        j
                  |d|| |||||||||	|
|||||d|      }t        j                  |      }|S t        j                   |d      }t#        j$                  	 di d| d|d|d|d	|d
|d|d|d|d|	d|
d|d|d|d|d|d|d|\  }}}}|dd }t        j&                         rHd|j)                  d      d|j+                  d      f}|j,                  }t        j.                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	|
||||||||      S # t        j                  $ r Y \w xY w)a  Computes the LSTM cell backward propagation for 1 timestep.

  This implementation is to be used in conjunction of LSTMBlockCell.

  Args:
    x: A `Tensor`. Must be one of the following types: `half`, `float32`.
      The input to the LSTM cell, shape (batch_size, num_inputs).
    cs_prev: A `Tensor`. Must have the same type as `x`.
      The previous cell state.
    h_prev: A `Tensor`. Must have the same type as `x`. The previous h state.
    w: A `Tensor`. Must have the same type as `x`. The weight matrix.
    wci: A `Tensor`. Must have the same type as `x`.
      The weight matrix for input gate peephole connection.
    wcf: A `Tensor`. Must have the same type as `x`.
      The weight matrix for forget gate peephole connection.
    wco: A `Tensor`. Must have the same type as `x`.
      The weight matrix for output gate peephole connection.
    b: A `Tensor`. Must have the same type as `x`. The bias vector.
    i: A `Tensor`. Must have the same type as `x`. The input gate.
    cs: A `Tensor`. Must have the same type as `x`.
      The cell state before the tanh.
    f: A `Tensor`. Must have the same type as `x`. The forget gate.
    o: A `Tensor`. Must have the same type as `x`. The output gate.
    ci: A `Tensor`. Must have the same type as `x`. The cell input.
    co: A `Tensor`. Must have the same type as `x`. The cell after the tanh.
    cs_grad: A `Tensor`. Must have the same type as `x`.
      The current gradient of cs.
    h_grad: A `Tensor`. Must have the same type as `x`.
      The gradient of h vector.
    use_peephole: A `bool`. Whether the cell uses peephole connections.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (cs_prev_grad, dicfo, wci_grad, wcf_grad, wco_grad).

    cs_prev_grad: A `Tensor`. Has the same type as `x`.
    dicfo: A `Tensor`. Has the same type as `x`.
    wci_grad: A `Tensor`. Has the same type as `x`.
    wcf_grad: A `Tensor`. Has the same type as `x`.
    wco_grad: A `Tensor`. Has the same type as `x`.
  r   r'   Nrl   r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   ri   rj   r*   r.   )r   )r/   r   r0   r1   r   r2   _LSTMBlockCellGradOutputr4   r5   r6   r7   r8   r9   #lstm_block_cell_grad_eager_fallbackr;   r<   r>   r?   r@   rA   rC   rD   rE   rF   )r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   ri   rj   r'   r*   rG   rH   rI   rJ   rK   rL   rM   rN   rO   s                              rP   lstm_block_cell_gradr     s_   T 
			0h..0$#\\	11!4GVQS#	1b!QBOg )..w7gn ##L.A,'88( (*1(:@(DE(!$(*-(36(:;(?@(EG(KL(  !( &(( -/( 9@( %+	( :F	(
 #'(!QX QK'""$c00@#  %'F::L\67<$**73'	.5 && -
##At,,## 
0
Wfac31b!QB
64TK K ## 
s0    ?E F$0FF$#F$(G GGzraw_ops.LSTMBlockCellGradc                    t        j                  |d      }t        j                  | |||||||||	|
|||||g|t        j                  t        j
                  g      \  }}|\  } }}}}}}}}}	}
}}}}}| |||||||||	|
|||||g}d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr'   r.   s   LSTMBlockCellGrad   rT   r   )r<   r>   rV   rW   rX   rY   r   rA   rF   r   r4   )r   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r   ri   rj   r'   r*   r+   r\   r]   rO   rN   rI   s                           rP   r   r     sI   ##L.A,667FAsTWY\^_abdfhiklnprtv}  @F  8G  IL  OV  O[  O[  ]d  ]l  ]l  No  p'9T]Q1gvq#sCAr1aR&Wfac31b!QBPWY_`,L#w7&11\#)s?'""$\67<$**73'	.r^   )r,   r-   FN)N)r   FN)R__doc__collectionstensorflow.pythonr   tensorflow.python.eagerr   r/   r   r5   r   r<   tensorflow.python.frameworkr   rW   tensorflow.security.fuzzing.pyr   _atypesr	   _op_def_registryr
   r7   r   r?   "tensorflow.python.util.deprecationr   tensorflow.python.utilr   	_dispatch tensorflow.python.util.tf_exportr   typingr   r   r   typing_extensionsr   
namedtupler3   r   Int64floatboolrQ   	to_raw_opr   r:   rm   rh   rp   r_   rn   rx   rv   rz   ru   ry   r   r}   r   r|   r   r   Float32r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r^   rP   <module>r      s   
  6 7 1 7 9 F K 3 I C 8 6 % % ');))*, 
 )+<nMgIc7==&89 gi^H[>\ ggpqt  wE  rE  hF g  PY  Z]  _m  Zm  Pn g  s|  }@  BP  }P  sQ g  Xa  be  gu  bu  Xv g  }F  GJ  LZ  GZ  }[ g  bk  lo  q  l  b@ g  EN  OR  Tb  Ob  Ec g  qv g  DI g  Z^ gR +I)*>4>>*+EF	9S'--5G+H YWZ\jWjMk v  AD  FT  AT  wU   _h  il  n|  i|  _}   BK  LO  Q_  L_  B`   gp  qt  vD  qD  gE   LU  VY  [i  Vi  Lj   qz  {~  @N  {N  qO   T]  ^a  cq  ^q  Tr   AF   SX   hl 0 .{--eg 
 13DnU ]3+=!> ]9SRdMdCe ]pyz}  @R  {R  qS ]  ]f  gj  l~  g~  ] ]  DM  NQ  Se  Ne  Df ]  mv  wz  |N  wN  mO ]  V_  `c  ew  `w  Vx ]  H  IL  N`  I`  a ]  fo  ps  uG  pG  fH ]  MV  WZ  \n  Wn  Mo ]  u~  B  DV  V  uW ]  \e  fi  k}  f}  \~ ]  CL  MP  Rd  Md  Ce ]  kt  ux  zL	  uL	  kM	 ]  S	\	  ]	`	  b	t	  ]	t	  S	u	 ]  z	C
  D
G
  I
[
  D
[
  z	\
 ]  g
p
  q
t
  v
H  q
H  g
I ]  S\  ]`  bt  ]t  Su ]  EI ]~ 3	12>4>>/3RS	#w}}:L0M R[\_as\sRt   @I  JM  Oa  Ja  @b   lu  vy  {M  vM  lN   S\  ]`  bt  ]t  Su   |E  FI  K]  F]  |^   en  or  tF  oF  eG   NW  X[  ]o  Xo  Np   u~  B  DV  V  uW   \e  fi  k}  f}  \~   DM  NQ  Se  Ne  Df   kt  ux  zL  uL  kM   R[  \_  as  \s  Rt   zC	  D	G	  I	[	  D	[	  z\	   b	k	  l	o	  q	C
  l	C
  b	D
   I
R
  S
V
  X
j
  S
j
  I
k
   v

  @C  EW  @W  v
X   bk  lo  qC  lC  bD   TX  0//eg 
 57H.Y ]Ic7==.@$A ]iPSUiPiFj ]u~  @C  EY  @Y  vZ ]  dm  nq  sG  nG  dH ]  MV  WZ  \p  Wp  Mq ]  xA  BE  G[  B[  x\ ]  cl  mp  rF  mF  cG ]  NW  X[  ]q  Xq  Nr ]  w@  AD  FZ  AZ  w[ ]  `i  jm  oC  jC  `D ]  JS  TW  Ym  Tm  Jn ]  s|  }@  BV  }V  sW ]  \e  fi  k  f  \@	 ]  F	O	  P	S	  U	i	  P	i	  F	j	 ]  p	y	  z	}	  	S
  z	S
  p	T
 ]  Y
b
  c
f
  h
|
  c
|
  Y
}
 ]  HQ  RU  Wk  Rk  Hl ]  v  @C  EY  @Y  vZ ]  jn ]~ 7)56~t~~FX7YZ9S'--=O3P U^_bdx_xUy   EN  OR  Th  Oh  Ei   s|  }@  BV  }V  sW   \e  fi  k  f  \@   GP  QT  Vj  Qj  Gk   r{  |  AU  |U  rV   ]f  gj  l@  g@  ]A   FO  PS  Ui  Pi  Fj   ox  y|  ~R  yR  oS   Yb  cf  h|  c|  Y}   BK  LO  Qe  Le  Bf   kt  ux  zN	  uN	  kO	   U	^	  _	b	  d	x	  _	x	  U	y	   	H
  I
L
  N
b
  I
b
  	c
   h
q
  r
u
  w
K  r
K  h
L   W`  ad  fz  az  W{   EN  OR  Th  Oh  Ei   y}  ,[++*, 
 -/@.Q diW]](:; d	#O_J_@` dktux  {K  vK  lL d  V_  `c  eu  `u  Vv d  {D  EH  JZ  EZ  {[ d  bk  lo  qA  lA  bB d  IR  SV  Xh  Sh  Ii d  py  z}  O  zO  pP d  U^  _b  dt  _t  Uu d  AF d  W[ dL /i-.~t~~l/KLYsGMM7I-J yY\^nYnOo   {D  EH  JZ  EZ  {[   en  or  tD  oD  eE   JS  TW  Yi  Ti  Jj   qz  {~  @P  {P  qQ   Xa  be  gw  bw  Xx   H  IL  N^  I^  _   dm  nq  sC  nC  dD   QV   fj * -k,, 
 /wG ]i%6 67 ]3PaKaAb ]jstw  zK  uK  kL ]  S\  ]`  bs  ]s  St ]  |E  FI  K\  F\  |] ]  dm  nq  sD  nD  dE ]~ 1y/01OPYs4E/E%F PYZ]_pZpPq   zC  DG  IZ  DZ  z[   bk  lo  qB  lB  bC   KT  UX  Zk  Uk  Kl   s|  }@  BS  }S  sT  1+0035 
   7wO F9S*?%?@ F)TWYnTnJo F  xA  BE  G\  B\  x] F  dm  nq  sH  nH  dI F  QZ  [^  `u  [u  Qv F  }F  GJ  La  Ga  }b F  gp  qt  vK  qK  gL F  QZ  [^  `u  [u  Qv F  {D  EH  J_  E_  {` F  gp  qt  vK  qK  gL FP 9978H[9\] )C9N4N*O Ybcfh}c}Y~   GP  QT  Vk  Qk  Gl   s|  }@  BW  }W  sX   `i  jm  oD  jD  `E   LU  VY  [p  Vp  Lq   v  @C  EZ  @Z  v[   `i  jm  oD  jD  `E   JS  TW  Yn  Tn  Jo   v  @C  EZ  @Z  v[  .{--*, 
 13DnU jy&8!89 jIcSeNeDf jpyz}  @R  {R  qS j  Xa  be  gy  by  Xz j  AJ  KN  Pb  Kb  Ac j  js  tw  yK  tK  jL j  S\  ]`  bt  ]t  Su j  zC  DG  I[  D[  z\ j  jo j  }B j  SW jX 3	12>4>>/3RSi5G0G&H S\]`bt]tSu   @I  JM  Oa  Ja  @b   gp  qt  vH  qH  gI   PY  Z]  _q  Zq  Pr   yB  CF  HZ  CZ  y[   bk  lo  qC  lC  bD   IR  SV  Xj  Sj  Ik   z   LQ   ae . 2;11AC 
 !!9;Ln] MIc+A&AB MYWZ\rWrMs M  ~G  HK  Mc  Hc  ~d M  ir  sv  xN  sN  iO M  V_  `c  e{  `{  V| M  CL  MP  Rh  Mh  Ci M  py  z}  U  zU  pV M  [d  eh  j@  e@  [A M  FO  PS  Uk  Pk  Fl M  r{  |  AW  |W  rX M  ]f  gj  lB  gB  ]C M  HQ  RU  Wm  Rm  Hn M  t}  ~A	  C	Y	  ~Y	  tZ	 M  `	i	  j	m	  o	E
  j	E
  `	F
 M  Q
Z
  [
^
  `
v
  [
v
  Q
w
 M  AJ  KN  Pf  Kf  Ag M  w{ M^ ;I9:>4>>J^;_` 9S:P5P+Q \efi  lB  gB  ]C   MV  WZ  \r  Wr  Ms   xA  BE  G]  B]  x^   en  or  tJ  oJ  eK   R[  \_  aw  \w  Rx   H  IL  Nd  Id  e   js  tw  yO  tO  jP   U^  _b  dz  _z  U{   AJ  KN  Pf  Kf  Ag   lu  vy  {Q  vQ  lR   W`  ad  f|  a|  W}   C	L	  M	P	  R	h	  M	h	  C	i	   o	x	  y	|	  ~	T
  y	T
  o	U
   `
i
  j
m
  o
E  j
E  `
F   PY  Z]  _u  Zu  Pv   FJ r^   