Ë
    FU hŒ  ã                   ó„  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddlm
Z
 i Zi dd“d	d
“dd“dd“dd“dd“dd“dd“dd
“dd
“dd“dd“dd“dd
“dd“dd“dd“i dd“d d“d!d“d"d“d#d“d$d“d%d“d&d“d'd“d(d“d)d“d*d“d+d“d,d“d-d“d.d/“d0d1“¥i d2d3“d4d3“d5d1“d6d“d7d“d8d1“d9d1“d:d“d;d
“d<d3“d=d“d>d?“d@d“dAd“dBd3“dCd“dDd3“¥i dEd“dFd“dGd1“dHd1“dId/“dJd3“dKd“dLd“dMd
“dNd“dOd
“dPd“dQd“dRd“dSd“dTd3“dUd“¥i dVd3“dWd3“dXd
“dYd“dZd3“d[d“d\d“d]d“d^d“d_d?“d`d3“dad3“dbd3“dcd3“ddd
“ded“dfd
“¥d3dddddd
dd
ddgœ
¥Z ej                  dh«      Z ej                  di«      Z ej                  dj«      Zdƒdk„Zdl„ Zd„dm„Zdn„ Zdo„ Zdp„ Zdq„ Zdr„ Zds„ Zdt„ Zdu„ Zdv„ Zdw„ Zdx„ Zdy„ Zdz„ Z d{„ Z!d|„ Z"d}„ Z#d~„ Z$d„ Z%d€„ Z&d�„ Z'd‚„ Z(y)…é    N©Úunpack)Úwarné   )ÚUndefinedImageSize)ÚUnsupportedImageFormatú é   ú!é   ú"é   ú#é   ú$ú%é   ú&é
   ú'ú(ú)Ú*ú+ú,é   ú-ú.ú/Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9ú:ú;ú<ú=ú>ú?ú@é   ÚAé	   ÚBé   ÚCÚDÚEÚFÚGÚHÚIÚJÚKÚLÚMé   ÚNÚOÚPÚQÚRÚSÚTÚUÚVÚWÚXÚYÚZú[ú\ú]ú^Ú_ú`ÚaÚbÚcÚdÚeÚfÚgÚhÚiÚjÚkÚlÚmÚnÚoÚpÚqÚrÚsÚt)
ÚuÚvÚwÚxÚyÚzú{ú|ú}ú~z^\sz\s$z(\$?)([A-Z]{1,3})(\$?)(\d+)c                 ó¢   — | dk  rt        d| z  «       y|dk  rt        d|z  «       y| dz  } |rdnd}t        ||«      }||z   t        | «      z   S )aU  
    Convert a zero indexed row and column cell reference to a A1 style string.

    Args:
       row:     The cell row.    Int.
       col:     The cell column. Int.
       row_abs: Optional flag to make the row absolute.    Bool.
       col_abs: Optional flag to make the column absolute. Bool.

    Returns:
        A1 style string.

    r   zRow number %d must be >= 0NúCol number %d must be >= 0r   r   Ú )r   Úxl_col_to_nameÚstr)ÚrowÚcolÚrow_absÚcol_absÚcol_strs        úJ/var/www/timesheet/venv/lib/python3.12/site-packages/xlsxwriter/utility.pyÚxl_rowcol_to_cellr~   {   sf   € ð ˆQ‚wÜÐ)¨CÑ/Ô0Øà
ˆQ‚wÜÐ)¨CÑ/Ô0Øàˆ1�H€CÙ‰c "€Gä˜S 'Ó*€Gà�WÑœs 3›xÑ'Ð'ó    c                 óp   — |t         v r
t         |   }nt        |«      }|t         |<   |t        | dz   «      z   S )zË
    Optimized version of the xl_rowcol_to_cell function. Only used internally.

    Args:
       row: The cell row.    Int.
       col: The cell column. Int.

    Returns:
        A1 style string.

    r   )Ú	COL_NAMESrv   rw   )rx   ry   r|   s      r}   Úxl_rowcol_to_cell_fastr‚   ™   s;   € ð ŒiÑÜ˜C‘.‰ä  Ó%ˆØ Œ	�#‰à”S˜˜q™“\Ñ!Ð!r   c                 óÔ   — | }|dk  rt        d|z  «       y|dz  }d}|rdnd}|r?|dz  }|dk(  rd}t        t        d«      |z   dz
  «      }||z   }t        |dz
  dz  «      }|rŒ?||z   S )	zá
    Convert a zero indexed column cell reference to a string.

    Args:
       col:     The cell column. Int.
       col_abs: Optional flag to make the column absolute. Bool.

    Returns:
        Column style string.

    r   rt   Nr   ru   r   é   r2   )r   ÚchrÚordÚint)ry   r{   Úcol_numr|   Ú	remainderÚ
col_letters         r}   rv   rv   ®   s�   € ð €GØ�‚{ÜÐ)¨GÑ3Ô4Øàˆq�L€GØ€GÙ‰c "€Gá
à˜b‘Lˆ	à˜Š>ØˆIô œ˜S› IÑ-°Ñ1Ó2ˆ
ð ˜wÑ&ˆô �w ‘{ bÑ(Ó)ˆò ð  �WÑÐr   c                 ó  — | syt         j                  | «      }|j                  d«      }|j                  d«      }d}d}t        |«      D ]*  }|t	        |«      t	        d«      z
  dz   d|z  z  z  }|dz  }Œ, t        |«      dz
  }|dz  }||fS )zÌ
    Convert a cell reference in A1 notation to a zero indexed row and column.

    Args:
       cell_str:  A1 style string.

    Returns:
        row, col: Zero indexed cell row and column indices.

    )r   r   é   r   r   r2   r   r„   ©Úre_range_partsÚmatchÚgroupÚreversedr†   r‡   )Úcell_strr�   r|   Úrow_strÚexpnry   Úcharrx   s           r}   Úxl_cell_to_rowcolr–   Ö   s¤   € ñ Øä× Ñ  Ó*€EØ�k‰k˜!‹n€GØ�k‰k˜!‹n€Gð €DØ
€CÜ˜Ó!ò ˆØ”�D“	œC ›HÑ$ qÑ(¨R°©XÑ6Ñ6ˆØ�‰	‰ðô
 ˆg‹,˜Ñ
€CØˆ1�H€Cà�ˆ8€Or   c                 ó€  — | syt         j                  | «      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|rd}nd}|rd}nd}d}d}t        |«      D ]*  }|t	        |«      t	        d	«      z
  dz   d
|z  z  z  }|dz  }Œ, t        |«      dz
  }	|dz  }|	|||fS )a!  
    Convert an absolute cell reference in A1 notation to a zero indexed
    row and column, with True/False values for absolute rows or columns.

    Args:
       cell_str: A1 style string.

    Returns:
        row, col, row_abs, col_abs:  Zero indexed cell row and column indices.

    )r   r   FFr   rŒ   r
   r   TFr   r2   r„   r�   )
r’   r�   r{   r|   rz   r“   r”   ry   r•   rx   s
             r}   Úxl_cell_to_rowcol_absr˜   ö   sÞ   € ñ Ø!ä× Ñ  Ó*€Eà�k‰k˜!‹n€GØ�k‰k˜!‹n€GØ�k‰k˜!‹n€GØ�k‰k˜!‹n€GáØ‰àˆáØ‰àˆð €DØ
€CÜ˜Ó!ò ˆØ”�D“	œC ›HÑ$ qÑ(¨R°©XÑ6Ñ6ˆØ�‰	‰ðô
 ˆg‹,˜Ñ
€CØˆ1�H€Cà��W˜gÐ%Ð%r   c                 óp   — t        | |«      }t        ||«      }|�|€t        d«       y||k(  r|S |dz   |z   S )aG  
    Convert zero indexed row and col cell references to a A1:B1 range string.

    Args:
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        A1:B1 style range string.

    Nú#Row and column numbers must be >= 0r*   ©r~   r   ©Ú	first_rowÚ	first_colÚlast_rowÚlast_colÚrange1Úrange2s         r}   Úxl_ranger£   $  sM   € ô ˜y¨)Ó4€FÜ˜x¨Ó2€Fà€~˜˜ÜÐ2Ô3Øà�ÒØˆà˜‰|˜fÑ$Ð$r   c                 óx   — t        | |dd«      }t        ||dd«      }|�|€t        d«       y||k(  r|S |dz   |z   S )a\  
    Convert zero indexed row and col cell references to a $A$1:$B$1 absolute
    range string.

    Args:
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        $A$1:$B$1 style range string.

    TNrš   r*   r›   rœ   s         r}   Úxl_range_absr¥   ?  sU   € ô ˜y¨)°T¸4Ó@€FÜ˜x¨°4¸Ó>€Fà€~˜˜ÜÐ2Ô3Øà�ÒØˆà˜‰|˜fÑ$Ð$r   c                 óD   — t        ||||«      }t        | «      } | dz   |z   S )až  
    Convert worksheet name and zero indexed row and col cell references to
    a Sheet1!A1:B1 range formula string.

    Args:
       sheetname: The worksheet name.    String.
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        A1:B1 style range string.

    r   )r¥   Úquote_sheetname)Ú	sheetnamer�   rž   rŸ   r    Ú
cell_ranges         r}   Úxl_range_formularª   [  s-   € ô  ˜i¨°H¸hÓG€JÜ 	Ó*€Ià�s‰?˜ZÑ'Ð'r   c                 óv   — | j                  «       s(| j                  d«      s| j                  dd«      } d| z  } | S )zÐ
    Convert a worksheet name to a quoted  name if it contains spaces or
    special characters.

    Args:
       sheetname: The worksheet name. String.

    Returns:
        A quoted worksheet string.

    r   z''z'%s')ÚisalnumÚ
startswithÚreplace)r¨   s    r}   r§   r§   q  sA   € ð ×ÑÔ y×';Ñ';¸CÔ'@à×%Ñ% c¨4Ó0ˆ	ð ˜YÑ&ˆ	àÐr   c                 óJ   — d}| D ]  }|t         j                  |d«      z  }Œ |S )a}  
    Get the pixel width of a string based on individual character widths taken
    from Excel. UTF8 characters, and other unhandled characters, are given a
    default width of 8.

    Args:
       string: The string to calculate the width for. String.

    Returns:
        The string width in pixels. Note, Excel adds an additional 7 pixels of
        padding in the cell.

    r   r5   )ÚCHAR_WIDTHSÚget)ÚstringÚlengthr•   s      r}   Úxl_pixel_widthr´   ˆ  s4   € ð €FØò +ˆØ”+—/‘/ $¨Ó*Ñ*‰ð+ð €Mr   c                 ó  — i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“}| |v r||    } t        j                  d | «      st        d!| z  «       d"| j                  d#«      j	                  «       z   S )$NÚblackz#000000Úbluez#0000FFÚbrownz#800000Úcyanz#00FFFFÚgrayz#808080Úgreenz#008000Úlimez#00FF00Úmagentaz#FF00FFÚnavyz#000080Úorangez#FF6600ÚpinkÚpurplez#800080Úredz#FF0000Úsilverz#C0C0C0Úwhitez#FFFFFFÚyellowz#FFFF00z#[0-9a-fA-F]{6}z$Color '%s' isn't a valid Excel colorÚFFr   )Úrer�   r   ÚlstripÚupper)ÚcolorÚnamed_colorss     r}   Úxl_colorrÌ   �  s  € ðØ�ðà�	ðð 	�ðð 	�	ð	ð
 	�	ðð 	�ðð 	�	ðð 	�9ðð 	�	ðð 	�)ðð 	�	ðð 	�)ðð 	ˆyðð 	�)ðð 	�ðð  	�)ð!€Lð& �ÑØ˜UÑ#ˆä�8‰8Ð% uÔ-ÜÐ3°eÑ;Ô<ð �%—,‘,˜sÓ#×)Ñ)Ó+Ñ+Ð+r   c                 óJ   — t        | «      }t        j                  dd|«      }|S )Nz^FFru   )rÌ   rÇ   Úsub)rÊ   Ú	rgb_colors     r}   Úget_rgb_colorrÐ   ¾  s%   € ä˜“€Iô —‘�v˜r 9Ó-€IàÐr   c           
      ó,  — g dddœddidddœdddœdddœddiddidœ‘dddœddidddœdddœdddœddiddidœ‘dddœddidddœdddœdddœddiddidœ‘dddœdd	idddœdddœdddœddiddidœ‘d	ddœdd
id	ddœd	ddœd	ddœdd	idd	idœ‘d
ddœddid
ddœd
ddœd
ddœdd
idd
idœ‘dddœddidddœdddœdddœddiddidœ‘dddœddidddœdddœdddœdddœdddœdœ‘dddœddidddœdddœdddœdddœdddœdœ‘dddœdd	id	ddœd	ddœd	ddœd	ddœd	ddœdœ‘d	ddœdd
id
ddœd
ddœd
ddœd
ddœd
ddœdœ‘d
ddœddidddœdddœdddœdddœdddœdœ‘dddœddidddœdddœdddœdddœdddœdœ‘ddiddidddœdddœdddœdddœdddœdœ‘ddiddidddœdddœdddœdddœdddœdœ‘ddidd	idddœdddœdddœdddœdddœdœ‘dd	idd
id	ddœd	ddœd	ddœd	ddœd	ddœdœ‘dd
iddid
ddœd
ddœd
ddœd
ddœd
ddœdœ‘ddiddidddœdddœdddœdddœdddœdœ‘dddœdddœdddœdddœdddœdddœdddœdœ‘dddœdddœdddœdddœdddœdddœdddœdœ‘dddœdddœdddœdddœdddœdddœdddœdœ‘d	ddœdddœd	ddœd	ddœd	ddœd	ddœd	ddœdœ‘d
ddœdddœd
ddœd
ddœd
ddœd
ddœd
ddœdœ‘dddœdddœdddœdddœdddœdddœdddœdœ‘dddœdddœdddœdddœdddœdddœdddœdœ‘dddœdddœdddœdddœdddœdddœdddœdœ‘ddiddiddiddiddiddiddidœ‘ddiddiddiddiddiddiddidœ‘ddiddiddiddiddiddiddidœ‘ddiddiddiddiddiddiddidœ‘ddiddiddiddiddiddiddidœ‘ddiddiddidd iddiddiddidœ‘dd!idd"idd#idd$idd%idd&idd'idœ‘dd(idd)iddidd*idd*idd(idd)idœ‘dd+iddidd
iddiddiddidd	idœ‘ddiddidd
iddiddiddidd	idœ‘}||    S ),Nr$   z-0.499984740745262)ÚthemeÚtintrÒ   r%   z0.39997558519241921)ÚseriesÚnegativeÚmarkersÚfirstÚlastÚhighÚlowr&   r'   r(   r)   z-0.249977111117893r    z0.79998168889431442r!   z0.499984740745262z0.249977111117893z0.34998626667073579ÚrgbÚFF323232ÚFFD00000ÚFF000000ÚFF0070C0ÚFF376092ÚFF5F5F5FÚFFFFB620ÚFFD70077ÚFF5687C2ÚFF359CEBÚFF56BE79ÚFFFF5055ÚFF777777ÚFFC6EFCEÚFFFFC7CEÚFF8CADD6ÚFFFFDC47ÚFFFFEB9CÚFF60D276ÚFFFF5367ÚFF00B050ÚFFFF0000ÚFFFFC000r#   © )Ústyle_idÚstyless     r}   Úget_sparkline_stylerö   È  s²
  € ðNà #Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ðNð !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ðNð( !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ð'Nð: !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ð9NðL !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ðKNð^ !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ð]Nðp !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,AÑBØ!Ð+@ÑAØ˜c�NØ˜S�>ñ	
ðoNðB !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðANðT !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðSNðf !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðeNðx !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðwNðJ !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðINð\ !$Ð-AÑBØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ð[Nðn  �nØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðmNð@  �nØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðNðR  �nØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðQNðd  �nØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðcNðv  �nØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðuNðH  �nØ  #˜Ø!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðGNðZ !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.CÑDØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðYNðl !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.CÑDØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðkNð~ !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.CÑDØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ð}NðP !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.CÑDØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðONðb !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.CÑDØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðaNðt !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.CÑDØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðsNðF !$Ð-@ÑAØ"%Ð/BÑCØ!$Ð.AÑBØ"Ð,?Ñ@Ø!Ð+>Ñ?Ø!Ð+>Ñ?Ø Ð*=Ñ>ñ	
ðENðX !$Ð-BÑCØ"%Ð/CÑDØ!$Ð.BÑCØ"Ð,@ÑAØ!Ð+?Ñ@Ø!Ð+?Ñ@Ø Ð*>Ñ?ñ	
ðWNðj ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ðiNð| ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ð{NðN ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ðMNð` ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ð_Nðr ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ðqNðD	 ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ðC	NðV	 ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ðU	Nðh	 ˜jÐ)Ø 
Ð+Ø˜zÐ*Ø˜ZÐ(Ø˜JÐ'Ø˜JÐ'Ø˜:Ð&ñ	
ðg	Nðz	  �nØ  #˜Ø �~Ø˜s�^Ø˜c�NØ˜c�NØ˜S�>ñ	
ðy	NðL
  �nØ  #˜Ø �~Ø˜s�^Ø˜c�NØ˜c�NØ˜S�>ñ	
ðK
N€Fð`
 �(ÑÐr   c                 ó’   — t        | t        j                  t        j                  t        j                  t        j                  f«      S )N)Ú
isinstanceÚdatetimeÚdateÚtimeÚ	timedelta)Údts    r}   Úsupported_datetimerþ     s1   € äØ
ŒX×Ñ¤§¡¬x¯}©}¼h×>PÑ>PÐQóð r   c                 ó`   — |r| j                  d ¬«      } | S | j                  rt        d«      ‚| S )N)Útzinfoz�Excel doesn't support timezones in datetimes. Set the tzinfo in the datetime/time object to None or use the 'remove_timezone' Workbook() option)r®   r   Ú	TypeError)Údt_objÚremove_timezones     r}   Úremove_datetime_timezoner  #  s@   € ñ Ø—‘ t�Ó,ˆð €Mð �=Š=Üð>óð ð €Mr   c                 óJ  — | }d}|rt        j                   ddd«      }nt        j                   ddd«      }t        | t         j                   «      rt        | |«      } | |z
  }nÃt        | t         j                  «      r3t         j                   j	                  | j                  «       «      } | |z
  }nvt        | t         j                  «      r2t         j                   j                  || «      } t        | |«      } | |z
  }n*t        | t         j                  «      rd}| }nt        d«      ‚|j                  t        |j                  «      t        |j                  «      d	z  z   d
z  z   }t        |t         j                   «      r| j                  «       dk(  r|dz  }|s|s
|dkD  r|dz  }|S )NFip  r   ik  rA   é   Tz$Unknown or unsupported datetime typeg    €„.Ai€Q )il  r   r   é;   )rù   rø   r  rú   ÚfromordinalÚ	toordinalrû   Úcombinerü   r  ÚdaysÚfloatÚsecondsÚmicrosecondsÚisocalendar)r  Ú	date_1904r  Ú	date_typeÚis_timedeltaÚepochÚdeltaÚ
excel_times           r}   Údatetime_to_excel_datetimer  4  s�  € ð €IØ€Láä×!Ñ! $¨¨1Ó-‰ô ×!Ñ! $¨¨BÓ/ˆô �&œ(×+Ñ+Ô,Ü)¨&°/ÓBˆØ˜‘‰Ü	�FœHŸM™MÔ	*Ü×"Ñ"×.Ñ.¨v×/?Ñ/?Ó/AÓBˆØ˜‘‰Ü	�FœHŸM™MÔ	*Ü×"Ñ"×*Ñ*¨5°&Ó9ˆÜ)¨&°/ÓBˆØ˜‘‰Ü	�FœH×.Ñ.Ô	/ØˆØ‰äÐ>Ó?Ð?ð —‘Üˆe�m‰mÓœu U×%7Ñ%7Ó8¸3Ñ>Ñ>Ø	ññ €Jô �)œX×.Ñ.Ô/°F×4FÑ4FÓ4Hð Mò 5ð
 	�a‰ˆ
ñ ™\¨j¸2ªoØ�a‰ˆ
àÐr   c                 óZ   — t         j                  | «      st        j                  | «      ryy)NTF)Ú
re_leadingÚsearchÚre_trailing)r²   s    r}   Úpreserve_whitespacer  j  s%   € ô ×Ñ˜Ô ¤K×$6Ñ$6°vÔ$>Øàr   c                 óˆ  — d}d}d}d}|st        | d«      }|j                  «       }n|j                  «       }t        j                  |«      j                  «       }t        j                  j                  | «      }	t        d|dd «      d   }
t        d|d d «      d   }t        d	|d d «      d   }t        d
|d d «      d   }t        d|dd «      d   }t        d|d d «      d   }d}d}d}d}|
|k(  rt        |«      \  }}}}}n„|dk(  rt        |«      \  }}}}}nm||k(  rt        |«      \  }}}nX|dk(  rt        |«      \  }}}}}nA|dk(  r||k(  rt        |«      \  }}}}}n%||k(  rt        |«      \  }}}}}nt!        d| z  «      ‚|r|st#        d| z  «      ‚|sj%                  «        |dk(  rd}|dk(  rd}||||	|||fS )Nr   é`   ÚrbÚ3sr   r   ú>HrŒ   Ú2sú<LÚ4sé(   é,   s   PNGs   BMs    EMFs   GIF8iØÿ  l   ×M�5 z-%s: Unknown or unsupported image file format.z%%s: no size data found in image file.)ÚopenÚreadÚgetvalueÚhashlibÚsha256Ú	hexdigestÚosÚpathÚbasenamer   Ú_process_pngÚ_process_jpgÚ_process_bmpÚ_process_wmfÚ_process_emfÚ_process_gifr   r   Úclose)ÚfilenameÚ
image_dataÚheightÚwidthÚx_dpiÚy_dpiÚfhÚdataÚdigestÚ
image_nameÚmarker1Úmarker2Úmarker3Úmarker4Úmarker5Úmarker6Ú
png_markerÚ
bmp_markerÚ
emf_markerÚ
gif_markerÚ
image_types                        r}   Úget_image_propertiesrK  s  s'  € à€FØ€EØ€EØ€Eáä�(˜DÓ!ˆØ�w‰w‹y‰ð ×"Ñ"Ó$ˆä�^‰^˜DÓ!×+Ñ+Ó-€Fô —‘×!Ñ! (Ó+€Jô �T˜4  !˜9Ó% aÑ(€GÜ�T˜4  ˜8Ó$ QÑ'€GÜ�T˜4  ˜8Ó$ QÑ'€GÜ�T˜4  ˜8Ó$ QÑ'€GÜ�d˜D  B˜KÓ(¨!Ñ,€GÜ�T˜4  ˜8Ó$ QÑ'€Gà€JØ€JØ€JØ€Jà�*ÒÜ4@ÀÓ4FÑ1ˆ�U˜F E©5à	�FÒ	Ü4@ÀÓ4FÑ1ˆ�U˜F E©5à	�JÒ	Ü&2°4Ó&8Ñ#ˆ�U™Fà	�JÒ	Ü4@ÀÓ4FÑ1ˆ�U˜F E©5à	�AŠ˜' ZÒ/Ü4@ÀÓ4FÑ1ˆ�U˜F E©5à	�JÒ	Ü4@ÀÓ4FÑ1ˆ�U˜F E©5ô %Ø;¸hÑFó
ð 	
ñ
 ™Ü Ð!HÈ8Ñ!SÓTÐTáØ
�‰Œ
ð �‚zØˆØ�‚zØˆà�u˜f j°%¸ÀÐFÐFr   c                 óþ  — d}t        | «      }d}d}d}d}d}|sÞ||k  rÙt        d| |dz   |dz    «      d   }t        d| |dz   |dz    «      d   }	|	dk(  r0t        d| |dz   |d	z    «      d   }t        d| |d	z   |d
z    «      d   }|	dk(  rWt        d| |dz   |d	z    «      d   }
t        d| |d	z   |d
z    «      d   }t        d| |d
z   |dz    «      d   }|dk(  r
|
dz  }|dz  }|	dk(  rd}ŒÐ||z   d	z   }|s||k  rŒÙd||||fS )Nr5   Fr   r  z>Ir   r#  s   IHDRrA   é   s   pHYsrV   é   r   g¦
F%uš?s   IENDTÚpng©Úlenr   )r=  ÚoffsetÚdata_lengthÚ
end_markerr9  r8  r:  r;  r³   ÚmarkerÚ	x_densityÚ	y_densityÚunitss                r}   r/  r/  »  s�  € à€FÜ�d“)€KØ€JØ€EØ€FØ€EØ€Eñ ˜V kÒ1Ü˜˜d 6¨A¡:°¸±
Ð;Ó<¸QÑ?ˆÜ˜˜d 6¨A¡:°¸±
Ð;Ó<¸QÑ?ˆð �WÒÜ˜4  f¨q¡j°6¸B±;Ð!?Ó@ÀÑCˆEÜ˜D $ v°¡{°V¸b±[Ð"AÓBÀ1ÑEˆFð �WÒÜ˜t T¨&°1©*°vÀ±{Ð%CÓDÀQÑGˆIÜ˜t T¨&°2©+¸À¹Ð%DÓEÀaÑHˆIÜ˜3  V¨b¡[°6¸B±;Ð ?Ó@ÀÑCˆEà˜ŠzØ! FÑ*�Ø! FÑ*�à�WÒØˆJØà˜&‘ 2Ñ%ˆñ/ ˜V kÓ1ð2 �%˜ ¨Ð-Ð-r   c                 óV  — d}t        | «      }d}d}d}d}d}|�s	||k  �rt        d| |dz   |dz    «      d   }t        d| |dz   |dz    «      d   }	|dz  dk(  r?|d	k7  r:|d
k7  r5|dk7  r0t        d| |dz   |dz    «      d   }t        d| |dz   |dz    «      d   }|dk(  rnt        d| |dz   |dz    «      d   }
t        d| |dz   |dz    «      d   }t        d| |dz   |dz    «      d   }|
dk(  r|}|}|
dk(  r
|dz  }|dz  }|dk(  rd}|dk(  rd}|dk(  rd}Œû||	z   dz   }|s||k  r�Œd||||fS )NrŒ   Fr   r  r   r   iðÿ  iÀÿ  iÄÿ  iÈÿ  iÌÿ  r   r   r3   iàÿ  rV   r   rA   é   rM  r   gR¸…ëQ@iÚÿ  TÚjpegrP  )r=  rR  rS  rT  r9  r8  r:  r;  rU  r³   rX  rV  rW  s                r}   r0  r0  ã  sÊ  € à€FÜ�d“)€KØ€JØ€EØ€FØ€EØ€Eò ˜V kÓ1Ü˜˜d 6¨A¡:°¸±
Ð;Ó<¸QÑ?ˆÜ˜˜d 6¨A¡:°¸±
Ð;Ó<¸QÑ?ˆð
 �f‰_ Ò'Ø˜&Ò Ø˜&Ò Ø˜&Ò ä˜D $ v°¡z°F¸Q±JÐ"?Ó@ÀÑCˆFÜ˜4  f¨q¡j°6¸A±:Ð!>Ó?ÀÑBˆEð �VÒÜ˜3  V¨b¡[°6¸B±;Ð ?Ó@ÀÑCˆEÜ˜t T¨&°2©+¸À¹Ð%DÓEÀaÑHˆIÜ˜t T¨&°2©+¸À¹Ð%DÓEÀaÑHˆIà˜ŠzØ!�Ø!�à˜ŠzØ! DÑ(�Ø! DÑ(�ð ˜ŠzØ�Ø˜ŠzØ�à�VÒØˆJØà˜&‘ 1Ñ$ˆñO ˜V kÔ1ðR �5˜& %¨Ð.Ð.r   c                 ó`   — d}d}t        d| dd «      d   }t        d| dd «      d   }d||||fS )Nr  ú<hr   r5   r   r   Úgifr   )r=  r:  r;  r9  r8  s        r}   r4  r4    sK   € à€EØ€Eä�4˜˜a ˜Ó# AÑ&€EÜ�D˜$˜q ˜*Ó% aÑ(€Fà�%˜ ¨Ð-Ð-r   c                 óT   — t        d| dd «      d   }t        d| dd «      d   }d||fS )Nr"  é   é   r   r„   Úbmpr   )r=  r9  r8  s      r}   r1  r1  %  s=   € ä�4˜˜b ˜Ó% aÑ(€EÜ�D˜$˜r "˜+Ó& qÑ)€FØ�%˜ÐÐr   c                 ó  — d}d}t        d| dd «      d   }t        d| dd «      d   }t        d| dd «      d   }t        d| dd «      d   }t        d	| dd
 «      d   }t        ||z
  |z  «      |z  }t        ||z
  |z  «      |z  }	d||	||fS )Nr  r]  r   r5   r   r   rA   rZ  z<HrM  Úwmf)r   r  )
r=  r:  r;  Úx1Úy1Úx2Úy2Úinchr9  r8  s
             r}   r2  r2  ,  sÆ   € à€EØ€Eô 
��d˜1˜Q�iÓ	  Ñ	#€BÜ	��d˜1˜R�jÓ	! !Ñ	$€BÜ	��d˜2˜b�kÓ	" 1Ñ	%€BÜ	��d˜2˜b�kÓ	" 1Ñ	%€Bô �$˜˜R ˜Ó$ QÑ'€Dô �2˜‘7˜eÑ#Ó$ tÑ+€EÜ�B˜‘G˜uÑ$Ó%¨Ñ,€Fà�%˜ ¨Ð-Ð-r   c                 ó˜  — t        d| dd «      d   }t        d| dd «      d   }t        d| dd «      d   }t        d| dd «      d   }||z
  }||z
  }t        d| dd «      d   }t        d| dd	 «      d   }t        d| d	d
 «      d   }	t        d| d
d «      d   }
d|	|z
  z  }d|
|z
  z  }|dz  |z  }|dz  |z  }|dz  }|dz  }d||||fS )Nz<lr5   rA   r   rM  é   é   é   é    é$   r$  g{®Gáz„?gffffff9@r   Úemfr   )r=  Úbound_x1Úbound_y1Úbound_x2Úbound_y2r9  r8  Úframe_x1Úframe_y1Úframe_x2Úframe_y2Úwidth_mmÚ	height_mmr:  r;  s                  r}   r3  r3  A  s7  € ô �d˜D  2˜JÓ'¨Ñ*€HÜ�d˜D  B˜KÓ(¨Ñ+€HÜ�d˜D  B˜KÓ(¨Ñ+€HÜ�d˜D  B˜KÓ(¨Ñ+€Hð �xÑ€EØ˜Ñ €Fô �d˜D  B˜KÓ(¨Ñ+€HÜ�d˜D  B˜KÓ(¨Ñ+€HÜ�d˜D  B˜KÓ(¨Ñ+€HÜ�d˜D  B˜KÓ(¨Ñ+€Hð �x (Ñ*Ñ+€HØ˜ 8Ñ+Ñ,€Ið �D‰L˜8Ñ#€EØ�T‰M˜IÑ%€Eð 
ˆQ�J€EØ
ˆa�K€Fà�%˜ ¨Ð-Ð-r   )FF)F))rù   r)  r,  rÇ   Ústructr   Úwarningsr   Ú
exceptionsr   r   r�   r°   Úcompiler  r  rŽ   r~   r‚   rv   r–   r˜   r£   r¥   rª   r§   r´   rÌ   rÐ   rö   rþ   r  r  r  rK  r/  r0  r4  r1  r2  r3  ró   r   r}   ú<module>r     sÅ  ðó Û Û 	Û 	Ý Ý Ý *Ý .à€	ð`Øˆð`àˆð`ð ˆð`ð ˆð	`ð
 ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð ˆð`ð  ˆð!`ð" ˆñ#`ð$ ˆð%`ð& ˆð'`ð( ˆð)`ð* ˆð+`ð, ˆð-`ð. ˆð/`ð0 ˆð1`ð2 ˆð3`ð4 ˆð5`ð6 ˆð7`ð8 ˆð9`ð: ˆð;`ð< ˆð=`ð> ˆð?`ð@ ˆðA`ðB ˆðC`ðD ˆòE`ðF ˆðG`ðH ˆðI`ðJ ˆðK`ðL ˆðM`ðN ˆðO`ðP ˆðQ`ðR ˆðS`ðT ˆðU`ðV ˆðW`ðX ˆðY`ðZ ˆð[`ð\ ˆð]`ð^ ˆð_`ð` ˆða`ðb ˆðc`ðd ˆðe`ðf ˆòg`ðh ˆði`ðj ˆðk`ðl ˆðm`ðn ˆðo`ðp ˆðq`ðr ˆðs`ðt ˆðu`ðv ˆðw`ðx ˆðy`ðz 	ˆ!ð{`ð| ˆð}`ð~ ˆð`ð@ ˆðA`ðB ˆðC`ðD ˆðE`ðF ˆðG`ðH ˆòI`ðJ ˆðK`ðL ˆðM`ðN ˆðO`ðP ˆðQ`ðR ˆðS`ðT ˆðU`ðV ˆðW`ðX ˆðY`ðZ ˆð[`ð\ ˆð]`ð^ ˆð_`ð` ˆða`ðb ˆðc`ðd ˆðe`ðf ˆðg`ðh ˆði`ðj ˆñk`ðl 
Ø	
Ø	Ø	
Ø	
Ø	
Ø	
Ø	
Ø	
Ø	
ò`€ðF ˆR�Z‰Z˜Ó€
Øˆb�j‰j˜Ó €Ø�—‘Ð:Ó;€ó(ò<"ó*%òPò@+&ò\%ò6%ò8(ò,ò.ò*,òBòQòh
òò"3òlòEGòP%.òP4/òn.ò ò.ó* .r   