
    BVh+z             )       DF   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%dde#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de(de)f
dZ*  ed       ejV                  e*            Z,de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de(de)f
dZ- ejH                  dg d      Z.dde#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de(de(de(de(d e(d!e(d"e(de)fd#Z/  ed$       ejV                  e/            Z0de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de(de(de(de(d e(d!e(d"e(de)fd%Z1 ejH                  d&g d'      Z2dd(e#e e!   ejL                  f   d)e#e e!   ejL                  f   d*e#e e!   ejN                  f   d+e#e e!   ejL                  f   d,e#e!ejf                  f   d-e(d.e(d/e(d0e(d1e(d2e(d3e)d4e4fd5Z5  ed6       ejV                  e5            Z6d(e#e e!   ejL                  f   d)e#e e!   ejL                  f   d*e#e e!   ejN                  f   d+e#e e!   ejL                  f   d,e#e!ejf                  f   d-e(d.e(d/e(d0e(d1e(d2e(d3e)d4e4fd7Z7 ejH                  d8g d9      Z8dd:e#e!ejr                  f   d;e#e!ejL                  f   d<e#e!ejL                  f   d=e#e!ejN                  f   de(d.e(d1e(d2e(de(d3e)d>e)fd?Z:  ed@       ejV                  e:            Z;d:e#e!ejr                  f   d;e#e!ejL                  f   d<e#e!ejL                  f   d=e#e!ejN                  f   de(d.e(d1e(d2e(de(d3e)d>e)fdAZ< ejH                  dBg dC      Z=dd:e#e!ejr                  f   d;e#e!ejL                  f   d<e#e!ejL                  f   d=e#e!ejN                  f   d,e#e!ejf                  f   dDe#e!ejL                  f   de(d.e(d/e(d0e(d1e(d2e(de(d3e)dEe)fdFZ>  edG       ejV                  e>            Z?d:e#e!ejr                  f   d;e#e!ejL                  f   d<e#e!ejL                  f   d=e#e!ejN                  f   d,e#e!ejf                  f   dDe#e!ejL                  f   de(d.e(d/e(d0e(d1e(d2e(de(d3e)dEe)fdHZ@ ejH                  dIdJdKg      ZAddLe#e e!   ejL                  f   dMe#e e!   ejL                  f   dNe#e e!   ejN                  f   d.e(d1e(d2e(de(d3e)fdOZB  edP       ejV                  eB            ZCdLe#e e!   ejL                  f   dMe#e e!   ejL                  f   dNe#e e!   ejN                  f   d.e(d1e(d2e(de(d3e)fdQZDddRe#e!ejf                  f   fdSZE  edT       ejV                  eE            ZFdRe#e!ejf                  f   fdUZG ejH                  dVg dW      ZHddLe#e e!   ejL                  f   dMe#e e!   ejL                  f   dNe#e e!   ejN                  f   d.e(d1e(d2e(de(dJe(dKe(d3e)fdXZI  edY       ejV                  eI            ZJdLe#e e!   ejL                  f   dMe#e e!   ejL                  f   dNe#e e!   ejN                  f   d.e(d1e(d2e(de(dJe(dKe(d3e)fdZZKdd:e#e!ejr                  f   d[e#e!ejL                  f   d\e#e!ejL                  f   de(d.e(d2e(de(d3e)d>e)fd]ZL  ed^       ejV                  eL            ZMd:e#e!ejr                  f   d[e#e!ejL                  f   d\e#e!ejL                  f   de(d.e(d2e(de(d3e)d>e)fd_ZNdd`ZO  eda       ejV                  eO            ZPdb ZQddce#e e!   ejL                  f   fddZR  ede       ejV                  eR            ZSdce#e e!   ejL                  f   fdfZT ejH                  dgdhdig      ZUddje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dme#e!ejN                  f   dne#e!ejN                  f   d2e(fdoZV  edp       ejV                  eV            ZWdje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dme#e!ejN                  f   dne#e!ejN                  f   d2e(fdqZX ejH                  drg ds      ZYddje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dte#e!ejN                  f   due#e!ejN                  f   dme#e!ejN                  f   dve#e!ejN                  f   dne#e!ejN                  f   d2e(dwe4dxeZdyeZfdzZ[  ed{       ejV                  e[            Z\dje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dte#e!ejN                  f   due#e!ejN                  f   dme#e!ejN                  f   dve#e!ejN                  f   dne#e!ejN                  f   d2e(dwe4dxeZdyeZfd|Z] ejH                  d}g d~      Z^ddne#e!ejN                  f   dje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dve#e!ejN                  f   de#e!ejN                  f   dte#e!ejN                  f   dxe#e!ejN                  f   due#e!ejN                  f   d2e(de4fdZ_  ed       ejV                  e_            Z`dne#e!ejN                  f   dje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dve#e!ejN                  f   de#e!ejN                  f   dte#e!ejN                  f   dxe#e!ejN                  f   due#e!ejN                  f   d2e(de4fdZa ejH                  dg d      Zbddne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dje#e!ejL                  f   dke#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   d2e(de4deZfdZc  ed       ejV                  ec            Zddne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dje#e!ejL                  f   dke#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   d2e(de4deZfdZeddje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   d2e(dRe#e!ejN                  f   fdZf  ed       ejV                  ef            Zgdje#e!ejL                  f   dke#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   d2e(dRe#e!ejN                  f   fdZh ejH                  dg d      Zidd;e#e!ejL                  f   d<e#e!ej                  f   de#e!ejN                  f   de#e!ej                  f   dne#e!ejN                  f   de(de(de(fdZk  ed       ejV                  ek            Zld;e#e!ejL                  f   d<e#e!ej                  f   de#e!ejN                  f   de#e!ej                  f   dne#e!ejN                  f   de(de(de(fdZm ejH                  ddhdig      Zn eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejL                  f   d3e)deZdeZfdZo  ed       ejV                  eo            Zpde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejL                  f   d3e)deZdeZfdZq ejH                  ddhdig      Zr eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejL                  f   dJe(dKe(d3e)deZdeZfdZs  ed       ejV                  es            Ztde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejL                  f   dJe(dKe(d3e)deZdeZfdZu ejH                  dg d      Zv eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   dwe4dyeZdeZdeZdueZd3e)deZdeZf$dZw  ed       ejV                  ew            Zxde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   dwe4dyeZdeZdeZdueZd3e)deZdeZf$dZy ejH                  dg d      Zz eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   dwe4dyeZdeZdeZdueZdJe(dKe(d3e)deZdeZf(dZ{  ed       ejV                  e{            Z|de#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   dwe4dyeZdeZdeZdueZdJe(dKe(d3e)deZdeZf(dZ} ejH                  dg d      Z~ eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdueZd3e)deZdeZf"dZ  ed       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdueZd3e)deZdeZf"dZ ejH                  dg d      Z eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdueZdJe(dKe(d3e)deZdeZf&dZ  ed       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdueZdJe(dKe(d3e)deZdeZf&dZdde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   de#e e!   ejN                  f   de#e e!   ejN                  f   de#e!ejL                  f   d3e)fdĄZ  edū       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   de#e e!   ejN                  f   de#e e!   ejN                  f   de#e!ejL                  f   d3e)fdƄZ ejH                  dg d      Z eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdeZdeZd3e)deZdeZf$dȄZ  edɫ       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdeZdeZd3e)deZdeZf$dʄZ ejH                  dg d      Z eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdeZdeZdJe(dKe(d3e)deZdeZf(d̄Z  edͫ       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   dme#e!ejN                  f   de#e!ejN                  f   de#e!ejL                  f   de4deZdeZdeZdeZdJe(dKe(d3e)deZdeZf(d΄Z eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   d3e)deZdeZdRe#e!ejN                  f   fdτZ  edЫ       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   d3e)deZdeZdRe#e!ejN                  f   fdфZ eZd       eZd      dfde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   dJe(dKe(d3e)deZdeZdRe#e!ejN                  f   fd҄Z  edӫ       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   de#e!ejN                  f   dle#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   dJe(dKe(d3e)deZdeZdRe#e!ejN                  f   fdԄZdde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   de(deZdeZde(d3e)dRe#e!ejN                  f   fd؄Z  ed٫       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   de(deZdeZde(d3e)dRe#e!ejN                  f   fdڄZdde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   de(deZdeZde(dJe(dKe(d3e)dRe#e!ejN                  f   fdۄZ  edܫ       ejV                  e            Zde#e!ejL                  f   de#e!ejL                  f   de#e!ejL                  f   de#e!ejN                  f   dne#e!ejN                  f   de#e!ejL                  f   de(deZdeZde(dJe(dKe(d3e)dRe#e!ejN                  f   fd݄Zy)zUPython 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ConvertToCooTensor)row_idscol_idsgainsindices_or_row_splitsvaluesweightssample_countcombinerc                 b   t         j                   xs t        j                         }|j                  }|j                  r6	 t	        j
                  |d|| ||d|d|
      }t        j                  |      }|S t        j                   |d      }t        j"                  |d      }t%        j&                  d| |||||      \  }
}
}}|dd }t        j(                         rHd|j+                  d      d|j-                  d      f}|j.                  }t        j0                  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 8w xY w)a  TODO: add doc.

  Args:
    indices_or_row_splits: A `Tensor` of type `int32`.
    values: A `Tensor` of type `int32`.
    weights: A `Tensor` of type `float32`.
    sample_count: An `int` that is `>= 1`.
    combiner: A `string`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (row_ids, col_ids, gains).

    row_ids: A `Tensor` of type `int32`.
    col_ids: A `Tensor` of type `int32`.
    gains: A `Tensor` of type `float32`.
  r   r   r   N)r   r   namectx)r   r   r   r   r   r   )_contextr   _thread_local_datais_eagerr   TFE_Py_FastPathExecute_ConvertToCooTensorOutput_make_core_NotOkStatusException_opsraise_from_not_ok_status_FallbackException$convert_to_coo_tensor_eager_fallback_SymbolicException_executemake_intmake_str_op_def_library_apply_op_helpermust_record_gradient_get_attr_intget_attrinputsrecord_gradient)r   r   r   r   r   r   _ctxtld_resulte__op_outputs_attrs_inputs_flats                  U/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/tpu/ops/gen_xla_ops.pyconvert_to_coo_tensorr@      s   $ 
			0h..0$#\\	11"D*?z8Eg *//8gn ""<@,x4('884I%+W+7(#'	)!QX
 QK'""$c//?ll:&(F::LlFG=%++G4'	.5 && -
##At,,## 
1
|$D2 2 ## 
s0    4D: :FE((F FF F.-F.zraw_ops.ConvertToCooTensorc                    t        j                  |d      }t        j                  |d      }t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  |t
        j                        }| ||g}d|d|f}t        j                  dd||||      }	t        j                         rt        j                  d|||	       t        j                  |	      }	|	S )Nr   r   s   ConvertToCooTensor   r4   attrsr   r   r   )r,   r-   r.   r'   convert_to_tensor_dtypesint32float32r   r1   r5   r#   r$   )
r   r   r   r   r   r   r   r>   r=   r8   s
             r?   r*   r*   W   s    ""<@,x4(001FV!!&'--8&""7GOO<''9,L*h?&2Al#)s?'""$lFG=%++G4'	.    #ConvertToListOfSparseCoreCooTensors)row_ids_listcol_ids_list
gains_listnum_sc_per_chip
row_offset
col_offset	col_shiftnum_sc_shardsstacked_table_sample_countc                    t         j                   xs t        j                         }|j                  }|j                  rB	 t	        j
                  |d|| ||d|d|d|d|d|d|d|	d	|
      }t        j                  |      }|S t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |	d      }	t        j"                  |
d	      }
t%        j&                  d| |||||||||	|
|      \  }}}}|d
d
 }t        j(                         rd|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d	|j-                  d	      f}|j.                  }t        j0                  d|||       |d
| g||d
 z   }|d
d |dd|z    gz   |d|z   d
 z   }|d
d |dd
 gz   }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  TODO: add doc.

  Args:
    indices_or_row_splits: A `Tensor` of type `int32`.
    values: A `Tensor` of type `int32`.
    weights: A `Tensor` of type `float32`.
    sample_count: An `int` that is `>= 1`.
    num_sc_per_chip: An `int` that is `>= 1`.
    row_offset: An `int` that is `>= 0`.
    col_offset: An `int` that is `>= 0`.
    col_shift: An `int` that is `>= 0`.
    num_sc_shards: An `int` that is `>= 1`.
    stacked_table_sample_count: An `int` that is `>= 1`.
    combiner: A `string`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (row_ids_list, col_ids_list, gains_list).

    row_ids_list: A list of `num_sc_per_chip` `Tensor` objects with type `int32`.
    col_ids_list: A list of `num_sc_per_chip` `Tensor` objects with type `int32`.
    gains_list: A list of `num_sc_per_chip` `Tensor` objects with type `float32`.
  rJ   r   rN   rO   rP   rQ   rR   rS   r   N)
r   rN   rO   rP   rQ   rR   rS   r   r   r   )r   r   r   r   rN   rO   rP   rQ   rR   rS   r   r         )r   r   r    r!   r   r"   *_ConvertToListOfSparseCoreCooTensorsOutputr$   r%   r&   r'   r(   r)   9convert_to_list_of_sparse_core_coo_tensors_eager_fallbackr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   )r   r   r   r   rN   rO   rP   rQ   rR   rS   r   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                        r?   *convert_to_list_of_sparse_core_coo_tensorsrY   l   s*   0 
			0h..0$#\\113Tvw?L*j+y/3"J:g ;@@Ign  ""<@,%%o7HI/  \:*  \:*	;7)##M?C-'001KMijx4('88-EZ6<g<H?N:D:D9B=JJd8@t
M!QX QK'""$c//?!2!23D!EC--l;\-{,o0* <=zll:&(F ::L-|VWN%o&''/2B*CC'BQK71Q%89::WQEXEY=ZZ'BQK712;-''6<<WE'	.i && -
##At,,## 
	F
|)j9%%?$D2 2 ## 
s1    A I& &J-9JJ-,J-1K	 	K K z+raw_ops.ConvertToListOfSparseCoreCooTensorsc                    t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  |t
        j                        }| ||g}d|d|d|d|d|d|d|	d|
f}t        j                  d	||z   |z   ||||
      }t        j                         rt        j                  d|||       |d | g||d  z   }|d d |dd|z    gz   |d|z   d  z   }|d d |dd  gz   }t        j                  |      }|S )Nr   rN   rO   rP   rQ   rR   rS   r   s#   ConvertToListOfSparseCoreCooTensorsrC   rJ   rU   rV   )r,   r-   r.   r'   rE   rF   rG   rH   r   r1   r5   rW   r$   )r   r   r   r   rN   rO   rP   rQ   rR   rS   r   r   r   r>   r=   r8   s                   r?   rX   rX      s   ""<@,%%o7HI/  \:*  \:*	;7)##M?C-'001KMijx4(001FV!!&'--8&""7GOO<''9,L*;_
L*k9=">j(4& C,>,-5A#)s?' ""$-|VWN%o&''/2B*CC'BQK71Q%89::WQEXEY=ZZ'BQK712;-''6<<WE'	.rI   &ConvertToSparseCoreCsrWrappedCooTensor)row_pointerssorted_sample_idssorted_token_idssorted_gainsrow_pointers_unpadded_sizeids_unpadded_sizenum_minibatches_per_scsorted_row_ids_listsorted_col_ids_listsorted_gains_listid_counts_listsplitssample_count_per_scnum_replicamax_minibatches_per_scmax_ids_per_chip_per_sampletable_vocab_sizefeature_width
table_nameallow_id_droppingc                    t         j                   xs t        j                         }|j                  }|j                  rD	 t	        j
                  |d|| ||||d|d|d|d|d|	d|
d|d	|      }t        j                  |      }|S t        | t         t"        f      st%        d| z        t'        |       }t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |	d      }	t+        j,                  |
d      }
t+        j.                  |d      }t+        j0                  |d	      }t3        j4                  d| |||||||||	|
|||      \  }}}}|d
d
 }t+        j6                         rd|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|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 Sw xY w)a  TODO: add doc.

  Args:
    sorted_row_ids_list: A list of at least 1 `Tensor` objects with type `int32`.
    sorted_col_ids_list: A list with the same length as `sorted_row_ids_list` of `Tensor` objects with type `int32`.
    sorted_gains_list: A list with the same length as `sorted_row_ids_list` of `Tensor` objects with type `float32`.
    id_counts_list: A list with the same length as `sorted_row_ids_list` of `Tensor` objects with type `int32`.
    splits: A `Tensor` of type `int64`.
    sample_count_per_sc: An `int` that is `>= 1`.
    num_replica: An `int` that is `>= 1`.
    max_minibatches_per_sc: An `int` that is `>= 1`.
    max_ids_per_chip_per_sample: An `int` that is `>= 1`.
    table_vocab_size: An `int` that is `>= 1`.
    feature_width: An `int` that is `>= 1`.
    table_name: A `string`.
    allow_id_dropping: A `bool`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (row_pointers, sorted_sample_ids, sorted_token_ids, sorted_gains, row_pointers_unpadded_size, ids_unpadded_size, num_minibatches_per_sc).

    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    row_pointers_unpadded_size: A `Tensor` of type `int32`.
    ids_unpadded_size: A `Tensor` of type `int32`.
    num_minibatches_per_sc: A `Tensor` of type `int32`.
  r[   rh   ri   rj   rk   rl   rm   rn   ro   N)
rh   ri   rj   rk   rl   rm   rn   ro   r   r   oExpected list for 'sorted_row_ids_list' argument to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op, not %r.oExpected list for 'sorted_col_ids_list' argument to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op, not %r.List argument 'sorted_col_ids_list' to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op with length %d must match length %d of argument 'sorted_row_ids_list'.mExpected list for 'sorted_gains_list' argument to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op, not %r.List argument 'sorted_gains_list' to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op with length %d must match length %d of argument 'sorted_row_ids_list'.jExpected list for 'id_counts_list' argument to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op, not %r.List argument 'id_counts_list' to 'convert_to_sparse_core_csr_wrapped_coo_tensor' Op with length %d must match length %d of argument 'sorted_row_ids_list'.)rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   r   rN   )!r   r   r    r!   r   r"   -_ConvertToSparseCoreCsrWrappedCooTensorOutputr$   r%   r&   r'   r(   r)   <convert_to_sparse_core_csr_wrapped_coo_tensor_eager_fallbackr+   
isinstancelisttuple	TypeErrorlen
ValueErrorr,   r-   r.   	make_boolr/   r0   r1   r2   r3   _get_attr_boolr4   r5   )rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   r   r6   r7   r8   r9   _attr_num_sc_per_chipr:   r;   r<   r=   r>   s                           r?   -convert_to_sparse_core_csr_wrapped_coo_tensorr      sq   < 
			0h..0$#\\11602C 57J{$< =#%79Ij.0g >CCGLgn$ 
'$	7
	FH[	\] ] 12	'$	7
	FH[	\] ] 		!66
	B	 	!#89	:; ; 
%e}	5
	FHY	Z[ [ 		44
	B		!67	89 9 
NT5M	2
	FHV	WX X 	11
	B	^	34	56 6 !))*=?TU!!+}=+#,,-CE]^ ( 1 12MOl m&&'79KL##M?C-  \:*(():<OP'880FYFYDUAO9?FY>II_NiCS@M=GDU7;=!QX QK'""$#S%6%67L%MS..}=& 89+ => #"3"34F"Gs00A!2!23D!ECLL68K  !45
7F ::L0,Q9??H'	.s && -
##At,,## 
I
24E
&6I!!7&A+=3D  ## 
s1    AM N".N		N"!N"&O   OOz.raw_ops.ConvertToSparseCoreCsrWrappedCooTensorc                 4   t        | t        t        f      st        d| z        t	        |       }t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        j                  |d      }t        j                  |d	      }t        j                  |d
      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                         }t        |       t        |      z   t        |      z   t        |      z   |gz   }d|d	|d
|d|d|	d|
d|d|d|f}t        j"                  dd||||      }t        j$                         rt        j&                  d|||       t(        j+                  |      }|S )Nrq   rr   rs   rt   ru   rv   rw   rh   ri   rj   rk   rl   rm   rn   ro   rN   s&   ConvertToSparseCoreCsrWrappedCooTensor   rC   r[   )rz   r{   r|   r}   r~   r   r,   r-   r.   r   r'   convert_n_to_tensorrF   rG   rH   rE   int64r   r1   r5   rx   r$   )rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   r   r   r   r>   r=   r8   s                      r?   ry   ry   x  sW   	'$	7
	FH[	\] ] 12	'$	7
	FH[	\] ] 		!66
	B	 	!#89	:; ; 
%e}	5
	FHY	Z[ [ 		44
	B		!67	89 9 
NT5M	2
	FHV	WX X 	11
	B	^	34	56 6 !))*=?TU!!+}=+#,,-CE]^ ( 1 12MOl m&&'79KL##M?C-  \:*(():<OP001DgmmT001DgmmT../@'//R++NGMMJ.!!&'--8&)*T2E-FFN_I``cghvcww  |B  {C  C,!#6')?!<&*L*(*& F$0C"&(' ""$0,Q9??H'	.rI   %GetMinibatchSplitsWithPhysicalReplica)sorted_row_idssorted_col_idsr_   rg   	id_countsmax_idsmax_uniquesprogram_keyr   r   r   mini_batch_splitsc                    t         j                   xs t        j                         }|j                  }|j                  rA	 t	        j
                  |d|| |||d|d|d|d|d|d|	d|
      }t        j                  |      }|S t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j"                  |	d      }	t        j"                  |
d      }
t%        j&                  d| |||||||||	|
|      \  }}}}|d	d	 }t        j(                         rd|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j-                  d      d|j-                  d      f}|j.                  }t        j0                  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  TODO: add doc.

  Args:
    program_key: A `Tensor` of type `string`.
    row_ids: A `Tensor` of type `int32`.
    col_ids: A `Tensor` of type `int32`.
    gains: A `Tensor` of type `float32`.
    sample_count: An `int` that is `>= 1`.
    num_replica: An `int` that is `>= 1`.
    table_vocab_size: An `int` that is `>= 1`.
    feature_width: An `int` that is `>= 1`.
    num_sc_per_chip: An `int` that is `>= 1`.
    table_name: A `string`.
    mini_batch_splits: A `string`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (sorted_row_ids, sorted_col_ids, sorted_gains, splits, id_counts, max_ids, max_uniques).

    sorted_row_ids: A `Tensor` of type `int32`.
    sorted_col_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    splits: A `Tensor` of type `int64`.
    id_counts: A `Tensor` of type `int32`.
    max_ids: A `Tensor` of type `int32`.
    max_uniques: A `Tensor` of type `int32`.
  r   r   ri   rl   rm   rN   rn   r   N)	r   ri   rl   rm   rN   rn   r   r   r   )r   r   r   r   r   ri   rl   rm   rN   rn   r   r   )r   r   r    r!   r   r"   ,_GetMinibatchSplitsWithPhysicalReplicaOutputr$   r%   r&   r'   r(   r)   9get_minibatch_splits_with_physical_replica_eager_fallbackr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   )r   r   r   r   r   ri   rl   rm   rN   rn   r   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                        r?   *get_minibatch_splits_with_physical_replicar     s   8 
			0h..0$#\\115t[%}')9?(/<'):<g =BB7Kgn ""<@,!!+}=+&&'79KL##M?C-%%o7HI/  \:*''(9;NO'88/[9@9@>J=HBR?LAP<FCT6:<!QX QK'""$c//?S..}= #"3"34F"Gs00A!2!23D!ECLL68Kll./1F ::L/vwP8>>wG'	.] && -
##At,,## 
F
w\!4D%3D  ## 
s0    ?H I!H<<III1 1JJz-raw_ops.GetMinibatchSplitsWithPhysicalReplicac                 >   t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }| |||g}d|d|d|d|d|d|	d|
f}t        j                  dd	||||
      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   ri   rl   rm   rN   rn   r   s%   GetMinibatchSplitsWithPhysicalReplicar   rC   r   )r,   r-   r.   r'   rE   rF   stringrG   rH   r   r1   r5   r   r$   )r   r   r   r   r   ri   rl   rm   rN   rn   r   r   r   r>   r=   r8   s                   r?   r   r     sr   ""<@,!!+}=+&&'79KL##M?C-%%o7HI/  \:*''(9;NO&&{GNNC+""7GMM:'""7GMM:'

 
 
8%w7,L-&_lJ(*& Eq$0C"&(' ""$/vwP8>>wG'	.rI   &GetMinibatchesInCsrWithPhysicalReplica)r\   r]   r^   r_   r`   ra   (num_minibatches_per_physical_sparse_corer   mini_batch_in_csrc                 
   t         j                   xs t        j                         }|j                  }|j                  rG	 t	        j
                  |d|| |||||d|d|d|d|	d|
d|d|d	|d
|      }t        j                  |      }|S t        j                   |d      }t        j                   |d      }t        j                   |d      }t        j                   |	d      }	t        j                   |
d      }
t        j                   |d      }t        j                   |d      }t        j"                  |d	      }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 }t        j(                         rd|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d|j+                  d      d	|j-                  d	      d
|j-                  d
      f}|j.                  }t        j0                  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  TODO: add doc.

  Args:
    program_key: A `Tensor` of type `string`.
    row_ids: A `Tensor` of type `int32`.
    col_ids: A `Tensor` of type `int32`.
    gains: A `Tensor` of type `float32`.
    splits: A `Tensor` of type `int64`.
    id_counts: A `Tensor` of type `int32`.
    sample_count: An `int` that is `>= 1`.
    num_replica: An `int` that is `>= 1`.
    max_minibatches_per_sc: An `int` that is `>= 1`.
    max_ids_per_chip_per_sample: An `int` that is `>= 1`.
    table_vocab_size: An `int` that is `>= 1`.
    feature_width: An `int` that is `>= 1`.
    num_sc_per_chip: An `int` that is `>= 1`.
    table_name: A `string`.
    mini_batch_in_csr: A `string`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (row_pointers, sorted_sample_ids, sorted_token_ids, sorted_gains, row_pointers_unpadded_size, ids_unpadded_size, num_minibatches_per_physical_sparse_core).

    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    row_pointers_unpadded_size: A `Tensor` of type `int32`.
    ids_unpadded_size: A `Tensor` of type `int32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
  r   r   ri   rj   rk   rl   rm   rN   rn   r   N)r   ri   rj   rk   rl   rm   rN   rn   r   r   r   r   r   r   r   rg   r   r   )r   )r   r   r    r!   r   r"   -_GetMinibatchesInCsrWithPhysicalReplicaOutputr$   r%   r&   r'   r(   r)   ;get_minibatches_in_csr_with_physical_replica_eager_fallbackr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   )r   r   r   r   rg   r   r   ri   rj   rk   rl   rm   rN   rn   r   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                            r?   ,get_minibatches_in_csr_with_physical_replicar   5  s   @ 
			0h..0$#\\116k%Nm[2J =#%79I(9?j"57HJg >CCGLgn" ""<@,!!+}=+#,,-CE]^ ( 1 12MOl m&&'79KL##M?C-%%o7HI/  \:*''(9;NO'880=>I=:A= ;B= 9>	= GM	=
 =F= @L= ?J= J`= Oj= DT= AN= CR= >H= EV= 8<=!QX  QK'""$c//?S..}=& 89+ => #"3"34F"Gs00A!2!23D!ECLL68Kll./
1F ::L0,Q9??H'	.u && -
##At,,## 

H
w	#!7&A+=)j-DdD D ## 
s1    AJ KJ22K
KK+ +LLz.raw_ops.GetMinibatchesInCsrWithPhysicalReplicac                 2   t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d	      }t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }| |||||g}d|d|d|d|	d|
d|d|d|d	|f}t        j                  d
d||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   ri   rj   rk   rl   rm   rN   rn   r   s&   GetMinibatchesInCsrWithPhysicalReplicar   rC   r   )r,   r-   r.   r'   rE   rF   r   rG   rH   r   r   r1   r5   r   r$   )r   r   r   r   rg   r   r   ri   rj   rk   rl   rm   rN   rn   r   r   r   r>   r=   r8   s                       r?   r   r     s   ""<@,!!+}=+#,,-CE]^ ( 1 12MOl m&&'79KL##M?C-%%o7HI/  \:*''(9;NO&&{GNNC+""7GMM:'""7GMM:'

 
 
8%!!&'--8&$$Y>)w	J,L-2!<&_lJ(*& F$0C"&(' ""$0,Q9??H'	.rI   &GetStatsFromListOfSparseCoreCooTensorsmax_ids_per_sparse_coremax_unique_ids_per_sparse_corerK   rL   rM   c                    t         j                   xs t        j                         }|j                  }|j                  r@	 t	        j
                  |d|
| ||d|d|d|d|d|d|d|	      }t        j                  |      }|S t        | t         t"        f      st%        d| z        t'        |       }t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t        |t         t"        f      st%        d|z        |D cg c]  }t+        j,                  |d       }}t        |t         t"        f      st%        d|z        |D cg c]  }t+        j,                  |d       }}t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |d      }t+        j.                  |	d      }	t1        j2                  d| |||||||||	|
      \  }}}}|d	d	 }t+        j4                         rd|j7                  d      d|j7                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j7                  d      d|j9                  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c c}w c c}w )ab  TODO: add doc.

  Args:
    row_ids_list: A list of at least 1 `Tensor` objects with type `int32`.
    col_ids_list: A list with the same length as `row_ids_list` of `Tensor` objects with type `int32`.
    gains_list: A list with the same length as `row_ids_list` of `Tensor` objects with type `float32`.
    sample_count_list: A list of `ints`.
    col_offset_list: A list of `ints`.
    num_replica: An `int` that is `>= 1`.
    table_vocab_size: An `int` that is `>= 1`.
    feature_width: An `int` that is `>= 1`.
    num_sc_per_chip: An `int` that is `>= 1`.
    table_name: A `string`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (max_ids_per_sparse_core, max_unique_ids_per_sparse_core).

    max_ids_per_sparse_core: A `Tensor` of type `int32`.
    max_unique_ids_per_sparse_core: A `Tensor` of type `int32`.
  r   sample_count_listcol_offset_listri   rl   rm   rN   rn   N)	r   r   ri   rl   rm   rN   rn   r   r   iExpected list for 'row_ids_list' argument to 'get_stats_from_list_of_sparse_core_coo_tensors' Op, not %r.iExpected list for 'col_ids_list' argument to 'get_stats_from_list_of_sparse_core_coo_tensors' Op, not %r.List argument 'col_ids_list' to 'get_stats_from_list_of_sparse_core_coo_tensors' Op with length %d must match length %d of argument 'row_ids_list'.gExpected list for 'gains_list' argument to 'get_stats_from_list_of_sparse_core_coo_tensors' Op, not %r.List argument 'gains_list' to 'get_stats_from_list_of_sparse_core_coo_tensors' Op with length %d must match length %d of argument 'row_ids_list'.nExpected list for 'sample_count_list' argument to 'get_stats_from_list_of_sparse_core_coo_tensors' Op, not %r.lExpected list for 'col_offset_list' argument to 'get_stats_from_list_of_sparse_core_coo_tensors' Op, not %r.)rK   rL   rM   r   r   ri   rl   rm   rN   rn   r   N)r   r   r    r!   r   r"   -_GetStatsFromListOfSparseCoreCooTensorsOutputr$   r%   r&   r'   r(   r)   =get_stats_from_list_of_sparse_core_coo_tensors_eager_fallbackr+   rz   r{   r|   r}   r~   r   r,   r-   r.   r/   r0   r1   r3   r2   r4   r5   )rK   rL   rM   r   r   ri   rl   rm   rN   rn   r   r6   r7   r8   r9   _attr_N_ir:   r;   r<   r=   r>   s                         r?   .get_stats_from_list_of_sparse_core_coo_tensorsr     s+   , 
			0h..0$#\\116lj"57H?M;,o}?L*Fg >CCGLgn  
L4-	0
	GIU	VW W '	L4-	0
	GIU	VW W 	'!
	;	\	G$	%& & 
Ju	.
	GIS	TU U 	_
	;	Z'"	#$ $ 
%e}	5
	GIZ	[\ \ M^^bx((-@A^^	OdE]	3
	GIX	YZ Z IXX"X&&r+<=X/X!!+}=+&&'79KL##M?C-%%o7HI/  \:*'880|?K=GDUBQ>ICS@MBQ=G7;=!QX QK'""$!3<<0C#D.?!@S..}= #"3"34F"Gs00A!2!23D!ECLL6$&F ::L0,Q9??H'	._ && -
##At,,## 
	J
j-){+=)jt  ## 
< _
 Ys<    >M ,O 3ONM22N
NN& &N=<N=z.raw_ops.GetStatsFromListOfSparseCoreCooTensorsc                    t        | t        t        f      st        d| z        t	        |       }t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        |t        t        f      st        d|z        |D cg c]  }t        j                  |d       }}t        |t        t        f      st        d|z        |D cg c]  }t        j                  |d	       }}t        j                  |d
      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        |       t        |      z   t        |      z   }d|d	|d
|d|d|d|d|	d|f}t        j                  dd||||
      }t        j                         rt        j                   d|||       t"        j%                  |      }|S c c}w c c}w )Nr   r   r   r   r   r   r   r   r   ri   rl   rm   rN   rn   r   s&   GetStatsFromListOfSparseCoreCooTensorsrV   rC   r   )rz   r{   r|   r}   r~   r   r,   r-   r.   r'   r   rF   rG   rH   r   r1   r5   r   r$   )rK   rL   rM   r   r   ri   rl   rm   rN   rn   r   r   r   r   r>   r=   r8   s                    r?   r   r   =  s   	L4-	0
	GIU	VW W '	L4-	0
	GIU	VW W 	'!
	;	\	G$	%& & 
Ju	.
	GIS	TU U 	_
	;	Z'"	#$ $ 
%e}	5
	GIZ	[\ \ M^^bx((-@A^^	OdE]	3
	GIX	YZ Z IXX"X&&r+<=X/X!!+}=+&&'79KL##M?C-%%o7HI/  \:*)),F,)),F,''
GOOD*l#d<&884
;KK,!24E=+/AO]4E<S';& F$0C"&(' ""$0,Q9??H'	.5 _
 Ys   .K5Kreturnc                 V   t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|       }|S t        j                  d|       \  }}}}|dd }t        j                          r&d}|j"                  }	t        j$                  d|	||       |\  }|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)zuTODO: add doc.

  Args:
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `int64`.
  GlobalIterIdNr   r   )r    )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   global_iter_id_eager_fallbackr+   r/   r0   r,   r1   r4   r5   )
r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s
             r?   global_iter_idr   v  s!    
			0h..0$#\\11nd$gn (88T#!QXQK'""$F::Lfg7('	.' && -
##At,,## 
* ## 
s0    B: :DC((D DD D('D(zraw_ops.GlobalIterIdc                     g }d }t        j                  dd||||       }t        j                         rt        j                  d|||       |\  }|S )Ns   GlobalIterIdrU   rC   r   )r,   r   r1   r5   )r   r   r>   r=   r8   s        r?   r   r     sX    ,&_a#)s?'""$fg7('	.rI   SortListOfSparseCoreCooTensors)r   r   r_   r   c                 @   t         j                   xs t        j                         }|j                  }|j                  rD	 t	        j
                  |d|| ||d|d|d|d|d|d|d|	d	|
d
|      }t        j                  |      }|S t        | t         t"        f      st%        d| z        t'        |       }t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t        |t         t"        f      st%        d|z        t'        |      |k7  rt)        dt'        |      |fz        t        |t         t"        f      st%        d|z        |D cg c]  }t+        j,                  |d       }}t        |t         t"        f      st%        d|z        |D cg c]  }t+        j,                  |d       }}t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |d      }t+        j,                  |	d      }	t+        j,                  |
d	      }
t+        j.                  |d
      }t1        j2                  d| |||||||||	|
||      \  }}}}|dd }t+        j4                         rd|j7                  d      d|j7                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d|j9                  d      d	|j9                  d	      d
|j7                  d
      d|j9                  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c c}w c c}w )a  TODO: add doc.

  Args:
    row_ids_list: A list of at least 1 `Tensor` objects with type `int32`.
    col_ids_list: A list with the same length as `row_ids_list` of `Tensor` objects with type `int32`.
    gains_list: A list with the same length as `row_ids_list` of `Tensor` objects with type `float32`.
    sample_count_list: A list of `ints`.
    col_offset_list: A list of `ints`.
    num_replica: An `int` that is `>= 1`.
    table_vocab_size: An `int` that is `>= 1`.
    feature_width: An `int` that is `>= 1`.
    num_sc_per_chip: An `int` that is `>= 1`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (sorted_row_ids, sorted_col_ids, sorted_gains, id_counts).

    sorted_row_ids: A `Tensor` of type `int32`.
    sorted_col_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    id_counts: A `Tensor` of type `int32`.
  r   r   r   ri   rl   rm   rN   r   r   rn   N)r   r   ri   rl   rm   rN   r   r   rn   r   r   _Expected list for 'row_ids_list' argument to 'sort_list_of_sparse_core_coo_tensors' Op, not %r._Expected list for 'col_ids_list' argument to 'sort_list_of_sparse_core_coo_tensors' Op, not %r.List argument 'col_ids_list' to 'sort_list_of_sparse_core_coo_tensors' Op with length %d must match length %d of argument 'row_ids_list'.]Expected list for 'gains_list' argument to 'sort_list_of_sparse_core_coo_tensors' Op, not %r.List argument 'gains_list' to 'sort_list_of_sparse_core_coo_tensors' Op with length %d must match length %d of argument 'row_ids_list'.dExpected list for 'sample_count_list' argument to 'sort_list_of_sparse_core_coo_tensors' Op, not %r.bExpected list for 'col_offset_list' argument to 'sort_list_of_sparse_core_coo_tensors' Op, not %r.)rK   rL   rM   r   r   ri   rl   rm   rN   r   r   rn   r   r   )r   r   r    r!   r   r"   %_SortListOfSparseCoreCooTensorsOutputr$   r%   r&   r'   r(   r)   3sort_list_of_sparse_core_coo_tensors_eager_fallbackr+   rz   r{   r|   r}   r~   r   r,   r-   r.   r/   r0   r1   r3   r2   r4   r5   )rK   rL   rM   r   r   ri   rl   rm   rN   r   r   rn   r   r6   r7   r8   r9   r   r   r:   r;   r<   r=   r>   s                           r?   $sort_list_of_sparse_core_coo_tensorsr     s   4 
			0h..0$#\\11.lj"57H?M;,o}?,E!A&jBg 6;;GDgn$ 
L4-	0
	=?K	LM M '	L4-	0
	=?K	LM M 	'!
	;	\	G$	%& & 
Ju	.
	=?I	JK K 	_
	;	Z'"	#$ $ 
%e}	5
	=?P	QR R M^^bx((-@A^^	OdE]	3
	=?N	OP P IXX"X&&r+<=X/X!!+}=+&&'79KL##M?C-%%o7HI/$--.EG`a#+#4#45SUu#v   \:*'88(|7C5?<M:I6A;K8E:IBYIg5?dL!QX QK'""$!3<<0C#D.?!@S..}= #"3"34F"Gs00A!2!23D!E' 9:. @ACLL6$&F ::L(,I177@'	.q && -
##At,,## 
@
j-){+=)"9)Gd6 6 ## 
< _
 Ys=    AN 0P7PO+OOO#O< <PPz&raw_ops.SortListOfSparseCoreCooTensorsc                    t        | t        t        f      st        d| z        t	        |       }t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        |t        t        f      st        d|z        t	        |      |k7  rt        dt	        |      |fz        t        |t        t        f      st        d|z        |D cg c]  }t        j                  |d       }}t        |t        t        f      st        d|z        |D cg c]  }t        j                  |d	       }}t        j                  |d
      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        |       t        |      z   t        |      z   }d|d	|d
|d|d|d|d|	d|
d|d|f}t        j                  dd||||      }t        j                         rt        j                   d|||       t"        j%                  |      }|S c c}w c c}w )Nr   r   r   r   r   r   r   r   r   ri   rl   rm   rN   r   r   rn   r   s   SortListOfSparseCoreCooTensors   rC   r   )rz   r{   r|   r}   r~   r   r,   r-   r.   r'   r   rF   rG   rH   r   r1   r5   r   r$   )rK   rL   rM   r   r   ri   rl   rm   rN   r   r   rn   r   r   r   r   r>   r=   r8   s                      r?   r   r   3  s%   	L4-	0
	=?K	LM M '	L4-	0
	=?K	LM M 	'!
	;	\	G$	%& & 
Ju	.
	=?I	JK K 	_
	;	Z'"	#$ $ 
%e}	5
	=?P	QR R M^^bx((-@A^^	OdE]	3
	=?N	OP P IXX"X&&r+<=X/X!!+}=+&&'79KL##M?C-%%o7HI/$--.EG`a#+#4#45SUu#v   \:*)),F,)),F,''
GOOD*l#d<&884
;KK,!24E=+/AO]4E,.E"$B
C*& >$0C"&(' ""$(,I177@'	.= _
 Ys   .K15K6r   r   c
                    t         j                   xs t        j                         }
|
j                  }|j                  r)	 t	        j
                  |
d|	| ||d|d|d|d|d|d|      }|S t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t!        j"                  d| |||||||||	
      \  }}}}|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  TODO: add doc.

  Args:
    program_key: A `Tensor` of type `string`.
    max_ids: A `Tensor` of type `int32`.
    max_uniques: A `Tensor` of type `int32`.
    sample_count: An `int` that is `>= 1`.
    num_replica: An `int` that is `>= 1`.
    feature_width: An `int` that is `>= 1`.
    num_sc_per_chip: An `int` that is `>= 1`.
    table_name: A `string`.
    mini_batch_splits: A `string`.
    name: A name for the operation (optional).

  Returns:
    The created Operation.
  StoreMinibatchStatisticsInFdor   ri   rm   rN   rn   r   N)r   ri   rm   rN   rn   r   r   r   )
r   r   r   r   ri   rm   rN   rn   r   r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   0store_minibatch_statistics_in_fdo_eager_fallbackr+   r,   r-   r.   r/   r0   )r   r   r   r   ri   rm   rN   rn   r   r   r6   r7   r8   r9   r:   r;   r<   s                    r?   !store_minibatch_statistics_in_fdor   p  s   $ 
			0h..0$#\\
11-t['^\=+(9?j"57H	Jg
 n ""<@,!!+}=+##M?C-%%o7HI/  \:*''(9;NO'88'[185@6B5@7D9H4>;L.2
4!QX 
*= && -
##At,,## 
=
w,!)j-Dd	D D
 ## 
s0    'D E&EEEE4 4F
Fz%raw_ops.StoreMinibatchStatisticsInFdoc                 F   t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  |t
        j                        }| ||g}d|d|d|d|d|d|f}t        j                  dd|||
|		      }d }|S )
Nr   ri   rm   rN   rn   r   s   StoreMinibatchStatisticsInFdor   rC   )	r,   r-   r.   r'   rE   rF   r   rG   r   )r   r   r   r   ri   rm   rN   rn   r   r   r   r>   r=   r8   s                 r?   r   r     s   ""<@,!!+}=+##M?C-%%o7HI/  \:*''(9;NO&&{GNNC+""7GMM:'&&{GMMB+w4,L-="3_
/1BD& =q$0C"&(' '	.rI   c                 ~   t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d||       }|S t        j                  d| |      \  }}}}|dd }|s|S t        j                          r7d|j#                  d      f}	|j$                  }
t        j&                  d|
|	|       |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)zTODO: add doc.

  Args:
    tensors: A list of `Tensor` objects.
    name: A name for the operation (optional).

  Returns:
    A list of `Tensor` objects. Has the same type as `tensors`.
  "TPUAnnotateTensorsWithDynamicShapeNr   )tensorsr   T)r   r   r    r!   r   r"   r%   r&   r'   r(   r)   6tpu_annotate_tensors_with_dynamic_shape_eager_fallbackr+   r/   r0   r,   r1   r3   r4   r5   )r   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s              r?   'tpu_annotate_tensors_with_dynamic_shaper     s:    
			0h..0$#\\112D'Cgn (88,gDJ!QXQK'	J""$3<<$%F::L,lFGM	.) && -
##At,,## 
C
$( (## 
s0    C D C;;DDD& &D<;D<z*raw_ops.TPUAnnotateTensorsWithDynamicShapec                     t        j                  | |      \  }} t        |       }d|f}t        j                  dt	        |       ||||      }t        j
                         rt        j                  d|||       |S )Nr   s"   TPUAnnotateTensorsWithDynamicShaperC   r   )r,   convert_to_mixed_eager_tensorsr{   r   r~   r1   r5   )r   r   r   _attr_Tr>   r=   r8   s          r?   r   r     sy    <<WcJ'7g,>&B \,f!$41' ""$,lFGM	.rI   unpadded_sizesc                    t         j                   xs t        j                         }|j                  }|j                  r	 t	        j
                  |d|| |      }|S t        |t        t        f      st!        d|z        t#        |      }t%        j&                  d| ||      \  }}}	}
|
dd }|s|	S t)        j*                         rHd|	j-                  d      d|	j/                  d      f}|	j0                  }t)        j2                  d|||       |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)aI  Op that copies host tensor to device with dynamic shape support.
For internal use only.

  Args:
    tensors: A list of `Tensor` objects.
    unpadded_sizes: A list of `Tensor` objects with type `int32`.
    name: A name for the operation (optional).

  Returns:
    A list of `Tensor` objects. Has the same type as `tensors`.
  TPUCopyWithDynamicShapeNr   XExpected list for 'unpadded_sizes' argument to 'tpu_copy_with_dynamic_shape' Op, not %r.)r   r   r   r   r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   *tpu_copy_with_dynamic_shape_eager_fallbackr+   rz   r{   r|   r}   r~   r/   r0   r,   r1   r2   r3   r4   r5   )r   r   r   r6   r7   r8   r9   r   r:   r;   r<   r=   r>   s                r?   tpu_copy_with_dynamic_shaper     s    
			0h..0$#\\11'wHgn 
NT5M	2
	46D	EF F ''88!72@tM!QX QK'	J""$3$$S)3S0ABF::L!<B	.5 && -
##At,,## 
7
>$8 8## 
s0    D E"D==EEE) )F ?F zraw_ops.TPUCopyWithDynamicShapec                    t        |t        t        f      st        d|z        t	        |      }t        j                  | |      \  }} t        j                  |t        j                        }t        |       t        |      z   }d|d|f}t        j                  dt	        |       ||||      }t        j                         rt        j                  d|||       |S )Nr   r   r   s   TPUCopyWithDynamicShaperC   r   )rz   r{   r|   r}   r~   r,   r   r'   r   rF   rG   r   r1   r5   )	r   r   r   r   r   r   r>   r=   r8   s	            r?   r   r   ,  s    	NT5M	2
	46D	EF F '<<WcJ'7++NGMMJ.gn!55,#w'&7W$0C"&(' ""$!<B	.rI   XlaSparseCoreAdagradupdated_embedding_tableupdated_accumulatorindicesgradientlearning_rateaccumulatorembedding_tablec                    t         j                   xs t        j                         }|j                  }|j                  r6	 t	        j
                  |d|| ||||d|
      }	t        j                  |	      }	|	S t        j                   |d      }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  TODO: add doc.

  Args:
    indices: A `Tensor` of type `int32`.
    gradient: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    feature_width: An `int`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
  r   rm   Nrm   r   r   )r   r   r   r   r   rm   r   )r   r   r    r!   r   r"   _XlaSparseCoreAdagradOutputr$   r%   r&   r'   r(   r)   &xla_sparse_core_adagrad_eager_fallbackr+   r,   r-   r/   r0   r1   r2   r4   r5   )r   r   r   r   r   rm   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                   r?   xla_sparse_core_adagradr   C  s   $ 
			0h..0$#\\	11$dGX}_o}Fg ,11':gn ##M?C-'88(.;,70?.;$H!QX QK'""$s00ABF::Lfg?'--g6'	.3 && -
##At,,## 
3
8]K%Dd< < ## 
s0    4D E'EEEE2 2F	F	zraw_ops.XlaSparseCoreAdagradc                 h   t        j                  |d      }t        j                  | t        j
                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }| ||||g}d|f}	t        j                  dd||	||      }
t        j                         rt        j                  d||	|
       t        j                  |
      }
|
S )Nrm   s   XlaSparseCoreAdagradrV   rC   r   )r,   r-   r'   rE   rF   rG   rH   r   r1   r5   r   r$   )r   r   r   r   r   rm   r   r   r>   r=   r8   s              r?   r   r   |  s    ##M?C-""7GMM:'##Hgoo>(((H-&&{GOOD+**?GOOL/8]KQ,]+&4a#)s?'""$fg?'--g6'	.rI   XlaSparseCoreAdagradMomentum)r   r   updated_momentumbeta_1epsilonmomentumuse_nesterovbeta_2exponentc                 ,   t         j                   xs t        j                         }|j                  }|j                  r?	 t	        j
                  |d|| |||||||d|d|	d|
d|      }t        j                  |      }|S t        j                   |d      }t        j"                  |	d      }	t        j$                  |
d      }
t        j$                  |d      }t'        j(                  d| |||||||||	|
||      \  }}}}|dd }t        j*                         rjd|j-                  d      d|j/                  d      d|j1                  d      d|j1                  d      f}|j2                  }t        j4                  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)	a0  TODO: add doc.

  Args:
    indices: A `Tensor` of type `int32`.
    gradient: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    beta_1: A `Tensor` of type `float32`.
    epsilon: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    momentum: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    feature_width: An `int`.
    use_nesterov: A `bool`.
    beta_2: A `float`.
    exponent: A `float`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator, updated_momentum).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
    updated_momentum: A `Tensor` of type `float32`.
  r   rm   r   r   r   N)rm   r   r   r   r   r   )r   r   r   r   r   r   r   r   rm   r   r   r   r   )r   r   r    r!   r   r"   #_XlaSparseCoreAdagradMomentumOutputr$   r%   r&   r'   r(   r)   /xla_sparse_core_adagrad_momentum_eager_fallbackr+   r,   r-   r   
make_floatr/   r0   r1   r2   r   r3   r4   r5   )r   r   r   r   r   r   r   r   rm   r   r   r   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                         r?    xla_sparse_core_adagrad_momentumr     s*   2 
			0h..0$#\\11,dGXvwX-h
H	>g
 499'Bgn ##M?C-##L.A,vx0&  :6('88&(6C/5w4?198G6C5A/5-1
3!QX QK'""$s00Ac00@(ll8$j#,,z2JLF ::L&fgG/55g>'	.K && -
##At,,## 
<
8]FG[
O=#FX	 
 ## 
s0    =F G+GGG#G< <HHz$raw_ops.XlaSparseCoreAdagradMomentumc                    t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t	        j
                  | t        j                        } t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }| |||||||g}d|d|	d|
d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )	Nrm   r   r   r   s   XlaSparseCoreAdagradMomentumrB   rC   r   )r,   r-   r   r   r'   rE   rF   rG   rH   r   r1   r5   r   r$   )r   r   r   r   r   r   r   r   rm   r   r   r   r   r   r>   r=   r8   s                    r?   r   r     s   ##M?C-##L.A,vx0&  :6(""7GMM:'##Hgoo>(((H-!!&'//:&""7GOO<'&&{GOOD+##Hgoo>(**?GOOL/8]FG[RZ\kl,]NL
FJ*&<a$0C"&(' ""$&fgG/55g>'	.rI   XlaSparseCoreAdam)r   updated_velocityr   velocityuse_sum_inside_sqrtc                    t         j                   xs t        j                         }|j                  }|j                  r<	 t	        j
                  |d|| ||||||||d|	d|
      }t        j                  |      }|S t        j                   |	d      }	t        j"                  |
d      }
t%        j&                  d| |||||||||	|
|      \  }}}}|dd }t        j(                         rHd|j+                  d      d|j-                  d      f}|j.                  }t        j0                  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(  TODO: add doc.

  Args:
    embedding_table: A `Tensor` of type `float32`.
    indices: A `Tensor` of type `int32`.
    gradient: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    momentum: A `Tensor` of type `float32`.
    velocity: A `Tensor` of type `float32`.
    beta_1: A `Tensor` of type `float32`.
    beta_2: A `Tensor` of type `float32`.
    epsilon: A `Tensor` of type `float32`.
    feature_width: An `int`.
    use_sum_inside_sqrt: A `bool`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_velocity, updated_momentum).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_velocity: A `Tensor` of type `float32`.
    updated_momentum: A `Tensor` of type `float32`.
  r   rm   r   N)rm   r   r   r   )r   r   r   r   r   r   r   r   r   rm   r   r   )r   r   r    r!   r   r"   _XlaSparseCoreAdamOutputr$   r%   r&   r'   r(   r)   #xla_sparse_core_adam_eager_fallbackr+   r,   r-   r   r/   r0   r1   r2   r   r4   r5   )r   r   r   r   r   r   r   r   r   rm   r   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                        r?   xla_sparse_core_adamr     s   0 
			0h..0$#\\11!4'8x667(=	g
 )..w7gn ##M?C- **+>@UV'88_g&.m&.$*67+81D"&(!QX QK'""$s00A#  !679F ::L\67<$**73'	.? && -
##At,,## 
0
7HmX
FFG=1$H H ## 
s0    :E FE44FFF) )G ?G zraw_ops.XlaSparseCoreAdamc           	         t        j                  |	d      }	t        j                  |
d      }
t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }t        j                  |t
        j                        }| ||||||||g	}d|	d|
f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nrm   r   s   XlaSparseCoreAdamrB   rC   r   )r,   r-   r   r'   rE   rF   rH   rG   r   r1   r5   r   r$   )r   r   r   r   r   r   r   r   r   rm   r   r   r   r>   r=   r8   s                   r?   r   r   E  sr   ##M?C- **+>@UV**?GOOL/""7GMM:'##Hgoo>(((H-##Hgoo>(##Hgoo>(!!&'//:&!!&'//:&""7GOO<'!7HmXxY_agipq,],A&11\#)s?'""$\67<$**73'	.rI   XlaSparseCoreFtrl)r   r   updated_linearlinearbetalearning_rate_powerl2_regularization_strength multiply_linear_by_learning_ratel1_regularization_strengthc                    t         j                   xs t        j                         }|j                  }|j                  r>	 t	        j
                  |d|| ||||||||d|	d|
d|      }t        j                  |      }|S t        j                   |	d      }	t        j"                  |
d      }
t        j$                  |d      }t'        j(                  d| |||||||||	|
||      \  }}}}|dd }t        j*                         rYd|j-                  d      d|j/                  d      d|j1                  d      f}|j2                  }t        j4                  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 mw xY w)a  TODO: add doc.

  Args:
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    linear: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    indices: A `Tensor` of type `int32`.
    gradient: A `Tensor` of type `float32`.
    beta: A `Tensor` of type `float32`.
    learning_rate_power: A `Tensor` of type `float32`.
    l2_regularization_strength: A `Tensor` of type `float32`.
    feature_width: An `int`.
    multiply_linear_by_learning_rate: A `bool`.
    l1_regularization_strength: A `float`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator, updated_linear).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
    updated_linear: A `Tensor` of type `float32`.
  r  rm   r  r	  N)rm   r  r	  r   r   )r   r   r  r   r   r   r  r  r  rm   r  r	  r   )r   r   r    r!   r   r"   _XlaSparseCoreFtrlOutputr$   r%   r&   r'   r(   r)   #xla_sparse_core_ftrl_eager_fallbackr+   r,   r-   r   r   r/   r0   r1   r2   r   r3   r4   r5   )r   r   r  r   r   r   r  r  r  rm   r  r	  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                         r?   xla_sparse_core_ftrlr  a  s   2 
			0h..0$#\\11!4+vw$0C"O]*,L$&@Bg )..w7gn  ##M?C-%-%7%78XZ|%}"'223MOkl'88_)4V+8'&.T1D8R+8>^8R"&
(!QX QK'""$s00A0  !CD*ll78	:F
 ::L\67<$**73'	.Q && -
##At,,## 
	0
;w
D-/I%+K%?d  ## 
s0    <E0 0F7FF76F7;G G+*G+zraw_ops.XlaSparseCoreFtrlc           	         t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t	        j
                  | t        j                        } t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }| ||||||||g	}d|	d|
d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nrm   r  r	  s   XlaSparseCoreFtrlrB   rC   r  )r,   r-   r   r   r'   rE   rF   rH   rG   r   r1   r5   r  r$   )r   r   r  r   r   r   r  r  r  rm   r  r	  r   r   r>   r=   r8   s                    r?   r  r    s   ##M?C-%-%7%78XZ|%}"'223MOkl**?GOOL/&&{GOOD+!!&'//:&((H-""7GMM:'##Hgoo>(			goo	6$../BGOOT#556PRYRaRab!;wPXZ^`s  vP  Q,]$&F :<& 11\#)s?'""$\67<$**73'	.rI   c                    t         j                   xs t        j                         }|j                  }|j                  r 	 t	        j
                  |d|| |||d|	      }|S t        j                  |d      }t        j                   d| |||||      \  }
}
}}|dd }t        j"                         r7d|j%                  d      f}|j&                  }t        j(                  d|||       |\  }|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)aM  TODO: add doc.

  Args:
    indices: A `Tensor` of type `int32`.
    gradient: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    feature_width: An `int`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `float32`.
  XlaSparseCoreSgdrm   Nr   )r   r   r   r   rm   r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   "xla_sparse_core_sgd_eager_fallbackr+   r,   r-   r/   r0   r1   r2   r4   r5   )r   r   r   r   rm   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                  r?   xla_sparse_core_sgdr    sp    
			0h..0$#\\11 $=-9g n ##M?C-'88Gh*7,;*7d	D!QX
 QK'""$s00ABF::LL&';('	.1 && -
##At,,## 
/
8]O%Dd< < ## 
s0    C, ,D3?DD32D37E	 	EEzraw_ops.XlaSparseCoreSgdc                    t        j                  |d      }t        j                  | t        j
                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }| |||g}d|f}t        j                  dd||||      }	t        j                         rt        j                  d|||	       |	\  }	|	S )Nrm   s   XlaSparseCoreSgdrU   rC   r  )
r,   r-   r'   rE   rF   rG   rH   r   r1   r5   )
r   r   r   r   rm   r   r   r>   r=   r8   s
             r?   r  r     s    ##M?C-""7GMM:'##Hgoo>(((H-**?GOOL/8]OD,]+&0!L#)s?'""$L&';('	.rI   XlaSparseDenseMatmul)activationsr\   sorted_embedding_idsr]   r_   offsetsmax_ids_per_partitionmax_unique_ids_per_partition
input_sizec	                    t         j                   xs t        j                         }	|	j                  }
|
j                  r:	 t	        j
                  |	d|| ||||d|d|d|      }t        j                  |      }|S t        j                   |d      }t        j                   |d      }t        j                   |d      }t#        j$                  d| ||||||||
      \  }}}}|dd }t        j&                         rYd|j)                  d      d|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 ew xY w)a2  TODO: add doc.

  Args:
    row_ids: A `Tensor` of type `int32`.
    col_ids: A `Tensor` of type `uint32`.
    values: A `Tensor` of type `float32`.
    offsets: A `Tensor` of type `uint32`.
    embedding_table: A `Tensor` of type `float32`.
    max_ids_per_partition: An `int` that is `>= 0`.
    max_unique_ids_per_partition: An `int` that is `>= 0`.
    input_size: An `int` that is `>= 0`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (activations, row_pointers, sorted_embedding_ids, sorted_sample_ids, sorted_gains).

    activations: A `Tensor` of type `float32`.
    row_pointers: A `Tensor` of type `int32`.
    sorted_embedding_ids: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
  r  r  r  r  N)r  r  r  r   r   )	r   r   r   r  r   r  r  r  r   )r   r   r    r!   r   r"   _XlaSparseDenseMatmulOutputr$   r%   r&   r'   r(   r)   &xla_sparse_dense_matmul_eager_fallbackr+   r,   r-   r/   r0   r1   r2   r4   r5   )r   r   r   r  r   r  r  r  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                     r?   xla_sparse_dense_matmulr    s   . 
			0h..0$#\\11$dGWfg02G&(Dj	"g
 ,11':gn #++,ACZ[!)!2!23OQo!p  \:*'88'-w0?6K=Y+5DB!QX QK'""$% 78, >?-	/F
 ::Lfg?'--g6'	.E && -
##At,,## 
3
7FG_ 5'Cd	6 6
 ## 
s0    8E( (F/;FF/.F/3G GGzraw_ops.XlaSparseDenseMatmulc
                    t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  | t        j
                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }| ||||g}
d|d|d|f}t        j                  dd|
||	|      }t        j                         rt        j                  d|
||       t        j                  |      }|S )Nr  r  r  s   XlaSparseDenseMatmul   rC   r  )r,   r-   r'   rE   rF   rG   uint32rH   r   r1   r5   r  r$   )r   r   r   r  r   r  r  r  r   r   r>   r=   r8   s                r?   r  r  ^  s,   "++,ACZ[!)!2!23OQo!p  \:*""7GMM:'""7GNN;'!!&'//:&""7GNN;'**?GOOL/7FG_E,#%: ">& 4a#)s?'""$fg?'--g6'	.rI   .XlaSparseDenseMatmulGradWithAdagradAndCsrInput-infinfr\   r]   r^   r_   activation_gradientsr   clip_weight_minclip_weight_maxc                    t         j                   xs t        j                         }|j                  }|j                  r>	 t	        j
                  |d|| ||||||||d|
d|d|	      }t        j                  |      }|S t        j                   |	d      }	|
t#        d      }
t        j$                  |
d      }
|t#        d      }t        j$                  |d      }t'        j(                  d| |||||||||	|
||	      \  }}}}|dd }t        j*                         rYd|j-                  d      d|j-                  d      d|j-                  d      f}|j.                  }t        j0                  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  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
  r"  r&  r'  rn   Nr&  r'  rn   r   r   r#  r$  )r\   r]   r^   r_   r%  r   r   r   r   rn   r&  r'  r   )r   r   r    r!   r   r"   5_XlaSparseDenseMatmulGradWithAdagradAndCsrInputOutputr$   r%   r&   r'   r(   r)   Fxla_sparse_dense_matmul_grad_with_adagrad_and_csr_input_eager_fallbackr+   r,   r.   floatr   r/   r0   r1   r3   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                         r?   7xla_sparse_dense_matmul_grad_with_adagrad_and_csr_inputr-  x  s9   0 
			0h..0$#\\11>')9<m_k02C*O\g FKKGTgn   \:*FmO''9JK/ElO''9JK/'888|L]K[GSOcHUJYFQ dLEOJYJY?CE!QX QK'""$.?!@.?!@CLL68F ::L8,PWYAGGP'	.Y && -
##At,,## 
S
)+;\

2)?d6 6 ## 
s0    <F
 
GF88GGG. .HHz6raw_ops.XlaSparseDenseMatmulGradWithAdagradAndCsrInputc           	      $   t        j                  |	d      }	|
t        d      }
t        j                  |
d      }
|t        d      }t        j                  |d      }t	        j
                  | t        j                        } t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }| ||||||||g	}d|
d|d|	f}t        j                  dd||||      }t        j                         rt        j                  d	|||       t        j                  |      }|S )
Nrn   r#  r&  r$  r'  s.   XlaSparseDenseMatmulGradWithAdagradAndCsrInputrV   rC   r"  )r,   r.   r,  r   r'   rE   rF   rG   rH   r   r1   r5   r*  r$   )r\   r]   r^   r_   r%  r   r   r   r   rn   r&  r'  r   r   r>   r=   r8   s                    r?   r+  r+    s     \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/&&{GOOD+-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JU  W  @,0A<-&N|6s"&(' ""$8,PWYAGGP'	.rI   6XlaSparseDenseMatmulGradWithAdagradAndStaticBufferSizec                    t         j                   xs t        j                         }|j                  }|j                  rB	 t	        j
                  |d|| ||||||||d|d|d|	d|
d|      }t        j                  |      }|S t        j                   |	d      }	t        j                   |
d      }
t        j"                  |d      }|t%        d	      }t        j&                  |d      }|t%        d
      }t        j&                  |d      }t)        j*                  	 d| |||||||||	|
||||d\  }}}}|dd }t        j,                         r{d|j/                  d      d|j/                  d      d|j1                  d      d|j1                  d      d|j/                  d      f
}|j2                  }t        j4                  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  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
  r/  r&  r'  r   r   rn   Nr&  r'  r   r   rn   r   r   r#  r$  )r\   r]   r^   r_   r%  r   r   r   r   r   r   rn   r&  r'  r   )r/  )r   r   r    r!   r   r"   =_XlaSparseDenseMatmulGradWithAdagradAndStaticBufferSizeOutputr$   r%   r&   r'   r(   r)   Oxla_sparse_dense_matmul_grad_with_adagrad_and_static_buffer_size_eager_fallbackr+   r,   r-   r.   r,  r   r/   r0   r1   r3   r2   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r   r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                           r?   @xla_sparse_dense_matmul_grad_with_adagrad_and_static_buffer_sizer4    s   4 
			0h..0$#\\11F')9<m_k02C*O!#:(*Hj"g NSST[\gn" %--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/'88@MO[TeScO[WkP]RaNY lTZqaMWRaRaGKM!QX  QK'""$.?!@.?!@' 9:. @ACLL68F ::L@,PVX_aIOOPWX'	.m && -
##At,,## 

\
)+;\

2)?"9)Gd6 6 ## 
s1    A G H$0HH$#H$(I IIz>raw_ops.XlaSparseDenseMatmulGradWithAdagradAndStaticBufferSizec           
         t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }|t        d      }t        j                  |d      }|t        d      }t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }| ||||||||g	}d|d|d|	d|
d|f
}t        j                  dd	||||
      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   r   rn   r#  r&  r$  r'  s6   XlaSparseDenseMatmulGradWithAdagradAndStaticBufferSizerV   rC   r/  )r,   r-   r.   r,  r   r'   rE   rF   rG   rH   r   r1   r5   r2  r$   )r\   r]   r^   r_   r%  r   r   r   r   r   r   rn   r&  r'  r   r   r>   r=   r8   s                      r?   r3  r3  T  s   $--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/&&{GOOD+-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JU  W  @,0A,.E"$B
& V|6s"&(' ""$@,PVX_aIOOPWX'	.rI   6XlaSparseDenseMatmulGradWithAdagradMomentumAndCsrInput)r   r   updated_momentamomentabeta1beta2c                    t         j                   xs t        j                         }|j                  }|j                  rI	 t	        j
                  |d|| |||||||||	d|
d|d|d|d|d|d|d	|      }t        j                  |      }|S t        j                   |
d      }
t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j$                  |d	      }|t'        d      }t        j"                  |d      }|t'        d      }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
 }t        j,                         rd|j/                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d	|j1                  d	      f}|j2                  }t        j4                  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 zw xY w)a  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    momenta: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    use_nesterov: A `bool`.
    exponent: A `float`.
    beta1: A `float`.
    beta2: A `float`.
    epsilon: A `float`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator, updated_momenta).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
    updated_momenta: A `Tensor` of type `float32`.
  r6  r   r   r9  r:  r   r&  r'  rn   N)
r   r   r9  r:  r   r&  r'  rn   r   r   r#  r$  r\   r]   r^   r_   r%  r   r   r   r8  r   r   )r6  )r   r   r    r!   r   r"   =_XlaSparseDenseMatmulGradWithAdagradMomentumAndCsrInputOutputr$   r%   r&   r'   r(   r)   Oxla_sparse_dense_matmul_grad_with_adagrad_momentum_and_csr_input_eager_fallbackr+   r,   r   r   r.   r,  r/   r0   r1   r   r3   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r8  r   r   r   r9  r:  r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                               r?   @xla_sparse_dense_matmul_grad_with_adagrad_momentum_and_csr_inputr>  z  s   > 
			0h..0$#\\11F')9<m_k9>j(GUGU7-?L*Fg NSST[\gn" ##L.A,  :6(


eW
-%


eW
-%3'  \:*FmO''9JK/ElO''9JK/'88@MO[MTeM TdM P\	M
 XlM Q^M SbM OZM KRM lTM P\M LTM INM INM KRM  NX!M" Sb#M$ Sb%M& HL'M!QX( QK'""$c00@*ll:&g1Fs||G,ill9%'8ll,-/@ll,-|ll<(*F ::L@,PVX_aIOOPWX'	.{ && -
##At,,## 

\
)+;\

;#hew)jt  ## 
1    AJ K	J00K	K	K, ,LLz>raw_ops.XlaSparseDenseMatmulGradWithAdagradMomentumAndCsrInputc                 ^   t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }|t	        d      }t        j                  |d      }|t	        d	      }t        j                  |d
      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |	t        j                        }	| |||||||||	g
}d|
d|d|d|d|d|d
|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   r   r9  r:  r   rn   r#  r&  r$  r'  s6   XlaSparseDenseMatmulGradWithAdagradMomentumAndCsrInputrB   rC   r6  )r,   r   r   r.   r,  r'   rE   rF   rG   rH   r   r1   r5   r<  r$   )r\   r]   r^   r_   r%  r   r   r   r8  r   r   r   r9  r:  r   rn   r&  r'  r   r   r>   r=   r8   s                          r?   r=  r=    sZ   ##L.A,  :6(


eW
-%


eW
-%3'  \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/&&{GOOD+""7GOO<'-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JU  W^  `H  I,L*h%G->$o|& V|6s"&(' ""$@,PVX_aIOOPWX'	.rI   >XlaSparseDenseMatmulGradWithAdagradMomentumAndStaticBufferSizec                    t         j                   xs t        j                         }|j                  }|j                  rm	 t	        j
                  g |d|| |||||||||	d|
d|d|d|d|d|d|d	|d
|d| }t        j                  |      }|S t        j                   |
d      }
t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j$                  |d	      }t        j$                  |d
      }t        j&                  |d      }|t)        d      }t        j"                  |d      }|t)        d      }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d }t        j.                         rd|j1                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d	|j5                  d	      d
|j5                  d
      d|j3                  d      f}|j6                  }t        j8                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	f
|
|||||||||||dS # t        j                  $ r Y w xY w)a  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    momenta: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    use_nesterov: A `bool`.
    exponent: A `float`.
    beta1: A `float`.
    beta2: A `float`.
    epsilon: A `float`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator, updated_momenta).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
    updated_momenta: A `Tensor` of type `float32`.
  rA  r   r   r9  r:  r   r&  r'  r   r   rn   N)r   r   r9  r:  r   r&  r'  r   r   rn   r   r   r#  r$  r\   r]   r^   r_   r%  r   r   r   r8  r   r   )rA  )r   r   r    r!   r   r"   E_XlaSparseDenseMatmulGradWithAdagradMomentumAndStaticBufferSizeOutputr$   r%   r&   r'   r(   r)   Xxla_sparse_dense_matmul_grad_with_adagrad_momentum_and_static_buffer_size_eager_fallbackr+   r,   r   r   r-   r.   r,  r/   r0   r1   r   r3   r2   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r8  r   r   r   r9  r:  r   r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                                 r?   Ixla_sparse_dense_matmul_grad_with_adagrad_momentum_and_static_buffer_sizerE  	  sm   B 
			0h..0$#\\11 
B
BH
B 	
B 
B .
B 0@
B BN
B 		
B ,	
B .=	
B ?J	
B
 	
B
 :
B
 <J
B 	
B !
B #+
B -4
B 6;
B =D
B FK
B 	
B 
B .
B 0?
B 	
B +
B -F
B 	 
B "B
B 	'
B )5
B 7A
Bg V[[\cdgn& ##L.A,  :6(


eW
-%


eW
-%3'$--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/'88HUWcU\mU \lU Xd	U
 `tU YfU [jU WbU SZU t\U XdU T\U QVU QVU SZU  cz!U" jH#U$ V`%U& [j'U( [j)U* PT+U!QX, QK'""$c00@*ll:&g1Fs||G,ill9%'8ll,-/@ll,-/H 9:. @ACLL6	8F ::LH,X^`giQWWX_`'	.M && -
##At,,## 
e
)+;\

;	6 $hew)"9)Gd	6 	6 ## 
1    A+K: :ML((M MM% %M<;M<zFraw_ops.XlaSparseDenseMatmulGradWithAdagradMomentumAndStaticBufferSizec                    t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }|t        d	      }t        j                  |d
      }|t        d      }t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |	t        j                        }	| |||||||||	g
}d|
d|d|d|d|d
|d|d|d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   r   r9  r:  r   r   r   rn   r#  r&  r$  r'  s>   XlaSparseDenseMatmulGradWithAdagradMomentumAndStaticBufferSizerB   rC   rA  )r,   r   r   r-   r.   r,  r'   rE   rF   rG   rH   r   r1   r5   rC  r$   )r\   r]   r^   r_   r%  r   r   r   r8  r   r   r   r9  r:  r   r   r   rn   r&  r'  r   r   r>   r=   r8   s                            r?   rD  rD  	  s   ##L.A,  :6(


eW
-%


eW
-%3'$--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/&&{GOOD+""7GOO<'-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JU  W^  `H  I,L*h%G->$o4"$B
& ^|6s"&(' ""$H,X^`giQWWX_`'	.rI   +XlaSparseDenseMatmulGradWithAdamAndCsrInput)r   r7  r   c                    t         j                   xs t        j                         }|j                  }|j                  rG	 t	        j
                  |d|| |||||||||	d|
d|d|d|d|d|d|      }t        j                  |      }|S t        j                   |
d      }
t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j$                  |d      }|t'        d      }t        j"                  |d      }|t'        d      }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,                         rd|j/                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      f}|j2                  }t        j4                  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 Ow xY w)af  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    momenta: A `Tensor` of type `float32`.
    velocity: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    use_sum_inside_sqrt: A `bool`.
    beta1: A `float`.
    beta2: A `float`.
    epsilon: A `float`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_momenta, updated_velocity).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_momenta: A `Tensor` of type `float32`.
    updated_velocity: A `Tensor` of type `float32`.
  rH  r   r9  r:  r   r&  r'  rn   N)	r   r9  r:  r   r&  r'  rn   r   r   r#  r$  r\   r]   r^   r_   r%  r   r   r8  r   r   r   )rH  )r   r   r    r!   r   r"   2_XlaSparseDenseMatmulGradWithAdamAndCsrInputOutputr$   r%   r&   r'   r(   r)   Cxla_sparse_dense_matmul_grad_with_adam_and_csr_input_eager_fallbackr+   r,   r   r   r.   r,  r/   r0   r1   r   r3   r4   r5   )r\   r]   r^   r_   r%  r   r   r8  r   r   r   r9  r:  r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                              r?   4xla_sparse_dense_matmul_grad_with_adam_and_csr_inputrL  	  s   < 
			0h..0$#\\11;T')9<m_g:2GUGy'#4o?L*Fg CHHQgn" !**+>@UV


eW
-%


eW
-%3'  \:*FmO''9JK/ElO''9JK/'885BDPBIZB IYB EQ	B
 MaB FSB HWB @GB AIB aIB L_B >CB >CB @GB CMB  HW!B" HW#B$ =A%B!QX& QK'""$#  !67ll7#Wcll7.Ci02Cll,-/@ll,-|ll<(*F ::L5|VWV>DDWM'	.w && -
##At,,## 

P
)+;\

<1e?)jt  ## 
s1    AI J)JJJ!J? ?KKz3raw_ops.XlaSparseDenseMatmulGradWithAdamAndCsrInputc                 .   t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }|t	        d      }t        j                  |d      }|t	        d      }t        j                  |d	      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |	t        j                        }	| |||||||||	g
}d|
d|d|d|d|d	|d|f}t        j                  d
d||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   r9  r:  r   rn   r#  r&  r$  r'  s+   XlaSparseDenseMatmulGradWithAdamAndCsrInputrB   rC   rH  )r,   r   r   r.   r,  r'   rE   rF   rG   rH   r   r1   r5   rJ  r$   )r\   r]   r^   r_   r%  r   r   r8  r   r   r   r9  r:  r   rn   r&  r'  r   r   r>   r=   r8   s                         r?   rK  rK  *
  sD    **+>@UV


eW
-%


eW
-%3'  \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/""7GOO<'##Hgoo>(-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JQ  S[  ]E  F,!#6	5)W&7_lJ@& K|6s"&(' ""$5|VWV>DDWM'	.rI   3XlaSparseDenseMatmulGradWithAdamAndStaticBufferSizec                    t         j                   xs t        j                         }|j                  }|j                  ri	 t	        j
                  g |d|| |||||||||	d|
d|d|d|d|d|d|d	|d
| }t        j                  |      }|S t        j                   |
d      }
t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j$                  |d      }t        j$                  |d	      }t        j&                  |d
      }|t)        d      }t        j"                  |d      }|t)        d      }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.                         rd|j1                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j5                  d      d	|j5                  d	      d
|j3                  d
      f}|j6                  }t        j8                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	f
|
||||||||||dS # t        j                  $ r Y w xY w)a  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    momenta: A `Tensor` of type `float32`.
    velocity: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    use_sum_inside_sqrt: A `bool`.
    beta1: A `float`.
    beta2: A `float`.
    epsilon: A `float`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_momenta, updated_velocity).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_momenta: A `Tensor` of type `float32`.
    updated_velocity: A `Tensor` of type `float32`.
  rN  r   r9  r:  r   r&  r'  r   r   rn   N)r   r9  r:  r   r&  r'  r   r   rn   r   r   r#  r$  r\   r]   r^   r_   r%  r   r   r8  r   r   r   )rN  )r   r   r    r!   r   r"   :_XlaSparseDenseMatmulGradWithAdamAndStaticBufferSizeOutputr$   r%   r&   r'   r(   r)   Lxla_sparse_dense_matmul_grad_with_adam_and_static_buffer_size_eager_fallbackr+   r,   r   r   r-   r.   r,  r/   r0   r1   r   r3   r2   r4   r5   )r\   r]   r^   r_   r%  r   r   r8  r   r   r   r9  r:  r   r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                                r?   =xla_sparse_dense_matmul_grad_with_adam_and_static_buffer_sizerR  R
  s   @ 
			0h..0$#\\11 	B	BC	BEI	B	B'	B)9	B;G	B 		B ,	B .=	B ?F	B 			B ;		B
 		B
  3	B
 5<	B
 >C	B
 EL	B 		B 	B "	B $5	B 7F	B 		B +	B -F	B 	 	B "B	B 	'	B )5	B 7A	Bg KPPQXYgn& !**+>@UV


eW
-%


eW
-%3'$--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/'88=JLXJQbJ QaJ MY	J
 UiJ N[J P_J HOJ IQJ iQJ TgJ FKJ FKJ HOJ XoJ  _}!J" KU#J$ P_%J& P_'J( EI)J!QX* QK'""$#  !67ll7#Wcll7.Ci02Cll,-/@ll,-/H 9:. @ACLL6	8F ::L=|VU\^FLLWU'	.I && -
##At,,## 
Y
)+;\

<	6 2e?)"9)Gd	6 	6 ## 
s1    A'K LK::LLL6 6MMz;raw_ops.XlaSparseDenseMatmulGradWithAdamAndStaticBufferSizec                    t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }|t        d      }t        j                  |d	      }|t        d
      }t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |	t        j                        }	| |||||||||	g
}d|
d|d|d|d	|d|d|d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr   r9  r:  r   r   r   rn   r#  r&  r$  r'  s3   XlaSparseDenseMatmulGradWithAdamAndStaticBufferSizerB   rC   rN  )r,   r   r   r-   r.   r,  r'   rE   rF   rG   rH   r   r1   r5   rP  r$   )r\   r]   r^   r_   r%  r   r   r8  r   r   r   r9  r:  r   r   r   rn   r&  r'  r   r   r>   r=   r8   s                           r?   rQ  rQ  
  sz    **+>@UV


eW
-%


eW
-%3'$--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/""7GOO<'##Hgoo>(-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JQ  S[  ]E  F,!#6	5)W&7_&?; ,
	<&
 S|6s"&(' ""$=|VU\^FLLWU'	.rI   tableshyperparametersc                     t         j                   xs t        j                         }|j                  }|j                  r&	 t	        j
                  |d|
| |||||||d|d|	      }|S t        |t        t        f      st!        d|z        t#        |      }t        |t        t        f      st!        d|z        t#        |      }t%        j&                  |	d      }	t)        j*                  d| |||||||||	|
      \  }}}}|dd }t%        j,                         rjd	|j/                  d	      d
|j/                  d
      d|j1                  d      d|j1                  d      f}|j2                  }t%        j4                  d|||       |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  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    tables: A list of at least 1 `Tensor` objects with type `float32`.
    hyperparameters: A list of at least 1 `Tensor` objects with type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    custom_computation: A function decorated with @Defun.
    table_name: A `string`.
    name: A name for the operation (optional).

  Returns:
    A list with the same length as `tables` of `Tensor` objects with type `float32`.
  $XlaSparseDenseMatmulGradWithCsrInputcustom_computationrn   N)rX  rn   r   r   `Expected list for 'tables' argument to 'xla_sparse_dense_matmul_grad_with_csr_input' Op, not %r.iExpected list for 'hyperparameters' argument to 'xla_sparse_dense_matmul_grad_with_csr_input' Op, not %r.)r\   r]   r^   r_   r%  rT  rU  r   rX  rn   r   r   M)r   r   r    r!   r   r"   r%   r&   r'   r(   r)   :xla_sparse_dense_matmul_grad_with_csr_input_eager_fallbackr+   rz   r{   r|   r}   r~   r,   r.   r/   r0   r1   r2   r3   r4   r5   )r\   r]   r^   r_   r%  rT  rU  r   rX  rn   r   r6   r7   r8   r9   r   _attr_Mr:   r;   r<   r=   r>   s                         r?   +xla_sparse_dense_matmul_grad_with_csr_inputr^  
  s>   & 
			0h..0$#\\114dL+\fo02FL*6g n 
FT5M	*
	DFL	MN N K'	OdE]	3
	DFU	VW W  '  \:*'88.\BSAQ=IEY7=@O ZBCU;E59;!QX QK'""$3$$S)30A0A#0F"CLL1E$FCLL68F ::L.fgO	.[ && -
##At,,## 
G
)+;\

2/J  ## 
s0    $F GF22G
GG& &G=<G=z,raw_ops.XlaSparseDenseMatmulGradWithCsrInputc                    t        |t        t        f      st        d|z        t	        |      }t        |t        t        f      st        d|z        t	        |      }t        j                  |	d      }	t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }| ||||gt        |      z   t        |      z   |gz   }d|d|d|d|	f}t        j                  d|||||
      }t        j                         rt        j                  d	|||       |S )
NrY  rZ  rn   r   r[  rX  s$   XlaSparseDenseMatmulGradWithCsrInputrC   rW  )rz   r{   r|   r}   r~   r,   r.   r'   rE   rF   rG   rH   r   r   r1   r5   )r\   r]   r^   r_   r%  rT  rU  r   rX  rn   r   r   r   r]  r>   r=   r8   s                    r?   r\  r\  C  s   	FT5M	*
	DFL	MN N K'	OdE]	3
	DFU	VW W  '  \:*''gmmD,,,->N++,<gmmL''gooF,//0DgooV##FGOO<&,,_gooN/-1-C-CDlnun{n{-|* 13C\Sghkopvkwwz~  @O  {P  P  T|  S}  },#w(<lJ0&Dg$0C"&(' ""$.fgO	.rI   +XlaSparseDenseMatmulGradWithFtrlAndCsrInputc                    t         j                   xs t        j                         }|j                  }|j                  rI	 t	        j
                  |d|| |||||||||	d|
d|d|d|d|d|d|d	|      }t        j                  |      }|S t        j                   |
d      }
t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j$                  |d	      }|t'        d      }t        j"                  |d      }|t'        d      }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
 }t        j,                         rd|j/                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d|j1                  d      d	|j1                  d	      f}|j2                  }t        j4                  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 zw xY w)a  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    linear: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    multiply_linear_by_learning_rate: A `bool`.
    beta: A `float`.
    learning_rate_power: A `float`.
    l1_regularization_strength: A `float`.
    l2_regularization_strength: A `float`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator, updated_linear).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
    updated_linear: A `Tensor` of type `float32`.
  r`  r  r  r  r	  r  r&  r'  rn   N)
r  r  r  r	  r  r&  r'  rn   r   r   r#  r$  r\   r]   r^   r_   r%  r   r   r   r  r   r   )r`  )r   r   r    r!   r   r"   2_XlaSparseDenseMatmulGradWithFtrlAndCsrInputOutputr$   r%   r&   r'   r(   r)   Cxla_sparse_dense_matmul_grad_with_ftrl_and_csr_input_eager_fallbackr+   r,   r   r   r.   r,  r/   r0   r1   r   r3   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r  r   r  r  r  r	  r  rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                               r?   4xla_sparse_dense_matmul_grad_with_ftrl_and_csr_inputrd  g  s   > 
			0h..0$#\\11;T')9<m_k8*,L+-@$&@$&@?,=z
3g CHHQgn& &.%7%78XZ|%}"			T6	*$ ++,?AVW'223MOkl'223MOkl  \:*FmO''9JK/ElO''9JK/'885BDPBIZB IYB EQ	B
 MaB FSB HWB DOB ?EB aIB YyB =AB L_B SmB SmB  CM!B" HW#B$ HW%B& =A'B!QX( QK'""$0  !CDfll6"$9ll01*ll78*ll78:Kll,-/@ll,-|ll<(
*F ::L5|VWV>DDWM'	.G && -
##At,,## 
P
)+;\

:+K)<%?%?)?d	6 	6 ## 
r?  z3raw_ops.XlaSparseDenseMatmulGradWithFtrlAndCsrInputc                 ^   t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }|t	        d      }t        j                  |d      }|t	        d	      }t        j                  |d
      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |	t        j                        }	| |||||||||	g
}d|
d|d|d|d|d|d
|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr  r  r  r	  r  rn   r#  r&  r$  r'  s+   XlaSparseDenseMatmulGradWithFtrlAndCsrInputrB   rC   r`  )r,   r   r   r.   r,  r'   rE   rF   rG   rH   r   r1   r5   rb  r$   )r\   r]   r^   r_   r%  r   r   r   r  r   r  r  r  r	  r  rn   r&  r'  r   r   r>   r=   r8   s                          r?   rc  rc    sh   %-%7%78XZ|%}"			T6	*$ ++,?AVW'223MOkl'223MOkl  \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/&&{GOOD+!!&'//:&-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JU  W]  _G  H,."FD2G3:/_lJ@& K|6s"&(' ""$5|VWV>DDWM'	.rI   3XlaSparseDenseMatmulGradWithFtrlAndStaticBufferSizec                    t         j                   xs t        j                         }|j                  }|j                  rm	 t	        j
                  g |d|| |||||||||	d|
d|d|d|d|d|d|d	|d
|d| }t        j                  |      }|S t        j                   |
d      }
t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j"                  |d      }t        j$                  |d	      }t        j$                  |d
      }t        j&                  |d      }|t)        d      }t        j"                  |d      }|t)        d      }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d }t        j.                         rd|j1                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d|j3                  d      d	|j5                  d	      d
|j5                  d
      d|j3                  d      f}|j6                  }t        j8                  d|||       t        j                  |      }|S # t        j                  $ r }t        j                  ||       Y d}~nd}~wt        j                  $ r Y nw xY w	 t        | |||||||||	f
|
|||||||||||dS # t        j                  $ r Y w xY w)a7  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    accumulator: A `Tensor` of type `float32`.
    linear: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    multiply_linear_by_learning_rate: A `bool`.
    beta: A `float`.
    learning_rate_power: A `float`.
    l1_regularization_strength: A `float`.
    l2_regularization_strength: A `float`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A tuple of `Tensor` objects (updated_embedding_table, updated_accumulator, updated_linear).

    updated_embedding_table: A `Tensor` of type `float32`.
    updated_accumulator: A `Tensor` of type `float32`.
    updated_linear: A `Tensor` of type `float32`.
  rf  r  r  r  r	  r  r&  r'  r   r   rn   N)r  r  r  r	  r  r&  r'  r   r   rn   r   r   r#  r$  r\   r]   r^   r_   r%  r   r   r   r  r   r   )rf  )r   r   r    r!   r   r"   :_XlaSparseDenseMatmulGradWithFtrlAndStaticBufferSizeOutputr$   r%   r&   r'   r(   r)   Lxla_sparse_dense_matmul_grad_with_ftrl_and_static_buffer_size_eager_fallbackr+   r,   r   r   r-   r.   r,  r/   r0   r1   r   r3   r2   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r  r   r  r  r  r	  r  r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                                 r?   =xla_sparse_dense_matmul_grad_with_ftrl_and_static_buffer_sizerj    sT   B 
			0h..0$#\\11 ""C"EI""'")9";G" 	" ," .=" ?J" 		" 9	"
 	+"
 -M" 	" " ," .A" 	%" 'A" 	%" 'A" 	" +" ->" 	" 3" 5L" 	)" +I" 	" !"g KPPQXYgn* &.%7%78XZ|%}"			T6	*$ ++,?AVW'223MOkl'223MOkl$--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/'88=JLXJQbJ QaJ MY	J
 UiJ N[J P_J LWJ GMJ iQJ aAJ EIJ TgJ [uJ [uJ  Xo!J" _}#J$ KU%J& P_'J( P_)J* EI+J!QX, QK'""$0  !CDfll6"$9ll01*ll78*ll78:Kll,-/@ll,-/H 9:. @ACLL68F ::L=|VU\^FLLWU'	.Y && -
##At,,## 
Y
)+;\

:6 ,L)<%?%?)?"9)Gd6 6 ## 
rF  z;raw_ops.XlaSparseDenseMatmulGradWithFtrlAndStaticBufferSizec                    t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }|t        d	      }t        j                  |d
      }|t        d      }t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |	t        j                        }	| |||||||||	g
}d|
d|d|d|d|d
|d|d|d|d|f}t        j                  dd||||      }t        j                         rt        j                  d|||       t        j                  |      }|S )Nr  r  r  r	  r  r   r   rn   r#  r&  r$  r'  s3   XlaSparseDenseMatmulGradWithFtrlAndStaticBufferSizerB   rC   rf  )r,   r   r   r-   r.   r,  r'   rE   rF   rG   rH   r   r1   r5   rh  r$   )r\   r]   r^   r_   r%  r   r   r   r  r   r  r  r  r	  r  r   r   rn   r&  r'  r   r   r>   r=   r8   s                            r?   ri  ri    s   %-%7%78XZ|%}"			T6	*$ ++,?AVW'223MOkl'223MOkl$--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/&&{GOOD+!!&'//:&-1-C-CDlnun{n{-|* 13C\Sgiv  yH  JU  W]  _G  H,."FD2G3:/_&?; ,
<& S|6s"&(' ""$=|VU\^FLLWU'	.rI   c                    t         j                   xs t        j                         }|j                  }|j                  r(	 t	        j
                  |d|| |||||||d|	d|
d|      }|S t        j                  |d      }|	t        d      }	t        j                   |	d      }	|
t        d      }
t        j                   |
d      }
t#        j$                  d| |||||||||	|
|	      \  }}}}|dd }t        j&                         rYd|j)                  d      d|j)                  d      d|j)                  d      f}|j*                  }t        j,                  d|||       |\  }|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 tw xY w)
a  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `float32`.
  *XlaSparseDenseMatmulGradWithSgdAndCsrInputr&  r'  rn   Nr)  r#  r$  )r\   r]   r^   r_   r%  r   r   r   rn   r&  r'  r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   Bxla_sparse_dense_matmul_grad_with_sgd_and_csr_input_eager_fallbackr+   r,   r.   r,  r   r/   r0   r1   r3   r4   r5   )r\   r]   r^   r_   r%  r   r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                        r?   3xla_sparse_dense_matmul_grad_with_sgd_and_csr_inputro    s   ( 
			0h..0$#\\11:D')9<m_02C*O\g n   \:*FmO''9JK/ElO''9JK/'884<HYGWCOK_DQFU `HAKFUFU;?A!QX QK'""$.?!@.?!@CLL68F ::L4lFGU('	.W && -
##At,,## 
O
)+;\

2)?d6 6 ## 
s0    &E" "F)5FF)(F)-G GGz2raw_ops.XlaSparseDenseMatmulGradWithSgdAndCsrInputc                    t        j                  |d      }|	t        d      }	t        j                  |	d      }	|
t        d      }
t        j                  |
d      }
t	        j
                  | t        j                        } t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }| |||||||g}d|	d|
d|f}t        j                  dd||||      }t        j                         rt        j                  d	|||       |\  }|S )
Nrn   r#  r&  r$  r'  s*   XlaSparseDenseMatmulGradWithSgdAndCsrInputrU   rC   rm  )r,   r.   r,  r   r'   rE   rF   rG   rH   r   r1   r5   )r\   r]   r^   r_   r%  r   r   r   rn   r&  r'  r   r   r>   r=   r8   s                   r?   rn  rn    s     \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/-1-C-CDlnun{n{-|* 13C\Sgiv  yH  Jr  s,0A<-&JA$0C"&(' ""$4lFGU('	.rI   c                 j   t         j                   xs t        j                         }|j                  }|j                  r,	 t	        j
                  |d|| |||||||d|d|d|d|	d|
      }|S t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
|t!        d	      }t        j"                  |d      }|t!        d
      }t        j"                  |d      }t%        j&                  d| |||||||||	|
|||      \  }}}}|dd }t        j(                         r{d|j+                  d      d|j+                  d      d|j-                  d      d|j-                  d      d|j+                  d      f
}|j.                  }t        j0                  d|||       |\  }|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<  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    activation_gradients: A `Tensor` of type `float32`.
    learning_rate: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    clip_weight_min: An optional `float`. Defaults to `float('-inf')`.
    clip_weight_max: An optional `float`. Defaults to `float('inf')`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `float32`.
  2XlaSparseDenseMatmulGradWithSgdAndStaticBufferSizer&  r'  r   r   rn   Nr1  r#  r$  )r\   r]   r^   r_   r%  r   r   r   r   r   rn   r&  r'  r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   Kxla_sparse_dense_matmul_grad_with_sgd_and_static_buffer_size_eager_fallbackr+   r,   r-   r.   r,  r   r/   r0   r1   r3   r2   r4   r5   )r\   r]   r^   r_   r%  r   r   r   r   r   rn   r&  r'  r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                          r?   <xla_sparse_dense_matmul_grad_with_sgd_and_static_buffer_sizert  )  s~   , 
			0h..0$#\\11BD')9<m_02C*O!#:(*Hj"g n" %--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/'88<<PaO_KWSgLYN] hPVm]{ISN]N]CGI!QX QK'""$.?!@.?!@' 9:. @ACLL68F ::L<lFT[]('	.k && -
##At,,## 

X
)+;\

2)?"9)Gd6 6 ## 
s0    *F6 6G=	G$$G=<G=H H21H2z:raw_ops.XlaSparseDenseMatmulGradWithSgdAndStaticBufferSizec           
         t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
|t        d      }t        j                  |d      }|t        d      }t        j                  |d      }t        j                  | t        j                        } t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }t        j                  |t        j                        }| |||||||g}d|d|d|d|	d|
f
}t        j                  dd	||||
      }t        j                         rt        j                  d|||       |\  }|S )Nr   r   rn   r#  r&  r$  r'  s2   XlaSparseDenseMatmulGradWithSgdAndStaticBufferSizerU   rC   rr  )r,   r-   r.   r,  r   r'   rE   rF   rG   rH   r   r1   r5   )r\   r]   r^   r_   r%  r   r   r   r   r   rn   r&  r'  r   r   r>   r=   r8   s                     r?   rs  rs    s   $--.EG`a#+#4#45SUu#v   \:*FmO''9JK/ElO''9JK/''gmmD,,,->N++,<gmmL''gooF,//0DgooV((H-**?GOOL/-1-C-CDlnun{n{-|* 13C\Sgiv  yH  Jr  s,0A,.E"$B
& R|6s"&(' ""$<lFT[]('	.rI   quantization_config_lowquantization_config_highquantization_config_num_bucketsc                 *   t         j                   xs t        j                         }|j                  }|j                  r*	 t	        j
                  |d|| |||||d|d|d|d|	d|
      }|S t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                   |
d      }
t#        j$                  d| |||||||||	|
|	      \  }}}}|dd }t        j&                         r{d|j)                  d      d|j+                  d      d|j+                  d      d|j)                  d      d|j+                  d      f
}|j,                  }t        j.                  d|||       |\  }|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  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    input_size: An `int` that is `>= 0`.
    quantization_config_low: A `float`.
    quantization_config_high: A `float`.
    quantization_config_num_buckets: An `int` that is `>= 0`.
    table_name: A `string`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `float32`.
   XlaSparseDenseMatmulWithCsrInputr  rv  rw  rx  rn   N)r  rv  rw  rx  rn   r   r   )r\   r]   r^   r_   r   r   r  rv  rw  rx  rn   r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   5xla_sparse_dense_matmul_with_csr_input_eager_fallbackr+   r,   r-   r   r.   r/   r0   r1   r2   r3   r4   r5   )r\   r]   r^   r_   r   r   r  rv  rw  rx  rn   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                        r?   &xla_sparse_dense_matmul_with_csr_inputr|    sK   ( 
			0h..0$#\\110$+\?0,
!#:"$<)+Jj"g n"   \:*$//0GIbc%001IKef$,$5$56UWx$y!  \:*'88*>O=M9E<KU}7AD[E]Lk7AN!QX QK'""$C--l;'ll45(ll56/ ABCLL68F ::L*L&'K('	._ && -
##At,,## 

B
)+;\
C"9#;*Id6 6 ## 
s0    (F G+GGG#G; ;HHz(raw_ops.XlaSparseDenseMatmulWithCsrInputc           
      P   t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t	        j
                  | t        j                        } t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }| |||||g}d|d|d|d|	d|
f
}t        j                  dd||||      }t        j                         rt        j                  d	|||       |\  }|S )
Nr  rv  rw  rx  rn   s    XlaSparseDenseMatmulWithCsrInputrU   rC   rz  r,   r-   r   r.   r'   rE   rF   rG   rH   r   r1   r5   )r\   r]   r^   r_   r   r   r  rv  rw  rx  rn   r   r   r>   r=   r8   s                   r?   r{  r{    s     \:*$//0GIbc%001IKef$,$5$56UWx$y!  \:*''gmmD,,,->N++,<gmmL''gooF,**?GOOL/-1-C-CDlnun{n{-|* 13C\Sb  eM  N,*&?5=!<=& @!$0C"&(' ""$*L&'K('	.rI   c                    t         j                   xs t        j                         }|j                  }|j                  r.	 t	        j
                  |d|| |||||d|d|d|d|	d|
d|d|      }|S t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t        j                   |d      }t#        j$                  d| |||||||||	|
|||      \  }}}}|d	d	 }t        j&                         rd|j)                  d      d|j+                  d      d|j+                  d      d|j)                  d      d|j)                  d      d|j)                  d      d|j+                  d      f}|j,                  }t        j.                  d|||       |\  }|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  TODO: add doc.

  Args:
    row_pointers: A `Tensor` of type `int32`.
    sorted_sample_ids: A `Tensor` of type `int32`.
    sorted_token_ids: A `Tensor` of type `int32`.
    sorted_gains: A `Tensor` of type `float32`.
    embedding_table: A `Tensor` of type `float32`.
    num_minibatches_per_physical_sparse_core: A `Tensor` of type `int32`.
    input_size: An `int` that is `>= 0`.
    quantization_config_low: A `float`.
    quantization_config_high: A `float`.
    quantization_config_num_buckets: An `int` that is `>= 0`.
    max_ids_per_sparse_core: An `int` that is `>= 1`.
    max_unique_ids_per_sparse_core: An `int` that is `>= 1`.
    table_name: A `string`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `float32`.
  (XlaSparseDenseMatmulWithStaticBufferSizer  rv  rw  rx  r   r   rn   N)	r  rv  rw  rx  r   r   rn   r   r   )r\   r]   r^   r_   r   r   r  rv  rw  rx  r   r   rn   r   )r   r   r    r!   r   r"   r%   r&   r'   r(   r)   >xla_sparse_dense_matmul_with_static_buffer_size_eager_fallbackr+   r,   r-   r   r.   r/   r0   r1   r2   r3   r4   r5   )r\   r]   r^   r_   r   r   r  rv  rw  rx  r   r   rn   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s                          r?   /xla_sparse_dense_matmul_with_static_buffer_sizer    s   , 
			0h..0$#\\118$+\?0,
!#:"$<)+J!#:(*Hj	"g n&   \:*$//0GIbc%001IKef$,$5$56UWx$y!$--.EG`a#+#4#45SUu#v   \:*'882FWEUAMDS ^F?ILcMeTsLcSq?I9=?!QX QK'""$C--l;'ll45(ll56/ AB' 9:. @ACLL68F ::L2L&'S('	.u && -
##At,,## 
K
)+;\
C"9#;*I"9)Gd	6 	6 ## 
s0    ,G, ,H3?HH32H37I I('I(z0raw_ops.XlaSparseDenseMatmulWithStaticBufferSizec                    t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |	d      }	t        j                  |
d      }
t        j                  |d      }t        j                  |d      }t	        j
                  | t        j                        } t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }t	        j
                  |t        j                        }| |||||g}d|d|d|d|	d|
d|d|f}t        j                  dd	||||
      }t        j                         rt        j                  d|||       |\  }|S )Nr  rv  rw  rx  r   r   rn   s(   XlaSparseDenseMatmulWithStaticBufferSizerU   rC   r  r~  )r\   r]   r^   r_   r   r   r  rv  rw  rx  r   r   rn   r   r   r>   r=   r8   s                     r?   r  r  |  s     \:*$//0GIbc%001IKef$,$5$56UWx$y!$--.EG`a#+#4#45SUu#v   \:*''gmmD,,,->N++,<gmmL''gooF,**?GOOL/-1-C-CDlnun{n{-|* 13C\Sb  eM  N,*&?5=!#<; ,
<& H!$0C"&(' ""$2L&'S('	.rI   )N)__doc__collectionstensorflow.pythonr   tensorflow.python.eagerr   r   r   r%   r   r,   tensorflow.python.frameworkr   rF   tensorflow.security.fuzzing.pyr   _atypesr	   _op_def_registryr
   r'   r   r/   "tensorflow.python.util.deprecationr   tensorflow.python.utilr   	_dispatch tensorflow.python.util.tf_exportr   typingr   r   r   typing_extensionsr   
namedtupler#   Int32Float32intstrr@   	to_raw_opr   r*   rW   rY   rJ   rX   rx   Int64boolr   r[   ry   r   Stringr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,  r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  UInt32r  r  r  r*  r-  r"  r+  r2  r4  r/  r3  r<  r>  r6  r=  rC  rE  rA  rD  rJ  rL  rH  rK  rP  rR  rN  rQ  r^  rW  r\  rb  rd  r`  rc  rh  rj  rf  ri  ro  rm  rn  rt  rr  rs  r|  rz  r{  r  r  r  r   rI   r?   <module>r     sc  
  6 7 1 7 9 F K 3 I C 8 6 % % '2K22#% 
53;M1N 5XabegngtgtbtXu 5  AJ  KN  PW  P_  P_  K_  A` 5  ps 5  B 5n =Y;<^T^^La=bc 	#w}}J\@] gpqtv}  wD  wD  rD  hE   PY  Z]  _f  _n  _n  Zn  Po   B   NQ   .D[-C-C)2.4 *
YiPSU\UbUbPbFc Ymvwz  }D  }J  }J  xJ  nK Y  V_  `c  el  et  et  `t  Vu Y  EH Y  [^ Y  lo Y  }@ Y  MP Y  ad Y  BE Y  QT Yv '_i0]&^_m_c_m_m  oY  `Z  '[ #U^_bdkdqdq_qUr   }F  GJ  LS  LY  LY  GY  }Z   en  or  t{  tC  tC  oC  eD   TW   jm   {~   LO   \_   ps   QT   `c < 1G0F0F, [1\ -
FyQUVYQZ\c\i\iQiGj F  BK  LP  QT  LU  W^  Wd  Wd  Ld  Be F  zC  DH  IL  DM  OV  O^  O^  D^  z_ F  qz  {  @C  {D  FM  FS  FS  {S  qT F  ^g  hk  mt  mz  mz  hz  ^{ F  RU F  dg F  AD F  cf F  z} F  NQ F  _b F  w{ FP *e3c)deseieses  ub  fc  *d &<V_`deh`ikrkxkx`xVy <  QZ  [_  `c  [d  fm  fs  fs  [s  Qt <  IR  SW  X[  S\  ^e  ^m  ^m  Sm  In <  @I  JN  OR  JS  U\  Ub  Ub  Jb  @c <  mv  wz  |C  |I  |I  wI  mJ <  ad <  sv <  PS <  ru <  IL <  ]` <  nq <  FJ <| 0F{/E/E+i0k ,
VIc7>>FY<Z Venort{  uB  uB  pB  fC V  NW  X[  ]d  ]j  ]j  Xj  Nk V  t}  ~A  CJ  CR  CR  ~R  tS V  cf V  ux V  LO V  `c V  vy V  GJ V  _b Vp )c	2a(bcqcgcqcq  s]  d^  )_ %9UXZaZhZhUhKi t}  B  DK  DQ  DQ  Q  uR   ]f  gj  ls  ly  ly  gy  ]z   CL  MP  RY  Ra  Ra  Ma  Cb   ru   DG   [^   or   EH   VY   nq 4 1G0F0F, m1n -
hiW^^H[>\ hgpqtv}  wD  wD  rD  hE h  PY  Z]  _f  _l  _l  Zl  Pm h  v  @C  EL  ET  ET  @T  vU h  _h  il  nu  n{  n{  i{  _| h  IR  SV  X_  Xe  Xe  Se  If h  vy h  HK h  eh h  GJ h  ^a h  ru h  HK h  Y\ h  qt hT *e3c)deseieses  ua  fb  *c &YWZ\c\j\jWjMk v  AD  FM  FS  FS  AS  wT   _h  il  nu  n{  n{  i{  _|   EN  OR  T[  Tc  Tc  Oc  Ed   nw  x{  }D  }J  }J  xJ  nK   Xa  be  gn  gt  gt  bt  Xu   EH   WZ   tw   VY   mp   AD   WZ   hk   @C @ 1G0F0F, @A1C -
q4PS9V]VcVcKcAd qt}  C  DG  H  JQ  JW  JW  W  uX q  fo  pt  ux  py  {B  {J  {J  pJ  fK q  ~A q  UX q  il q  B q  PS qf *e3c)deseieses  uc  fd  *e &6PYZ^_bZcelererZrPs 6  DM  NR  SV  NW  Y`  Yf  Yf  Nf  Dg 6  u~  C  DG  H  JQ  JY  JY  Y  uZ 6  MP 6  dg 6  x{ 6  NQ 6  _b 6r#3+=!> #J 1y/01OP		#w}}:L0M 	 )?(>(>$E)G %
@ycGMMAY7Z @jstxy|t}  @G  @M  @M  uM  kN @  \e  fj  kn  fo  qx  q@  q@  f@  \A @  tw @  KN @  _b @  ux @  SV @  x{ @  IL @D "U+S!TUcUYUcUc  eI  VJ  "K :iPTUXPY[b[h[hPhFi :  zC  DH  IL  DM  OV  O\  O\  D\  z] :  kt  uy  z}  u~  @G  @O  @O  uO  kP :  CF :  Z] :  nq :  DG :  be :  GJ :  X[ :z:9S'..=P3Q :\efikrkxkxfx\y :  IR  SV  X_  Xe  Xe  Se  If :  vy :  HK :  \_ :  ru :  CF :  [^ :v !S	*Q RSaSWSaSa  cD  TE  !F )CQXQ_Q_L_B` ktux  {B  {H  {H  vH  lI   Xa  be  gn  gt  gt  bt  Xu   EH   WZ   kn   AD   RU   jm *%N &]Y/[%\]k]a]k]k  mT  ^U  &V "
-49gmmC[9\ -^ G)$EF~t~~VqGrs 	RVWZR[]d]j]jRjHk $ 5k44 568 
4YsGMM/A%B 4iX[]d]l]lXlNm 4  H  IL  NU  N]  N]  I]  ^ 4  mv  wz  |C  |K  |K  wK  mL 4  _h  il  nu  n}  n}  i}  _~ 4  OR 4l Ay!?@PgAhi Ic7==>P4Q ]fgjlsl{l{g{]|   NW  X[  ]d  ]l  ]l  Xl  Nm   |E  FI  KR  KZ  KZ  FZ  |[   nw  x{  }D  }L  }L  xL  nM   ^a " '=k&<&<"J'L #
IiW]]8J.K IW`adfmfufuauWv I  HQ  RU  W^  Wf  Wf  Rf  Hg I  qz  {~  @G  @O  @O  {O  qP I  [d  eh  jq  jy  jy  ey  [z I  IR  SV  X_  Xg  Xg  Sg  Ih I  t}  ~A  CJ  CR  CR  ~R  tS I  fo  ps  u|  uD  uD  pD  fE I  VY I  im I  w| I  HM IV  Qy)OPQ_QUQ_Q_  aA  RB   C YsGMMGY=Z fopsu|  vE  vE  qE  gF   W`  ad  fm  fu  fu  au  Wv   @I  JM  OV  O^  O^  J^  @_   js  tw  y@  yH  yH  tH  jI   Xa  be  gn  gv  gv  bv  Xw   CL  MP  RY  Ra  Ra  Ma  Cb   u~  B  DK  DS  DS  S  uT   eh   x|   FK   W\ 2 2;11GI 
B)C4H*I BT]^acjcpcp^pTq B  ~G  HK  MT  M\  M\  H\  ~] B  nw  x{  }D  }L  }L  xL  nM B  Yb  cf  ho  hw  hw  cw  Yx B  DM  NQ  SZ  Sb  Sb  Nb  Dc B  mv  wz  |C  |K  |K  wK  mL B  V_  `c  el  et  et  `t  Vu B  @I  JM  OV  O^  O^  J^  @_ B  ps B  JN BH ;I9:>4>>J^;_` 3CW9X clmpryrrm  dA   MV  WZ  \c  \k  \k  Wk  Ml   }F  GJ  LS  L[  L[  G[  }\   hq  ru  w~  wF  wF  rF  hG   S\  ]`  bi  bq  bq  ]q  Sr   |E  FI  KR  KZ  KZ  FZ  |[   en  or  t{  tC  tC  oC  eD   OX  Y\  ^e  ^m  ^m  Ym  On   B   Y] . 2;11HJ 
M)C4H*I MXabegngvgvbvXw M  BK  LO  QX  Q`  Q`  L`  Ba M  r{  |  AH  AP  AP  |P  rQ M  \e  fi  kr  kx  kx  fx  \y M  EN  OR  T[  Tc  Tc  Oc  Ed M  lu  vy  {B  {J  {J  vJ  lK M  bk  lo  qx  q@  q@  l@  bA M  _h  il  nu  n}  n}  i}  _~ M  OR M  vz M  X] M^ ;I9:>4>>J^;_` 3CW9X gpqtv}  wF  wF  rF  hG   QZ  [^  `g  `o  `o  [o  Qp   AJ  KN  PW  P_  P_  K_  A`   kt  ux  zA  zG  zG  uG  kH   T]  ^a  cj  cr  cr  ^r  Ts   {D  EH  JQ  JY  JY  EY  {Z   qz  {~  @G  @O  @O  {O  qP   nw  x{  }D  }L  }L  xL  nM   ^a   EI   gl 4.3+=!> .)TWY`YhYhThJi .  {D  EH  JQ  JY  JY  EY  {Z .  mv  wz  |C  |K  |K  wK  mL .  ]` .  py  z}  F  N  N  zN  pO .` 9978H[9\] 	#w}}:L0M YbcfhohwhwcwYx   JS  TW  Y`  Yh  Yh  Th  Ji   |E  FI  KR  KZ  KZ  FZ  |[   lo   H  IL  NU  N]  N]  I]  ^   5k44`b 
DYsGMM/A%B DYWZ\c\j\jWjMk Du~  @C  EL  ET  ET  @T  vU D  `i  jm  ov  o}  o}  j}  `~ D  QZ  [^  `g  `o  `o  [o  Qp D  IL D  lo D  }@ DL Ay!?@PgAhi Ic7==>P4Q \efikrkykyfy\z   EN  OR  T[  Tc  Tc  Oc  Ed   ox  y|  ~E  ~L  ~L  yL  oM   `i  jm  ov  o~  o~  j~  `   X[   {~   LO * 9O8N8N4 5698 5
 sx  y  s@	  X	]	  ^	c	  X	d	  k	o	 Q)TWY`YfYfTfJg Q  }F  GJ  LS  LY  LY  GY  }Z Q  nw  x{  }D  }J  }J  xJ  nK Q  [d  eh  jq  jy  jy  ey  [z Q  R[  \_  ah  ap  ap  \p  Rq Q  BK  LO  QX  Q`  Q`  L`  Ba Q  t}  ~A  CJ  CR  CR  ~R  tS Q  bk  lo  qx  q@  q@  l@  bA Q  mv  wz  |C  |I  |I  wI  mJ Q  X[ Q  mr Q  R	W	 Qf 2u;s1t  vDuy  vD  vD  E|  v}  2~ .YbcfhohuhucuYv   LU  VY  [b  [h  [h  Vh  Li   }F  GJ  LS  LY  LY  GY  }Z   js  tw  y@  yH  yH  tH  jI   aj  kn  pw  p  p  k  a@   QZ  [^  `g  `o  `o  [o  Qp   CL  MP  RY  Ra  Ra  Ma  Cb   qz  {~  @G  @O  @O  {O  qP   |E  FI  KR  KX  KX  FX  |Y   gj   }B	   U	Z	 : AW@V@V< 56A8 =
 	D
  E
K
  	L
  d
i
  j
o
  d
p
  w
{
 _S\]`bibobo]oSp _  FO  PS  U\  Ub  Ub  Pb  Fc _  w@  AD  FM  FS  FS  AS  wT _  dm  nq  sz  sB  sB  nB  dC _  [d  eh  jq  jy  jy  ey  [z _  KT  UX  Za  Zi  Zi  Ui  Kj _  }F  GJ  LS  L[  L[  G[  }\ _  kt  ux  zA  zI  zI  uI  kJ _  v  @C  EL  ER  ER  @R  vS _  nq _  S	V	 _  d	g	 _  y	~	 _  ^
c
 _B :E  DD  :E  FT  FJ  FT  FT  UU  FV  :W 6bkloqxq~q~l~b   U^  _b  dk  dq  dq  _q  Ur   FO  PS  U\  Ub  Ub  Pb  Fc   s|  }@  BI  BQ  BQ  }Q  sR   js  tw  y@  yH  yH  tH  jI   Zc  dg  ip  ix  ix  dx  Zy   LU  VY  [b  [j  [j  Vj  Lk   zC  DG  IP  IX  IX  DX  zY   EN  OR  T[  Ta  Ta  Oa  Eb   }@	   b	e	   s	v	   I
N
   a
f
 B AW@V@V<IAK =
 w
|
  }
C  w
D  \a  bg  \h  os jS\]`bibobo]oSp j  FO  PS  U\  Ub  Ub  Pb  Fc j  w@  AD  FM  FS  FS  AS  wT j  dm  nq  sz  sB  sB  nB  dC j  [d  eh  jq  jy  jy  ey  [z j  KT  UX  Za  Zi  Zi  Ui  Kj j  }F  GJ  LS  L[  L[  G[  }\ j  kt  ux  zA  zI  zI  uI  kJ j  U^  _b  dk  ds  ds  _s  Ut j  `i  jm  ov  o|  o|  j|  `} j  M	Q	 j  ]	b	 j  k	p	 j  y	~	 j  I
N
 j  \
_
 j  q
v
 j  V[ jX :E  DD  :E  FT  FJ  FT  FT  UU  FV  :W 6#bkloqxq~q~l~b #  U^  _b  dk  dq  dq  _q  Ur #  FO  PS  U\  Ub  Ub  Pb  Fc #  s|  }@  BI  BQ  BQ  }Q  sR #  js  tw  y@  yH  yH  tH  jI #  Zc  dg  ip  ix  ix  dx  Zy #  LU  VY  [b  [j  [j  Vj  Lk #  zC  DG  IP  IX  IX  DX  zY #  dm  nq  sz  sB  sB  nB  dC #  ox  y|  ~E	  ~K	  ~K	  yK	  oL	 #  \	`	 #  l	q	 #  z		 #  H
M
 #  X
]
 #  k
n
 #  AF #  Y^ #J I_H^H^DIIK E
 CH  IO  CP  hm  ns  ht  { x\efikrkxkxfx\y x  OX  Y\  ^e  ^k  ^k  Yk  Ol x  @I  JM  OV  O\  O\  J\  @] x  mv  wz  |C  |K  |K  wK  mL x  dm  nq  sz  sB  sB  nB  dC x  T]  ^a  cj  cr  cr  ^r  Ts x  FO  PS  U\  Ud  Ud  Pd  Fe x  t}  ~A  CJ  CR  CR  ~R  tS x  ^g  hk  mt  m|  m|  h|  ^} x  ir  sv  x  xE	  xE	  sE	  iF	 x  V	Z	 x  f	k	 x  t	y	 x  B
G
 x  R
W
 x  r
u
 x  WZ x  hk x  }B x  bg xt BU  LT  BU  Vd  VZ  Vd  Vd  en  Vo  Bp >'ktux  {B  {H  {H  vH  lI '  ^g  hk  mt  mz  mz  hz  ^{ '  OX  Y\  ^e  ^k  ^k  Yk  Ol '  |E  FI  KR  KZ  KZ  FZ  |[ '  s|  }@  BI  BQ  BQ  }Q  sR '  cl  mp  ry  rA  rA  mA  cB '  U^  _b  dk  ds  ds  _s  Ut '  CL  MP  RY  Ra  Ra  Ma  Cb '  mv  wz  |C  |K  |K  wK  mL '  xA	  B	E	  G	N	  G	T	  G	T	  B	T	  xU	 '  e	i	 '  u	z	 '  C
H
 '  Q
V
 '  a
f
 '  AD '  fi '  wz '  MR '  ej 'R 6L[5K5K1F6H 2
 ^
c
  d
j
  ^
k
  CH  IN  CO  VZ gyQTV]VcVcQcGd g  zC  DG  IP  IV  IV  DV  zW g  kt  ux  zA  zG  zG  uG  kH g  Xa  be  gn  gv  gv  bv  Xw g  OX  Y\  ^e  ^m  ^m  Ym  On g  H  IL  NU  N]  N]  I]  ^ g  qz  {~  @G  @O  @O  {O  qP g  [d  eh  jq  jy  jy  ey  [z g  FO  PS  U\  Ud  Ud  Pd  Fe g  QZ  [^  `g  `m  `m  [m  Qn g  E	I	 g  R	W	 g  `	e	 g  p	u	 g  C
F
 g  X
]
 g  }
B gR /oi8m.no}oso}o}  s  pt  /u +!V_`celerer`rVs !  IR  SV  X_  Xe  Xe  Se  If !  zC  DG  IP  IV  IV  DV  zW !  gp  qt  v}  vE  vE  qE  gF !  ^g  hk  mt  m|  m|  h|  ^} !  NW  X[  ]d  ]l  ]l  Xl  Nm !  @I  JM  OV  O^  O^  J^  @_ !  js  tw  y@  yH  yH  tH  jI !  U^  _b  dk  ds  ds  _s  Ut !  `i  jm  ov  o|  o|  j|  `} !  T	X	 !  a	f	 !  o	t	 !  	D
 !  R
U
 !  h
m
 !  @E !F >T[=S=S9F>H :
 jo  pv  jw  OT  UZ  O[  bf tPYZ]_f_l_lZlPm t  CL  MP  RY  R_  R_  M_  C` t  t}  ~A  CJ  CP  CP  ~P  tQ t  aj  kn  pw  p  p  k  a@ t  Xa  be  gn  gv  gv  bv  Xw t  HQ  RU  W^  Wf  Wf  Rf  Hg t  zC  DG  IP  IX  IX  DX  zY t  dm  nq  sz  sB  sB  nB  dC t  OX  Y\  ^e  ^m  ^m  Ym  On t  Zc  dg  ip  iv  iv  dv  Zw t  N	R	 t  [	`	 t  i	n	 t  y	~	 t  Y
\
 t  ~
A t  OR t  di t  IN tl 7i@}6~  @N  @D  @N  @N  OL  @M  7N 3%_hilnun{n{i{_| %  R[  \_  ah  an  an  \n  Ro %  CL  MP  RY  R_  R_  M_  C` %  py  z}  F  N  N  zN  pO %  gp  qt  v}  vE  vE  qE  gF %  W`  ad  fm  fu  fu  au  Wv %  IR  SV  X_  Xg  Xg  Sg  Ih %  s|  }@  BI  BQ  BQ  }Q  sR %  ^g  hk  mt  m|  m|  h|  ^} %  ir  sv  x  xE	  xE	  sE	  iF	 %  ]	a	 %  j	o	 %  x	}	 %  H
M
 %  h
k
 %  MP %  ^a %  ty %  LQ %PKiW]]HZ>[ Kpyz}  @G  @M  @M  {M  qN K  bk  lo  qx  q~  q~  l~  b K  OX  Y\  ^e  ^m  ^m  Ym  On K  FO  PS  U\  Ud  Ud  Pd  Fe K  ox  y}  ~A  yB  DK  DS  DS  yS  oT K  gp  qu  vy  qz  |C  |K  |K  qK  gL K  xA  BE  GN  GT  GT  BT  xU K  wz KZ (ay1_'`aoaeaoao  q\  b]  (^ $YWZ\c\i\iWiMj   @I  JM  OV  O\  O\  J\  @]   qz  {~  @G  @M  @M  {M  qN   ^g  hk  mt  m|  m|  h|  ^}   U^  _b  dk  ds  ds  _s  Ut   ~G  HL  MP  HQ  SZ  Sb  Sb  Hb  ~c   v  @D  EH  @I  KR  KZ  KZ  @Z  v[   GP  QT  V]  Vc  Vc  Qc  Gd   FI > 6L[5K5K1H6J 2
 pu  v|  p}  UZ  [`  Ua  hl syQTV]VcVcQcGd s  zC  DG  IP  IV  IV  DV  zW s  kt  ux  zA  zG  zG  uG  kH s  Xa  be  gn  gv  gv  bv  Xw s  OX  Y\  ^e  ^m  ^m  Ym  On s  H  IL  NU  N]  N]  I]  ^ s  qz  {~  @G  @O  @O  {O  qP s  _h  il  nu  n}  n}  i}  _~ s  HQ  RU  W^  Wf  Wf  Rf  Hg s  S\  ]`  bi  bo  bo  ]o  Sp s  T	X	 s  `	e	 s  |	A
 s  _
d
 s  BG s  UX s  jo s  OT sj /oi8m.no}oso}o}  s  pt  /u +%V_`celerer`rVs %  IR  SV  X_  Xe  Xe  Se  If %  zC  DG  IP  IV  IV  DV  zW %  gp  qt  v}  vE  vE  qE  gF %  ^g  hk  mt  m|  m|  h|  ^} %  NW  X[  ]d  ]l  ]l  Xl  Nm %  @I  JM  OV  O^  O^  J^  @_ %  nw  x{  }D  }L  }L  xL  nM %  W`  ad  fm  fu  fu  au  Wv %  bk  lo  qx  q~  q~  l~  b %  c	g	 %  o	t	 %  K
P
 %  n
s
 %  QV %  dg %  z %  RW %N >T[=S=S9H>J :
 |A  BH  |I  af  gl  am  tx @PYZ]_f_l_lZlPm @  CL  MP  RY  R_  R_  M_  C` @  t}  ~A  CJ  CP  CP  ~P  tQ @  aj  kn  pw  p  p  k  a@ @  Xa  be  gn  gv  gv  bv  Xw @  HQ  RU  W^  Wf  Wf  Rf  Hg @  zC  DG  IP  IX  IX  DX  zY @  hq  ru  w~  wF  wF  rF  hG @  QZ  [^  `g  `o  `o  [o  Qp @  \e  fi  kr  kx  kx  fx  \y @  ]	a	 @  i	n	 @  E
J
 @  h
m
 @  KP @  kn @  PS @  ad @  v{ @  [` @D 7i@}6~  @N  @D  @N  @N  OL  @M  7N 3)_hilnun{n{i{_| )  R[  \_  ah  an  an  \n  Ro )  CL  MP  RY  R_  R_  M_  C` )  py  z}  F  N  N  zN  pO )  gp  qt  v}  vE  vE  qE  gF )  W`  ad  fm  fu  fu  au  Wv )  IR  SV  X_  Xg  Xg  Sg  Ih )  w@  AD  FM  FU  FU  AU  wV )  `i  jm  ov  o~  o~  j~  ` )  kt  ux  zA	  zG	  zG	  uG	  kH	 )  l	p	 )  x	}	 )  T
Y
 )  w
|
 )  Z_ )  z} )  _b )  ps )  FK )  ^c )X AF  GM  AN  fk  lq  fr  y} KiPSU\UbUbPbFc K  yB  CF  HO  HU  HU  CU  yV K  js  tw  y@  yF  yF  tF  jG K  W`  ad  fm  fu  fu  au  Wv K  NW  X[  ]d  ]l  ]l  Xl  Nm K  ~G  HK  MT  M\  M\  H\  ~] K  py  z}  F  N  N  zN  pO K  {D  EH  JQ  JW  JW  EW  {X K  fi K  {@ K  `e K  B	K	  L	O	  Q	X	  Q	`	  Q	`	  L	`	  B	a	 KZ .mY7k-lm{mqm{m{  }p  nq  .r *U^_bdkdqdq_qUr   HQ  RU  W^  Wd  Wd  Rd  He   yB  CF  HO  HU  HU  CU  yV   fo  ps  u|  uD  uD  pD  fE   ]f  gj  ls  l{  l{  g{  ]|   MV  WZ  \c  \k  \k  Wk  Ml   H  IL  NU  N]  N]  I]  ^   JS  TW  Y`  Yf  Yf  Tf  Jg   ux   KP   ch   xA	  B	E	  G	N	  G	V	  G	V	  B	V	  xW	 : M	R	  S	Y	  M	Z	  r	w	  x	}	  r	~	  E
I
 YyY\^e^k^kYkOl Y  BK  LO  QX  Q^  Q^  L^  B_ Y  s|  }@  BI  BO  BO  }O  sP Y  `i  jm  ov  o~  o~  j~  ` Y  W`  ad  fm  fu  fu  au  Wv Y  GP  QT  V]  Ve  Ve  Qe  Gf Y  yB  CF  HO  HW  HW  CW  yX Y  DM  NQ  SZ  S`  S`  N`  Da Y  | Y  ad Y  ru Y  G	L	 Y  l	q	 Y  N
W
  X
[
  ]
d
  ]
l
  ]
l
  X
l
  N
m
 Yv 6}Y?{5|  ~L  ~B  ~L  ~L  MI  ~J  6K 2^ghkmtmzmzhz^{   QZ  [^  `g  `m  `m  [m  Qn   BK  LO  QX  Q^  Q^  L^  B_   ox  y|  ~E  ~M  ~M  yM  oN   fo  ps  u|  uD  uD  pD  fE   V_  `c  el  et  et  `t  Vu   HQ  RU  W^  Wf  Wf  Rf  Hg   S\  ]`  bi  bo  bo  ]o  Sp   KN   ps   A	D	   W	\	   o	t	   D
M
  N
Q
  S
Z
  S
b
  S
b
  N
b
  D
c
 BP3CU9V Pktux  {B  {H  {H  vH  lI P  ]f  gj  ls  ly  ly  gy  ]z P  JS  TW  Y`  Yh  Yh  Th  Ji P  |E  FI  KR  KZ  KZ  FZ  |[ P  GP  QT  V]  Vc  Vc  Qc  Gd P  ru P  PU P  qv P  Y\ P  jm P  }F  GJ  LS  L[  L[  G[  }\ Pd $Y9-W#XYgY]YgYg  iO  ZP  $Q  	RUW^WdWdRdHe   {D  EH  JQ  JW  JW  EW  {X   lu  vy  {B  {H  {H  vH  lI   Yb  cf  ho  hw  hw  cw  Yx   KT  UX  Za  Zi  Zi  Ui  Kj   V_  `c  el  er  er  `r  Vs   AD   _d   @E   hk   y|   LU  VY  [b  [j  [j  Vj  Lk 6_)CQXQ^Q^L^B_ _t}  B  DK  DQ  DQ  Q  uR _  fo  ps  u|  uB  uB  pB  fC _  S\  ]`  bi  bq  bq  ]q  Sr _  EN  OR  T[  Tc  Tc  Oc  Ed _  PY  Z]  _f  _l  _l  Zl  Pm _  {~ _  Y^ _  z _  be _  @C _  eh _  vy _  I	R	  S	V	  X	_	  X	g	  X	g	  S	g	  I	h	 _B ,i95g+hiwimiwiw  yh  ji  ,j (QZ[^`g`m`m[mQn   DM  NQ  SZ  S`  S`  N`  Da   u~  B  DK  DQ  DQ  Q  uR   bk  lo  qx  q@  q@  l@  bA   T]  ^a  cj  cr  cr  ^r  Ts   _h  il  nu  n{  n{  i{  _|   JM   hm   IN   qt   OR   tw   E	H	   X	a	  b	e	  g	n	  g	v	  g	v	  b	v	  X	w	 rI   