§
    í6¢jÔ  ã                  óš   — d Z ddlmZ ddlZddlZddlmZ ddlmZ dZ	dZ
dd	d	d
d
d
dd
ddddœZd+d„Zd,d„Zd-d„Zd.d „Zd/d"„Zd0d&„Zd1d*„ZdS )2zGParse Path of Exile .datc64 using poe-tool-dev/dat-schema column types.é    )ÚannotationsN)ÚPath)ÚAnys   »»»»»»»»l   þ~ý}û{÷w é   é   é   é   é   )ÚboolÚi16Úu16Úi32Úu32Úf32ÚstringÚenumrowÚ
foreignrowÚrowÚarrayÚpathú
str | PathÚreturnúdict[str, Any]c                ól   — t          j        t          | ¦  «                             d¬¦  «        ¦  «        S )Nzutf-8)Úencoding)ÚjsonÚloadsr   Ú	read_text)r   s    ú>C:\Projects\AutoPOE2\src\assistant_tool\ggpk_extract\datc64.pyÚload_schemar       s)   € ÝŒ:•d˜4‘j”j×*Ò*°GÐ*Ñ<Ô<Ñ=Ô=Ð=ó    ÚschemaÚ
table_nameÚstrúdict[str, Any] | Nonec                óÀ   — d }|                       d¦  «        pg D ]C}|                      d¦  «        |k    rŒ|                      d¦  «        }|dv r|c S |dk    r|p|}ŒD|S )NÚtablesÚnameÚvalidFor)r   é   r   )Úget)r"   r#   ÚfoundÚtableÚvalids        r   Úpoe2_table_schemar/      s|   € Ø#'€EØ—’˜HÑ%Ô%Ð+¨ð #ð #ˆØ�9Š9�VÑÔ 
Ò*Ð*ØØ—	’	˜*Ñ%Ô%ˆØ�Fˆ?ˆ?ØˆLˆLˆLØ�AŠ:ˆ:Ø�N˜UˆEøØ€Lr!   ÚcolumnÚintc                óª   — |                       d¦  «        rdS t                                t          |                       d¦  «        pd¦  «        d¦  «        S )Nr   r
   Útyper   r   )r+   Ú_SCALAR_SIZEr$   )r0   s    r   Ú	cell_sizer5   ,   sJ   € Ø‡z‚z�'ÑÔð ØˆrÝ×Ò�C §
¢
¨6Ñ 2Ô 2Ð ;°eÑ<Ô<¸aÑ@Ô@Ð@r!   ÚbufÚbytesÚposÚneedr   c                óB   — d|cxk    ot          | ¦  «        |z
  k    nc S )Nr   )Úlen)r6   r8   r9   s      r   Ú_ok_offr<   2   s.   € Ø�Ð&Ð&Ò&Ð&•s˜3‘x”x $‘Ò&Ð&Ð&Ð&Ð&r!   Úoffsetc                ó  — t          | |d¦  «        sdS |}|dz   t          | ¦  «        k     rA| |         dk    r| |dz            dk    rn%|dz  }||z
  dk    rn|dz   t          | ¦  «        k     °A| ||…                              dd¦  «        S )Nr   Ú r   r   i@B zutf-16leÚreplace)r<   r;   Údecode)r6   r=   Úends      r   Ú_read_utf16zrC   6   s©   € Ý�3˜ Ñ"Ô"ð ØˆrØ
€CØ
�‰'•C˜‘H”HÒ
Ð
ØˆsŒ8�qŠ=ˆ=˜S  q¡œ\¨QÒ.Ð.ØØˆq‰ˆØ�‰<˜)Ò#Ð#Øð �‰'•C˜‘H”HÒ
Ð
ð ˆv�cˆzŒ?×!Ò! *¨iÑ8Ô8Ð8r!   ÚkindÚdata_offsetr   c                óÚ  — | dk    rt          ||d¦  «        r||         dk    ndS | dk    r/t          ||d¦  «        rt          j        d||¦  «        d         ndS | dk    r/t          ||d¦  «        rt          j        d	||¦  «        d         ndS | d
v r/t          ||d¦  «        rt          j        d||¦  «        d         ndS | dk    r/t          ||d¦  «        rt          j        d||¦  «        d         ndS | dk    r/t          ||d¦  «        rt          j        d||¦  «        d         ndS | dk    rct          ||d¦  «        sdS t          j        d||¦  «        d         }|t          k    st          |||z   d¦  «        sdS t	          |||z   ¦  «        S | dv rQt          ||d¦  «        sd S t          j        d||¦  «        d         }|dt          fv s|dk    rd S t          |¦  «        S d S )Nr   r   r   Fr   r   z<hr   z<H)r   r   r   z<ir   ú<Ir   z<fg        r   r	   r?   ú<Q©r   r   z<qéÿÿÿÿi€–˜ )r<   ÚstructÚunpack_fromÚNULL_REFrC   r1   )rD   r6   r8   rE   ÚrelÚidxs         r   Ú_read_scalarrP   C   s4  € Øˆv‚~€~Ý '¨¨S°!Ñ 4Ô 4Ð?ˆs�3Œx˜1Š}ˆ}¸%Ð?Øˆu‚}€}Ý8?ÀÀSÈ!Ñ8LÔ8LÐS�vÔ! $¨¨SÑ1Ô1°!Ô4Ð4ÐRSÐSØˆu‚}€}Ý8?ÀÀSÈ!Ñ8LÔ8LÐS�vÔ! $¨¨SÑ1Ô1°!Ô4Ð4ÐRSÐSØÐ!Ð!Ð!Ý8?ÀÀSÈ!Ñ8LÔ8LÐS�vÔ! $¨¨SÑ1Ô1°!Ô4Ð4ÐRSÐSØˆu‚}€}Ý8?ÀÀSÈ!Ñ8LÔ8LÐS�vÔ! $¨¨SÑ1Ô1°!Ô4Ð4ÐRSÐSØˆu‚}€}Ý8?ÀÀSÈ!Ñ8LÔ8LÐU�vÔ! $¨¨SÑ1Ô1°!Ô4Ð4ÐRUÐUØˆxÒÐÝ�s˜C Ñ#Ô#ð 	Ø�2ÝÔ   s¨CÑ0Ô0°Ô3ˆØ•(Š?ˆ?¥'¨#¨{¸SÑ/@À!Ñ"DÔ"Dˆ?Ø�2Ý˜C ¨sÑ!2Ñ3Ô3Ð3ØÐ$Ð$Ð$Ý�s˜C Ñ#Ô#ð 	Ø�4ÝÔ   s¨CÑ0Ô0°Ô3ˆØ�2•x�.Ð Ð  C¨*Ò$4Ð$4Ø�4Ý�3‰xŒxˆØˆ4r!   ÚrawÚtable_schemaúlist[dict[str, Any]]c                ó
  — t          | ¦  «        dk     rg S t          j        d| d¦  «        d         }|                      t          d¦  «        }|dk     r%t          |                     d¦  «        › d�¦  «        ‚|dk    rg S |dz
  }||z  dk    r+t          |                     d¦  «        › d|› d|› d	�¦  «        ‚||z  }t          |                     d
¦  «        pg ¦  «        }g }d}|D ]6}	t          |	¦  «        }
||
z   |k    r n| 	                    |	¦  «         ||
z  }Œ7|sAt          |                     d¦  «        › dt          d„ |D ¦   «         ¦  «        › d|› �¦  «        ‚|}|}g }t          |¦  «        D �]
}d||z  z   }d|i}d}d}|D �]Þ}	t          |	                     d¦  «        pd¦  «        }|	                     d¦  «        pd|› �}|	                     d¦  «        s|dz  }t          |	¦  «        }
||z   }|	                     d¦  «        s|dk    �r9t          | |d¦  «        sg ||<   ||
z  }Œ§t          j        d| |¦  «        d         }t          j        d| |dz   ¦  «        d         }|dk    rdn|}|dv rdnt                               |d¦  «        }|dk    rd}g }|t          k     rœt          | ||z   d¦  «        rˆt!          t#          |¦  «        d¦  «        }t          |¦  «        D ][}||z   ||z  z   }t          | ||dk    rdnt!          |d¦  «        ¦  «        s n&| 	                    t%          || ||¦  «        ¦  «         Œ\|||<   nt%          || ||¦  «        ||<   ||
z  }�Œà| 	                    |¦  «         �Œ|S )Né   rG   r   r   r(   z: missing 0xBB data markerz: rowSize does not divide (z / ú)Úcolumnsz: schema width c              3  ó4   K  — | ]}t          |¦  «        V — Œd S )N)r5   )Ú.0Úcs     r   ú	<genexpr>zparse_datc64.<locals>.<genexpr>{   s(   è è € Ð;ZÐ;ZÈQ½IÀa¹L¼LÐ;ZÐ;ZÐ;ZÐ;ZÐ;ZÐ;Zr!   z > rowSize Ú_rowr3   r   Úcol_r   r   r
   rH   r	   rI   r   i   r   )r;   rK   rL   ÚfindÚ	BB_MARKERÚ
ValueErrorr+   Úlistr5   ÚappendÚsumÚranger$   r<   r4   rM   Úminr1   rP   )rQ   rR   Ú	row_countÚ	marker_atÚrow_spanÚrow_sizerW   ÚfittedÚusedÚcolÚwidthrE   ÚrowsÚiÚbaseÚrecÚcol_offÚunnamedÚctypeÚcnameÚcellÚcountrN   Ú	elem_kindÚ	elem_sizeÚvaluesÚcapÚnÚeps                                r   Úparse_datc64r~   a   s7  € Ý
ˆ3�x„x�"‚}€}Øˆ	ÝÔ" 4¨¨aÑ0Ô0°Ô3€IØ—’� AÑ&Ô&€IØ�1‚}€}Ý˜L×,Ò,¨VÑ4Ô4ÐPÐPÐPÑQÔQÐQØ�A‚~€~Øˆ	Ø˜1‰}€HØ�)Ñ˜qÒ Ð ÝØ×Ò Ñ'Ô'Ð]Ð]ÀHÐ]Ð]ÐQZÐ]Ð]Ð]ñ
ô 
ð 	
ð ˜9Ñ$€HÝ�<×#Ò# IÑ.Ô.Ð4°"Ñ5Ô5€GØ#%€FØ€DØð ð ˆÝ˜#‘”ˆØ�%‰<˜(Ò"Ð"ØˆEØ�Š�cÑÔÐØ�‰ˆˆØð 
ÝØ×Ò Ñ'Ô'ÐqÐq½Ð;ZÐ;ZÐRYÐ;ZÑ;ZÔ;ZÑ8ZÔ8ZÐqÐqÐgoÐqÐqñ
ô 
ð 	
ð €GØ€KØ!#€DÝ�9ÑÔð #ñ #ˆØ�1�x‘<ÑˆØ% q˜kˆØˆØˆØð 	ñ 	ˆCÝ˜Ÿš ™œÐ0¨5Ñ1Ô1ˆEØ—G’G˜F‘O”OÐ7Ð'7¨gÐ'7Ð'7ˆEØ—7’7˜6‘?”?ð Ø˜1‘�Ý˜c‘N”NˆEØ˜'‘>ˆDØ�wŠw�wÑÔð I 5¨GÒ#3Ñ#3Ý˜s D¨"Ñ-Ô-ð Ø!#�C˜‘JØ˜uÑ$�GØÝÔ*¨4°°dÑ;Ô;¸AÔ>�ÝÔ(¨¨s°D¸1±HÑ=Ô=¸aÔ@�Ø%*¨gÒ%5Ð%5˜E˜E¸5�	Ø"+Ð/DÐ"DÐ"D˜B˜BÍ,×JZÒJZÐ[dÐfgÑJhÔJh�	Ø Ò(Ð(Ø !�IØ�Ø�’>�>¥g¨c°;ÀÑ3DÀaÑ&HÔ&H�>Ý�c %™jœj¨$Ñ/Ô/�CÝ" 3™ZœZð Uð U˜Ø(¨3Ñ.°°Y±Ñ>˜Ý& s¨B°YÀ&Ò5HÐ5H°°ÍcÐR[Ð]^ÑN_ÔN_Ñ`Ô`ð "Ø!˜EØŸš¥l°9¸cÀ2À{Ñ&SÔ&SÑTÔTÐTÐTØ#��E‘
�
å)¨%°°d¸KÑHÔH��E‘
Ø�uÑˆG‰GØ�Š�CÑÔÐÑØ€Kr!   )r   r   r   r   )r"   r   r#   r$   r   r%   )r0   r   r   r1   )r6   r7   r8   r1   r9   r1   r   r   )r6   r7   r=   r1   r   r$   )
rD   r$   r6   r7   r8   r1   rE   r1   r   r   )rQ   r7   rR   r   r   rS   )Ú__doc__Ú
__future__r   r   rK   Úpathlibr   Útypingr   r_   rM   r4   r    r/   r5   r<   rC   rP   r~   © r!   r   ú<module>r„      s,  ðØ MÐ MØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à€	Ø€ð ØØØØØØØØØØðð €ð>ð >ð >ð >ð
ð 
ð 
ð 
ðAð Að Að Að'ð 'ð 'ð 'ð
9ð 
9ð 
9ð 
9ðð ð ð ð<Cð Cð Cð Cð Cð Cr!   