
    riic                        U d Z ddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZ ddlZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK erddlLZMdd	lNmOZP dd
lNmQZR eejS        ee*         ee+         f         ZTeeUd<   dZVddhZWde)dee,         ddfdZXde)ddfdZYde)deZfdZ[de)deZde)fdZ\eFj]        dde)de,de^dee*         dee+         deFdeTfdZ_de)deZfdZ`eFj]        dde)de,de^dee*         dee+         deFdeTfdZade)deZfdZbde)deejc                 fd Zdde)d!ee-         dejc        fd"ZeeFj]        ddejc        de,de^dee*         dee+         deFdeTfd#Zfd$d$d$d$d$d$d$d$d%d%d%d&d'Zgd$d$d$d$d$d$d$d$d%d%d&d(Zhd$d$d$d$d$d$d$d$d%d%d%d%d&d)Ziegj                    eh           egj                    ei           d*Zkde)ddfd+Zldd,d-eem         dee*         dee+         d.eZdeee*         ee+         f         fd/Znd!e.deZfd0Zod!edeZfd1Zpd!edeZfd2Zqejr        de	e.geZf         fd3            Zsd!e.deZfd4Ztejr        de	e.geZf         fd5            Zud!e.deZfd6Zvd7edejc        fd8Zwejr        deZfd9            Zxejr        deyfd:            Zzdd,deeejc        ef                  fd;Z{ G d< d=e          Z|	 	 	 d|dd,d.eZdee*         deee+ef                  d-eem         dee|ee*         ee+         f         fd>Z}de)d?emd!ee-         d@ejS        ddf
dAZ~eFj]        ddd,d.eZde,de^dee*         deee+ef                  deFdeTfdBZde)d?emd!ee-         d@ejS        ddf
dCZde)de,de^d.eZdee*         dee+         deTfdDZ G dE dFe          ZddGd.eZdee*         deee+ef                  deeee*         ee+         f         f
dHZeFj]        fde)d.eZde,dIe^dee*         deee+ef                  deFdeTfdJZejr        de
e)emf         fdK            Zde)deeem         ef         fdLZde)d?emd!ee-         d@ejS        ddf
dMZd}dNZde)d.eZdee*         deee+ef                  deeee*         ee+         f         f
dOZeFj]        fde)d.eZde,dIe^dee*         deee+ef                  deFdeTfdPZejr        de	egeZf         fdQ            Zejr        de	egeZf         fdR            Z G dS dTe          Zde)dee*         deee+ef                  d.eZdeeee*         ee+         f         f
dUZde)de,de^dee*         deee+ef                  d.eZdeTfdVZde)deZfdWZde)de(fdXZde)de,de^dee*         dee+         deTfdYZde)deZfdZZde)deZfd[Zde)deZfd\Zde)deZfd]Zde)de,de^dee*         dee+         deTfd^Zde)dee/         fd_ZeFj]        fde/dee,         dee*         dee+         deFdeTfd`Zde)dee         fdaZeFj]        ddede,dIe^dee*         dee+         deFdeTfdbZde)deey         fdcZeFj]        ddede,dIe^dee*         dee+         deFdeTfddZde)deeE         fdeZde)deZfdfZde)de)fdgZdheFj]        dide)de,dje^dee*         deee+ef                  d.eZdeFdeTfdkZde)d?emddfdlZdejc        dmemd!ee-         d@ejS        ddf
dnZdedmemd!ee-         d@ejS        ddf
doZdedmemd!ee-         d@ejS        ddf
dpZde)dmemd@ejS        ddfdqZde)dmemd@ejS        ddfdrZde)dmemd@ejS        ddfdsZ	 d~dteGde)d?emd!ee-         ddf
duZ G dv dweE          Zde)dee*         dee+         d.eZde0f
dxZdedeZfdyZdzeIde)ddfd{ZdS )zData dispatching for DMatrix.    N)TYPE_CHECKINGAnyCallableDictListOptionalSequenceTuple	TypeAlias	TypeGuardUnion   )AifType
CategoriesDfCatAccessorTransformedDf_arrow_array_inf_ensure_np_dtype
_is_df_catarray_hasobjectarray_interfacearray_interface_dictarrow_cat_infcheck_cudf_metacuda_array_interfacecuda_array_interface_dictcudf_cat_infget_ref_categoriesis_arrow_dict
pd_cat_inf)
CupyTDataTypeFeatureNamesFeatureTypesFloatCompatible
NumpyDTypePandasDTypePathLikeTransformedDatac_bst_ulong)	_is_arrow_is_cudf_df_is_cudf_pandas_is_cudf_ser_is_modin_df_is_modin_series_is_pandas_df_is_pandas_series
_is_polars_is_polars_lazyframe_is_polars_seriesimport_pandasimport_polarsimport_pyarrowis_pyarrow_availablelazy_isinstance)_LIBDataIterDataSplitModeDMatrix_check_call_ProxyDMatrixc_strmake_jcargs)	DataFrame)SeriesDispatchedDataBackendReturnTypecbase_marginlabeldatamissingreturnc                     |Mt          j        |          s;t          j        dt	          t          |                     z   t                     d S d S d S )Nz2`missing` is not used for current input data type:)npisnanwarningswarnstrtypeUserWarning)rI   rJ   s     R/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/xgboost/data.py_warn_unused_missingrU   g   sZ    bhw&7&7@3tDzz??R	
 	
 	
 	
 	
 	    c                 x    t          | d          r't          | j                  dk    rt          d          d S d S )Nshape   z8Please reshape the input data into 2-dimensional matrix.)hasattrlenrX   
ValueErrorrI   s    rT   _check_data_shaper^   o   sH    tW U#dj//Q"6"6STTTU U"6"6rV   c                     d}d}	 ddl m} t          | |          }n# t          $ r Y nw xY w	 ddl m} t          | |          }n# t          $ r Y nw xY w|p|S )zPredicate for scipy CSR input.Fr   )	csr_array)
csr_matrix)scipy.sparser`   
isinstanceImportErrorra   )rI   is_array	is_matrixr`   ra   s        rT   is_scipy_csrrg   t       HI******dI..   ++++++tZ00		    y     
**A 
AAis_csrc                 8   ddl m}m} t          | j                  t          | j                  k    r9t          dt          | j                   dt          | j                             t          | j        | j        j	                  \  }}t          | j        | j        j	                  \  }}t          | j        | j        j	                  \  }}|| j        us|| j        us	|| j        ur-|r ||||f| j
                  } n ||||f| j
                  } | S )zxEnsure correct data alignment and data type for scipy sparse inputs. Input should
    be either csr or csc matrix.

    r   )
csc_matrixra   zlength mismatch: z vs )rX   )rb   rl   ra   r[   indicesrI   r\   r   indptrdtyperX   )rI   rj   rl   ra   rn   _rm   valuess           rT   transform_scipy_sparserr      s(   
 43333333
4<C	NN**TS->->TTC	NNTTUUU dk.?@@IFA!$,0BCCJGQ DIO<<IFAdk!!$,&&"" 	K:vw7tzJJJDD:vw7tzJJJDKrV   )data_split_modenthreadfeature_namesfeature_typesrs   c                    t          j                    }t          | d          } t          t	          j        t          | j                  t          | j                  t          | j	                  t          | j        d                   t          t          |          t          |          t          |                    t          j        |                               |||fS )z"Initialize data from a CSR matrix.Tr   rJ   rt   rs   )ctypesc_void_prr   r?   r;   XGDMatrixCreateFromCSRr   rn   rm   rI   r*   rX   rB   floatintbyrefrI   rJ   rt   ru   rv   rs   handles          rT   _from_scipy_csrr      s     _F!$--D#DK((DL))DI&&
1&&gG #O 4 4  
 L  	
 	
   =-//rV   c                     d}d}	 ddl m} t          | |          }n# t          $ r Y nw xY w	 ddl m} t          | |          }n# t          $ r Y nw xY w|p|S )zPredicate for scipy CSC input.Fr   )	csc_array)rl   )rb   r   rc   rd   rl   )rI   re   rf   r   rl   s        rT   is_scipy_cscr      rh   ri   c                    t          j                    }t          | d           t          t	          j        t          | j                  t          | j                  t          | j	                  t          | j        d                   t          t          |          t          |          t          |                    t          j        |                               |||fS )z"Initialize data from a CSC matrix.Fr   rx   )ry   rz   rr   r?   r;   XGDMatrixCreateFromCSCr   rn   rm   rI   r*   rX   rB   r|   r}   r~   r   s          rT   _from_scipy_cscr      s     _F4'''#DK((DL))DI&&
1&&gG #O 4 4  
 L  	
 	
   =-//rV   c                     d}d}	 ddl m} t          | |          }n# t          $ r Y nw xY w	 ddl m} t          | |          }n# t          $ r Y nw xY w|p|S )zPredicate for scipy COO input.Fr   )	coo_array)
coo_matrix)rb   r   rc   rd   r   )rI   re   rf   r   r   s        rT   is_scipy_coor      rh   ri   c                 "    t          | d          S )N__array_interface__rZ   r]   s    rT   _is_np_array_liker     s    4.///rV   ro   c                     	 | j         j        st          j        | d|          } nt          j        | |          } n&# t
          $ r t          j        | |          } Y nw xY wt          | |          \  } }| S )zGHandle numpy slice.  This can be removed if we use __array_interface__.T)copyro   ro   )flagsc_contiguousrM   arrayasarrayAttributeErrorr   )rI   ro   s     rT   _maybe_np_slicer     s    -z& 	18Dt5999DD:d%000D - - -z$e,,,-"4//KD%Ks   :=  A A c                 r   t          |            t          | | j                  \  } }t          j                    }t          t          j        t          |           t          t          |          t          |          t          |                    t          j        |                               |||fS )z(Initialize data from a 2-D numpy matrix.rx   )r^   r   ro   ry   rz   r?   r;   XGDMatrixCreateFromDenser   rB   r|   r}   r~   )rI   rJ   rt   ru   rv   rs   rp   r   s           rT   _from_numpy_arrayr     s     dtTZ00GD!_F%D!!gG #O 4 4  
 L  	
 	

 
 
 =-//rV   r}   r|   i)int8int16int32int64uint8uint16uint32uint64float16float32float64bool)Int8Int16Int32Int64UInt8UInt16UInt32UInt64Float32Float64boolean)zint8[pyarrow]zint16[pyarrow]zint32[pyarrow]zint64[pyarrow]zuint8[pyarrow]zuint16[pyarrow]zuint32[pyarrow]zuint64[pyarrow]zfloat[pyarrow]zfloat32[pyarrow]zdouble[pyarrow]zfloat64[pyarrow]zbool[pyarrow]zpWhen categorical type is supplied, the experimental DMatrix parameter`enable_categorical` must be set to `True`.c                     t           d          rNt           j        d          r9 fdt           j                  D             }dd                    |          z   }nd}d}| dt           d| }t          |          )	Ndtypes__iter__c                 V    g | ]%\  }}|j         t          vj        |          d | &S )z: )name_pandas_dtype_mappercolumns).0r   ro   rI   s      rT   
<listcomp>z,_invalid_dataframe_dtype.<locals>.<listcomp>i  sI     
 
 
5z!555 |A))%))555rV   z Invalid columns:z,  z?DataFrame.dtypes for data must be int, float, bool or category. )rZ   r   	enumeratejoin_ENABLE_CAT_ERRr\   )rI   
bad_fieldserrtype_errmsgs   `    rT   _invalid_dataframe_dtyper   e  s     tX 74;
#C#C 
 
 
 
%dk22
 
 


 "DIIj$9$99PH
3
3/
3
3C
3
3C
S//rV   PdDataFramemetaenable_categoricalc                    t                      }|Z|Xt          | j        |j                  rd | j        D             }n,t	          | j                            t                              }g }d}| j        D ]}t          |          rC|	                    t          |j        j                            |rt          j        d           d}Tt          |          st!          |          r|r|	                    t"                     	 |	                    t          |j                            # t$          $ r t'          |            Y w xY w|||}||fS )z)Handle feature info for pandas dataframe.Nc                 L    g | ]!}d                      d |D                       "S )r   c                 ,    g | ]}t          |          S  rQ   r   xs     rT   r   z2pandas_feature_info.<locals>.<listcomp>.<listcomp>      &9&9&9!s1vv&9&9&9rV   r   r   r   s     rT   r   z'pandas_feature_info.<locals>.<listcomp>  3    QQQqSXX&9&9q&9&9&9::QQQrV   Tz3Sparse arrays from pandas are converted into dense.F)r6   rc   r   
MultiIndexlistmaprQ   r   is_pd_sparse_dtypeappendr   subtyper   rO   rP   is_pd_cat_dtypeis_pa_ext_categorical_dtypeCAT_TKeyErrorr   )	rI   r   ru   rv   r   pdnew_feature_typesneed_sparse_extension_warnro   s	            rT   pandas_feature_infor   w  s    
B dlBM22 	8QQDLQQQMM !1!1#!6!677M !% / /e$$ 	/$$%9%-:L%MNNN) 3STTT-2*E""	/&A%&H&H	/ 	/ $$U++++/!(()=ej)IJJJJ / / /(...../ )-''s   %D,,EEc                     ddl m} t          | |          sdS ddlm}m}m}  ||           o| j        t          v } ||           o
| j        dk    } ||           o| j        t          v }|p|p|pt          |           S )z(Whether dtype is a pandas nullable type.r   )ExtensionDtypeF)is_bool_dtypeis_float_dtypeis_integer_dtyper   )
pandas.api.extensionsr   rc   pandas.api.typesr   r   r   r   pandas_nullable_mapperr   )ro   r   r   r   r   is_intis_boolis_floats           rT   is_nullable_dtyper     s     544444e^,, uPPPPPPPPPPe$$M7M)MFmE"">uzY'>G~e$$M7M)MHBWBBOE,B,BBrV   c                 "    t          | d          S )z;Return whether dtype is a pyarrow extension type for pandaspyarrow_dtyper   r   s    rT   is_pa_ext_dtyper     s    5/***rV   c                 B    t          t          | dd          dd          S )z)Check whether dtype is a dictionary type.r   Nzpyarrow.libDictionaryType)r:   getattrr   s    rT   r   r     s(    --}>N  rV   c                  "   t                      } t          | j        d          rdt          | j        j        d          rJ| j        j        j        } || j                   |d          k    rddlm dt          dt          ffd}|S dd	l
m} |S )
NversionVersion2.1.0r   CategoricalDtypero   rK   c                 $    t          |           S Nrc   ro   r   s    rT   pd_is_cat_210z+_lazy_load_pd_is_cat.<locals>.pd_is_cat_210  s    !%)9:::rV   is_categorical_dtype)r6   rZ   utilr   r   __version__pandasr   r'   r   r   r  )r   r   r   r  r   s       @rT   _lazy_load_pd_is_catr    s    	Brw	"" !wrw	'J'J !'/)72>""ggg&6&666//////;[ ;T ; ; ; ; ; ; ! 555555rV   c                 4    t                      } ||           S )z)Wrapper for testing pandas category type.)r  )ro   is_cats     rT   r   r     s    !##F6%==rV   c                  "   t                      } t          | j        d          rdt          | j        j        d          rJ| j        j        j        } || j                   |d          k    rddlm dt          dt          ffd}|S dd	l
m} |S )
Nr   r   r   r   )SparseDtypero   rK   c                 $    t          |           S r   r   )ro   r	  s    rT   pd_is_sparse_210z1_lazy_load_pd_is_sparse.<locals>.pd_is_sparse_210  s    !%555rV   )	is_sparse)r6   rZ   r  r   r   r  r  r	  r'   r   r   r  )r   r   r  r  r	  s       @rT   _lazy_load_pd_is_sparser    s    	Brw	"" $wrw	'J'J $'/)72>""ggg&6&666******6 6 6 6 6 6 6 6 $#******rV   c                 4    t                      } ||           S )z'Wrapper for testing pandas sparse type.)r  )ro   r  s     rT   r   r     s    '))I9UrV   serc                 h   t                      }t          rddl}nt                      }| j        }|                                }|                                }|j        dk    o|j        	                    |j
                   }|                    |d          }t          ||j                  \  }}|S )z Handle pandas pyarrow extention.r   NF)zero_copy_onlywritable)r6   r   pyarrowr8   r   __arrow_array__combine_chunks
null_counttypes
is_booleanrR   to_numpyr   ro   )	r  r   pad_arrayaachunk	zero_copyarrrp   s	            rT   pandas_pa_typer     s    	B 
 .1YG $3355B))++E A%Mbh.A.A%*.M.M*MI nnInNNCc39--FCJrV   c                      t           j                            t           j                  t           j                            d          k    S )Nz1.25.0)rM   libNumpyVersionr  r   rV   rT   _lazy_has_npdtypesr$    s/    6r~..1D1DX1N1NNNrV   c                      ddl m} m} | |fS )Nr   Float32DtypeFloat64Dtype)r  r'  r(  r&  s     rT   _lazy_load_pd_floatsr)    s%    11111111%%rV   c                   	
 t                      \  	g }t                      dddt          fd}dddt          j        f	
fd}dddt          j        f
fd}t          | j        | j                  D ]V\  }
t          
          rt          d          t          
          r%|                     || |                              Xt          
          r)|                    t          | |                              t          
          r%|                     || |                              t          
          r_| |         j        }|                                }t%          |          rt'          ||j                  \  }}|                    |           2|                     || |                              X|S )z9Handle categorical dtype and extension types from pandas.r  PdSeriesrK   c                     | j         S r   )cat)r  s    rT   	cat_codesz(pandas_transform_data.<locals>.cat_codes$  s	    wrV   c                     t                    rt          j        }n)t                    rt          j        }nt          j        }t	          |                     |t          j                  |          d         S N)ro   na_valuer   )rc   rM   r   r   r   r  nan)r  	res_dtyper'  r(  ro   s     rT   nu_typez&pandas_transform_data.<locals>.nu_type'  sq    e\** 	#$&JII|,, 	#
II
ILLy26L::I
 

 	rV   c                 `   o4t          | j        t          j        j        t          j        j        f          }|st          j        t          j        hv r|                                 }n+|                     t          j        t          j	                  }t          ||j                  d         S r0  )rc   ro   rM   r   Float32DTypeFloat64DTyper   r   r  r2  r   )r  npdtypesr   ro   	np_dtypess      rT   oth_typez'pandas_transform_data.<locals>.oth_type3  s     
I 	&	&	"
 "
  	DuRZ 888LLNNEE LLrzBFLCCEu{33A66rV   zFpyarrow dictionary type is not supported. Use pandas category instead.)r)  r$  r   rM   ndarrayzipr   r   r   r\   r   r   r   r   r   r   rq   to_denser   r   ro   )rI   resultr.  r4  r:  colr  rp   r'  r(  ro   r9  s           @@@@rT   pandas_transform_datar@    s#    "6!7!7L,57F"$$Iz m    
Z 
BJ 
 
 
 
 
 
 
 
7j 7RZ 7 7 7 7 7 7 7( $,44 / /
U&u-- 	X   5!! 	/MM))DI..////U## 	/MM.c334444u%% 		/MM''$s),,----&& 	/s)"C,,..C %% :)#sy99QMM#MM((49--....
 MrV   c                        e Zd ZdZdeeej        ef                  de	e
         ddf fdZedeeef         fd            Z xZS )PandasTransformedz1A storage class for transformed pandas DataFrame.r   ref_categoriesrK   Nc                    || _         g }| j         D ]}t          |          rPt          |j        |j                  \  }}}| j                            |           |                    ||f           at          |t          j	                  sJ t          |          }|                    |           t                                          ||           d S )NrC  aitfs)r   r   r    
categoriescodestemporary_buffersr   rc   rM   r;  r   super__init__)
selfr   rC  rF  r?  jnamesjcodesbufinf	__class__s
            rT   rK  zPandasTransformed.__init__d  s    
  < 
	" 
	"C# 	"&0&K&K#&--c222ff-....!#rz22222*3//S!!!!eDDDDDrV   c                 B   t          | j        d                   r t          | j        d         j                  }nPt	          | j        d                   r| j        d         j        j        d         }n| j        d         j        d         }|t          | j                  fS z*Return shape of the transformed DataFrame.r   )r   r   r[   rm   r   rH  rX   rL  	n_sampless     rT   rX   zPandasTransformed.shape|  s     a)) 	1DLO344IIQ(( 	1Q-3A6II Q-a0I#dl++++rV   )__name__
__module____qualname____doc__r   r   rM   r;  r   r   r   rK  propertyr
   r}   rX   __classcell__rQ  s   @rT   rB  rB  a  s        ;;EeBJ567E !,E 
	E E E E E E0 ,uS#X , , , X, , , , ,rV   rB  c                    |r4t          | j                  dk    r|t          vrt          d| d          t	          |          \  }}t          | ||||          \  }}t          |           }t          ||          ||fS )Nr   zDataFrame for z cannot have multiple columnsrC  )r[   r   _matrix_metar\   r   r   r@  rB  )rI   r   ru   rv   r   rC  arrayss          rT   _transform_pandas_dfra    s      ODL!!A%%$l*B*BM$MMMNNN$6}$E$E!M>#6dM=2D$ $ M= #4((F&@@@ rV   r   r   c                    t          | d|          \  } }}t          | j                  dk    r| j        d         }nt          j        | j                  j        }t          ||          \  }}t          ||||           d S )NF)r   r   r   )ra  r[   r   rM   stackTr   _meta_from_numpy)rI   r   ro   r   rp   r   s         rT   _meta_from_pandas_dfrf    s     &dE===JD!Q
4<AQ&&(#E511LE5UD%00000rV   c           
         t          | |||          \  }}}t          j                    }t          t	          j        |                                t          |||          t          j        |                               |||fS N)rt   rJ   rs   )	ra  ry   rz   r?   r;   XGDMatrixCreateFromColumnarr   rB   r~   )	rI   r   rJ   rt   ru   rv   rs   dfr   s	            rT   _from_pandas_dfrk    s     (< -( ($B} _F(  /   L  	
 	
   =-//rV   c                 :   t          | j                  r7| j                                                            t
          j                  } nOt          | j                  rt          |           } n+| 	                    t
          j        t
          j
                  } t          t          | d|                     r|                                 } t          | j                  dk    s$| j        d         dk    s| j        d         dk    sJ t          | |||           dS )z6Help transform pandas series for meta data like labels)r1  ro   r   r   N)r   ro   rq   r=  astyperM   r   r   r   r  r2  r   r[   rX   re  )rI   r   ro   r   s       rT   _meta_from_pandas_seriesrn    s     $*%% :{##%%,,RZ88		$	$ :d##}}RZ"&}99'$6677 }}tz??a4:a=A#5#5A!9K9K9K9KT4/////rV   c                 L   | j         j        t          vr%t          | j                   r|st	          |            |r t          | j                   r| j        j        } t          | j        	                    | j
        d         d                              d          ||||          S )Nr   r   r|   rI   rJ   rt   ru   rv   )ro   r   r   r   r   r-  rH  r   rq   reshaperX   rm  )rI   rJ   rt   r   ru   rv   s         rT   _from_pandas_seriesrr    s     	
333
## 	4(: 	4 	!&&& odj99 x~[  A2299'BB##   rV   c                        e Zd ZdZ	 d	deed                  dee         ddf fdZe	de
eef         fd            Z xZS )
ArrowTransformedz,A storage class for transformed arrow table.Nr   zpa.NumericArrayzpa.DictionaryArrayrC  rK   c                      | _         g  _        t          rdd lnt	                      g dt
          d         dd f fd} j         D ]} ||           t                                          |           d S )Nr   r?  ru  rK   c                 z   t          | j                  r| j        }| j        }t          |j        j        f          st          d          t          ||          \  }}}	j        	                    |           	                    ||f           d S t          |           }	                    |           d S )Nz;Only string-based categorical index is supported for arrow.)rc   DictionaryArray
dictionaryrm   StringArrayLargeStringArray	TypeErrorr   rI  r   r   )
r?  catsrH  rM  rN  rO  jdatarF  r  rL  s
          rT   push_seriesz.ArrowTransformed.__init__.<locals>.push_series	  s    #r122 $~!$9L(MNN #U   '4D%&@&@#&--c222ff-.....(--U#####rV   rE  )r   rI  r   r  r8   r   rJ  rK  )rL  r   rC  r  r?  rF  r  rQ  s   `    @@rT   rK  zArrowTransformed.__init__  s    
 .0 	"     !!B	$U#JK 	$PT 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ < 	 	CKeDDDDDrV   c                 ^    t          | j        d                   t          | j                  fS rS  )r[   r   rL  s    rT   rX   zArrowTransformed.shape  s'     4<?##S%6%666rV   r   )rV  rW  rX  rY  r   r   r   r   rK  rZ  r
   r}   rX   r[  r\  s   @rT   rt  rt    s        66
 04"E "EeCDE"E !,"E 
	"E "E "E "E "E "EH 7uS#X 7 7 7 X7 7 7 7 7rV   rt  zpa.Tablec                    t           rdd l}nt                      }t          |           \  }}t	          |          \  }}||}||}g }|D ]}	|                     |	          }
|
                                }t          ||j                  r"|	                     |j
                              }t          |          r|st          d            |                    |           t          ||          }|||fS )Nr   r^  )r   r  r8   _arrow_feature_infor   columnr  rc   BooleanArraycastr   r   r   r   rt  )rI   r   ru   rv   r  t_namest_typesrC  r   cnamecol0r?  df_ts                rT   _transform_arrow_tabler  #  s     *400GW$6}$E$E!M>G 	 	{{5!!>B>Q>Q>S>Sc2?++ 	&((72799%%C 	+&8 	+ %T***sGNCCCD--rV   	n_threadsc           
         t          | |||          \  }}}t          j                    }t          t	          j        |                                t          |||          t          j        |                               |||fS rh  )	r  ry   rz   r?   r;   ri  r   rB   r~   	rI   r   rJ   r  ru   rv   rs   r  r   s	            rT   _from_arrow_tabler  F  s     *@ -* *&D- _F(  ""!7O   L  	
 	
   =-//rV   c                  z   dd l }  | j                    d | j                    d | j                    d | j                    d | j                    d | j                    d | j                    d | j                    d | j	                    d | j
                    d | j                    d | j                    di}|S )Nr   r}   r|   r   )r  r   r   r   r   r   r   r   r   r   r   r   bool_)r  mappings     rT   _arrow_dtyper  _  s     			5

E

E

E

E	U	U	U
g
g
g

CG NrV   c                     t           rdd lnt                      | j        }dt          dt          ffd}t          t          ||                    }||fS )Nr   r   rK   c                                          |           }t          |j        j                  rt          S t                      |j                 S r   )r  rc   rR   r   r   r  )r   r?  r  tables     rT   map_typez%_arrow_feature_info.<locals>.map_type~  sA    ll4  ch 122 	L~~ch''rV   )r   r  r8   column_namesrQ   r   r   )rI   namesr  r  r  r  s       @@rT   r  r  u  s     EE(s (s ( ( ( ( ( ( ( Xu%%&&E%<rV   c                 T    | }t          |                                |||           d S )N)r   ro   r   )rf  	to_pandas)rI   r   ro   r   r  s        rT   _meta_from_arrow_tabler    s0     E**U6RRRRRRrV   c                  @    t                      st          d          d S )Nz!`pyarrow` is required for polars.)r9   rd   r   rV   rT   _check_pyarrow_for_polarsr    s)    !! ?=>>>? ?rV   c                     t          |           r/|                                 }t          j        dt                     n| }t                       |                                }t          ||||          S )Nz}Using the default parameters for the polars `LazyFrame.collect`. Consider passing a realized `DataFrame` or `Series` instead.)r4   collectrO   rP   rS   r  to_arrowr  )rI   r   ru   rv   rj  r  s         rT   _transform_polars_dfr    s     D!! \\^^C	
 	
 	
 	
 KKMME!!=-  rV   c           
         t          | |||          \  }}}t          j                    }t          t	          j        |                                t          |||          t          j        |                               |||fS rh  )	r  ry   rz   r?   r;   ri  r   rB   r~   r  s	            rT   _from_polars_dfr    s     *> -* *&D- _F(  ""!7O   L  	
 	
   =-//rV   c                      	 ddl m dt          dt          ffd} n.# t          $ r! 	 ddlm}  n# t          $ r	 ddlm}  Y nw xY wY nw xY w| S )Nr   r   ro   rK   c                 $    t          |           S r   r   r   s    rT   r  z4_lazy_load_cudf_is_cat.<locals>.is_categorical_dtype  s    e%5666rV   r   )cudfr   r   r   rd   cudf.api.typesr  cudf.utils.dtypes)r  r   s    @rT   _lazy_load_cudf_is_catr    s    
?))))))	7 	7 	7 	7 	7 	7 	7 	7 	7  ? ? ?	?;;;;;;; 	? 	? 	?>>>>>>>>	??  s/    
A	0A	A A	AA	A	c                      ddl m}  | S )Nr   r   )r  r   r  s    rT   _lazy_load_cudf_is_boolr    s    ,,,,,,rV   c                        e Zd ZdZdeedef                  dee         ddf fdZ	e
deeef         fd            Z xZS )	CudfTransformedz/A storage class for transformed cuDF dataframe.r   r+  rC  rK   Nc                      | _         g dt          dd f fd} j         D ]} ||           t                                          |           d S )Nr  rK   c                    t          |           rU| j        | j        }}t          ||          \  }}}j                            |                               ||f           d S t          |           }                    |           d S r   )r   rG  rH  r   rI  r   r   )	r  r}  rH  	cats_ainf
codes_ainfrO  ainfrF  rL  s	          rT   r  z-CudfTransformed.__init__.<locals>.push_series  s    # #!ncie-9$-F-F*	:s&--c222i455555 155T"""""rV   rE  )r   r   rJ  rK  )rL  r   rC  r  r?  rF  rQ  s   `    @rT   rK  zCudfTransformed.__init__  s    
  		#S 		#T 		# 		# 		# 		# 		# 		# 		# < 	 	CKeDDDDDrV   c                     t          | j        d                   r| j        d         j        j        d         }n| j        d         j        d         }|t	          | j                  fS rS  )r   r   rH  rX   r[   rT  s     rT   rX   zCudfTransformed.shape  sZ     dl1o&& 	1Q-3A6IIQ-a0I#dl++++rV   )rV  rW  rX  rY  r   r   r   r   r   rK  rZ  r
   r}   rX   r[  r\  s   @rT   r  r    s        99EeJ567E !,E 
	E E E E E E6 ,uS#X , , , X, , , , ,rV   r  c                 F   t                      }t                      t          |           r8 || j                  r|                     t
          j                  } | j        g}n:|                     d |                     d          D                       } | j        }t          fd|D                       st          |            |lt          |           r	| j        g}nTt          | j        dd          rd | j        D             }n,t          | j                            t                               }t#          |          \  }}|Tg }|D ]O} |          rr|                    t&                     *|                    t(          |j                            Pg }t          |           rY | j                  rr|                    | j                   nrt-          t.                    |                    |            nt1          | j        | j                  D ]i\  }	}| |	         }
 |          rr|                    |
j                   5 |          rt-          t.                    |                    |
           jt3          ||          ||fS )	Nc                 (    i | ]}|t           j        S r   )rM   r   )r   r?  s     rT   
<dictcomp>z&_transform_cudf_df.<locals>.<dictcomp>  s    IIIsS"(IIIrV   r   )includec              3   N   K   | ]}|j         t          v p |          oV   d S r   )r   r   )r   ro   r   r  s     rT   	<genexpr>z%_transform_cudf_df.<locals>.<genexpr>   s[          	
** 	@  ''>,>     rV   zcudf.core.multiindexr   c                 L    g | ]!}d                      d |D                       "S )r   c                 ,    g | ]}t          |          S r   r   r   s     rT   r   z1_transform_cudf_df.<locals>.<listcomp>.<listcomp>,  r   rV   r   r   s     rT   r   z&_transform_cudf_df.<locals>.<listcomp>,  r   rV   r^  )r  r  r.   ro   rm  rM   r   select_dtypesr   allr   r   r:   r   r   r   rQ   r   r   r   r   r-  r\   r   r<  r  )rI   ru   rv   r   r   r   rC  ro   r>  r?  seriesr  s      `       @rT   _transform_cudf_dfr    s    ,--M133D =$$ 	);;rx((D*{{IId&8&8&8&H&HIII
 
            '
 	!&&&  	8!YKMMT\+A<PP 	8QQDLQQQMM !1!1#!6!677M %7}$E$E!M> 	G 	GE##E** G/A G$$U++++$$%9%*%EFFFF FD &
++ 	 0B 	 MM$(#### 	 _---MM$dlDK88 	& 	&JC#YF##E** &/A &fj))))%%e,, & 111f%%%% 	~>>> rV   c           	      
   t          | |||          \  }}}t          j                    }t          t	          j        |                                t          ||          t          j        |                               |||fS )N)rt   rJ   )	r  ry   rz   r?   r;   XGDMatrixCreateFromCudaColumnarr   rB   r~   )rI   rJ   rt   ru   rv   r   rj  r   s           rT   _from_cudf_dfr  U  s     (:m],>( ($B} _F,  999L  	
 	
   =-//rV   c                 "    t          | d          S )N__cuda_array_interface__r   r]   s    rT   _is_cupy_aliker  l  s    43444rV   c                     dd l }t          | d          s't          | d          r|                    | d          } t          |           s| j        |j        fv r|                     |j        d          } | S )Nr   r  	__array__F)r   )cupyrZ   r   r   ro   r  rm  r   )rI   r  s     rT   _transform_cupy_arrayr  p  s    KKK4344 ,{9S9S ,zz$Uz++t 5
tzl : :{{4<e{44KrV   c           	      "   t          |           } t          |           }t          j                    }t	          t          j        ||d          d          }t          t          j	        ||t          j
        |                               |||fS )z%Initialize DMatrix from cupy ndarray.)rJ   rt   zutf-8)r  r   ry   rz   bytesjsondumpsr?   r;   %XGDMatrixCreateFromCudaArrayInterfacer~   )rI   rJ   rt   ru   rv   interface_strr   configs           rT   _from_cupy_arrayr  z  s     !&&D(..M_F4:'gFFGGQQF266<#7#7	
 	
  
 =-//rV   c                 n    	 dd l }n# t          $ r Y dS w xY wt          | |j        j        j                  S Nr   F)cupyxrd   rc   scipysparsera   rI   r  s     rT   _is_cupy_csrr    L       uudEK.9:::    
c                 n    	 dd l }n# t          $ r Y dS w xY wt          | |j        j        j                  S r  )r  rd   rc   r  r  rl   r  s     rT   _is_cupy_cscr    r  r  c                 `    dt          t          |                     v odt          |           v S )N	PyCapsuledltensor)rQ   rR   r]   s    rT   
_is_dlpackr    s)    #d4jj//)EjCII.EErV   c                 N    ddl m} dt          |           vsJ  ||           } | S )Nr   )from_dlpackused_dltensor)r  r  rQ   )rI   r  s     rT   _transform_dlpackr    s?          #d))++++;tDKrV   c                 F    t          |           } t          | ||||          S r   )r  r  rp  s        rT   _from_dlpackr    s'     T""DD'7M=QQQrV   c                 D    t          | t          t          j        f          S r   )rc   rQ   osr(   r]   s    rT   _is_urir    s    dS"+.///rV   c                 r   t          | |           t          j                    }t          j        t          j                            |                     } t          t          |           t          |                    }t          t          j        |t          j        |                               |||fS )N)urirs   )rU   ry   rz   r  fspathpath
expanduserrB   rQ   r}   r?   r;   XGDMatrixCreateFromURIr~   )rI   rJ   ru   rv   rs   r   r  s          rT   	_from_urir    s     w'''_F9RW''--..DSYYO8L8LMMMF+FFL4H4HIIJJJ=-//rV   c                 ,    t          | t                    S r   )rc   r   r]   s    rT   _is_listr    s    dD!!!rV   c                 r    t          j        |           }t          |            t          ||||||          S )NrI   rJ   rt   ru   rv   rs   )rM   r   r^   r   )rI   rJ   r  ru   rv   rs   r   s          rT   
_from_listr    sH     HTNNEd##'   rV   c                 ,    t          | t                    S r   )rc   tupler]   s    rT   	_is_tupler    s    dE"""rV   c                 ,    t          | |||||          S )NrI   rJ   r  ru   rv   rs   )r  r  s         rT   _from_tupler    s-     ##'   rV   c                 ,    t          | t                    S r   )rc   r<   r]   s    rT   _is_iterr     s    dH%%%rV   c                 "    t          | d          S )Nr  r   r]   s    rT   _has_array_protocolr    s    4%%%rV   c                     t          j        dt          |            dt                     	 dd l}n# t
          $ r Y d S w xY w	 |j                            |           } n# t          $ r Y d S w xY w| S )NzUnknown data type: z$, trying to convert it to csr_matrixr   )	rO   rP   rR   rS   rb   rd   r  ra   	Exception)rI   r  s     rT   _convert_unknown_datar     s    MNd4jjNNN     tt|&&t,,   tt Ks    2 
A A A 
A-,A-F)r   rs   threadsc           	      <	   dt           t          t          t          f                  dt          t           t                            fd}t          |           s-t          |           st          |           st          |            t          |           r" ||          sJ t          | |||||          S t          |           r" ||          sJ t          | |||||          S t          |           r4 ||          sJ t          |                                 |||||          S t          |           r" ||          sJ t!          | |||||          S t#          |           r  ||          sJ t%          | ||||          S t'          |           r" ||          sJ t)          | |||||          S t+          |           r" ||          sJ t-          | |||||          S t          |           r*t/                      }|                    | j        | i          } t5          |           rt7          | ||||||          S t9          |           rt;          | ||||||          S t=          |           r| j        } t          |           r#tA                      }	|	                    |           } tC          |           rtE          | ||||||          S tG          |           st          |           rtI          | |||||          S tK          |           r  ||          sJ tM          | ||||          S tO          |           rtQ          d	          tS          |           rtQ          d
          tU          |           r  ||          sJ tW          | ||||          S tY          |           r#tA                      }	|	                    |           } t[          |           rtE          | |||||          S t]          |           r5 ||          sJ t_          j0        |           }
t!          |
||||          S tc          |           }|! ||          sJ t          |||||          S tQ          dte          tg          |                     z             )zDispatch data for DMatrix.rv   rK   c                 N    t          | t                    rt          d          dS )Nz9Reference category is only supported by DataFrame inputs.T)rc   r   r\   )rv   s    rT   
check_catsz)dispatch_data_backend.<locals>.check_cats  s2     mZ00 	K   trV   r  r  )rJ   r  ru   rv   rs   )rI   r   rJ   rt   ru   rv   rs   )rI   rJ   rt   ru   rv   r   zcupyx CSR is not supported yet.zcupyx CSC is not supported yet.)rI   r   rJ   rt   ru   rv   rp  NzNot supported type for data.)4r   r   r$   r   r   r.   r2   r5   r^   rg   r   r   r   r   tocsrr   r   r  r  r  r  r  r  r7   rC   r   r3   r  r+   r  r-   _fsproxy_fastr6   r1   rk  r,   r  r  r  r  r|  r  r  r  r0   r/   r  rM   r   r  rQ   rR   )rI   rJ   r  ru   rv   r   rs   r	  plr   r   	converteds               rT   dispatch_data_backendr    s   lJ&> ?@	8L)	*     !$''  "$'' 
 	$D 	
z-(((((''+
 
 
 	
 D 	
z-(((((''+
 
 
 	
 D 	
z-(((((''+
 
 
 	
  	
z-((((( ''+
 
 
 	
 t}} Wz-(((((w}oVVV~~ 	
z-(((((''+
 
 
 	
  	
z-(((((''+
 
 
 	
  /__||TY-..$ 	
''+
 
 
 	
  	
 ''+
 
 
 	
 t "! "__||D!!T 	
1''+
 
 
 	
 4 
L.. 
''1
 
 
 	
 d Vz-(((((gw}UUUD ;9:::D ;9:::$ Rz-(((((D'7M=QQQ "__||D!!D 
1''
 
 
 	
 4   	
z-(((((
4   ''
 
 
 	
 &d++Iz-(((((''
 
 
 	
 2Sd__D
E
EErV   c                    t          | d          rd| j         d| }|t          v r)t          | j                  dk    rt	          |          d S t          | j                  dk    s:t          | j                  dk    r>| j        d         dk    r/| j        d         dk    r t	          d| j         d|           d S d S d S d S )NrX   zInvalid shape: z for rY   r   r   )rZ   rX   r_  r[   r\   )rI   r   r   s      rT   _validate_meta_shaper    s    tW 
H7
7777<4:"" oo%Ftz??Q
OOq  djmq&8&8TZ]a=O=OFtzFFFFGGG
H 
H ! &8&8=O=OrV   fieldc                    t          | |          \  } }| j        }|                    dd           t          d          t	          |           }t          t          j        |t          |          |                     d S )NmaskzMasked array is not supported.)	r   r   getr\   r   r?   r;   XGDMatrixSetInfoFromInterfacerA   )rI   r  ro   r   	interfacer  s         rT   re  re    sx     #4//KD%(I}}VT"".9:::#D))M265<<WWXXXXXrV   c                 R    t          j        |           }t          ||||           d S r   )rM   r   re  )rI   r  ro   r   data_nps        rT   _meta_from_listr    s+     htnnGWeUF33333rV   c                 &    t          | |||          S r   )r  )rI   r  ro   r   s       rT   _meta_from_tupler    s     4v666rV   c                     |t           vr"t          | j        d d df         ||           d S | j        } t	          |           }t          t          j        |t          |          |                     d S Nr   )	r_  _meta_from_cudf_seriesilocrq   r   r?   r;   r  rA   )rI   r  r   r  s       rT   _meta_from_cudf_dfr     sp    L  tyAv>>>>>{(..	D6vuU||YWWXXXXXrV   c                     t          | |           t          |           }t          t          j        |t          |          |                     d S r   )r   r   r?   r;   r  rA   rI   r  r   rP  s       rT   r  r     sH    D%   
t
$
$C265<<MMNNNNNrV   c                     t          |           } t          |           }t          t          j        |t          |          |                     d S r   )r  r   r?   r;   r  rA   r"  s       rT   _meta_from_cupy_arrayr$    sE     &&D
t
$
$C265<<MMNNNNNrV   matrixc                    | j         }|J t          ||           |dS t          |          rt          ||||           dS t	          |          rt          ||||           dS t          |          rt          ||||           dS t          |          rt          ||||           dS t          |          r|j        }t          |          rWt          |          r|                                }t                       t          |                                |||           dS t#          |          rt%          ||||           dS t'          |          rt)          ||||           dS t+          |          r"t-          |          }t/          |||           dS t1          |          rt3          |||           dS t5          |          rt7          |||           dS t9          |          rt/          |||           dS t;          |          rt%          ||||           dS t=          |          rj|j                             d          }tC          |j"                  dk    s$|j"        d         dk    s|j"        d         dk    sJ t          ||||           dS tG          |          r(tI          j%        |          }t          ||||           dS tM          d|z   tO          tQ          |                              )zDispatch for meta info.N)ro   r   r|   r   r   zUnsupported type for ))r   r  r  r  r  r  r   re  r+   r  r-   r  r3   r4   r  r  r  r1   rf  r2   rn  r  r  r$  r.   r  r,   r   r  r/   r0   rq   rm  r[   rX   r  rM   r   r|  rQ   rR   )r%  rI   r   ro   r   r   s         rT   dispatch_meta_backendr'    s<    ]Ft$$$|~~ dE6222 tUF333 tUF333 tT5&999t "!$ %% 	"<<>>D!###t}}eVDDDT T4uVDDDD  tUF;;;$  &&dD&111D tT62224 4v...d dD&111D T4uVDDDD {!!'**4:!##tz!}'9'9TZ]a=O=O=O=OtUF3334   
4  eV444
+d2CT

OO
D
DDrV   c                   D     e Zd ZdZdeddf fdZdedefdZd	dZ	 xZ
S )
SingleBatchInternalIterzAn iterator for single batch data to help creating device DMatrix.
    Transforming input directly to histogram with normal single batch data API
    can not access weight for sketching.  So this iterator acts as a staging
    area for meta info.

    kwargsrK   Nc                 h    || _         d| _        t                                          d           d S )Nr   F)release_data)r*  itrJ  rK  )rL  r*  rQ  s     rT   rK  z SingleBatchInternalIter.__init__T  s4     	e,,,,,rV   
input_datac                 Z    | j         dk    rdS | xj         dz  c_          |di | j         dS )Nr   FTr   )r-  r*  )rL  r.  s     rT   nextzSingleBatchInternalIter.next\  s>    7a<<51
!!T[!!!trV   c                     d| _         d S r  )r-  r  s    rT   resetzSingleBatchInternalIter.resetc  s    rV   rK   N)rV  rW  rX  rY  r   rK  r   r   r0  r2  r[  r\  s   @rT   r)  r)  L  s         - - - - - - - -x D           rV   r)  c                    t          |           r| j        } t          |           st          |           rt	          | |||          S t          |           rt          |           } | ||fS t          |           rt          |           ||fS t          |           st          |           rt          j        |           } t          |           rt          | | j                  \  } }| ||fS t!          |           rt#          | d          } | ||fS t%          |           r't#          |                                 d          } | ||fS t)          |           r't#          |                                 d          } | ||fS t+          |           rt-          | |||          \  }}}|||fS t/          |           r#t1                      }|                    |           } t5          |           rt7          | |||          \  }}}|||fS t9          |           rt;          | |||          \  }}}|||fS t=          dt?          tA          |                     z             )NT.Value type is not supported for data iterator:)!r-   r  r,   r.   r  r  r  r  r  r  r  rM   r   r   r   ro   rg   rr   r   r
  r   r3   r  r2   r6   rC   r+   r  r1   ra  r|  rQ   rR   )	rI   ru   rv   r   rp   df_plr   df_parj  s	            rT   _proxy_transformr8  g  s    t "!4 
L.. 
!-0B
 
 	
 d 2$T**]M11$ E &&}DD~~ 4 x~~ 2"444a]M11D 2%dD11]M11D 2%djjllD99]M11D 2%djjllD99]M11$ 3.B$m]/
 /
+}m m]22 "__||D!! 3.D$m]/
 /
+}m m]22T 0+?$m],
 ,
(M= =-//
Ds4PT::V
W
WWrV   c                 v     t           fdt          t          t          t          t
          fD                       S )z0Whether the data is a CUDA-based data structure.c              3   .   K   | ]} |          V  d S r   r   )r   prI   s     rT   r  zis_on_cuda.<locals>.<genexpr>  s?       	 	 	
$	 	 	 	 	 	rV   )anyr,   r.   r-   r  r  r]   s   `rT   
is_on_cudar=    sN     	 	 	 	 
	 	 	 	 	 	rV   proxyc                     t          |          s-t          |          st          |          st          |           t	          |t
                    r|                     |           dS t          |          r|                     |           dS t          |          r&t          |          }|                     |           dS t	          |t          t          f          r|                     |           dS t          |          r&t          |           |                     |           dS t!          |          r|                     |           dS t%          dt'          t)          |                    z             }|)zDispatch for QuantileDMatrix.Nr5  )r.   r2   r5   r^   rc   r  _ref_data_from_cuda_columnarr  _ref_data_from_cuda_interfacer  r  rt  rB  _ref_data_from_columnarr   _ref_data_from_arrayrg   _ref_data_from_csrr|  rQ   rR   )r>  rI   r   s      rT   dispatch_proxy_set_datarE    s     !$''  "$'' 
 	$$(( **4000d ++D111$  &&++D111$)+<=>> %%d+++ $""4(((D   &&&
Ds4PT::V
W
WC
IrV   )NNNr3  r   )rY  ry   	functoolsr  r  rO   typingr   r   r   r   r   r   r	   r
   r   r   r   numpyrM   _data_utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    _typingr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   compatr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   corer;   r<   r=   r>   r?   r@   rA   rB   r  r  r  rC   r   rD   r+  rz   rE   __annotations__r   r_  rU   r^   r   rg   rr   ROWr}   r   r   r   r   r;  r   r   r   r   r   pandas_pyarrow_mapperupdater   r   rQ   r   r   r   r   cacher  r   r  r   r   r$  r  r)  r@  rB  ra  rf  rk  rn  rr  rt  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  re  r  r  r   r  r$  r'  r)  r8  r=  rE  r   rV   rT   <module>rR     s:   $ # #       				                                                                     (                                                          $	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  *//////)))))) .3
OXl+Xl-CC.     	 w'
x 
(?2K 
PT 
 
 
 
UH U U U U U
!x !D ! ! ! !& 4 H    @ &3%60 0 0
0 0 	0
 L)0 L)0 #0 %0 0 0 0<!x !D ! ! ! !4 &3%60 0 0
0 0 	0
 L)0 L)0 #0 %0 0 0 0:!x !D ! ! ! !&0H 02:)> 0 0 0 0
( 
8J+? 
BJ 
 
 
 
( &3%60 0 0
*0 0 	0
 L)0 L)0 #0 %0 0 0 08   "          2 3 3 3   1 2 2 22 8     $'(
'(
3-'( L)'( L)	'(
 '( 8L!8L#99:'( '( '( '(TC[ CT C C C C"+3 +4 + + + +
s t      h}d':;        "; 4     ;-*=!>    $k d     
    > OD O O O O &e & & & &C
C	%
M)
*+C C C CL', ', ', ', ', ', ', ',Z -1?C 
 L) E,
":;<	
 3- h|4h|6LLM   .1
1
1 J1 O	1
 
1 1 1 10 &3%60 0 0
0 0 	0
 0 L)0 E,
":;<0 #0 %0 0 0 060
00&.z&:0DJO0	0 0 0 0"
  	
  L) L) %   0*7 *7 *7 *7 *7} *7 *7 *7Z .
 . . L) . E,
":;<	 .
 Xl3Xl5KKL .  .  .  .T &3%60 0
00 0 	0
 L)0 E,
":;<0 #0 %0 0 0 02 d8S=)    *h 5cD+A    (S
S
S JS O	S
 
S S S S? ? ? ?

 L) E,
":;<	
 Xl3Xl5KKL   < &3%60 0
00 0 	0
 L)0 E,
":;<0 #0 %0 0 0 02  # 5          3%+!6    %, %, %, %, %,m %, %, %,PJ
JL)J E,
":;<J 	J
 \\J J J JZ0
0 0 	0
 L)0 E,
":;<0 0 %0 0 0 0.5 5d 5 5 5 5 U    0
00 0 L)	0
 L)0 %0 0 0 0(;x ;D ; ; ; ;;x ;D ; ; ; ;FX F$ F F F FH     R
RR R L)	R
 L)R %R R R R0( 0y2 0 0 0 0 &3%60 0
0o&0 L)0 L)	0
 #0 %0 0 0 0"8 "	$ " " " " &3%6  
  	
 L) L) # %   *#H #5!1 # # # # &3%6  
  	
 L) L) # %   &&8 &	( 3 & & & &&h &4 & & & & X    2  %%2%6yF yF yF
yF yF 	yF
 L)yF E,
":;<yF yF #yF %yF yF yF yFxHx Hs Ht H H H HY
*YY JY O	Y
 
Y Y Y Y4
44'/
';4EK_4	4 4 4 47
77'/
';7EK_7	7 7 7 7YX Yc Y6? Yt Y Y Y YO O# Ov OSW O O O OO O Ofo ORV O O O O OS=E =E=E#=E+.=E7?
7K=E	=E =E =E =E@    h   62X
2XL)2X L)2X 	2X
 2X 2X 2X 2XjS T    $$
$ 
$ $ $ $ $ $rV   