
    ,h                       d dl mZ d dlmZ d dlmZmZ ddl ddlmZm	Z	 ddl
mZmZmZmZmZ ddl d Zd ZdZ G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zd Zeeeeeee e!e"eiZ#e$de%dede!de&de'de(diZ) G d de      Z* e*e$ e+d            Z, G d  d!e      Z-dZ. G d" d#e      Z/y$)%    )print_function)array)calcsizeunpack   )*)Formatnearest_colour_index)FMLA_TYPE_CELLFMLA_TYPE_SHAREDdecompile_formuladump_formularangename2d))show_formulasr   )show_grid_linesr   )show_sheet_headersr   )panes_are_frozenr   )show_zero_valuesr   )automatic_grid_line_colourr   )columns_from_right_to_leftr   )show_outline_symbolsr   )'remove_splits_if_pane_freeze_is_removedr   )sheet_selectedr   )sheet_visibler   )show_in_page_break_previewr   c                   ^   e Zd ZdZdZdZdZdZi Zi Z	g Z
g Zg Zi ZdZdZdZdZdZdZdZdZdZg Zi Zi ZdZdZdZdZdZdZg Z g Z!d Z"d Z#d Z$d	 Z%d
 Z&d Z'd Z(d Z)d&dZ*d&dZ+d&dZ,d&dZ-d&dZ.d&dZ/e-Z0d Z1d Z2d Z3d Z4d Z5d Z6d'dZ7d(dZ8d(dZ9d Z:d Z;d Z<d  Z=d! Z>d" Z?d# Z@d$ ZAd% ZBy))Sheetaj  
    Contains the data for one worksheet.

    In the cell access functions, ``rowx`` is a row index, counting from
    zero, and ``colx`` is a column index, counting from zero.
    Negative values for row/column indexes and slice positions are supported in
    the expected fashion.

    For information about cell types and cell values, refer to the documentation
    of the :class:`Cell` class.

    .. warning::

      You don't instantiate this class yourself. You access :class:`Sheet`
      objects via the :class:`~xlrd.book.Book` object that
      was returned when you called :func:`xlrd.open_workbook`.
     Nr   (   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                    || _         |j                  | _        || _        |j                  | _        t	        dt
        g      | _        t	        ddg      | _        || _        || _	        |j                  | _
        |j                  | _        |j                  | _        | j                  r| j                  | _        n| j                  | _        |j                   | _        d| _        d| _        d| _        d| _        d| _        d| _        g | _        g | _        g | _        d | _        d | _        d | _        d| _        d| _        d| _        d| _         i | _!        i | _"        g | _#        g | _$        g | _%        i | _&        g | _'        g | _(        g d| _)        |jT                  |   | _+        tX        D ]  \  }}t[        | ||        d| _.        d| _/        d| _0        d | _1        g | _2        i | _3        i | _4        d| _5        d| _6        d| _7        d| _8        d | _9        d | _:        i | _;        | j                  d	k\  rd
| _<        nd| _<        d| _=        d| _>        y )NBhr   )r   r   r   r   @   <   d   P   i    @     )?bookbiff_version	_positionlogfiler   XL_CELL_EMPTYbtbfnamenumber	verbosityformatting_inforagged_rowsput_cell_raggedput_cellput_cell_unragged_xf_index_to_xl_type_mapnrowsncols_maxdatarowx_maxdatacolx	_dimnrows	_dimncols_cell_values_cell_types_cell_xf_indexesdefcolwidthstandardwidthdefault_row_heightdefault_row_height_mismatchdefault_row_hiddendefault_additional_space_abovedefault_additional_space_belowcolinfo_maprowinfo_mapcol_label_rangesrow_label_rangesmerged_cellsrich_text_runlist_maphorizontal_page_breaksvertical_page_breaks_xf_index_stats_sheet_visibility
visibility_WINDOW2_optionssetattrfirst_visible_rowxfirst_visible_colxgridline_colour_indexgridline_colour_rgbhyperlink_listhyperlink_mapcell_note_map$cooked_page_break_preview_mag_factorcooked_normal_view_mag_factor$cached_page_break_preview_mag_factorcached_normal_view_mag_factorscl_mag_factor_ixfe_cell_attr_to_xfxutter_max_rowsutter_max_cols_first_full_rowx)selfr)   positionr0   r1   attrdefvals          L/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/xlrd/sheet.py__init__zSheet.__init__?  sE   	 --!||m_-bT"	#33++ 00DM 22DM(,(E(E%

 "!"&+,("#./+./+ " "%'"&(#$&!+008, 	(LD&D$'	("#"#%)"#'   571-0* 561-.*"
!#""'D"'D! "    c                     | j                   r| j                  ||      }nd}t        | j                  |   |   | j                  |   |   |      S )zC
        :class:`Cell` object in the given row and column.
        N)r3   cell_xf_indexCellr@   r?   rg   rowxcolxxfxs       rk   cellz
Sheet.cell  sZ     $$T40CCT"4(d#D)
 	
rm   c                 &    | j                   |   |   S )z.Value of the cell in the given row and column.r?   rg   rr   rs   s      rk   
cell_valuezSheet.cell_value  s      &t,,rm   c                 &    | j                   |   |   S )z
        Type of the cell in the given row and column.

        Refer to the documentation of the :class:`Cell` class.
        r@   rx   s      rk   	cell_typezSheet.cell_type  s     %d++rm   c                    | j                          | j                  |   |   }|dkD  r| j                  dxx   dz  cc<   |S 	 | j                  |   j                  }|dkD  r| j                  dxx   dz  cc<   |S 	 	 | j                  |   j                  }|dk(  rd}| j                  dxx   dz  cc<   |S # t
        $ r Y Ew xY w# t
        $ r | j                  dxx   dz  cc<   Y yw xY w)z
        XF index of the cell in the given row and column.
        This is an index into :attr:`~xlrd.book.Book.xf_list`.

        .. versionadded:: 0.6.1
        r"   r   r            )req_fmt_inforA   rQ   rJ   xf_indexKeyErrorrI   rq   s       rk   ro   zSheet.cell_xf_index  s    	##D)$/8  #q(#J	""4(11CRx$$Q'1,'
 	""4(11Cby#  #q(#J  		  	  #q(#	s$   6B4 ;8C 4	C ?C  C&%C&c                 2    t        | j                  |         S )z
        Returns the effective number of cells in the given row. For use with
        ``open_workbook(ragged_rows=True)`` which is likely to produce rows
        with fewer than :attr:`~Sheet.ncols` cells.

        .. versionadded:: 0.7.2
        )lenr?   )rg   rr   s     rk   row_lenzSheet.row_len  s     4$$T*++rm   c                     t        t        | j                  |               D cg c]  }| j                  ||       c}S c c}w )zS
        Returns a sequence of the :class:`Cell` objects in the given row.
        )xranger   r?   ru   rx   s      rk   rowz	Sheet.row  sD     s4#4#4T#:;<
 IIdD!
 	
 
s   A c                 @      fdt         j                        D        S )z3Returns a generator for iterating through each row.c              3   @   K   | ]  }j                  |        y wN)r   ).0indexrg   s     rk   	<genexpr>z!Sheet.get_rows.<locals>.<genexpr>  s     ?E?s   )ranger9   rg   s   `rk   get_rowszSheet.get_rows  s    ?U4::->??rm   c                 N    || j                   |   |d S | j                   |   || S )zM
        Returns a slice of the types of the cells in the given row.
        Nr{   rg   rr   
start_colxend_colxs       rk   	row_typeszSheet.row_types  s:     ##D)*+66%j::rm   c                 N    || j                   |   |d S | j                   |   || S )zN
        Returns a slice of the values of the cells in the given row.
        Nrw   r   s       rk   
row_valueszSheet.row_values  s:     $$T*:;77  &z(;;rm   c                     t        | j                  |         }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  ||       c}S c c}w )zP
        Returns a slice of the :class:`Cell` objects in the given row.
        r   )r   r?   r   ru   )rg   rr   r   r   ncrs   s         rk   	row_slicezSheet.row_slice  s     ""4()>"JA~
x"}H\NH z84
 IIdD!
 	
 
s   A(c                     | j                   }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  ||       c}S c c}w )zS
        Returns a slice of the :class:`Cell` objects in the given column.
        r   )r9   r   ru   rg   rs   
start_rowxend_rowxnrrr   s         rk   	col_slicezSheet.col_slice  s     ZZ>"JA~
x"}H\NH z84
 IIdD!
 	
 
    Ac                     | j                   }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  |   |    c}S c c}w )zQ
        Returns a slice of the values of the cells in the given column.
        r   )r9   r   r?   r   s         rk   
col_valueszSheet.col_values  s     ZZ>"JA~
x"}H\NH z84
 d#D)
 	
 
r   c                     | j                   }|dk  r||z  }|dk  rd}|||kD  r|}n
|dk  r||z  }t        ||      D cg c]  }| j                  |   |    c}S c c}w )zP
        Returns a slice of the types of the cells in the given column.
        r   )r9   r   r@   r   s         rk   	col_typeszSheet.col_types)  s     ZZ>"JA~
x"}H\NH z84
 T"4(
 	
 
r   c           
      J   | j                   dk\  r,t        | j                  d| j                  | j                         | j
                  rdx}}| j                  }| j                  }| j
                  D ]l  }|\  }}}}	d|cxk  r|cxk  r|k  rn nd|cxk  r|	cxk  r|k  s/n t        | j                  d| j                  | j                  |       ||kD  r|}|	|kD  sk|	}n || j                  kD  r|| _        d| _
        || j                  kD  r%| j                  |dz
  dt        t        d      d       | j                   dk\  r| j                  | j                  k7  s| j                  | j                  k7  rXt        | j                  d	| j                  | j                  | j                  | j                  | j                  | j                         | j                   s| j                  }
| j"                  }| j$                  }| j&                  }| j(                  }| j                  dk(  r| j                  }n| j                  }t+        |      D ]\  }||   }t-        |      }|
|z
  }|dkD  st        d      g|z  ||   |d  | j.                  |z  ||d  |sH| j0                  |z  ||   |d  ^ y y )
Nr   z$tidy_dimensions: nrows=%d ncols=%d 
r   r   z6*** WARNING: sheet #%d (%r), MERGEDCELLS bad range %r
r   r"   z?NOTE *** sheet %d (%r): DIMENSIONS R,C = %d,%d should be %d,%d
)r2   fprintfr,   r9   r:   rM   rd   re   r1   r0   rf   r6   r-   UNICODE_LITERALr=   r>   r4   r@   r?   rA   r3   r   r   r.   r/   )rg   r   r   umaxrowsumaxcolscrangerlorhiclochir:   s_cell_typess_cell_valuess_cell_xf_indexes
s_fmt_infouboundrr   trowrlennextras                       rk   tidy_dimensionszSheet.tidy_dimensions@  sr   >>Q7

DJJ
 ""KB**H**H++ &%+"S#sS232(2A<Vs<Vh<VDLLQTYY8 8#R8#R& DJJ
(*%DJJ bdA}ob6I2NNNat~~-t~~1MR		



	 JJE++L --M $ 5 5--J$$*..v J#D)4yA:2A"2E1F1OM$'."&''F"2DK!9=69I)$/6J  rm   c                    || j                   |   }d|cxk  r| j                  k  sJ  J d|cxk  r| j                  k  sJ  J | j                  }	 |dz   }| j                  |k  r| j
                  j                  }| j                  j                  }	| j                  j                  }
| j                  }| j                  }t        | j                  |      D ]#  } ||dz          |	g        |s |
|dz         % || _        | j
                  |   }| j                  |   }|r| j                  |   }t        |      }|| j                  k\  r
|dz   | _        ||z
  }|s6|j                  |       |j                  |       |rj                  |       y |dkD  r=|dz  }| j                  |z  ||d  t        d      g|z  ||d  |r| j                  |z  |d  |||<   |||<   |r||<   y y #  t        d||| j                           xY w)Nr   r   r   r6   file)r8   re   rd   r3   r9   r@   appendr?   rA   r.   r/   r   r   r:   r   printr,   )rg   rr   rs   ctypevaluer   fmt_infor   sctascvascxar.   r/   _unused	types_row
values_rowfmt_rowltr	num_emptys                      rk   r5   zSheet.put_cell_ragged}  s    =11(;ED.4......D.4......''1	BzzB''..((//,,33WWWW%djj"5 %GaLHR!V	%
  
((.I**40J//5i.Ctzz!!AX
s
I   '!!%(NN8,1}Q	 #'''I"5	#$$3B$7#89#D
34 $(GGi$7GCDM#IdO$Jt ( 	*dDt||<s   BG) 0B#G) AG) )Hc                    || j                   |   }	 || j                  |   |<   || j                  |   |<   | j                  r|| j                  |   |<   y y # t
        $ rp |dz   }|dz   }d|cxk  r| j                  k  sJ  J d|cxk  r| j                  k  sJ  J || j                  kD  r=|| _        || j                  k  rd| _
        n|| j                  cxkD  rdkD  r
n n|| _
        || j                  k  r| j                  |   }| j                  t        |      z
  }	|	dkD  rC|j                  | j                  |	z         | j                  r+| j                  |   j                  | j                  |	z         | j                  |   j                  t        d      g|	z         n| j                  j                   }
| j                  j                   }| j                  j                   }| j                  }| j                  }| j                  }| j                  }t#        | j                  |      D ]0  } |
||z          |t        d      g|z         |s& |||z         2 || _	        	 || j                  |   |<   || j                  |   |<   | j                  r|| j                  |   |<   Y y Y y #  t%        d||| j&                          xY w t%        d||| j&                          xY w)Nr   r   r   r   r6   r   )r8   r@   r?   r3   rA   
IndexErrorre   rd   r:   r9   rf   r   extendr.   r/   r   r   r   r   r,   )rg   rr   rs   r   r   r   r   r   r   r   r   r   r   r   r.   r/   r   s                    rk   r7   zSheet.put_cell_unragged  s   =11(;E@	+0DT"4(,1Dd#D)##4<%%d+D1 $ 8	 BB1d1111111d111111DJJ

 

? -/D)D116B6,0D)TZZ ''-c$i/A:KK& 01++--d3::477V;KL%%d+22OB4G3H63QR''..((//,,33//ZZWWWW%djj"5 &GbM/"-.34R"W&  
/4  &t,05!!$'-''8@D))$/5 (j$4<<@	*dDt||<s&   AA G>K+K++AJ11KK+c                 5   d}|xs | j                   dk\  }|xs | j                   dk\  }d}d}|j                  }| j                  |_        t        t        t        t
        t        t        f}| j                  }	t        }
|j                  }| j                  }| j                  }|xr |j                  }i }i }d}	  |       \  }}}|t        k(  r |
d|d d       \  }}}} |	||d ||       n|t        k(  r_ |
d|      \  }}}} |	||t         |j"                  |   |       |r|j                  j%                  |      }|re|| j&                  ||f<   nR|t(        k(  re |
d|dd	       \  }}}|t*        k  r,t-        |d	|j.                  xs |j1                         d
      }nt3        |d	d
      } |	||t         ||       n|t4        k(  r8 |
d|dd	       \  }}}|t*        k  rt7        |d	|j.                  xs |j1                         d
      \  }}t9        ||         }|dz  }g }t;        |      D ](  }|j=                  t        d|||dz                 |dz  }* |t?        |      k(  suJ tA        |d	d
      \  }}t        d|||dz          d   }|dz  }g }t;        |      D ](  }|j=                  t        d|||dz                 |dz  }* |t?        |      k(  sJ  |	||t         ||       || j&                  ||f<   n|tB        k(  r, |
d|d d	       \  }}}tE        |d	d       } |	||d ||       nm|tF        k(  rk |
d|dd       \  }}  |
d|dd        \  }!d}t;        | |!dz         D ]8  } |
d|||dz          \  }tE        ||dz   |d	z          }|d	z  } |	||d ||       : n|tH        k(  rc|s |
d|dd       \  }}"}#d|cxk  r| jJ                  k  s*n tM        d|| jJ                  fz  | jN                         R|"|#f}$|j%                  |$      }%|%tQ               x||$<   }%|"dz  |%_)        |"dz	  dz  |%_*        |#dz  |%_+        |#dz	  dz  |%_,        |#dz	  dz  |%_-        |#d	z	  dz  |%_.        |#dz	  dz  |%_/        |#dz	  dz  |%_0        |#dz	  dz  |%_1        |#dz	  dz  |%_2        |%j^                  sd|%_0        |%| jf                  |<   	 |rtM        d||"|#| jN                         |%jm                  | jN                  d| jj                  |fz         n|tn        v rh|dk\  r |
d |dd       \  }}}}&}'n=|d!k\  r |
d |dd       \  }}}}&}'n% |
d"|dd       \  }}}(}&}'| jq                  |(||      }|rAti        | jN                  d#||        |
d|d$d%       d   })ts        ||d%d  |)tt        ||d|&       |&d	d' d(k(  rt9        |&d         }*|*dk(  r*d}+	 |j                         \  },}-}.|,tv        k(  s	|,tx        k(  rd}+n|,t        k(  r1 |
d)|.d d       \  }/}0}1}2}3}4|rti        | jN                  d*|/|0|1|2|3       nf|,t        k(  rK |
d+|.d d       \  }/}0}1}2}5}4|rHti        | jN                  d,|/|0|1|2|5       ts        ||.dd  |4tz        d|||-       n|,|vrt}        d.|,z        |+s0|j                         \  },}6}.|,tv        tx        fvrt}        d/|,z        | j                  |.      }| j                  ||t         ||       n|*dk(  r t9        |&d         }7 |	||t        |7|       n|*dk(  r t9        |&d         }7 |	||t        |7|       nZ|*d0k(  r |	||t         d1|       nCt}        d2|*z         |
d3|&      d   } |	||d ||       n|t        k(  r/ |
d4|d d'       \  }}}}7}8t        t        f|8   }9 |	|||9|7|       n|t        k(  r|st               }: |
d5|d d       \  };}<|:_E        |:_0        }'d|;cxk  r|<cxk  rd6k  s!n tM        d7|;|<fz  | jN                         ~:pt        |:|'d8       t;        |;|<dz         D ]  }|d9kD  r n|:| j                  |<    |rDti        | jN                  d:| jj                  |;|<|:j                  |:j`                  |'       |:jm                  | jN                  d;       n|t        k(  r |
d|d d       \  | _I        n|t        k(  r<|dk7  r"tM        d<|t        |      | jN                          |
d|d d       \  | _L        n|t        k(  rh|ss|d=k(  sJ |dd d>k(  sJ t        d?|dd=       }=g }>|=D ]+  }?t;        d@      D ]  }@|>j=                  |?dz         |?dz  }? - t        |>      | _O        n|t        k(  r&|s |
d|d d	       \  }}} |	||t        d1|       n|t        k(  r_|s	|dz	  }B |
dA|Bz  |      }C|Cd d \  }}D|Cd   }E|B|Edz   |Dz
  k(  sJ d}t;        DEdz         D ]  } |	||t        d1C|          |dz  } n|t        k(  s	|t        k(  r|dk(  r	|dBk  r |
dC|dd'       }Fn |
dD|ddE       }FdF\  | _Y        | _Z        F\  | _[        | _\        |dGv rF| j                  j                  r0| j                  j                  s| j                  j                          |rti        | jN                  dH| jj                  | j                  | j                  | j                         n|t        k(  r| j                  |       n~|t        k(  r| j                  |       nb|t        k(  rd}|rtM        dI| jN                         d}n<|t        k(  r%| j                  |      }G|GrGj                  }Hnd }Hn|t        k(  r| j                  |||       n|t        k(  r | j                  |      }I|IrHrI|H<   d }Hn|t        k(  r| j                  ||       n|t        k(  r| j                  |       n|t        v r~ |
d|dd       \  }J}K|Kd@k7  r.tM        dJ||j                  |z
  dz
  JKfz  | jN                         	 |j                         \  }L}}|Lt        k(  rn|rtM        dK| jN                         n|t        k(  r|j                  |       n|t        k(  r>d}t        | j                  |||d'L      }t        | j                  |||d'L      }||k(  sJ |t        k(  r4 |
d)|d d       \  }/}0}1}2}3}4|rtM        dM|/|0|1|2|3| jN                         nf|t        k(  rN |
d+|d d       \  }/}0}1}2}5}4|rGtM        dN|/|0|1|2|5| jN                         ts        ||dd  |4tz        d|-       n|t        k(  r|s|dBk\  sJ t        dO|ddE       \  }M}N}O}P}Q}R| j                   dk\  rAti        | jN                  dP| jj                  | j                  MNt        OPdz   QRdz                g }St        |S|dE|d'L      }| j                   dk\  rsti        | jN                  dQt?        S      dRj                  dS |SD                     n:|t        k(  r\|st        dT|dd       \  }T}U}V}W}'|'dUz	  dz  }X|'dz	  dz  }Y|'dz	  dz  }Z| j                   dk\  rti        | jN                  dVTUVW|'XYZ
       dE}Xrqt        dW|||dXz          \	  }[}\}]}^}_}`}a}b}c|adkD  dz  }d|\dkD  dz  }e|adkD  dz  }f|\dkD  dz  }g| j                   dk\  r!ti        | jN                  dY[]^_`bcdefg       |dXz  }Yr|d'z  }Zr|dz  }|||Vz    }h||Vz  }|r)Vr'ti        | jN                  dZ       t        |hV|dd[       |||Wz    }i||Wz  }||k(  sJ |r W
rti        | jN                  d\       t        |iW|dd[       
n|t        k(  r|dk(  rt        d|d d       \  }?| _~        nJ|dk(  r,t        d|      \  | _~        d}?ti        | jN                  d]       nd}?ti        | jN                  d^|       |?dz  | _        |?dz	  dz  | _        |?dz	  dz  | _        |?d0z	  dz  | _        
n1|t        k(  rP|st        | j                  |d|d'L      }|rti        | jN                  d_|dz
  d'z         ||k(  	sJ d`||fz         |t
        k(  r|dBk\  r5|dk\  r0t        da|d d       \  }j| _        | _        | _        | _        | _        nl|d!k\  sJ t        d|d d	       \  }j| _        | _        t        db|d	dc       | _        t        | j                  j                  | j                  dd      | _        t        D ]  \  }k}lt        | |kjdz         |jdz  }j 	n |t         k(  rkt        d|      \  }m}nd}C|nrmdez  nz  }CdCcxk  rdfk  s<n |s| j                   dk\  r'tM        dg| jj                  mnfz  | jN                         de}CC| _        n|t$        k(  r7t        dh|d dc       \  | _        | _        | _        | _        | _        d| _        nJ|t2        k(  r|s |
d|d d       \  }o|odd|dBk\  z  z   z  dz   |k(  sJ d}|dBk  rB||k  r| j4                  j=                   |
d|||dz          d   dd9f       |dz  }||k  r:n||k  r| j4                  j=                   |
d|||d	z                 |d	z  }||k  r4n|t6        k(  r|si |
d|d d       \  }o|odd|dBk\  z  z   z  dz   |k(  sJ d}|dBk  rB||k  rT| j8                  j=                   |
d|||dz          d   ddif       |dz  }||k  r:n||k  r| j8                  j=                   |
d|||d	z                 |d	z  }||k  r4n|djk  r|t:        k(  s
|t<        k(  r|j?                  ||       n|t@        k(  s
|tB        k(  r|jE                  |       n|tF        k(  rD| j                  j                  s| j                  j                          |jI                  |       n7|tJ        k(  r|jM                  |       n|tN        k(  r|jQ                  |       n|tR        k(  s|tT        k(  s
|tV        k(  r|jY                  |       n|tZ        k(  r|j]                  |       n|t^        k(  r|ja                  |       n|tb        k(  r|je                  |       no|tf        k(  r|ji                  |       nQ|tj        k(  r |
d|      d   | _        n4|tn        k(  r- |
dk|      \  }}}(} |	||d || jq                  |(||             n|tp        k(  r7 |
dl|      \  }}}(} |	||d ts        |      | jq                  |(||             n|tt        k(  r^ |
dm|dd       \  }}}(t-        |d|j.                  xs |j1                         d
      } |	||t         || jq                  |(||             nT|tv        k(  r= |
dn|      \  }}}(}7}8t        t        f|8   }9 |	|||9|7| jq                  |(||             n|tx        k(  r7|s |
dm|d d       \  }}}( |	||t        d1| jq                  |(||             n|tz        k(  r|j}                  |       n|t~        k(  rG|sO |
do|ddp       \  }}"}#d|cxk  r| jJ                  k  s*n tM        dq|| jJ                  fz  | jN                         |#dz  sd}nC|drk(  r% |
d|ddr       d   }p| jq                  d |d|ps      }n|dtd }(| jq                  |(|du      }|"|#|f}$|j%                  |$      }%|%7tQ               x||$<   }%|"dz  |%_)        |"dz	  dz  |%_*        |#dz  |%_/        ||%_0        |%| jf                  |<   	 |rtM        dv||"| jN                         |%jm                  | jN                  d| jj                  |fz         n\|t        k(  r|s |
dw|d d       \  };}<}q|;|<k  stM        dx|;|<fz  | jN                         t;        |;|<dz         D ]@  }|| j                  v r| j                  |   }:nt               }:|:| j                  |<   q|:_E        B |rti        | jN                  dy| jj                  |;|<q       n|t        k(  r|s\ |
d|d d       \  };}<|r#ti        | jN                  dz| jj                  |;|<       d|;cxk  r|<cxk  rd6k  s+n tM        d{|;|<fz  | jN                         t        |<d6      }<t;        |;|<      D ]g  }dd0||;z
  z  z   }r||r|rd0z    }(| jq                  |(d||      }|| j                  v r| j                  |   }:nt               }:|:| j                  |<   ||:_0        i n|t        k(  rd}}st        |s|dd       D ]   \  }k}tt        | |kt        |td~k7               " t        d|dd       \  | _        | _        | _        t        db|ddt       | _        t        | j                  j                  | j                  dd      | _        n	 |s$t}        d| jj                  | j                  fz        | j                          | j                          ||_        y)Nr   r      r   z<HHHd   z<HHHi<HHH   lenlenz<BBz<H<HH
   r   z<H4xH4xi   zT*** NOTE: ROW record has row index %d; should have 0 <= rowx < %d -- record ignored!r   i  r~                 r"   ROWz--- sh #%d, rowx=%d ---header2   z<HHH8sH   z<HH3s8sBzFORMULA: rowx=%d colx=%d
      )browxbcolxblahr1c1   s   z<HHBBBxxxxxHzARRAY: %d %d %d %d %d
z<HHBBxBHzSHRFMLA (sub): %d %d %d %d %d
)r   r   r   r   z@Expected SHRFMLA, ARRAY, TABLEOP* or STRING record; found 0x%04xz$Expected STRING record; found 0x%04xr   r   z+unexpected special case (0x%02x) in FORMULA<dz<HHHBBz<HHHHHr(   zr*** NOTE: COLINFO record has first col index %d, last %d; should have 0 <= first <= last <= 255 -- record ignored!))r   r   hidden)r   r   	bit1_flag)r   i   outline_level)   i   	collapsed   z>COLINFO sheet #%d cols %d-%d: wid=%d xf_index=%d flags=0x%04x
z===z*** ERROR *** STANDARDWIDTH"   s     z<8i    z<%dHr&   z<HxxHz<ixxHr   r   r   )   r   (   z+sheet %d(%r) DIMENSIONS: ncols=%d nrows=%d
zSHEET.READ: EOFzM*** Unexpected embedded BOF (0x%04x) at offset %d: version=0x%04x type=0x%04xz---> found EOF)	addr_sizezARRAY:zSHRFMLA (main):z<6Hz
*** WARNING: Ignoring CONDFMT (conditional formatting) record
*** in Sheet %d (%r).
*** %d CF record(s); needs_recalc_or_redraw = %d
*** Bounding box is %s
z#*** %d individual range(s):
*** %s
z, c              3   ,   K   | ]  }t        |   y wr   )r   )r   coordss     rk   r   zSheet.read.<locals>.<genexpr>  s     !K6+v"6!Ks   z<BBHHi   z
*** WARNING: Ignoring CF (conditional formatting) sub-record.
*** cf_type=%d, cmp_op=%d, sz1=%d, sz2=%d, flags=0x%08x
*** optional data blocks: font=%d, border=%d, pattern=%d
z <64x i i H H B 3x i 4x i i i 18xv   z*** Font info: height=%d, weight=%d, escapement=%d,
*** underline=%d, colour_index=%d, esc=%d, underl=%d,
*** style=%d, posture=%d, canc=%d, cancellation=%d
z*** formula 1:
)reldeltar   z*** formula 2:
zR*** WARNING: DEFAULTROWHEIGHT record len is 2, should be 4; assuming BIFF2 format
zR*** WARNING: DEFAULTROWHEIGHT record len is %d, should be 4; ignoring this record
zMERGEDCELLS: %d ranges
zMERGEDCELLS: pos=%d data_len=%dz	<HHHHxxHH<BBB	   )debugr%     zHWARNING *** SCL rcd sheet %d: should have 0.1 <= num/den <= 4; got %d/%dz<HHHHB  -   z<HH3sdz<HH3sHz<HH3sz<HH3sBBz<H4xH2xB   zW*** NOTE: ROW_B2 record has row index %d; should have 0 <= rowx < %d -- record ignored!   )	cell_attrrr   rs   true_xfx   )rs   ROW_B2z<BBHzg*** NOTE: COLWIDTH record has first col index %d, last %d; should have first <= last -- record ignored!z&COLWIDTH sheet #%d cols %d-%d: wid=%d
z.COLUMNDEFAULT sheet #%d cols in range(%d, %d)
zd*** NOTE: COLUMNDEFAULT record has first col index %d, last %d; should have 0 <= first < last <= 256)rr   rs   )r   r   r   r   r       z<HHBz Sheet %d (%r) missing EOF record)r2   r+   
XL_SHRFMLAXL_ARRAY
XL_TABLEOPXL_TABLEOP2	XL_ARRAY2XL_TABLEOP_B2r6   r   get_record_partsr*   r3   _rich_text_runlist_map	XL_NUMBERXL_LABELSSTXL_CELL_TEXT_sharedstringsgetrN   XL_LABELBIFF_FIRST_UNICODEunpack_stringencodingderive_encodingunpack_unicode
XL_RSTRINGunpack_string_update_pos	BYTES_ORDr   r   r   unpack_unicode_update_posXL_RK	unpack_RKXL_MULRKXL_ROWrd   r   r,   Rowinfoheighthas_default_heightr   outline_group_starts_endsr   height_mismatchhas_default_xf_indexr   additional_space_aboveadditional_space_belowrJ   r   r1   dumpXL_FORMULA_OPCODESfixed_BIFF2_xfindexr   r   	XL_STRINGXL_STRING_B2r   	XLRDErrorstring_record_contentsXL_CELL_BOOLEANXL_CELL_ERROR
XL_BOOLERR
XL_COLINFOColinfowidthupkbitsrI   XL_DEFCOLWIDTHrB   XL_STANDARDWIDTHreprrC   XL_GCWtuplegcwjoinmaprstripreplaceXL_BLANKXL_CELL_BLANKXL_MULBLANKXL_DIMENSIONXL_DIMENSION2r9   r:   r=   r>   r)   xf_list_xf_epilogue_donexf_epiloguer0   XL_HLINKhandle_hlinkXL_QUICKTIPhandle_quicktipXL_EOFXL_OBJ
handle_objidXL_MSO_DRAWINGhandle_msodrawingetcXL_TXO
handle_txoXL_NOTEhandle_note	XL_FEAT11handle_feat11bofcodes
XL_COUNTRYhandle_countryXL_LABELRANGES)unpack_cell_range_address_list_update_posrL   rK   
XL_CONDFMTr   XL_CFr   XL_DEFAULTROWHEIGHTrD   rE   rF   rG   rH   XL_MERGEDCELLSrM   
XL_WINDOW2rV   rW   rX   r_   r`   rY   r
   
colour_maprT   rU   XL_SCLra   XL_PANEvert_split_poshorz_split_poshorz_split_first_visiblevert_split_first_visiblesplit_active_panehas_pane_recordXL_HORIZONTALPAGEBREAKSrO   XL_VERTICALPAGEBREAKSrP   	XL_FORMAT
XL_FORMAT2handle_formatXL_FONTXL_FONT_B3B4handle_fontXL_STYLEhandle_style
XL_PALETTEhandle_paletteXL_BUILTINFMTCOUNThandle_builtinfmtcountXL_XF4XL_XF3XL_XF2	handle_xfXL_DATEMODEhandle_datemodeXL_CODEPAGEhandle_codepageXL_FILEPASShandle_filepassXL_WRITEACCESShandle_writeaccessXL_IXFErb   XL_NUMBER_B2
XL_INTEGERfloatXL_LABEL_B2XL_BOOLERR_B2XL_BLANK_B2XL_EFONThandle_efont	XL_ROW_B2XL_COLWIDTHXL_COLUMNDEFAULTminXL_WINDOW2_B2zipintr   r   update_cooked_mag_factors)urg   bkDEBUGr   	blah_rowsblah_formulasr   oldposXL_SHRFMLA_ETC_ETCself_put_celllocal_unpackbk_get_record_partsbvr   do_sst_rich_textrowinfo_sharing_dicttxos	eof_foundrcdata_lendatarr   rs   r   dsstindexrunliststrgposnrtr   	mulrk_rowmulrk_first
mulrk_lastbits1bits2keyr
result_strflagsr  fmlalen
first_byte	gotstringrc2	data2_lendata2row1xrownxcol1xcolnxarray_flagstokslennfmlas_unused_lenr   is_errcelltyc
first_colx	last_colxiguffr@  bitsjshowgcwnitemsresult	mul_firstmul_last	dim_tuple	saved_objsaved_obj_idtxoversionboftypecodenum_CFsneeds_recalcbrowx1browx2bcolx1bcolx2olistcf_typecmp_opsz1sz2
font_block
bord_block
patt_blockfont_heightfont_optionsweight
escapement	underlinefont_colour_indextwo_bitsfont_escfont_underl
font_styleposture	font_canccancellationfmla1fmla2optionsri   _unused_defvalnumden
num_breaksrt   r9  offset
attr_namescharsu                                                                                                                        rk   readz
Sheet.read  s   +!+0T^^q0	~~*k}
  11''#A(A(A!	!4!6B$ Y +7wSb	*J'dHa dD$8<{"1=gt1L.dHhdD,8I8I(8SU]^# 77;;HEGCJ22D$<@x'3FD1I'F$dH**(q"++2UASASAU^_`D)$!<DdD,hGz!'3FD1I'F$dH** 8q"++BeQSQcQcQeno pID##DI.C1HC G#)#; !veT#c!e_'EFq! #d)++ 9$! LID# tCA7:C1HC G#)#; !veT#c!e_'EFq! #d)++dD,hG;B**D$<8u'3FD!H'E$dHd1Rj)dD$8<x)5eT!AY)G&	;*4bc;
";
1= FD ,T4CE? CIH!$s1uSU"34A1HC!)T4HE	F
 v  %1*d1Rj%I"eUD64#6#66 H!4!456<@LLJ en(,,S194;I=(-$  %v~AH,1RK1+<A(&+aiAO38A:2BA/ %
a/AH).!q(8A%.3qjA-=A*"'2+!6AJ05q/@A,05q/@A,11%'
)*  & %ue$,,GFF4<<8DKK;NN  P)) 8>J9VZ[\]_V`>a;D$*e2X>J9VZ[\]_V`>a;D$*e@LZY]^_`bYc@d=D$	J $ 8 8D$ OH DLL*FdS*4b=a@G%b$rs)Wn"$QTCa?k1!*:a=!9J!Q$%	464G4G4I1CE"i/3,3F,-	!$$0s$L !QueUK#0$+DLL:S(-ueUK%Q "%
!2$0U3BZ$H !LueUFG#0$+DLL:[(-ueUF%L$5b%*gO_-.d$T%S!$,>!>&/$fil$l'n !n  )686I6I6K3Ce"9l*CC&/0VY\0\&] ]#::5AdD,hO#q )*Q- 8%dD/5(S#q )*Q- 8%dD-Q#q%dD,HM'(UXb(bcc %T:6q9A!$dAx@z!6B8TRTSTX6V3dHeV *=9&AdD&%Bz!I"8T#2Y7 B
Iqw
E J:):s:  S%y128<F 5 #  #:y{; ;Dcz5-.D$$T*; YZAGGQZZQV
 FF4<<F6~%$0tBQx$@! ''q=74:TXT`T`a&24bq&B#"v2~%AayK//ud1Rj1! #D#BZ #

4!8,
## !: x'3FD!H'E$dHdD-XF{"!Q%fvot<"(!*i!":A	!999"9hl; D!$mRM1HC |#r]':q= 7 ,Wd1Qi @I ,Wd1Rj AI)-&
DJ1:.%$))*;*;DIID_D_II))+FTYY
 x!!$'{"$$T*v% 1E	v OOD1	Y\\l%)l~%))"h=vood+<),D&#'Lw  t,y""4(x#/tAay#A d?ir||h6:GWMNTXT`T`b+-+>+>+@(D(Dv~  % 0t||Dz!!!$'~%?))4bA @))4bA h&x cr; AueUK (E5%RVR^R^_z! T#2Y7 <ueUFG +UE5%VZVbVbc%b$rs)W>Nd$TCz!Rx5$q*- Fvvvv>>Q&3 TYY#FF1HffQhG ?4R16 >>Q&#E
		!KU!KK u39(D2J3O0c5#rkQ.
#rkQ.
#rkQ.
>>Q&U  c5"J
 KQRtvz{~  @C  DG  @G  wH  LII[,
I&(K"*Q,!!3J+a/14G!)A 2I$01$4#9L~~* LLS (Y-x&L 3JC1HC1HCSS)s
CDLL*<= UCaaHSS)s
h&CDLL*<= UCaaH**q=4:5$r(4K1D$1]/5dD/A,D+DDLL?@ DDLL> " 48!80+/19/'7;qyAo37;qyAo3~%?%%tQaADLL2S1WNDh H5hGHz!8B {D"I6/1H2A: 8O vtBQx0/1H/5fd1Qi/HD,1E		,,d.F.Fa2QD.  -= "(D.D$!4MG" v!%.S!CiC/FV*s*! 3f#{{C56!%
 !F&,#w 8T"1X.''11*'($..*4bq:
!QbBh%781<HH7.33::LtTWX[\]X]<_`a<bdegj;klq . .33::<PTUXY\]^Y^P_;`aq . ,,*4bq:
!QbBh%781<HH7.1188,tTRUVYZ[V[_:]^_:`bcej9klq . .1188fdSVWZ[\W\o9^_q . r?bJ&6$$T2.7]bL&8NN4(8^9966		--/OOD):%%%d+----d36\R6\R6\LL&;&&&t,;&&&t,;&&&t,>)))$/7]!-dD!9!!<DJ<'/;Hd/K,D$	1!$dAt7O7OPY[_ae7fg:%/;Hd/K,D$	1!$dE!Hd>V>VW`bfhl>mn;&,8$q),L)D$	(q"++2UASASAU^_`D!$lD$BZBZ[dfjlpBqr=(;G	SW;X8D$	5&-}=fEF!$feT=U=UV_aegk=lm;&#X,8$r(,K)D$	!$mRAYAYZceikoApq8^OOD)9_#X)5j$q*)M&D%:t':':: L#T%8%89:@DN !!AI#%!R*4b=a@#'#;#;dQU\^il#;#m$(BK	#'#;#;ItRT#;#U %2C,005Ay8?	A,S1A#(6>05q/@,16.%-
 ./D$$T* !he$,,Gt||#<T?R#R  T;&#X&vtBQx8 1J	5%2 K)956<@LLJ ! &z9Q; ? (4#3#33 $ 0 0 6A '	A56D,,T2"'(  LLE KKY
 ++#X,8Ra,I)J	 LLM KKY
 
=Y=#= C)956<@LLJ %(	3$7	 &z9 = 	.!"Q$*;%<!<$(q$9	#'#;#;IBUY#;#Z4#3#33 $ 0 0 6A '	A56D,,T2%-
	. =("@J&)*d1Qi&@ @
ddC,>?@
 vtAbz2/1H7/5fd2bk/JD,1E		,,d.F.Fa2QD. e f >;;		*+ , ,&&(rm   c                    | j                   }| j                  }|dk\  dz   }t        dd|dz
     z   |d |       d   }|}|dk  r|j                  xs |j	                         }d}t        d      }		 |dk\  rt        ||         dz  }
d|
   }|dz  }t        ||d        }|	|z  }	|t        |      z  }||k(  r|	S ||kD  rd	||fz  }t        |      |j                         \  }}}|t        k7  rt        d
|z        d})Nr   r   <BHr   r&   r   )latin_1	utf_16_lez,STRING/CONTINUE: expected %d chars, found %dz2Expected CONTINUE record; found record-type 0x%04X)r*   r)   r   r  r  r   r  unicoder   r2  r  XL_CONTINUE)rg   r  r  r  r   nchars_expectedr  encnchars_foundr  flagchunkmsgr  r  s                  rk   r3  zSheet.string_record_contents  sB   YY(a tFQJ'7!7gvGJ7++5!3!3!5C $Rx f.2.t4!DM3/EeOFCJ&L.o-E&56n$$&$7$7$9!BT[ H2MO OF% rm   c                 d   t         xs | j                  dkD  }| j                  r| j                  d| _        n| j                  | _        | j
                  }d|cxk  rdk  s@n |r0t        d| j                  | j
                  fz  | j                         | j                  }|| _	        y | j                  d| _	        n| j                  | _	        | j                  }|sd}nLd|cxk  rdk  sAn |r1t        d| j                  d	| j                  | j                         | j                  }|| _        y )
Nr   r%   r   r   zGWARNING *** WINDOW2 rcd sheet %d: Bad cached_normal_view_mag_factor: %dr   r$   zWARNING *** WINDOW2 rcd sheet z,: Bad cached_page_break_preview_mag_factor: )r  r2   r   ra   r]   r`   r   r1   r,   r^   r_   )rg   r   zooms      rk   r  zSheet.update_cooked_mag_factors  s    ****""*<?9<@<O<O955D$$$a;;(J(JKL!\\
 @@15D. ""*582595H5H2<<DD'C';;(Q(QS!\\
 998<D5rm   c                 j   d}|xs | j                   dk\  }| j                  dk(  rn| j                  j                  r@||}nt	        |d         dz  }|dk(  r#| j
                  t        d      | j
                  }|S dx| _        | j                  _        t	        |d         dz  }|dk(  sJ | j                  j                  |      }||S |rt        | j                  d|||       | j                  j                  s&t        d      D ]  }| j                  d	|d
k          | j                  |      }|S )Nr   r   r   ?   z?BIFF2 cell record has XF index 63 but no preceding IXFE record.r   zNew cell_attr %r at (%r, %r)
r   s   @  r~   )r  style)r  )r2   r*   r)   rJ  r  rb   r2  rc   r  r   r,   r   insert_new_BIFF20_xf)	rg   r  rr   rs   r  r  r   rt   xfx_slots	            rk   r/  zSheet.fixed_BIFF2_xfindex  s<   +!+"yy  '"C#IaL1D8C$;zz)'(ijj**C
 
9;;D		 6Yq\*T11}$$((3?JDLL"BItUYZyy  bz U))O3QS8)TU'')'<
rm   c           
         d}|xs | j                   dk\  }| j                  }t        |j                        }| j	                  ||      }||_        |j                  j                  |       |r!|j                  | j                  d|z  d       |j                  |j                  vr|j                  r9d}t        | j                  ||j
                  |j                  |j                         t        |j                  t        t        d            }	|	|j                  |j                  <   |j                  j                  |	       t         t"        t        t"        t$        t"        t&        t(        t*        t"        i}
|j                  |j                     }	|
|	j,                     }|| j.                  |j
                  <   || j0                  |<   |S )Nr   r   z=== Faked XF %d ===z======r   footerz1ERROR *** XF[%d] unknown format key (%d, 0x%04x)
General)r2   r)   r   rJ  fake_XF_from_BIFF20_cell_attrr   r   r-  r,   
format_key
format_mapr   r	   FUNr   format_listFNUXL_CELL_NUMBERFGEFDTXL_CELL_DATEFTXtyper8   rc   )rg   r  r  r  r   r)   rt   xfr  fmtcellty_from_fmttyr  s               rk   r  zSheet.insert_new_BIFF20_xfA  sd   +!+yy$,,//	5ABGGDLL)>)DXGV==/}}JcR]]BMMC_Y-GHC-0DOOBMM*##C(
 oobmm,"388,5;%%bkk2,/y)
rm   c                    ddl m}m}m}m}m}  |       } |       |_        d|j                  _        d|j                  _        d|j                  _	         |       |_
        d|j                  _        d|j                  _        d|j                  _        d|j                  _         |       |_         |       |_        t#        d|      \  }	}
}|
dz  |_        |
dz  dz	  |_        t)        |j                   |	d       |d	z  |j                  _        d
D ]I  \  }}||z  rd\  }}nd\  }}t-        |j                  |dz   |       t-        |j                  |dz   |       K |j                  }|dz  rd|_        nd|_        d|_        d|_        d|   |_        d|j                  _        d|j                  _        g d}|D ]  }d|z   dz   }t-        ||d        |S )Nr   )XFXFAlignmentXFBorderXFBackgroundXFProtectionr   r   r     r   ))r   r#   cell_locked)r      formula_hiddenr   ))r   left)r   right)r   top)r#   bottom)r   r   r   _colour_index_line_styler2     r   r   )r   r   r   )formatfont	alignmentborder
background
protection__flag)
formattingr+  r,  r-  r.  r/  r=  indent_levelshrink_to_fittext_directionr>  diag_up	diag_downdiag_colour_indexdiag_line_styler?  r@  r   r  
font_indexr:  	hor_alignrU   fill_patternbackground_colour_indexpattern_colour_indexparent_style_index
vert_alignrotation)rg   r  r  r+  r,  r-  r.  r/  r'  	prot_bitsfont_and_format
halign_etcmasksidecolour_index
line_stylebg
attr_stems	attr_stemri   s                       rk   r  z#Sheet.fake_XF_from_BIFF20_cell_attr`  s   UUT"}$%!%&"&'#J					&'		#$%		!$$39&)3L0OZ'$.(4/A5y +
 	 ",d!2\ 	AJD$D +/(j+/(jBIIto5|DBIItm3Z@	A ]] BOBO%&""# +E 2"# !

 $ 	!I?W,DBa 	! 	rm   c                 2    | j                   st        d      y )Nz9Feature requires open_workbook(..., formatting_info=True))r3   r2  r   s    rk   r   zSheet.req_fmt_info  s    ##WXX $rm   c                 .   | j                          | j                  dk\  rB| j                  j                  |d      }||j                  S | j
                  | j
                  S | j                  dk\  rQ| j                  |   r| j
                  o| j
                  S | j                  j                  |d      }|E|j                  S | j                  dk(  r*| j                  j                  |d      }||j                  S | j                  | j                  dz  S y)a  
        Determine column display width.

        :param colx:
          Index of the queried column, range 0 to 255.
          Note that it is possible to find out the width that will be used to
          display columns with no cell information e.g. column IV (colx=255).

        :return:
          The column width that will be used for displaying
          the given column by Excel, in units of 1/256th of the width of a
          standard character (the digit zero in the first font).

        .. versionadded:: 0.6.1
        r&   Nr   r   r(   i   )r   r*   rI   r  r9  rC   r@  rB   )rg   rs   colinfos      rk   computed_column_widthzSheet.computed_column_width  s     	"&&**46G"}}$!!-)))"$xx~%%1---**..tT:&"==("$&&**46G"}}$'##c))rm   c                 	   t         rt        d| j                         t        |      }t	               }t        d|d d       \  |_        |_        |_        |_	        }}}|dk(  sJ |dk(  sJ t         rt        d|z  | j                         d}d }|d	z  r |||      \  |_
        }|d
z  r |||      \  |_        }|dz  r`|dz  sZt        d|||dz          \  }	t         rt        | j                  d|	       |dz  }|	dk(  rt        d      |_        t        d|||dz          d   }
|dz  }t        ||||
z    d      |_        t         r5t        | j                  d|j                   t        |j                                |j                   j#                  d      }t         rt        d|z  | j                         |j                   d | |_        d|dz   z  }||z  }|
|z
  }||||z    }||z  }t         r%t        | j                  d|j                   ||
||       |dv sWJ |	dk(  rt        d      |_        t        d|||dz          \  }}
|dz  }d |z  ||||
z   dz
   z   }t         rt        | j                  d!||       ||
z  }|d"z  }t        d#|||dz          d   }t         rt        d$|z  | j                         |dz  }|r>t        d#|||dz          d   }|dz  }|dz  }t        ||||z    d      }||z  }||_        ns||_        nkt        | j                  d%|	       nS|d&z  d'k(  r"t        d(      |_         |||      \  |_        }n)|d)z  d*k(  rt        d+      |_        nt        d,      |_        |d*z  r |||      \  |_        }t         r"|j'                  d-.       t        d/||fz         ||z
  }|dkD  rBt        | j                  d0|j                  dz   |j                  dz   |t)        || d               n|dk  rt+        d1      | j,                  j/                  |       t1        |j                  |j                  dz         D ];  }t1        |j                  |j                  dz         D ]  }|| j2                  ||f<    = y )2Nz
=== hyperlink ===r   z<HHHH16s4sir   s   y  Ks      zoptions: %08Xc                 x    t        d| ||dz          d   dz  }|dz  }t        | |||z    d      d d }||z  }||fS )N<Lr   r   r   UTF-16ler"   )r   r  )bufofsnbucs       rk   get_nul_terminated_unicodez6Sheet.handle_hlink.<locals>.get_nul_terminated_unicode  sZ    c#c!en-a014B1HCSR*5cr:B2ICs7Nrm   r   r2  r   r(   z<16sr   z	clsid=%r
s   y  Kurlrc  r   r   rd  zinitial url=%r len=%d
 z	endpos=%dr   z9url=%r
extra=%r
nbytes=%d true_nbytes=%d extra_nbytes=%d
)   r   s               Fz
local filez<Hir   s   ..\zuplevels=%d shortpath=%r
rl  <izsz=%dz*** unknown clsid %r
ic  i  uncik  r   workbookunknownz... object dump ...r   zoffset=%d record_size=%dz=*** WARNING: hyperlink at R%dC%d has %d extra data bytes: %s
z:Bug or corrupt file, send copy of input file for debugging)r  r   r,   r   	Hyperlinkr   frowxlrowxfcolxlcolxdesctargetr   r   r&  r  url_or_pathfindtextmarkr-  REPRr2  rZ   r   r   r[   )rg   r  record_sizer!   guid0dummyr  r  ri  clsidnbytesendpostrue_nbytesextra_nbytes
extra_datauplevels	shortpathszxlextended_pathrr   rs   s                         rk   rN  zSheet.handle_hlink  s   %-DLLA$iKDJ=Z^_b`bZcDdA!'17E5'[[[+++%'1E	 T>7fENAFFT>9$GAHfaK'E/FD$<=FEgdllL5AbLF[[ )/d6&1*&=>qA! 'VFVO(Dj Q'$,,0I1==Z]^_^k^kZlm++F3%f 44<<H !gv 66A:.+%%3!&,)>?
,&Vz6;
 $w..]](6#)%fVaZ1H#I &!#h.fVf_q=P1QQ	'$,,0LhXab& "D$vfqj"9:1=%"4<<@!d6&1*&=>qABaKFaKF$+D,Dj$QMbLF$1AM$-AM &>Fu_%$U+AF$>tV$L!AM6u_!$Z0AF$Y/AFS=!;D&!IAJFF/F0,/DDE"V+!P!!T<-.)* AXYY""1%177AGGAI. 	3Dqww	2 312""4:.3	3rm   c                 (   t        d|d d       \  }}}}}|t        k(  sJ | j                  sJ | j                  d   }||||f|j                  |j                  |j
                  |j                  fk(  sJ |dd  dk(  sJ t        |dd d      |_        y )N<5Hr   r"   r   s     r  )	r   rO  rZ   rr  rs  rt  ru  r  quicktip)rg   r  rcxrr  rs  rt  ru  r!   s           rk   rP  zSheet.handle_quicktip0  s    *0Sb	*B'UE5%k!!"""#ueU+!''177/SSSBCyK''T"R[+6
rm   c           	      H   t         sy d}| j                  dk  ry t               }d}||k  rt        d|||dz          \  }}}	|dz  }
|dz	  dz  }|
dk(  rd}n|	}|r8t	        |||dz   d| j
                  	       t        | j
                  d
|||
|	|	       |dk(  r?|dk(  sJ t        d||dz   |dz   |z          \  |_        |_        |_	        |_
        |_        n|dk(  r|	dk(  sJ |dz   |k(  sJ 	 ||dz   z  }||k  r||k(  sJ |r|j                  | j
                  dd       y y )Nr   r&   r   z<HHIr   r~   r   r   basefoutz.fbt:0x%04X  inst:%d  ver:0x%X  cb:%d (0x%04X)
i  r  z<Hiiiii  z=== MSODrawing === r  )OBJ_MSO_DEBUGr*   
MSODrawingr   hex_char_dumpr,   r   
anchor_unkanchor_colx_loanchor_rowx_loanchor_colx_hianchor_rowx_hir-  )rg   recidr  r  r  or  tmpfbtcbverinstndbs                rk   rV  zSheet.handle_msodrawingetc9  sf   r!LHn!&$s3q5/:LCb)C1H%DczdCqqt||LEsB, f}by  7=XtCPQERUVWRWX[R[G\6]4 !"2 !"2QwQw(**37NC1 Hn6 (?"FF4<<(<cFJ rm   c                    | j                   dk  ry t               }t        |      }d}t        rt	        | j
                  d|       ||k  rt        d|||dz          \  }}t        r6t	        | j
                  d|||       t        |||dz   d| j
                         |dk(  r-|dk(  r|d	k(  s#| j                  rt	        | j
                  d
       y |dk(  r8|dk(  sJ t        d||dz   |dz          \  |_	        |_
        }t        ||d       n|dk(  rR||| d||z
  z  k(  rnd}t	        | j
                  d|z         t        ||||z
  d| j
                         t        |      |dk(  r:t        d||dz   |d	z          }	t        |	d      D ]  \  }
}t        |d|z   |
        n5|dk(  rt        r*t	        | j
                  d       n|dk(  r|j                  rn	 ||dz   z  }||k  r	 t        r|j!                  | j
                  dd       |S )Nr&   r   z... OBJ record len=%d...
r   r   zpos=%d ft=0x%04X cb=%d
r  r   r  z6*** WARNING Ignoring antique or corrupt OBJECT record
r   r   ))r   r   locked)r   r   	printable)r   r(   
autofilter)r      scrollbar_flag)r  i    autofill)r   r'   autoliner	  z'Unexpected data at end of OBJECT recordz*** ERROR %s
r   r  r   )r   r  maxincpage
scrollbar_r  z.*** OBJ record has ft==0x0D 'notes' structure
   z=== MSOBj ===r  r  )r*   MSObjr   r  r   r,   r   r  r2   r&  rT  r:  r2  r  rU   r  r-  )rg   r  r  r  r  ftr  option_flagsr  valuesr   tags               rk   rS  zSheet.handle_obja  s   r!Gt9DLL">IHnE4CE?3FB&@#r2NdCaadllKaxtb>>DLL*cdTzax-3FDQs2v<N-O*l< *  tH%(S.)AA?&6&<=dCCadllSn$ttCE#b&'9:"%f.T"U :JE3A|c159:t '$,,8i"jt<<26MCQ HnV FF4<<FErm   c                 p   t         r9t        | j                  d       t        |dt	        |      d| j                         t               }t	        |      }| j                  dk  r`t        d|d d       \  |_        |_	        }t	        |      dz
  }||k  sJ |dd  g}||z  }|dkD  rk| j                  j                         \  }}	}
|t        k(  sJ t        d|
d d       \  }}|dk(  sJ ||	dz
  k(  sJ |j                  |
dd         ||z  }|dkD  rk|dk(  sJ | j                  j                  xs | j                  j                         }t!        d	j#                  |      |      |_        d
g|_        d|_        d|_        d|_        t/        d      |_        d |_        || j4                  |j                  |j                  f<   y t        d|d d       \  |_        |_	        }|_        |dz	  dz  |_        |dz	  dz  |_        |dz	  dz  |_        t7        |dd      \  |_        }||z
  dv sJ t         r|j9                  | j                  dd       |j;                  |j2                        }|rH|j$                  |_        |j&                  |_        || j4                  |j                  |j                  f<   y y )Nz... NOTE record ...
r   r  r&   r   r   z<H2xHr  rm   r   r   z<4Hr   r   r   r   r   )r   r   z=== Note ===r  r  )r  r   r,   r  r   Noter*   r   rr   rs   r)   r  rY  r   r  r  r  rA  textrich_text_runlistshow
row_hidden
col_hiddenr   author
_object_idr\   r   r-  r  )rg   r  r  r  r  expected_bytesrg  piecesr  r  r  
dummy_rowxr  r  r  r  s                   rk   rZ  zSheet.handle_note  s   DLL"9:$3t914<<HFt9r!-3FD!H-E*AFAFNTQB''12hZFb N 1$(,		(B(B(D%Yg~%!'r!;
B!V++Y]**eABi("$ !1$ "Q&&))$$C		(A(A(CCSXXf-s3AF#)(AAFALAL&r*AHAL12Dqvvqvv~.5;E485L2al!#q($)Q.$)Q. 5T1QG& 6!f,,FF4<<FDhhq||$XXAF"%"7"7A12Dqvvqvv~. rm   c                 z   | j                   dk  ry t               }d}t        |      }t        ||d |       \  }|_        }}}|_        ||d  |_        t        ||d       d}	t        d      |_	        |	|k  r| j                  j                         \  }
}}|
t        k(  sJ t        rt        |d|d| j                         t!        |d         }|dz
  }|r|dz  dk(  sJ |dz  }t#        |d|	      \  }}||k(  sJ |xj                  |z  c_	        |	|z  }	|	|k  rg |_        d}||k  r}| j                  j                         \  }}}|t        k(  sJ |d
z  dk(  sJ t'        d|d
      D ]4  }t        d|||d
z          }|j$                  j)                  |       |d
z  }6 ||k  r}|j$                  rD|j$                  d   d   |k(  r/|j$                  d= |j$                  r|j$                  d   d   |k(  r/t        r?|j+                  | j                  dd       t-        |j$                  | j                         |S )Nr&   z<HH6sHHH))r   r   
horz_align)r   p   rQ  )r   r  	lock_text)r   r'   	just_last)r~   i   secret_editr   r   r  r   r   )	known_lenr   z<HH4xr"   z=== MSTxo ===r  r  r   )r*   MSTxor   r   rot	ifntEmptyfmlar:  r   r  r)   r  r	  r  r  r,   r  r   r  r   r   r-  r   )rg   r  r  r(  fmtsizer  controlInfocchTextcbRunstotcharsr  r  r  rg  ncharsutextr  totrunsrc3	data3_lendata3r  runs                          rk   rX  zSheet.handle_txo  sW   r!G3-IOPSUYZb[bUcIdFae['61;gh< "
 	  $ $(II$>$>$@!CE+%%eQ	M58$B]FzQ&15eQ&QME6Y&&FFeOFH   !$(II$>$>$@!CE+%%q=A%%aA. WeCA&67##**3/1  !!a&9&9"&=a&@G&K##B' !!a&9&9"&=a&@G&KFF4<<FE!%%DLL9rm   c                 ^   t         sy t        d|dd       \
  }}}}}}}}	}
}|dk(  sJ |
dk(  sJ |dk(  sJ |dk(  sJ |dk(  sJ ||k(  sJ t        | j                  d||||	       t        d|dd       \  }}}}}}}}}}}}}}}t        d	|||||||||||||||fz  | j                  
       y )Nz<HH8sHBiHiH8sr   #   r   ir  z3FEAT11: grbitFrt=%d  Ref0=%r cref=%d cbFeatData=%d
z<iiiiiiHHiiiii16sHe   zlt=%d  idList=%d crwHeader=%d  crwTotals=%d  idFieldNext=%d cbFSData=%d
rupBuild=%d  unusedShort=%d listFlags=%04X  lPosStmCache=%d  cbStmCache=%d
cchStmCache=%d  lem=%d  rgbHashParam=%r  cchName=%dr   )r  r   r   r,   )rg   r  rtgrbitFrtRef0isffHdr	reserved0cref
cbFeatData	reserved1Ref1ltidList	crwHeader	crwTotalsidFieldNextcbFSDatarupBuildunusedShort	listFlagslPosStmCache
cbStmCachecchStmCachelemrgbHashParamcchNames                              rk   r\  zSheet.handle_feat11  s    W]]lnrstuwnxVySHdCy$
ItA~A~axU{qyt|dllRT\^bdhjtu( 4::NPTUWX]P^3_	1VY	;+y,
S, B FIy+x+izS,E99
 @D||	Mrm   )r   Nr   )r   )C__name__
__module____qualname____doc__r0   r)   r9   r:   rI   rJ   rK   rL   rM   rN   rB   rC   rD   rE   rF   rG   rH   rS   r@  rZ   r[   r\   rj  rk  rl  rm  rn  ro  rO   rP   rl   ru   ry   r|   ro   r   r   r   r   r   r   r   r   r   colr   r5   r7   r  r3  r  r/  r  r  r   r`  rN  rP  rV  rS  rZ  rX  r\   rm   rk   r   r   2   s   & D D E E K K"  6 L0   K M
 
 #'
 
 &*"
 &*" J C N M M N N  !  !  O   M#h
-,>,
@;<
$
$
$
$ C
;Jz9vFVOb<+=Z D>2hY&Pn3`7%KP6p13f0d.Mrm   r   c                       e Zd Zy)r  Nr  r  r  r  rm   rk   r  r  /      rm   r  c                       e Zd Zy)r  Nr  r  rm   rk   r  r  3  r  rm   r  c                       e Zd Zy)r  Nr  r  rm   rk   r  r  7  r  rm   r  c                   H    e Zd ZdZ ed      ZdZdZdZdZ	dZ
dZ ed      Zy)r  z
    Represents a user "comment" or "note".
    Note objects are accessible through :attr:`Sheet.cell_note_map`.

    .. versionadded:: 0.7.2
    r   r   N)r  r  r  r  r   r  r  rs   r  r  rr   r  r  r  rm   rk   r  r  ;  sJ     R F J D
  J D D 2Drm   r  c                   8    e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZy)rq  z
    Contains the attributes of a hyperlink.
    Hyperlink objects are accessible through :attr:`Sheet.hyperlink_list`
    and :attr:`Sheet.hyperlink_map`.

    .. versionadded:: 0.7.2
    N)r  r  r  r  rr  rs  rt  ru  r&  rx  rv  rw  rz  r  r  rm   rk   rq  rq  ^  sM     E E E E D K D F
 H Hrm   rq  c           
          t        | d         }|dz  r(t        d|       \  }|dz  }|dz  r|dz  S t        |      S t        ddt        t	        |dz              z   | dd	 z         \  }|dz  r|dz  S |S )
Nr   r   rm  r   g      Y@r   s          r   )r  r   r  BYTES_LITERALchr)rk_strr  ir  s       rk   r"  r"    s    fQi EqyT6"	a19u9Qx D+c%#+6F(GG&QRST+UV19u9rm   emptyr  r1   xldateboolerrorblankc                   &    e Zd ZdZg dZddZd Zy)rp   a  
    Contains the data for one cell.

    .. warning::
      You don't call this class yourself. You access :class:`Cell` objects
      via methods of the :class:`Sheet` object(s) that you found in the
      :class:`~xlrd.book.Book` object that was returned when you called
      :func:`~xlrd.open_workbook`

    Cell objects have three attributes: ``ctype`` is an int, ``value``
    (which depends on ``ctype``) and ``xf_index``.
    If ``formatting_info`` is not enabled when the workbook is opened,
    ``xf_index`` will be ``None``.

    The following table describes the types of cells and how their values
    are represented in Python.

    .. raw:: html

        <table border="1" cellpadding="7">
        <tr>
        <th>Type symbol</th>
        <th>Type number</th>
        <th>Python value</th>
        </tr>
        <tr>
        <td>XL_CELL_EMPTY</td>
        <td align="center">0</td>
        <td>empty string ''</td>
        </tr>
        <tr>
        <td>XL_CELL_TEXT</td>
        <td align="center">1</td>
        <td>a Unicode string</td>
        </tr>
        <tr>
        <td>XL_CELL_NUMBER</td>
        <td align="center">2</td>
        <td>float</td>
        </tr>
        <tr>
        <td>XL_CELL_DATE</td>
        <td align="center">3</td>
        <td>float</td>
        </tr>
        <tr>
        <td>XL_CELL_BOOLEAN</td>
        <td align="center">4</td>
        <td>int; 1 means TRUE, 0 means FALSE</td>
        </tr>
        <tr>
        <td>XL_CELL_ERROR</td>
        <td align="center">5</td>
        <td>int representing internal Excel codes; for a text representation,
        refer to the supplied dictionary error_text_from_code</td>
        </tr>
        <tr>
        <td>XL_CELL_BLANK</td>
        <td align="center">6</td>
        <td>empty string ''. Note: this type will appear only when
        open_workbook(..., formatting_info=True) is used.</td>
        </tr>
        </table>
    r   r   r   Nc                 .    || _         || _        || _        y r   r  )rg   r   r   r   s       rk   rl   zCell.__init__  s    

 rm   c                     | j                   "t        | j                     d| j                  S t        | j                     d| j                  d| j                   dS )N:z (XF:))r   
ctype_textr   r   r   s    rk   __repr__zCell.__repr__	  sB    == (4djjAA&0&<djj$--XXrm   r   )r  r  r  r  	__slots__rl   r  r  rm   rk   rp   rp     s    ?B /I!
Yrm   rp   r   c                   (    e Zd ZdZdZdZdZdZdZdZ	y)r8  aR  
    Width and default formatting information that applies to one or
    more columns in a sheet. Derived from ``COLINFO`` records.

    Here is the default hierarchy for width, according to the OOo docs:

      In BIFF3, if a ``COLINFO`` record is missing for a column,
      the width specified in the record ``DEFCOLWIDTH`` is used instead.

      In BIFF4-BIFF7, the width set in this ``COLINFO`` record is only used,
      if the corresponding bit for this column is cleared in the ``GCW``
      record, otherwise the column width set in the ``DEFCOLWIDTH`` record
      is used (the ``STANDARDWIDTH`` record is always ignored in this case [#f1]_).

      In BIFF8, if a ``COLINFO`` record is missing for a column,
      the width specified in the record ``STANDARDWIDTH`` is used.
      If this ``STANDARDWIDTH`` record is also missing,
      the column width of the record ``DEFCOLWIDTH`` is used instead.

    .. [#f1] The docs on the ``GCW`` record say this:

      If a bit is set, the corresponding column uses the width set in the
      ``STANDARDWIDTH`` record. If a bit is cleared, the corresponding column
      uses the width set in the ``COLINFO`` record for this column.

      If a bit is set, and the worksheet does not contain the ``STANDARDWIDTH``
      record, or if the bit is cleared, and the worksheet does not contain the
      ``COLINFO`` record, the ``DEFCOLWIDTH`` record of the worksheet will be
      used instead.

    xlrd goes with the GCW version of the story.
    Reference to the source may be useful: see
    :meth:`Sheet.computed_column_width`.

    .. versionadded:: 0.6.1
    r   r"   N)
r  r  r  r  r9  r   r   r   r   r   r  rm   rk   r8  r8  	  s2    #N E H F I M Irm   r8  c                   *    e Zd ZdZerdZd Zd Zd Zy)r%  z
    Height and default formatting information that applies to a row in a sheet.
    Derived from ``ROW`` records.

    .. versionadded:: 0.6.1
    
r&  r'  r   r(  r   r)  r*  r   r+  r,  c                     d | _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        y r   r  r   s    rk   rl   zRowinfo.__init__c	  sa     #' "
 *.&   $ %)!  '+# '+#rm   c           
          | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  f
S r   r  r   s    rk   __getstate__zRowinfo.__getstate__	  s`    KK##**KK  %%MM''''
 	
rm   c                     |\
  | _         | _        | _        | _        | _        | _        | _        | _        | _        | _	        y r   r  )rg   states     rk   __setstate__zRowinfo.__setstate__	  sE     	
K#*K %M''rm   N)	r  r  r  r  
_USE_SLOTSr  rl   r  r  r  rm   rk   r%  r%  M	  s#     
	&+P
rm   r%  N)0
__future__r   r   structr   r   biffhrC  r	   r
   formular   r   r   r   r   timemachiner  r  rT   
BaseObjectr   r  r  r  r  rq  r"  r   r!  r  r"  r#  r$  r%  r)  r-   r  r4  r5  rF  r  rp   r   
empty_cellr8  r  r%  r  rm   rk   <module>r&     s    &  #  4  	 8zMJ zMz?	 		J 		J 	 :  F4
 4p&   7&H(V77
MY: MY^ -!45

9j 9v 
Xj Xrm   