Ë
    :�DjÍ»  ã                   ó<  — d 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 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 ddlmZm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' eejP                  e	e   e	e   f   Z)dZ*d	d
hZ+dede	e   ddfd„Z,deddfd„Z-dede.fd„Z/dej`                  de1fd„Z2dej`                  de3fd„Z4dede.defd„Z5ejl                  fdedede7de	e   de	e   dede)fd„Z8dede.fd„Z9ejl                  fdedede7de	e   de	e   dede)fd„Z:dede.fd„Z;dede.fd„Z<dede	e   deej`                  e	e   f   fd„Z=dede	e   dej`                  fd „Z>ejl                  fdedede7de	e   de	e   dede)fd!„Z?dede.fd"„Z@dede.fd#„ZAd$d$d$d$d$d$d$d$d%d%d%d&d'œZBd$d$d$d$d$d$d$d$d%d%d&d(œZCd$d$d$d$d$d$d$d$d%d%d%d%d&d)œZDeBj‹                  eC«       eBj‹                  eD«       d*ZFdeddfd+„ZGded,e	eH   de	e   de	e   d-e.dee	e   e	e   f   fd.„ZIdede.fd/„ZJdede.fd0„ZKdede.fd1„ZLdede.fd2„ZMdede.fd3„ZNd4edej`                  fd5„ZOdedeej`                     fd6„ZPded-e.ddfd7„ZQ G d8„ d9«      ZR	 	 	 dvded-e.de	e   de	e   d,e	eH   deeRe	e   e	e   f   fd:„ZSded;eHde	e   d<ejP                  ddf
d=„ZTejl                  fded-e.dede7de	e   de	e   dede)fd>„ZUdede.fd?„ZVded;eHde	e   d<ejP                  ddf
d@„ZWdede.fdA„ZXdedede7d-e.de	e   de	e   de)fdB„ZYdede.fdC„ZZ	 	 dwdede	e   de	e   d,e	eH   dDe	e   deej`                  e	e   e	e   f   fdE„Z[dede	e   de7de	e   de	e   d-e.de)fdF„Z\dede.fdG„Z]dedefdH„Z^dede.fdI„Z_dede.fdJ„Z`deege.f   fdK„ZadedLebde3fdM„Zcdede	e   de	e   d-e.deejP                  ebe	e   e	e   f   f
dN„Zddedede7de	e   de	e   d-e.de)fdO„Zedede.fdP„Zfdede.fdQ„ZgdedefdR„Zhdedede7de	e   de	e   de)fdS„Zidede.fdT„Zjdede.fdU„Zkdede.fdV„Zldede.fdW„Zmdedede7de	e   de	e   de)fdX„Zndede.fdY„Zoejl                  fdede	e   de	e   de	e   dede)fdZ„Zpdede.fd[„Zqejl                  fde
ded\e7de	e   de	e   dede)fd]„Zrdede.fd^„Zsejl                  fde
ded\e7de	e   de	e   dede)fd_„Ztdede.fd`„Zudede.fda„Zvdedefdb„Zwdcejl                  fdededde7de	e   de	e   d-e.dede)fde„Zxded;eHddfdf„Zydej`                  dgeHde	e   d<ejP                  ddf
dh„Zzde
dgeHde	e   d<ejP                  ddf
di„Z{de
dgeHde	e   d<ejP                  ddf
dj„Z|dedgeHd<ejP                  ddfdk„Z}dedgeHd<ejP                  ddfdl„Z~dedgeHd<ejP                  ddfdm„ZdedgeHde	e   d<ejP                  ddf
dn„Z€	 dxdoe ded;eHde	e   ddf
dp„Z� G dq„ dre«      Z‚dede	e   de	e   d-e.def
ds„Zƒdte$dedLe	eb   ddfdu„Z„y)yzData dispatching for DMatrix.é    N)ÚAnyÚCallableÚListÚOptionalÚSequenceÚTupleÚcasté   )	ÚCupyTÚDataTypeÚFeatureNamesÚFeatureTypesÚFloatCompatibleÚ
NumpyDTypeÚPandasDTypeÚTransformedDataÚc_bst_ulong)Ú	DataFrameÚlazy_isinstance)Ú_LIBÚDataIterÚDataSplitModeÚDMatrixÚ_array_hasobjectÚ_check_callÚ_cuda_array_interfaceÚ_ProxyDMatrixÚc_strÚfrom_pystr_to_cstrÚmake_jcargsÚcÚbase_marginÚlabelÚdataÚmissingÚreturnc                 ó”   — |�Ft        j                  |«      s0t        j                  dt	        t        | «      «      z   t        «       y y y )Nz2`missing` is not used for current input data type:)ÚnpÚisnanÚwarningsÚwarnÚstrÚtypeÚUserWarning)r$   r%   s     úPC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\xgboost/data.pyÚ_warn_unused_missingr0   0   s:   € ØÐ¤b§h¡h¨wÔ&7Ü�‰Ø@Ä3ÄtÈDÃzÃ?ÑRÜõ	
ð '8Ðó    c                 ód   — t        | d«      r$t        | j                  «      dk7  rt        d«      ‚y y )NÚshapeé   z8Please reshape the input data into 2-dimensional matrix.)ÚhasattrÚlenr3   Ú
ValueError©r$   s    r/   Ú_check_data_shaper9   8   s/   € Üˆt�WÔ¤# d§j¡j£/°QÒ"6ÜÐSÓTÐTð #7Ðr1   c                 óž   — d}d}	 ddl m} t        | |«      }	 ddl m} t        | |«      }|xs |S # t        $ r Y Œ$w xY w# t        $ r Y Œ w xY w)zPredicate for scipy CSR input.Fr   )Ú	csr_array)Ú
csr_matrix)Úscipy.sparser;   Ú
isinstanceÚImportErrorr<   )r$   Úis_arrayÚ	is_matrixr;   r<   s        r/   Úis_scipy_csrrB   =   óh   € à€HØ€IðÝ*ä˜d IÓ.ˆðÝ+ä˜t ZÓ0ˆ	ð Ò �yÐ øô ò Ùðûô ò Ùðúó   †1 ™A  ±	=¼=Á 	AÁAc                 óv   — t        | «      rt        d«      ‚| j                  }d|v r|d   j                  |d<   |S )Nz<Input data contains `object` dtype.  Expecting numeric data.Úmask)r   r7   Ú__array_interface__)r$   Ú	interfaces     r/   Ú_array_interface_dictrI   P   sD   € Ü˜ÔÜÐWÓXÐXØ×(Ñ(€IØ�ÑØ% fÑ-×AÑAˆ	�&ÑØÐr1   c                 óZ   — t        | «      }t        t        j                  |«      d«      }|S )Núutf-8)rI   ÚbytesÚjsonÚdumps)r$   rH   Úinterface_strs      r/   Ú_array_interfacerP   Y   s'   € Ü% dÓ+€IÜœ$Ÿ*™* YÓ/°Ó9€MØÐr1   Úis_csrc                 ó   — ddl m}m} t        | j                  «      t        | j
                  «      k7  r7t        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r2|r ||||f| j                  ¬«      } | S  ||||f| j                  ¬«      } | S )zxEnsure correct data alignment and data type for scipy sparse inputs. Input should
    be either csr or csc matrix.

    r   )Ú
csc_matrixr<   zlength mismatch: z vs )r3   )r=   rS   r<   r6   Úindicesr$   r7   Ú_ensure_np_dtypeÚindptrÚdtyper3   )r$   rQ   rS   r<   rV   Ú_rT   Úvaluess           r/   Útransform_scipy_sparserZ   _   s  € ÷
 4ä
ˆ4�<‰<ÓœC §	¡	›NÒ*ÜÐ,¬S°·±Ó->Ð,?¸tÄCÈÏ	É	ÃNÐCSÐTÓUÐUä  §¡¨d¯k©k×.?Ñ.?Ó@�I€FˆAÜ! $§,¡,°·±×0BÑ0BÓC�J€GˆQÜ  §¡¨D¯I©I¯O©OÓ<�I€FˆAà�d—k‘kÑ!Ø˜$Ÿ,™,Ñ&Ø˜Ÿ™Ñ"áÙ˜v w°Ð7¸t¿z¹zÔJˆDð €Kñ ˜v w°Ð7¸t¿z¹zÔJˆDØ€Kr1   ÚnthreadÚfeature_namesÚfeature_typesÚdata_split_modec                 ó¤  — 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
   ©r%   r[   r^   )ÚctypesÚc_void_prZ   r   r   ÚXGDMatrixCreateFromCSRrP   rV   rT   r$   r   r3   r    ÚfloatÚintÚbyref©r$   r%   r[   r\   r]   r^   Úhandles          r/   Ú_from_scipy_csrri   x   s¡   € ô �_‰_Ó€FÜ! $¨Ó-€DÜÜ×#Ñ#Ü˜TŸ[™[Ó)Ü˜TŸ\™\Ó*Ü˜TŸY™YÓ'Ü˜Ÿ
™
 1™Ó&ÜÜ˜g›Ü˜G›Ü # OÓ 4ôô
 �L‰L˜Ó ó	
ôð �= -Ð/Ð/r1   c                 óž   — d}d}	 ddl m} t        | |«      }	 ddl m} t        | |«      }|xs |S # t        $ r Y Œ$w xY w# t        $ r Y Œ w xY w)zPredicate for scipy CSC input.Fr   )Ú	csc_array)rS   )r=   rk   r>   r?   rS   )r$   r@   rA   rk   rS   s        r/   Úis_scipy_cscrl   •   rC   rD   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   r`   )ra   rb   rZ   r   r   ÚXGDMatrixCreateFromCSCrP   rV   rT   r$   r   r3   r    rd   re   rf   rg   s          r/   Ú_from_scipy_cscro   ¨   sŸ   € ô �_‰_Ó€FÜ˜4 Ô'ÜÜ×#Ñ#Ü˜TŸ[™[Ó)Ü˜TŸ\™\Ó*Ü˜TŸY™YÓ'Ü˜Ÿ
™
 1™Ó&ÜÜ˜g›Ü˜G›Ü # OÓ 4ôô
 �L‰L˜Ó ó	
ôð �= -Ð/Ð/r1   c                 óž   — d}d}	 ddl m} t        | |«      }	 ddl m} t        | |«      }|xs |S # t        $ r Y Œ$w xY w# t        $ r Y Œ w xY w)zPredicate for scipy COO input.Fr   )Ú	coo_array)Ú
coo_matrix)r=   rq   r>   r?   rr   )r$   r@   rA   rq   rr   s        r/   Úis_scipy_coors   Ä   rC   rD   c                 ó   — t        | d«      S )NrG   ©r5   r8   s    r/   Ú_is_np_array_likerv   ×   s   € Ü�4Ð.Ó/Ð/r1   rW   c                 ó  — t        | «      s,| j                  t        j                  t        j                  fv r#t        j
                  }| j                  |d¬«      } | j                  j                  st        j                  | d¬«      } | |fS )NF©ÚcopyÚA)Úrequirements)
r   rW   r(   Úfloat16Úbool_Úfloat32ÚastypeÚflagsÚalignedÚrequire©r$   rW   s     r/   rU   rU   Û   sf   € ô ˜Ô §¡´·
±
¼B¿H¹HÐ/EÑ!EÜ—
‘
ˆØ�{‰{˜5 uˆ{Ó-ˆØ�:‰:×ÒÜ�z‰z˜$¨SÔ1ˆØ�ˆ;Ðr1   c                 óþ   — 	 | j                   j                  st        j                  | d|¬«      } nt        j                  | |¬«      } t        | |«      \  } }| S # t
        $ r t        j                  | |¬«      } Y Œ3w xY w)zGHandle numpy slice.  This can be removed if we use __array_interface__.T)ry   rW   ©rW   )r€   Úc_contiguousr(   ÚarrayÚasarrayÚAttributeErrorrU   rƒ   s     r/   Ú_maybe_np_slicerŠ   æ   sn   € ð-Ø�z‰z×&Ò&Ü—8‘8˜D t°5Ô9‰Dä—:‘:˜d¨%Ô0ˆDô # 4¨Ó/�K€Dˆ%Ø€Køô ò -Ü�z‰z˜$ eÔ,Šð-ús   ‚AA Á A<Á;A<c                 óB  — 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.r`   )r9   rU   rW   ra   rb   r   r   ÚXGDMatrixCreateFromDenserP   r    rd   re   rf   )r$   r%   r[   r\   r]   r^   rX   rh   s           r/   Ú_from_numpy_arrayr�   ó   s…   € ô �dÔÜ˜t T§Z¡ZÓ0�G€Dˆ!Ü�_‰_Ó€FÜÜ×%Ñ%Ü˜TÓ"ÜÜ˜g›Ü˜G›Ü # OÓ 4ôô
 �L‰L˜Ó ó	
ô
ð �= -Ð/Ð/r1   c                 óV   — 	 dd l }t        | |j                  «      S # t        $ r Y yw xY w©Nr   F)Úpandasr?   r>   r   ©r$   Úpds     r/   Ú_is_pandas_dfr“     s1   € ðÛô �d˜BŸL™LÓ)Ð)øô ò Ùðúó   ‚ œ	(§(c                 óZ   — 	 dd l m} t        | |j                  «      S # t        $ r Y yw xY wr�   )Úmodin.pandasr�   r?   r>   r   r‘   s     r/   Ú_is_modin_dfr—     s1   € ðÝ!ô �d˜BŸL™LÓ)Ð)øô ò Ùðúó   ‚ ž	*©*re   rd   Úi)Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64r|   r~   Ú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                 óL  — t        | d«      rvt        | j                  d«      r`t        | j                  «      D ��cg c]+  \  }}|j                  t        vr| j
                  |   › d|› �‘Œ- }}}ddj                  |«      z   }nd}d}|› dt        › d|› �}t        |«      ‚c c}}w )	NÚdtypesÚ__iter__z: z Invalid columns:ú, Ú z?DataFrame.dtypes for data must be int, float, bool or category.ú )	r5   r°   Ú	enumerateÚnameÚ_pandas_dtype_mapperÚcolumnsÚjoinÚ_ENABLE_CAT_ERRr7   )r$   r™   rW   Ú
bad_fieldsÚerrÚtype_errÚmsgs          r/   Ú_invalid_dataframe_dtyper¿   U  s­   € ô ˆt�XÔ¤7¨4¯;©;¸
Ô#Cô & d§k¡kÓ2÷
á��5Ø�z‰zÔ!5Ñ5ð �|‰|˜A‰Ð˜r % Ò)ð
ˆ
ñ 
ð
 " D§I¡I¨jÓ$9Ñ9‰àˆàP€HØˆj˜œ/Ð*¨!¨C¨5Ð
3€CÜ
�S‹/Ðùó
s   »0B ÚmetaÚenable_categoricalc                 ó‚  — ddl }|€Œ|€Št        | j                  |j                  «      rB| j                  D ��cg c]*  }dj	                  |D �cg c]  }t        |«      ‘Œ c}«      ‘Œ, }}}n(t        | j                  j                  t
        «      «      }|€�|€›g }| j                  D ]Š  }t        |«      r-|j                  t        |j                  j                     «       Œ;t        |«      st        |«      r|r|j                  t         «       Œi|j                  t        |j                     «       ŒŒ ||fS c c}w c c}}w )z)Handle feature info for pandas dataframe.r   Nr´   )r�   r>   r¸   Ú
MultiIndexr¹   r,   ÚlistÚmapr°   Úis_pd_sparse_dtypeÚappendr·   Úsubtyper¶   Úis_pd_cat_dtypeÚis_pa_ext_categorical_dtypeÚCAT_T)	r$   rÀ   r\   r]   rÁ   r’   r™   ÚxrW   s	            r/   Úpandas_feature_inforÍ   g  s  € ó ð Ð  Ü�d—l‘l B§M¡MÔ2ØDHÇLÁL×Q¸q˜SŸX™X°qÖ&9°!¤s¨1¥vÒ&9Õ:ÐQˆMÒQä  §¡×!1Ñ!1´#Ó!6Ó7ˆMð Ð  ØˆØ—[‘[ò 	GˆEÜ! %Ô(Ø×$Ñ$Ô%9¸%¿-¹-×:LÑ:LÑ%MÕNä Ô&Ô*EÀeÔ*LÙ$Ø×$Ñ$¤UÕ+à×$Ñ$Ô%9¸%¿*¹*Ñ%EÕFð	Gð ˜-Ð'Ð'ùò! ':ùÓQs   ¸D;ÁD6Á	D;Ä6D;c                 óæ   — ddl m}m}m}  || «      xr | j                  t
        v } || «      xr | j                  dk(  } || «      xr | j                  t
        v }|xs |xs |xs t        | «      S )z(Whether dtype is a pandas nullable type.r   )Úis_bool_dtypeÚis_float_dtypeÚis_integer_dtyper®   )Úpandas.api.typesrÏ   rÐ   rÑ   r¶   Úpandas_nullable_mapperrÉ   )rW   rÏ   rÐ   rÑ   Úis_intÚis_boolÚis_floats          r/   Úis_nullable_dtyper×   ‡  sl   € çPÑPá˜eÓ$ÒM¨¯©Ô7MÐ)M€Fá˜EÓ"Ò> u§z¡z°YÑ'>€GÙ˜eÓ$ÒM¨¯©Ô7MÐ)M€HØÒB�WÒB ÒB¬O¸EÓ,BÐBr1   c                 ó   — t        | d«      S )z;Return whether dtype is a pyarrow extension type for pandasÚpyarrow_dtyperu   r…   s    r/   Úis_pa_ext_dtyperÚ   ’  s   € ä�5˜/Ó*Ð*r1   c                 ó2   — t        t        | dd«      dd«      S )z)Check whether dtype is a dictionary type.rÙ   Núpyarrow.libÚDictionaryType)r   Úgetattrr…   s    r/   rÊ   rÊ   —  s    € äÜ��¨Ó-¨}Ð>Nóð r1   c                 ó,  — ddl }t        |j                  d«      rmt        |j                  j                  d«      rM|j                  j                  j                  } ||j
                  «       |d«      k\  rddl m} t        | |«      S ddlm	}  || «      S )z)Wrapper for testing pandas category type.r   NÚversionÚVersionú2.1.0©ÚCategoricalDtype©Úis_categorical_dtype)
r�   r5   Úutilrà   rá   Ú__version__rä   r>   rÒ   ræ   )rW   r’   rá   rä   ræ   s        r/   rÉ   rÉ   ž  sl   € ãäˆr�w‰w˜	Ô"¤w¨r¯w©w¯©À	Ô'JØ—'‘'—/‘/×)Ñ)ˆÙ�2—>‘>Ó"¡g¨gÓ&6Ò6Ý/ä˜eÐ%5Ó6Ð6å5á Ó&Ð&r1   c                 ó,  — ddl }t        |j                  d«      rmt        |j                  j                  d«      rM|j                  j                  j                  } ||j
                  «       |d«      k\  rddl m} t        | |«      S ddlm	}  || «      S )z'Wrapper for testing pandas sparse type.r   Nrà   rá   râ   )ÚSparseDtype)Ú	is_sparse)
r�   r5   rç   rà   rá   rè   rê   r>   rÒ   rë   )rW   r’   rá   rê   rë   s        r/   rÆ   rÆ   ®  sk   € ãäˆr�w‰w˜	Ô"¤w¨r¯w©w¯©À	Ô'JØ—'‘'—/‘/×)Ñ)ˆÙ�2—>‘>Ó"¡g¨gÓ&6Ò6Ý*ä˜e [Ó1Ð1å*á�UÓÐr1   Úserc                 ó4  — ddl }ddl}| j                  }|j                  «       }|j	                  «       }|j
                  dk(  xr& |j                  j                  |j                  «       }|j                  |d¬«      }t        ||j                  «      \  }}|S )z Handle pandas pyarrow extention.r   NF)Úzero_copy_onlyÚwritable)r�   Úpyarrowr‡   Ú__arrow_array__Úcombine_chunksÚ
null_countÚtypesÚ
is_booleanr-   Úto_numpyrU   rW   )	rì   r’   ÚpaÚd_arrayÚaaÚchunkÚ	zero_copyÚarrrX   s	            r/   Úpandas_pa_typerý   ¾  s‰   € ãÛð
 .1¯Y©Y€Gð "×1Ñ1Ó3€Bà×'Ñ'Ó)€Eà× Ñ  AÑ%ÒM¨b¯h©h×.AÑ.AÀ%Ç*Á*Ó.MÐ*M€Ið —n‘n°IÈ�nÓN€CÜ˜c 3§9¡9Ó-�F€CˆØ€Jr1   c                 ó�  ‡	‡
‡— ddl }ddl mŠ	mŠ
 g }d|j                  dt        j
                  fd„}d|j                  dt        j
                  fˆ	ˆ
ˆfd„}d|j                  dt        j
                  fˆfd„}t        | j                  | j                  «      D �]*  \  }Št        ‰«      rt        d	«      ‚t        ‰«      r|j                   || |   «      «       ŒCt        ‰«      r|j                  t        | |   «      «       Œlt        ‰«      r|j                   || |   «      «       Œ’t!        ‰«      rtt#        |j$                  j&                  | |   j(                  «      }|j+                  «       }t-        |«      rt/        ||j0                  «      \  }}|j                  |«       �Œ|j                   || |   «      «       �Œ- |S )
z9Handle categorical dtype and extension types from pandas.r   N)ÚFloat32DtypeÚFloat64Dtyperì   r&   c                 ód  — t        | j                  «      rŠt        | j                  j                  j                  t        j                  «      j                  dt        j                  «      j                  t        j                  ¬«      t        j                  «      d   S t        | j                  «      sJ ‚| j                  j                  «       j                  «       j                  «       j                   j                  t        j                  «      j                  dt        j                  «      S )Ng      ð¿©Úna_valuer   )rÉ   rW   rU   ÚcatÚcodesr   r(   r~   ÚreplaceÚnanrö   rÊ   r‡   rñ   rò   Údictionary_encoderT   )rì   s    r/   Ú	cat_codesz(pandas_transform_data.<locals>.cat_codesà  s¿   € Ü˜3Ÿ9™9Ô%Ü#Ø—‘—‘×$Ñ$¤R§Z¡ZÓ0ß‘˜œrŸv™vÓ&ß‘¤2§6¡6�Ó*Ü—
‘
ó	ð
 ñð ô +¨3¯9©9Ô5Ñ5à�I‰I×%Ñ%Ó'ß‰^ÓßÑÓ ß‰W—V‘VœBŸJ™JÓ'ß‰W�Tœ2Ÿ6™6Ó"ð	
r1   c                 óô   •— t        ‰‰«      rt        j                  }n-t        ‰‰«      rt        j                  }nt        j                  }t	        | j                  |t        j                  ¬«      |«      d   S )N©rW   r  r   )r>   r(   r~   r¢   rU   rö   r  )rì   Ú	res_dtyperÿ   r   rW   s     €€€r/   Únu_typez&pandas_transform_data.<locals>.nu_typeó  s]   ø€ ä�e˜\Ô*Ü$&§J¡J‰IÜ˜˜|Ô,ÜŸ
™
‰IäŸ
™
ˆIÜØ�L‰L˜y´2·6±6ˆLÓ:¸Ió
à
ñð 	r1   c                 ó0  •— t         j                  j                  t         j                  «      t         j                  j                  d«      kD  }|xrH t	        | j
                  t         j                  j                  t         j                  j                  f«      }|s"‰t         j                  t         j                  hv r| j                  «       }n/| j                  t         j                  t         j                  ¬«      }t        ||j
                  «      d   S )Nz1.25.0r  r   )r(   ÚlibÚNumpyVersionrè   r>   rW   r°   ÚFloat32DTypeÚFloat64DTyper~   r¢   rö   r  rU   )rì   Únpdtypesr‡   rW   s      €r/   Úoth_typez'pandas_transform_data.<locals>.oth_typeÿ  s¾   ø€ ä—6‘6×&Ñ&¤r§~¡~Ó6¼¿¹×9LÑ9LÈXÓ9VÑVˆØò 
¤
Ø�I‰Iô —	‘	×&Ñ&ä—	‘	×&Ñ&ð	ó!
ˆñ �u¤§¡¬R¯Z©ZÐ 8Ñ8Ø—L‘L“N‰Eð —L‘L¤r§z¡z¼B¿F¹F�LÓCˆEÜ  u§{¡{Ó3°AÑ6Ð6r1   zFpyarrow dictionary type is not supported. Use pandas category instead.)r�   rÿ   r   ÚSeriesr(   ÚndarrayÚzipr¸   r°   rÊ   r7   rÉ   rÇ   rÚ   rý   r×   rÆ   r	   ÚarraysÚSparseArrayrY   Úto_denserv   rU   rW   )r$   r’   Úresultr	  r  r  Úcolrü   rX   rÿ   r   rW   s            @@@r/   Úpandas_transform_datar  Ù  sk  ú€ ãß1à!€Fð
�r—y‘yð 
¤R§Z¡Zó 
ð&
�R—Y‘Yð 
¤2§:¡:÷ 
ð7�b—i‘ið 7¤B§J¡Jõ 7ô* ˜$Ÿ,™,¨¯©Ó4ó /‰
ˆˆUÜ& uÔ-ÜØXóð ô ˜5Ô!Ø�M‰M™) D¨¡IÓ.Õ/Ü˜UÔ#Ø�M‰Mœ.¨¨c©Ó3Õ4Ü˜uÔ%Ø�M‰M™' $ s¡)Ó,Õ-Ü Ô&Ü�r—y‘y×,Ñ,¨d°3©i×.>Ñ.>Ó?ˆCØ—,‘,“.ˆCÜ  Ô%Ü)¨#¨s¯y©yÓ9‘��QØ�M‰M˜#Öà�M‰M™( 4¨¡9Ó-Ö.ð%/ð. €Mr1   c                 óö   — d}| j                   D ]P  }|j                  t        v s.t        |«      s#t	        |«      r|st        |«      st        | «       t        |«      sŒOd}ŒR |rt        j                  d«       yy)zKValidate the input types, returns True if the dataframe is backed by arrow.FTz3Sparse arrays from pandas are converted into dense.N)	r°   r¶   r·   rÆ   rÉ   rÚ   r¿   r*   r+   )r$   rÁ   Úsparse_extensionrW   s       r/   Úpandas_check_dtypesr   .  sp   € àÐà—‘ò 
$ˆà�Z‰ZÔ/Ñ/Ü! %Ô(Ü Ô&Ñ+=Ü˜uÔ%ä$ TÔ*ä˜eÕ$Ø#Ñð
$ñ Ü�‰ÐKÕLð r1   c                   óf   — e Zd ZdZdeej                     ddfd„Zdefd„Z	e
deeef   fd„«       Zy)ÚPandasTransformedz1A storage class for transformed pandas DataFrame.r¸   r&   Nc                 ó   — || _         y ©N)r¸   )Úselfr¸   s     r/   Ú__init__zPandasTransformed.__init__E  s	   € Øˆ�r1   c                 óŠ   — t        t        t        | j                  «      «      }t	        t        j                  |«      d«      }|S )z6Return a byte string for JSON encoded array interface.rK   )rÄ   rÅ   rI   r¸   rL   rM   rN   )r%  ÚaitfsÚsarrayss      r/   Úarray_interfacez!PandasTransformed.array_interfaceH  s2   € ä”SÔ.°·±Ó=Ó>ˆÜœŸ
™
 5Ó)¨7Ó3ˆØˆr1   c                 ód   — | j                   d   j                  d   t        | j                   «      fS )z*Return shape of the transformed DataFrame.r   )r¸   r3   r6   ©r%  s    r/   r3   zPandasTransformed.shapeN  s+   € ð �|‰|˜A‰×$Ñ$ QÑ'¬¨T¯\©\Ó):Ð:Ð:r1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r(   r  r&  rL   r*  Úpropertyr   re   r3   © r1   r/   r"  r"  B  sP   „ Ù;ð  R§Z¡ZÑ 0ð °Tó ð ó ð ð;�u˜S #˜X‘ò ;ó ñ;r1   r"  c                 óÒ   — t        | |«       |r/t        | j                  «      dkD  r|t        vrt	        d|› d�«      ‚t        | ||||«      \  }}t        | «      }t        |«      ||fS )Nr
   zDataFrame for z cannot have multiple columns)r   r6   r¸   Ú_matrix_metar7   rÍ   r  r"  )r$   rÁ   r\   r]   rÀ   r  s         r/   Ú_transform_pandas_dfr5  T  sw   € ô ˜Ð0Ô1Ù”�D—L‘LÓ! AÒ%¨$´lÑ*BÜ˜>¨$¨Ð/LÐMÓNÐNä#6Øˆd�M =Ð2Dó$Ñ €M�=ô # 4Ó(€FÜ˜VÓ$ m°]ÐBÐBr1   r¶   rh   c                 ó  — t        | d|¬«      \  } }}t        | j                  «      dk(  r| j                  d   }n)t        j                  | j                  «      j
                  }t        ||«      \  }}t        ||||«       y )NF)rÀ   r
   r   )r5  r6   r¸   r(   ÚstackÚTrU   Ú_meta_from_numpy)r$   r¶   rW   rh   rX   r‡   s         r/   Ú_meta_from_pandas_dfr:  g  sl   € ô & d¨E¸Ô=�J€Dˆ!ˆQÜ
ˆ4�<‰<Ó˜AÒØ—‘˜Q‘‰ä—‘˜Ÿ™Ó&×(Ñ(ˆä# E¨5Ó1�L€Eˆ5Ü�U˜D %¨Õ0r1   c           
      óò   — t        | |||«      \  }}}t        j                  «       }t        t	        j
                  |j                  «       t        |||¬«      t        j                  |«      «      «       |||fS )N)r[   r%   r^   )	r5  ra   rb   r   r   ÚXGDMatrixCreateFromColumnarr*  r    rf   )	r$   rÁ   r%   r[   r\   r]   r^   Údfrh   s	            r/   Ú_from_pandas_dfr>  w  s{   € ô (<ØÐ  -°ó(Ñ$€Bˆ�}ô �_‰_Ó€FÜÜ×(Ñ(Ø×ÑÓ ÜØ¨À/ôô �L‰L˜Ó ó	
ôð �= -Ð/Ð/r1   c                 óV   — 	 dd l }t        | |j                  «      S # t        $ r Y yw xY wr�   )r�   r?   r>   r  r‘   s     r/   Ú_is_pandas_seriesr@  ‘  s1   € ðÛô �d˜BŸI™IÓ&Ð&øô ò Ùðúr”   c                 ó"  — t        | j                  «      r8| j                  j                  «       j	                  t
        j                  «      } nPt        | j                  «      rt        | «      } n/| j                  t
        j                  t
        j                  ¬«      } t        t        | d| «      «      r| j                  «       } t        | j                  «      dk(  s&| j                  d   dk(  s| j                  d   dk(  sJ ‚t        | |||«       y)z6Help transform pandas series for meta data like labelsr  rW   r
   r   N)rÆ   rW   rY   r  r   r(   r~   rÚ   rý   rö   r  rÞ   r6   r3   r9  )r$   r¶   rW   rh   s       r/   Ú_meta_from_pandas_seriesrB  ™  s¼   € ô ˜$Ÿ*™*Ô%Ø�{‰{×#Ñ#Ó%×,Ñ,¬R¯Z©ZÓ8‰Ü	˜Ÿ™Ô	$Ü˜dÓ#‰à�}‰}œRŸZ™Z´"·&±&ˆ}Ó9ˆäœ' $¨°Ó6Ô7Ø�}‰}‹ˆÜˆt�z‰z‹?˜aÒ 4§:¡:¨a¡=°AÒ#5¸¿¹ÀA¹È!Ò9KÑKÜ�T˜4 ¨Õ/r1   c                 óZ   — 	 dd l m} t        | |j                  «      S # t        $ r Y yw xY wr�   )r–   r�   r?   r>   r  r‘   s     r/   Ú_is_modin_seriesrD  ª  s1   € ðÝ!ô �d˜BŸI™IÓ&Ð&øô ò Ùðúr˜   c                 ób  — | j                   j                  t        vr"t        | j                   «      r|st	        | «       |r+t        | j                   «      r| j
                  j                  } t        | j                  j                  | j                  d   d«      j                  d«      ||||«      S )Nr   r
   rd   )rW   r¶   r·   rÉ   r¿   r  r  r�   rY   Úreshaper3   r   )r$   r%   r[   rÁ   r\   r]   s         r/   Ú_from_pandas_seriesrG  ²  s‡   € ð 	�
‰
�‰Ô3Ñ3Ü˜Ÿ
™
Ô#Ñ(:ä  Ô&Ùœo¨d¯j©jÔ9Ø�x‰x�~‰~ˆÜØ�‰×Ñ˜DŸJ™J q™M¨1Ó-×4Ñ4°WÓ=ØØØØóð r1   c                 ó:   — t        | dd«      xs t        | dd«      S )NÚ	datatableÚFrameÚ	DataTable©r   r8   s    r/   Ú	_is_dt_dfrM  É  s&   € Ü˜4 ¨gÓ6ò ¼/Øˆk˜;ó;ð r1   Ú	meta_typec                 óJ  — ddddœ}ddddœ}|r| j                   d   dkD  rt        d«      ‚|r1|€dn|}| j                  «       dd…d	f   j                  |«      } | ddfS t	        d
„ | j
                  D «       «      }t        |«      D ��	cg c]  \  }}	|	|vr| j                  |   ‘Œ }
}}	|
rd}t        |dj                  |
«      z   «      ‚|€N|€L| j                  }|�t        d«      ‚ t        j                  |j                  «      |«      j                  «       }| ||fS c c}	}w )z.Validate feature names and types if data tabler£   re   rd   )r£   re   Úrealr™   r
   z4DataTable for meta info cannot have multiple columnsNr   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr$  )r¶   )Ú.0Últs     r/   ú	<genexpr>z#_transform_dt_df.<locals>.<genexpr>â  s   è ø€ Ò;¨˜RŸW�WÑ;ùs   ‚zmDataFrame.types for data must be int, float or bool.
                Did not expect the data types in fields r²   z5DataTable has own feature types, cannot pass them in.)r3   r7   rö   r   ÚtupleÚltypesrµ   Únamesr¹   r(   Ú	vectorizeÚgetÚtolist)r$   r\   r]   rÀ   rN  Ú_dt_type_mapperÚ_dt_type_mapper2Údata_types_namesr™   Ú	type_namer»   r¾   s               r/   Ú_transform_dt_dfr_  Ï  sJ  € ð  &¨e¸WÑE€OØ #¨E¸7ÑCÐÙ�—
‘
˜1‘ Ò!ÜÐOÓPÐPÙØ(Ð0‘G°iˆ	ð �}‰}‹šq !˜tÑ$×+Ñ+¨IÓ6ˆØ�T˜4ÐÐäÑ;¨t¯{©{Ô;Ó;Ðô &Ð&6Ó7÷áˆAˆyØ˜OÑ+ð 	�
‰
�1‹ð€Jñ ñ
 ð<ˆä˜˜tŸy™y¨Ó4Ñ4Ó5Ð5àÐ  ØŸ
™
ˆð Ð$ÜÐTÓUÐUØ:œŸ™Ð%5×%9Ñ%9Ó:Ð;KÓL×SÑSÓUˆà� Ð-Ð-ùó%s   Â	Dc                 óú  — |rt        d«      ‚t        | ||d d «      \  } }}t        j                  | j                  z  «       }t        | d«      rpt        | j                  d«      rZt        | j                  «      D ]A  }| j                  j                  |«      }|j                  }	t        j                  |	«      ||<   ŒC n,ddl
m}
 t        | j                  «      D ]  } |
| |«      ||<   Œ t        j                  | j                  z  «       }t        | j                  «      D ]@  }t        j                  | j                  |   j                  j                  d«      «      ||<   ŒB t!        | |«       t        j                  «       }t#        t%        j&                  ||t)        | j*                  d   «      t)        | j*                  d   «      t        j,                  |«      t        j.                  |«      «      «       |||fS )Nz3categorical data in datatable is not supported yet.ÚinternalÚcolumnr   )Úframe_column_data_rrK   r
   )r7   r_  ra   rb   Úncolsr5   ra  Úrangerb  Údata_pointerÚdatatable.internalrc  Úc_char_pÚstypesr¶   Úencoder0   r   r   ÚXGDMatrixCreateFromDTr   r3   rf   Úc_int)r$   r%   r[   r\   r]   rÁ   ÚptrsÚicolr  Úptrrc  Úfeature_type_stringsrh   s                r/   Ú_from_dt_dfrq  ø  s±  € ñ ÜÐNÓOÐOÜ)9Øˆm˜]¨D°$ó*Ñ&€Dˆ-˜ô �O‰O˜dŸj™jÑ(Ó+€DÜˆt�ZÔ ¤W¨T¯]©]¸HÔ%Eä˜$Ÿ*™*Ó%ò 	.ˆDØ—-‘-×&Ñ& tÓ,ˆCØ×"Ñ"ˆCÜŸ™¨Ó-ˆD�ŠJñ	.õ	
ô ˜$Ÿ*™*Ó%ò 	9ˆDÙ,¨T°4Ó8ˆD�ŠJð	9ô #ŸO™O¨d¯j©jÑ8Ó;ÐÜ�d—j‘jÓ!ò 
ˆÜ%+§_¡_Ø�K‰K˜Ñ×"Ñ"×)Ñ)¨'Ó2ó&
Ð˜TÒ"ð
ô
 ˜˜wÔ'Ü�_‰_Ó€FÜÜ×"Ñ"ØØ Ü˜Ÿ
™
 1™Ó&Ü˜Ÿ
™
 1™Ó&Ü�L‰L˜Ó Ü�L‰L˜Ó!ó	
ô	ð �= -Ð/Ð/r1   c                 ó:   — t        | dd«      xs t        | dd«      S )NrÜ   ÚTablezpyarrow._datasetÚDatasetrL  r8   s    r/   Ú	_is_arrowru  ,  s'   € Ü˜4 °Ó8ò ¼OØÐ  )ó=ð r1   c                 ó´   — dd l }dd l}ddlm} t	        | |«      rt        d«      ‚t        |j                  | «      } | j                  |j                  ¬«      }|S )Nr   )rt  zarrow Dataset is not supported.)Útypes_mapper)
r�   rð   Úpyarrow.datasetrt  r>   Ú	TypeErrorr	   rs  Ú	to_pandasÚ
ArrowDtype)r$   r’   r÷   rt  r=  s        r/   Ú_arrow_transformr|  2  sL   € ÛÛÝ'ä�$˜Ô ÜÐ9Ó:Ð:ä�—‘˜$Ó€Dð 
�‰ R§]¡]ˆÓ	3€BØ€Ir1   c                 ó   — t        | dd«      S )Nzcudf.core.dataframer   rL  r8   s    r/   Ú_is_cudf_dfr~  B  s   € Ü˜4Ð!6¸ÓDÐDr1   c                 ój   — t        | dd«      xs t        | dd«      xr t        t        | «      dd«      S )z+Must go before both pandas and cudf checks.zpandas.core.framer   zpandas.core.seriesr  zcudf.pandas.fast_slow_proxyÚ_FastSlowProxyMeta)r   r-   r8   s    r/   Ú_is_cudf_pandasr�  F  sE   € ô 	˜Ð1°;Ó?ò 	AÜ˜4Ð!5°xÓ@òô ÜˆT‹
Ð1Ð3Góðr1   c                  ó–   ‡— 	 ddl mŠ dt        dt        fˆfd„} | S # t        $ r" 	 ddlm}  Y | S # t        $ r ddlm}  Y Y | S w xY ww xY w)Nr   rã   rW   r&   c                 ó   •— t        | ‰«      S r$  )r>   )rW   rä   s    €r/   ræ   z5_get_cudf_cat_predicate.<locals>.is_categorical_dtypeT  s   ø€ Ü˜eÐ%5Ó6Ð6r1   rå   )Úcudfrä   r   r£   r?   Úcudf.api.typesræ   Úcudf.utils.dtypes)ræ   rä   s    @r/   Ú_get_cudf_cat_predicater‡  P  sa   ø€ ð
?Ý)ð	7¬ð 	7´õ 	7ð  Ðøô ò ?ð	?Þ;ð  Ðøô ò 	?ß>àÐð	?úð?ús#   ƒ �	A§0°A¿AÁAÁAr	  c                 óž  ‡	— t        «       }g Š	dt        ddfˆ	fd„}t        | «      r7 || j                  «      r|d   j                  }n| j                  } ||«       nQt        | «      D ]C  \  }} || |   j                  «      r||   }|j                  }n| |   j                  } ||«       ŒE t        t        j                  ‰	«      «      }|S )a#  Extract CuDF __cuda_array_interface__.  This is special as it returns a new list
    of data and a list of array interfaces.  The data is list of categorical codes that
    caller can safely ignore, but have to keep their reference alive until usage of
    array interface is finished.

    rH   r&   Nc                 óT   •— d| v r| d   j                   | d<   ‰j                  | «       y )NrF   )Ú__cuda_array_interface__rÇ   )rH   Ú
interfacess    €r/   rÇ   z&_cudf_array_interfaces.<locals>.appendj  s.   ø€ Ø�YÑØ )¨&Ñ 1× JÑ JˆI�fÑØ×Ñ˜)Õ$r1   r   )	r‡  ÚdictÚ_is_cudf_serrW   rŠ  rµ   r   rM   rN   )
r$   r	  ræ   rÇ   rH   r™   r  r  Úinterfaces_strr‹  s
            @r/   Ú_cudf_array_interfacesr�  `  sË   ø€ ô 3Ó4ÐØ€Jð%œ$ð % 4õ %ô
 �DÔÙ §
¡
Ô+Ø! !™×=Ñ=‰Ià×5Ñ5ˆIÙˆyÕä “oò 	‰FˆAˆsÙ# D¨¡I§O¡OÔ4Ø! !™�Ø!×:Ñ:‘	à  ™I×>Ñ>�	Ù�9Õð	ô (¬¯
©
°:Ó(>Ó?€NØÐr1   c                 óJ  ‡‡— 	 ddl m} t	        «       Št        | «      r2 || j                  «      r^| j                  t        j                  «      } n>| j                  | j                  d¬«      D �ci c]  }|t        j                  “Œ c}«      } t        | «      r| j                  g}n| j                  }t        ˆˆfd„|D «       «      st        | «       |€št        | «      r| j                  g}n�t        | j                   dd«      rB| j                   D ��cg c]*  }dj#                  |D �cg c]  }t%        |«      ‘Œ c}«      ‘Œ, }}}n(t'        | j                   j)                  t$        «      «      }|€Kg }|D ]D  }	 ‰|	«      r‰r|j+                  t,        «       Œ#|j+                  t.        |	j                     «       ŒF g }
t        | «      r< ‰| j                  «      r�‰r›| j0                  j2                  }|
j+                  |«       ns| D ]n  }| |   j                  }	 ‰|	«      r-‰r+| |   j0                  j2                  }|
j+                  |«       ŒG ‰|	«      rt5        t6        «      ‚|
j+                  g «       Œp | |
||fS # t        $ r
 ddlm} Y �Œ‡w xY wc c}w c c}w c c}}w )	Nr   )rÏ   r£   )Úincludec              3   ó^   •K  — | ]$  }|j                   t        v xs  ‰|«      xr ‰–— Œ& y ­wr$  )r¶   r·   )rR  rW   rÁ   ræ   s     €€r/   rT  z%_transform_cudf_df.<locals>.<genexpr>œ  s?   øè ø€ ò ð ð 	�
‰
Ô*Ð*ò 	@Ù  Ó'Ò>Ð,>ó	@ñùs   ƒ*-zcudf.core.multiindexrÃ   r´   )r…  rÏ   r?   rÒ   r‡  r�  rW   r   r(   rž   Úselect_dtypesr°   Úallr¿   r¶   r   r¸   r¹   r,   rÄ   rÅ   rÇ   rË   r·   r  r  r7   rº   )r$   r\   r]   rÁ   rÏ   r  r°   r™   rÌ   rW   r	  r  ræ   s      `        @r/   Ú_transform_cudf_dfr•  �  sH  ù€ ð3Ý0ô 3Ó4Ðä�DÔÙ˜Ÿ™Ô$Ø—;‘;œrŸx™xÓ(‰Dà�{‰{Ø&*×&8Ñ&8ÀÐ&8Ó&HÖI˜sˆS”"—(‘(‰]ÒIó
ˆô �DÔØ—*‘*�‰à—‘ˆäô ð ôô ô
 	! Ô&ð ÐÜ˜ÔØ!ŸY™Y˜K‰MÜ˜TŸ\™\Ð+AÀ<ÔPØDHÇLÁL×Q¸q˜SŸX™X°qÖ&9°!¤s¨1¥vÒ&9Õ:ÐQˆMÒQä  §¡×!1Ñ!1´#Ó!6Ó7ˆMð ÐØˆØò 	GˆEÙ# EÔ*Ñ/AØ×$Ñ$¤UÕ+à×$Ñ$Ô%9¸%¿*¹*Ñ%EÕFð		Gð €IÜ�DÔá §
¡
Ô+Ñ0BØ—H‘H—N‘NˆEØ×Ñ˜UÕ#àò 	%ˆCØ˜‘I—O‘OˆEÙ# EÔ*Ñ/AØ˜S™	Ÿ™×+Ñ+�Ø× Ñ  Õ'Ù% eÔ,Ü ¤Ó1Ð1à× Ñ  Õ$ð	%ð �˜M¨=Ð8Ð8øô{ ò 3ß2Ð2ð3üò Jùò( ':ùÓQs/   „I? Á0JÄJÄ)JÄ;	JÉ?JÊJÊJc           	      óî   — t        | |||«      \  } }}}t        | |«      }t        j                  «       }t	        t        j                  |t        ||¬«      t        j                  |«      «      «       |||fS )N)r[   r%   )	r•  r�  ra   rb   r   r   ÚXGDMatrixCreateFromCudaColumnarr    rf   )	r$   r%   r[   r\   r]   rÁ   r	  rŽ  rh   s	            r/   Ú_from_cudf_dfr˜  Ê  sz   € ô 5GØˆm˜]Ð,>ó5Ñ1€Dˆ)�] Mô ,¨D°)Ó<€NÜ�_‰_Ó€FÜÜ×,Ñ,ØÜ °Ô9Ü�L‰L˜Ó ó	
ôð �= -Ð/Ð/r1   c                 ó   — t        | dd«      S )Nzcudf.core.seriesr  rL  r8   s    r/   r�  r�  á  s   € Ü˜4Ð!3°XÓ>Ð>r1   c                 ó   — t        | d«      S )NrŠ  ru   r8   s    r/   Ú_is_cupy_aliker›  å  s   € Ü�4Ð3Ó4Ð4r1   c                 óæ   — dd l }t        | d«      st        | d«      r|j                  | d¬«      } t        | «      s| j                  |j
                  fv r| j                  |j                  d¬«      } | S )Nr   rŠ  Ú	__array__Frx   )Úcupyr5   r‡   r   rW   r}   r   r~   )r$   rž  s     r/   Ú_transform_cupy_arrayrŸ  é  s_   € Ûä�4Ð3Ô4¼ÀÀ{Ô9SØ�z‰z˜$ UˆzÓ+ˆÜ˜Ô §¡°·
±
¨|Ñ!;Ø�{‰{˜4Ÿ<™<¨eˆ{Ó4ˆØ€Kr1   c           	      ó
  — t        | «      } t        | «      }t        j                  «       }t	        t        j                  ||dœ«      d«      }t        t        j                  ||t        j                  |«      «      «       |||fS )z%Initialize DMatrix from cupy ndarray.)r%   r[   rK   )rŸ  r   ra   rb   rL   rM   rN   r   r   Ú%XGDMatrixCreateFromCudaArrayInterfacerf   )r$   r%   r[   r\   r]   rO   rh   Úconfigs           r/   Ú_from_cupy_arrayr£  ó  ss   € ô ! Ó&€DÜ)¨$Ó/€MÜ�_‰_Ó€FÜ”4—:‘:¨'¸gÑFÓGÈÓQ€FÜÜ×2Ñ2Ø˜6¤6§<¡<°Ó#7ó	
ôð
 �= -Ð/Ð/r1   c                 ó~   — 	 dd l }t        | |j                  j                  j
                  «      S # t        $ r Y yw xY wr�   )Úcupyxr?   r>   ÚscipyÚsparser<   ©r$   r¥  s     r/   Ú_is_cupy_csrr©    ó=   € ðÛô �d˜EŸK™K×.Ñ.×9Ñ9Ó:Ð:øô ò Ùðúó   ‚0 °	<»<c                 ó~   — 	 dd l }t        | |j                  j                  j
                  «      S # t        $ r Y yw xY wr�   )r¥  r?   r>   r¦  r§  rS   r¨  s     r/   Ú_is_cupy_cscr­    rª  r«  c                 óL   — dt        t        | «      «      v xr dt        | «      v S )NÚ	PyCapsuleÚdltensor)r,   r-   r8   s    r/   Ú
_is_dlpackr±    s#   € Øœ#œd 4›j›/Ð)ÒE¨j¼CÀ»IÐ.EÐEr1   c                 ó@   — ddl m} dt        | «      vsJ ‚ || «      } | S )Nr   )Úfrom_dlpackÚused_dltensor)rž  r³  r,   )r$   r³  s     r/   Ú_transform_dlpackrµ    s#   € Ý à¤# d£)Ñ+Ñ+Ù�tÓ€DØ€Kr1   c                 ó6   — t        | «      } t        | ||||«      S r$  )rµ  r£  )r$   r%   r[   r\   r]   s        r/   Ú_from_dlpackr·  #  s!   € ô ˜TÓ"€DÜ˜D '¨7°MÀ=ÓQÐQr1   c                 óB   — t        | t        t        j                  f«      S r$  )r>   r,   ÚosÚPathLiker8   s    r/   Ú_is_urir»  .  s   € Ü�dœS¤"§+¡+Ð.Ó/Ð/r1   c                 ó€  — t        | |«       t        j                  «       }t        j                  t        j
                  j                  | «      «      } t        | «      t        |«      dœ}t        t        j                  |«      d«      }t        t        j                  |t        j                  |«      «      «       |||fS )N)Úurir^   rK   )r0   ra   rb   r¹  ÚfspathÚpathÚ
expanduserr,   re   rL   rM   rN   r   r   ÚXGDMatrixCreateFromURIrf   )r$   r%   r\   r]   r^   rh   Úargsr¢  s           r/   Ú	_from_urirÃ  2  s�   € ô ˜˜wÔ'Ü�_‰_Ó€FÜ�9‰9”R—W‘W×'Ñ'¨Ó-Ó.€Dä�4‹yÜ˜Ó/ñ€Dô ”4—:‘:˜dÓ# WÓ-€FÜ”×+Ñ+¨F´F·L±LÀÓ4HÓIÔJØ�= -Ð/Ð/r1   c                 ó"   — t        | t        «      S r$  )r>   rÄ   r8   s    r/   Ú_is_listrÅ  E  s   € Ü�dœDÓ!Ð!r1   Ú	n_threadsc                 ób   — t        j                  | «      }t        | «       t        ||||||«      S r$  )r(   r‡   r9   r�   )r$   r%   rÆ  r\   r]   r^   r‡   s          r/   Ú
_from_listrÈ  I  s3   € ô �H‰H�T‹N€EÜ�dÔÜØˆw˜	 =°-Àóð r1   c                 ó"   — t        | t        «      S r$  )r>   rU  r8   s    r/   Ú	_is_tuplerÊ  X  s   € Ü�dœEÓ"Ð"r1   c                 ó"   — t        | |||||«      S r$  )rÈ  )r$   r%   rÆ  r\   r]   r^   s         r/   Ú_from_tuplerÌ  \  s   € ô Øˆg�y -°Àóð r1   c                 ó"   — t        | t        «      S r$  )r>   r   r8   s    r/   Ú_is_iterrÎ  i  s   € Ü�dœHÓ%Ð%r1   c                 ó   — t        | d«      S )Nr�  ru   r8   s    r/   Ú_has_array_protocolrÐ  m  s   € Ü�4˜Ó%Ð%r1   c                 óÒ   — t        j                  dt        | «      › d�t        «       	 dd l}	 |j                  j                  | «      } | S # t
        $ r Y y w xY w# t        $ r Y y w xY w)NzUnknown data type: z$, trying to convert it to csr_matrixr   )	r*   r+   r-   r.   r=   r?   r§  r<   Ú	Exception)r$   r¦  s     r/   Ú_convert_unknown_datarÓ  q  sq   € Ü‡M�MØ
œd 4›j˜\Ð)MÐNÜôðÛðØ�|‰|×&Ñ& tÓ,ˆð €Køô ò Ùðûô
 ò Ùðús"   ©A ®A Á	AÁAÁ	A&Á%A&FÚthreadsc           	      óF  — t        | «      st        | «      st        | «       t        | «      rt	        | |||||«      S t        | «      rt        | |||||«      S t        | «      rt	        | j                  «       |||||«      S t        | «      rt        | |||||«      S t        | «      rt        | ||||«      S t        | «      rt        | |||||«      S t        | «      rt!        | |||||«      S t#        | «      rt%        | «      } t'        | «      r| j(                  } t        | «      rddl}|j-                  | «      } t/        | «      rt1        | ||||||«      S t3        | «      st        | «      rt5        | |||||«      S t7        | «      rt9        | ||||«      S t;        | «      rt=        d«      ‚t?        | «      rt=        d«      ‚tA        | «      rtC        | ||||«      S tE        | «      rtG        | |«       tI        | |||||«      S tK        | «      rt1        | |||||«      S tM        | «      rtO        | |||||«      S tQ        | «      r$tS        jT                  | «      }t        |||||«      S tW        | «      }	|	�t	        |	||||«      S t=        dtY        t[        | «      «      z   «      ‚)zDispatch data for DMatrix.r   Nzcupyx CSR is not supported yet.zcupyx CSC is not supported yet.zNot supported type for data.).r�  r@  r9   rB   ri   rl   ro   rs   Útocsrrv   r�   r»  rÃ  rÅ  rÈ  rÊ  rÌ  ru  r|  r�  Ú_fsproxy_fastr�   r   r“   r>  r~  r˜  r›  r£  r©  ry  r­  r±  r·  rM  r0   rq  r—   rD  rG  rÐ  r(   rˆ   rÓ  r,   r-   )
r$   r%   rÔ  r\   r]   rÁ   r^   r’   r‡   Ú	converteds
             r/   Údispatch_data_backendrÙ  ƒ  sî  € ô ˜ÔÔ&7¸Ô&=Ü˜$ÔÜ�DÔÜØ�'˜7 M°=À/ó
ð 	
ô �DÔÜØ�'˜7 M°=À/ó
ð 	
ô �DÔÜØ�J‰J‹LØØØØØó
ð 	
ô ˜ÔÜ Ø�'˜7 M°=À/ó
ð 	
ô ˆt„}Ü˜˜w¨°}ÀoÓVÐVÜ�„~ÜØ�'˜7 M°=À/ó
ð 	
ô �„ÜØ�'˜7 M°=À/ó
ð 	
ô �„Ü Ó%ˆÜ�tÔØ×!Ñ!ˆÜ˜ÔÛà�|‰|˜DÓ!ˆÜ�TÔÜØØØØØØØó
ð 	
ô �4ÔœL¨Ô.ÜØ�'˜7 M°=ÐBTó
ð 	
ô �dÔÜ  g¨w¸À}ÓUÐUÜ�DÔÜÐ9Ó:Ð:Ü�DÔÜÐ9Ó:Ð:Ü�$ÔÜ˜D '¨7°MÀ=ÓQÐQÜ�„Ü˜T 7Ô+ÜØ�'˜7 M°=ÐBTó
ð 	
ô �DÔÜØÐ$ g¨w¸À}ó
ð 	
ô ˜ÔÜ"Ø�'˜7Ð$6¸À}ó
ð 	
ô ˜4Ô Ü—
‘
˜4Ó ˆÜ  ¨°¸-ÈÓWÐWä% dÓ+€IØÐÜØ�w ¨¸ó
ð 	
ô Ð2´S¼¸d»³_ÑDÓ
EÐEr1   c                 ó|  — t        | d«      r°d| j                  › d|› �}|t        v r$t        | j                  «      dkD  rt	        |«      ‚y t        | j                  «      dkD  s<t        | j                  «      dk(  rA| j                  d   dk7  r.| j                  d   dk7  rt	        d| j                  › d|› �«      ‚y y y y )Nr3   zInvalid shape: z for r4   r
   r   )r5   r3   r4  r6   r7   )r$   r¶   r¾   s      r/   Ú_validate_meta_shaperÛ  æ  s²   € Üˆt�WÔØ §
¡
˜|¨5°°Ð7ˆØ”<ÑÜ�4—:‘:‹ Ò"Ü  “oÐ%Øäˆt�z‰z‹?˜QÒÜ�—
‘
‹O˜qÒ  d§j¡j°¡m°qÒ&8¸T¿Z¹ZÈ¹]ÈaÒ=Oä˜¨t¯z©z¨l¸%À¸vÐFÓGÐGð >PÐ&8Ð ð r1   Úfieldc                 óÜ   — t        | |«      \  } }| j                  }|j                  dd «      �t        d«      ‚t	        | «      }t        t        j                  |t        |«      |«      «       y )NrF   zMasked array is not supported.)	rU   rG   rY  r7   rP   r   r   ÚXGDMatrixSetInfoFromInterfacer   )r$   rÜ  rW   rh   rH   rO   s         r/   r9  r9  ô  sa   € ô # 4¨Ó/�K€Dˆ%Ø×(Ñ(€IØ‡}�}�V˜TÓ"Ð.ÜÐ9Ó:Ð:Ü$ TÓ*€MÜ”×2Ñ2°6¼5À»<ÈÓWÕXr1   c                 óJ   — t        j                  | «      }t        ||||«       y r$  )r(   r‡   r9  )r$   rÜ  rW   rh   Údata_nps        r/   Ú_meta_from_listrá    s   € ô �h‰h�t‹n€GÜ�W˜e U¨FÕ3r1   c                 ó   — t        | |||«      S r$  )rá  )r$   rÜ  rW   rh   s       r/   Ú_meta_from_tuplerã  	  s   € ô ˜4 ¨¨vÓ6Ð6r1   c                 óÒ   — |t         vrt        | j                  d d …df   ||«       y | j                  } t	        | «      }t        t        j                  |t        |«      |«      «       y ©Nr   )	r4  Ú_meta_from_cudf_seriesÚilocrY   r   r   r   rÞ  r   ©r$   rÜ  rh   rH   s       r/   Ú_meta_from_cudf_dfré    sP   € Ø”LÑ Ü˜tŸy™yª¨A¨™°°vÕ>à�{‰{ˆÜ)¨$Ó/ˆ	Ü”D×6Ñ6°v¼uÀU»|ÈYÓWÕXr1   c                 ó®   — t        t        j                  | j                  gd¬«      d«      }t	        t        j                  |t        |«      |«      «       y ©Nr4   )ÚindentrK   )rL   rM   rN   rŠ  r   r   rÞ  r   rè  s       r/   ræ  ræ    s=   € Ü”d—j‘j $×"?Ñ"?Ð!@ÈÔKÈWÓU€IÜ”×2Ñ2°6¼5À»<ÈÓSÕTr1   c                 óÄ   — t        | «      } t        t        j                  | j                  gd¬«      d«      }t        t        j                  |t        |«      |«      «       y rë  )	rŸ  rL   rM   rN   rŠ  r   r   rÞ  r   rè  s       r/   Ú_meta_from_cupy_arrayrî    sG   € Ü  Ó&€DÜ”d—j‘j $×"?Ñ"?Ð!@ÈÔKÈWÓU€IÜ”×2Ñ2°6¼5À»<ÈÓSÕTr1   c                 óF   — t        | d d ||«      \  } }}t        | |||«       y r$  )r_  r9  )r$   rÜ  rW   rh   rX   s        r/   Ú_meta_from_dtrð  #  s*   € ô " $¨¨d°E¸5ÓA�J€Dˆ!ˆQÜ�T˜5 %¨Õ0r1   Úmatrixc                 ón  — | j                   }|€J ‚t        ||«       |€yt        |«      rt        ||||«       yt	        |«      rt        ||||«       yt        |«      rt        ||||«       yt        |«      rt        |«      }t        |«      r|j                  }t        |«      rt        ||||¬«       yt        |«      rt        ||||«       yt!        |«      rt#        |«      }t%        |||«       yt'        |«      rt%        |||«       yt)        |«      rt+        |||«       yt-        |«      rt/        |||«       yt1        |«      rt3        ||||«       yt5        |«      rt        ||||¬«       yt7        |«      rh|j8                  j;                  d«      }t=        |j>                  «      dk(  s&|j>                  d   dk(  s|j>                  d   dk(  sJ ‚t        ||||«       ytA        |«      r$tC        jD                  |«      }t        ||||«       ytG        d|z   tI        tK        |«      «      «      ‚)zDispatch for meta info.N)rW   rh   rd   r
   r   zUnsupported type for )&rh   rÛ  rÅ  rá  rÊ  rã  rv   r9  ru  r|  r�  r×  r“   r:  r@  rB  r±  rµ  rî  r›  r�  ræ  r~  ré  rM  rð  r—   rD  rY   r   r6   r3   rÐ  r(   rˆ   ry  r,   r-   )rñ  r$   r¶   rW   rh   r‡   s         r/   Údispatch_meta_backendró  *  sþ  € ð �]‰]€FØÐÑÜ˜˜tÔ$Ø€|ØÜ�„~Ü˜˜d E¨6Ô2ØÜ�„Ü˜˜t U¨FÔ3ØÜ˜ÔÜ˜˜t U¨FÔ3ØÜ�„Ü Ó%ˆÜ�tÔØ×!Ñ!ˆÜ�TÔÜ˜T 4¨u¸VÕDØÜ˜ÔÜ   t¨U°FÔ;ØÜ�$ÔÜ  Ó&ˆÜ˜d D¨&Ô1ØÜ�dÔÜ˜d D¨&Ô1ØÜ�DÔÜ˜t T¨6Ô2ØÜ�4ÔÜ˜4  vÔ.ØÜ�„Ü�d˜D %¨Ô0ØÜ�DÔÜ˜T 4¨u¸VÕDØÜ˜ÔØ�{‰{×!Ñ! 'Ó*ˆÜ�4—:‘:‹ !Ò# t§z¡z°!¡}¸Ò'9¸T¿Z¹ZÈ¹]ÈaÒ=OÑOÜ˜˜t U¨FÔ3ØÜ˜4Ô ä—
‘
˜4Ó ˆÜ˜  e¨VÔ4ØÜ
Ð+¨dÑ2´C¼¸T»
³OÓ
DÐDr1   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 )
ÚSingleBatchInternalIterzüAn 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.

    Úkwargsr&   Nc                 óB   •— || _         d| _        t        ‰| �  d¬«       y )Nr   F)Úrelease_data)rö  ÚitÚsuperr&  )r%  rö  Ú	__class__s     €r/   r&  z SingleBatchInternalIter.__init__n  s#   ø€ ØˆŒØˆŒô 	‰Ñ eÐÕ,r1   Ú
input_datac                 ór   — | j                   dk(  ry| xj                   dz  c_          |di | j                  ¤Ž y)Nr
   r   r2  )rù  rö  )r%  rü  s     r/   ÚnextzSingleBatchInternalIter.nextv  s/   € Ø�7‰7�aŠ<ØØ�Š�1‰�ÙÑ!�T—[‘[Ò!Ør1   c                 ó   — d| _         y rå  )rù  r,  s    r/   ÚresetzSingleBatchInternalIter.reset}  s	   € Øˆ�r1   )r&   N)r-  r.  r/  r0  r   r&  r   re   rþ  r   Ú__classcell__)rû  s   @r/   rõ  rõ  f  s3   ø„ ñð- ð -¨õ -ð˜xð ¨Có ÷r1   rõ  c                 óf  — t        | «      r| j                  } t        | «      st        | «      rt	        | |||«      S t        | «      rt        | «      } | d ||fS t        | «      rt        | «      d ||fS t        | «      st        | «      rt        j                  | «      } t        | «      rt        | | j                  «      \  } }| d ||fS t!        | «      rt#        | d«      } | d ||fS t%        | «      r t#        | j'                  «       d«      } | d ||fS t)        | «      r t#        | j'                  «       d«      } | d ||fS t+        | «      rdd l}|j/                  | «      } t1        | «      rt3        | «      } t5        | «      rt7        | |||«      \  }}}|d ||fS t9        dt;        t=        | «      «      z   «      ‚)NTr   ú.Value type is not supported for data iterator:)r�  r×  r~  r�  r•  r›  rŸ  r±  rµ  rÅ  rÊ  r(   r‡   rv   rU   rW   rB   rZ   rl   rÖ  rs   r@  r�   r   ru  r|  r“   r5  ry  r,   r-   )r$   r\   r]   rÁ   rX   r’   r=  s          r/   Ú_proxy_transformr  �  s®  € ô �tÔØ×!Ñ!ˆÜ�4ÔœL¨Ô.Ü!Ø�- Ð0Bó
ð 	
ô �dÔÜ$ TÓ*ˆØ�T˜=¨-Ð7Ð7Ü�$ÔÜ  Ó&¨¨m¸]ÐJÐJÜ�„~œ 4œÜ�x‰x˜‹~ˆÜ˜ÔÜ" 4¨¯©Ó4‰ˆˆaØ�T˜=¨-Ð7Ð7Ü�DÔÜ% d¨DÓ1ˆØ�T˜=¨-Ð7Ð7Ü�DÔÜ% d§j¡j£l°DÓ9ˆØ�T˜=¨-Ð7Ð7Ü�DÔÜ% d§j¡j£l°DÓ9ˆØ�T˜=¨-Ð7Ð7Ü˜ÔÛà�|‰|˜DÓ!ˆÜ�„Ü Ó%ˆÜ�TÔÜ+?ØÐ$ m°]ó,
Ñ(ˆˆM˜=ð �4˜¨Ð5Ð5Ü
ÐDÄsÌ4ÐPTË:ÃÑVÓ
WÐWr1   Úproxyc                 ó�  — t        |«      st        |«      st        |«       t        |«      r!| j	                  |t        t        |«      «       yt        |«      r!| j	                  |t        t        |«      «       yt        |«      r| j                  |«       yt        |«      rt        |«      }| j                  |«       yt        |t        «      r| j                  |«       yt        |«      rt        |«       | j                  |«       yt!        |«      r| j#                  |«       yt%        dt'        t)        |«      «      z   «      }|‚)zDispatch for QuantileDMatrix.Nr  )r�  r@  r9   r~  Ú_ref_data_from_cuda_columnarr	   r   r›  Ú_ref_data_from_cuda_interfacer±  rµ  r>   r"  Ú_ref_data_from_pandasrv   Ú_ref_data_from_arrayrB   Ú_ref_data_from_csrry  r,   r-   )r  r$   r	  r¼   s       r/   Údispatch_proxy_set_datar  ®  s  € ô ˜ÔÔ&7¸Ô&=Ü˜$Ôä�4Ôà×*Ñ*¨4´´d¸IÓ1FÔGØÜ�DÔà×*Ñ*¨4´´d¸IÓ1FÔGØÜ�dÔØ×+Ñ+¨DÔ1ØÜ�$ÔÜ  Ó&ˆØ×+Ñ+¨DÔ1Øä�$Ô)Ô*Ø×#Ñ# DÔ)ØÜ˜ÔÜ˜$ÔØ×"Ñ" 4Ô(ØÜ�DÔØ× Ñ  Ô&Øä
ÐDÄsÌ4ÐPTË:ÃÑVÓ
W€CØ
€Ir1   )NNN)NNr$  )…r0  ra   rM   r¹  r*   Útypingr   r   r   r   r   r   r	   Únumpyr(   Ú_typingr   r   r   r   r   r   r   r   r   Úcompatr   r   Úcorer   r   r   r   r   r   r   r   r   r   r    rb   ÚDispatchedDataBackendReturnTyperË   r4  r0   r9   r£   rB   r  rŒ  rI   rL   rP   rZ   ÚROWre   ri   rl   ro   rs   rv   rU   rŠ   r�   r“   r—   r·   rÓ   Úpandas_pyarrow_mapperÚupdaterº   r¿   r,   rÍ   r×   rÚ   rÊ   rÉ   rÆ   rý   r  r   r"  r5  r:  r>  r@  rB  rD  rG  rM  r_  rq  ru  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Û  r9  rá  rã  ré  ræ  rî  rð  ró  rõ  r  r  r2  r1   r/   ú<module>r     sõ  ðñ $Û Û Û 	Û ß G× GÑ Gã ÷
÷ 
õ 
÷ /÷÷ ÷ ñ ð #(Ø
‡O�O�X˜lÑ+¨X°lÑ-CÐCñ#Ð ð 	€ð ˜wÐ'€ð
˜xð 
°(¸?Ñ2Kð 
ÐPTó 
ðU˜Hð U¨ó Uð
!�xð ! Dó !ð& §
¡
ð ¨tó ð˜2Ÿ:™:ð ¨%ó ð ð °4ð ¸Hó ð> &3×%6Ñ%6ñ0Ø
ð0àð0ð ð0ð ˜LÑ)ð	0ð
 ˜LÑ)ð0ð #ð0ð %ó0ð:!�xð ! Dó !ð2 &3×%6Ñ%6ñ0Ø
ð0àð0ð ð0ð ˜LÑ)ð	0ð
 ˜LÑ)ð0ð #ð0ð %ó0ð8!�xð ! Dó !ð&0˜Hð 0¨ó 0ðØ
ðØ# JÑ/ðà
ˆ2�:‰:�x 
Ñ+Ð+Ñ,óð
˜(ð 
¨8°JÑ+?ð 
ÀBÇJÁJó 
ð& &3×%6Ñ%6ñ0Ø
ð0àð0ð ð0ð ˜LÑ)ð	0ð
 ˜LÑ)ð0ð #ð0ð %ó0ð4*˜ð * Tó *ð*�xð * Dó *ð ØØØØØØØØØØØñÐ ð" ØØØØØØØØØØñÐ ð ØØØØØØØØØØØØñÐ ð  × Ñ Ð2Ô 3Ø × Ñ Ð1Ô 2ð2ð ð 8ð °ó ð$(Ø
ð(à
�3‰-ð(ð ˜LÑ)ð(ð ˜LÑ)ð	(ð
 ð(ð ˆ8�LÑ! 8¨LÑ#9Ð9Ñ:ó(ð@C˜[ð C¨Tó Cð+˜3ð + 4ó +ð
 sð ¨tó ð'˜;ð '¨4ó 'ð ˜kð ¨dó ð ˜ð  §
¡
ó ð6R 	ð R¨d°2·:±:Ñ.>ó RðjM˜ið M¸Tð MÀdó M÷(;ñ ;ð* -1Ø,0ØñCØ
ðCàðCð ˜LÑ)ðCð ˜LÑ)ð	Cð
 �3‰-ðCð Ð˜h |Ñ4°h¸|Ñ6LÐLÑMóCð&1Ø
ð1à
ð1ð �JÑð1ð �O‰Oð	1ð
 
ó1ð. &3×%6Ñ%6ñ0Ø
ð0àð0ð ð0ð ð	0ð
 ˜LÑ)ð0ð ˜LÑ)ð0ð #ð0ð %ó0ð4'˜Hð '¨ó 'ð0Ø
ð0Øð0Ø&.¨zÑ&:ð0ØDJÇOÁOð0à	ó0ð"'˜8ð '¨ó 'ðØ
ðàðð ðð ð	ð
 ˜LÑ)ðð ˜LÑ)ðð %óð.�Hð  ó ð Ø&*ñ&.Ø
ð&.à˜LÑ)ð&.ð ˜LÑ)ð&.ð �3‰-ð	&.ð
 ˜
Ñ#ð&.ð ˆ2�:‰:�x Ñ-¨x¸Ñ/EÐEÑFó&.ðR10Ø
ð10à�oÑ&ð10ð ð10ð ˜LÑ)ð	10ð
 ˜LÑ)ð10ð ð10ð %ó10ðh�Hð  ó ð˜8ð ¨ó ð E�hð E 4ó Eð˜(ð  tó ð  ¨3¨%°¨+Ñ!6ó  ð  ð °dð ¸uó ðBF9Ø
ðF9à˜LÑ)ðF9ð ˜LÑ)ðF9ð ð	F9ð
 ˆ6�?‰?˜D (¨<Ñ"8¸(À<Ñ:PÐPÑQóF9ðR0Ø
ð0àð0ð ð0ð ˜LÑ)ð	0ð
 ˜LÑ)ð0ð ð0ð %ó0ð.?�xð ? Dó ?ð5˜ð 5 dó 5ð ð ¨Uó ð0Ø
ð0àð0ð ð0ð ˜LÑ)ð	0ð
 ˜LÑ)ð0ð %ó0ð(;�xð ; Dó ;ð;�xð ; Dó ;ðF�Xð F $ó Fð˜Hð ¨ó ðRØ
ðRàðRð ðRð ˜LÑ)ð	Rð
 ˜LÑ)ðRð %óRð0�(ð 0˜tó 0ð &3×%6Ñ%6ñ0Ø
ð0à�oÑ&ð0ð ˜LÑ)ð0ð ˜LÑ)ð	0ð
 #ð0ð %ó0ð&"�8ð " ó "ð &3×%6Ñ%6ñØ
ðàðð ðð ˜LÑ)ð	ð
 ˜LÑ)ðð #ðð %óð#�Hð # ó #ð &3×%6Ñ%6ñ
Ø
ð
àð
ð ð
ð ˜LÑ)ð	
ð
 ˜LÑ)ð
ð #ð
ð %ó
ð&�8ð & ó &ð&˜hð &¨4ó &ð ð ¨Xó ð0  %Ø%2×%6Ñ%6ñ`FØ
ð`Fàð`Fð ð`Fð ˜LÑ)ð	`Fð
 ˜LÑ)ð`Fð ð`Fð #ð`Fð %ó`FðFH˜xð H¨sð H°tó HðYØ
�*‰*ðYàðYð �JÑðYð �O‰Oð	Yð
 
óYð4Ø
ð4Øð4Ø'/°
Ñ';ð4ØEKÇ_Á_ð4à	ó4ð7Ø
ð7Øð7Ø'/°
Ñ';ð7ØEKÇ_Á_ð7à	ó7ðY˜Xð Y¨cð Y¸6¿?¹?ð YÈtó YðU ð U°#ð U¸v¿¹ð UÐSWó Uð
U ð U°ð U¸f¿o¹oð UÐRVó Uð1Ø
ð1Øð1Ø'/°
Ñ';ð1ØEKÇ_Á_ð1à	ó1ð OSñ9EØð9EØ#ð9EØ+.ð9EØ7?À
Ñ7Kð9Eà	ó9Eôx˜hô ð6*XØ
ð*Xà˜LÑ)ð*Xð ˜LÑ)ð*Xð ð	*Xð
 ó*XðZ%Øð%à
ð%ð ˜‰~ð%ð 
ô	%r1   