
    ,gG                         d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
mZ dd	lmZ d
 Zd Zd Zd Zd Zd Zdej(                  ffdZ edd      fdZej0                  j3                  d      Zd Zy)z+Layout for tables and internal table boxes.    )infN   )boxes)LOGGER   )resolve_one_percentageresolve_percentages)"table_and_columns_preferred_widthsc                 &
   %&'()*+,-./01234567 ddl m%m&m'm.m/m4 j                  xr j                  d   j                  2j                  xr j                  d   j                  1j                  d   dk(  +duxr 2 }j                  |d	       +rdx)*nj                  d
   \  )*j                  -g x,_        j                         )z   5j                  d   dk(  r=j                         }	|	)z   }
-D ]  }|	)z  }	,j                  |	       |	|z  }	 |	|
z
  6nIj                         j                   z   }	|	)z
  }
-D ]  }|	)z  }	|	|z  }	,j                  |	        |
|	z
  6+rd_        d_        d}r`j'                         \  \  }}|r|j'                         \  \  }}|rd}nd}j                  d| D ]  }|t)        |j                        z  } nd}|s02s.j*                  \  }}|rt-        d ||   D              dz  _        %&')*+,- ./12456fd0%'* ./0f
d(j1                         33*z  33}j                  D cg c]  }|j                  s|j                  s| c}7%(* 01237fd}d } |       \  }}}3}}||J dg }d}||||fS j3                  ||gng |z   ||gng z         t5        d j6                  D              _        |duxr 1 }j                  ||       +r_        t-        j:                  dk7  rj:                  nd3j1                         z
        _        3|z
  } j                  r| *z  } j6                  D ]  }|j                  D ]  }!t=        |!       |!j>                  t)        ,      k  r7,|!j>                     |!_         ||!_!        -|!j>                     |!_        | |!_        nd|!_         d|!_!        d|!_        d|!_        t=        |        ||!      |!_"         |j                  d   }"|j                  d   }#|"j@                  |_         ||_!        |#j@                  |#j                   z   |"j@                  z
  |_        | |_         j                  d   dk(  r -jG                          ,jG                           %j                  d          }$|rs|$r 4 g       dd}g }d}||||fS c c}w )zLayout for a table box.r   )avoid_page_breakblock_container_layoutblock_level_page_breakfind_earlier_page_breakforce_page_breakremove_placeholdersr   border_collapsecollapseNF)endborder_spacing	directionltrTc              3   .   K   | ]  \  }\  }}}|  y wN .0_widths      o/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/weasyprint/layout/table.py	<genexpr>ztable_layout.<locals>.<genexpr>J   s      -9.a!UAE-9   r   c                 b   d }dd d}|}t        | >       <| _        || _        =| _        g }| j                  D 	cg c]  }	g  }
}	|d u }|rd}n|j                         \  \  }}t        | j                  |d  |      D ]  \  }}	||	_        |r! /|d   |	      } 8|5      r||d<   |d i} nt        |	>       <|	_        ||	_        =|	_        g }t        |	j                        D ]"  \  }}4|j                  d  d |j                   }t        |      |_	        |j                  dk(  rQ|	j                  j                  |      }|	j                  |d  }t        j                  dt        |       d	|         nt        |>       >j                  d
   dk(  r3|j                     |_        n$3|j                  |j                  z   dz
     |_        |	j                  |_        d|_        d|_        d|_        |j!                         }t#        |      0|j                  dz
  z  z   |z
  |_        |r"||v r||   }nt        |j                        d i}nd }|rh2rf:r]>j                  d   j                  }|rI|d   j                  r:|xj                  t%        d |d   j                  D              z  c_        nd>_        |j(                  |_        d|_        |j                  }|j                  d   dk7  r&|j                  j-                         }d|d<   ||_         .5||||,7d dd 
      \  }}}}}}||_        |/|j/                  g       } .5|||dg g d dd 
      \  }}}}}}dd i}n|}|j1                  |d ud       |r||i i}|||   |<   t3        d |j                  D               |_        |j(                  |_        |j*                  dk7  r%t%        |j(                  |j*                        |_        |j9                  |       % |rM|sK -|	j                  d   5      xs t3        -5fd|	j                  D              }|r|i i} ;5|,7        n|r|D ]  }|j1                  dd        |	j/                  |      }	g }|	j                  D ]E  }|j                  d   }|dv r||_        d|_        t=        |      |_        |j9                  |       G |r`t%        d |D              |	_        |D ]D  }|	j>                  |j>                  z
  } |j>                  |	j>                  k7  s6| s9tA        ||        F |	j                  D ]#  }|
|jB                  dz
     j9                  |       % |
jE                  d      }!|!r|	j(                  dk(  r1t%        d |!D              }"t%        |"|	j                  z
  d      |	_        nXt%        |	j(                  t%        d |!D                    |	_        |	j                  |	j(                  z   }"n|	j                  }"d|	_        |s|"|	_        |!D ]  }|j                  |jG                         z   }#|"|#z
  } | rg|j:                  dk(  rtA        ||        nK|j:                  dk(  r'| dz  } tA        ||        |xjH                  | z  c_$        n|xjH                  | z  c_$        |j*                  dk7  sd}$|j:                  dk(  r|j*                  |j6                  z
  dz  }$n(|j:                  dk(  r|j*                  |j6                  z
  }$|$dkD  s|j                  D ]  }%|%jK                  |$           |	j                  |	j(                  z   }&||&1z  }&d}'|r)tM        d! |	j                  D              rtN        }&d}d }nd}'5jQ                  ||&      }(|sZ|(rX ;5|	j                  ,7       |r1|d   }) /|)|	      } -|5      r 65|,7      }*|*r|*\  }} nC|d i} n=|r|d i}nd d |fc S  n-|j9                  |	       |&}d}d }|'r2r	9sd>_)        |'s|s n |xr  | xr  -| j                  d   5      xs | }+|+r ;5|,7       d d |fS | j/                  |      } | j1                  | |d u       | j                  D ]Q  }	|	j>                  |	j                  r/t%        d" |	j                  D              |	j                  z
  |	_        Kd|	_        S || j                  z
  | _        | j                  r| xj(                  1z  c_        | ||fS c c}	w )#Nanybreakpagecontaining_blockr   startr   r&   z8This table row has more columns than the table, ignored z cells: r   r   r   c              3   4   K   | ]  }|j                     y wr   )border_bottom_width)r   headers     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>   s       3H$* !' : :3H   TautoheightF)page_is_emptyabsolute_boxesfixed_boxesadjoining_marginsdiscard	max_lines)r+   r   c              3   `   K   | ]&  }|j                         xs |j                          ( y wr   )
is_floatedis_in_normal_flowr   childs     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>   s2      %0 $$&C%*A*A*CC%0s   ,.break_insidec              3   J   K   | ]  } |j                   d            yw)r=   N)style)r   cellr   contexts     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>   s+      P2  )N)CWMP2s    #vertical_align)topmiddlebottombaselinec              3   4   K   | ]  }|j                     y wr   )rF   r   r@   s     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>   s     "LT4=="Lr/   c              3   V   K   | ]!  }|j                   |j                         z    # y wr   )
position_yborder_heightrH   s     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>  s*      '2  $*<*<*>>'2   ')c              3   <   K   | ]  }|j                           y wr   )rK   )r   row_cells     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>  s       5O5=..05O   rE   rD   r   dyc              3   4   K   | ]  }|j                     y wr   )emptyr;   s     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>3  s     =uu{{=r/   c              3   V   K   | ]!  }|j                         |j                  z    # y wr   )content_box_yr1   rH   s     r    r!   z5table_layout.<locals>.group_layout.<locals>.<genexpr>q  s*      '2  **,t{{:'2rL   )*r	   
position_xrJ   r   childrenitems	enumerateindexgrid_xcolspanlenr   warningr?   
margin_topmargin_leftborder_widthsummaxskip_cell_border_topr1   computed_heightcopycopy_with_childrenremove_decorationr$   rS   content_heightappendrB   cell_baselinerF   add_top_paddingrowspanpoprK   padding_bottom	translateallr   overflows_pageskip_cell_border_bottom)?grouprJ   bottom_spacer2   
skip_stack	resume_at	next_pageoriginal_page_is_emptynew_group_childrenrowending_cells_by_rowis_group_startskip	index_row
page_breaknew_row_children
index_cellr@   spanned_widths
cell_indexignored_cellsborders_plus_paddingcell_skip_stackheader_rowsoriginal_style
style_copynew_cellcell_resume_atr   avoid_breakbaseline_cellsrB   extraending_cellsrow_bottom_ycell_bottom_yvertical_align_shiftr<   next_position_y
break_celloverflowprevious_rowearlier_page_breakabortr3   r   r   r   border_spacing_xborder_spacing_yr   column_positionscolumn_widthsrA   r   r4   r   
has_footer
has_headerr   rows_left_x
rows_widthtables?                                               r    group_layoutz"table_layout.<locals>.group_layoutP   s
   	#T2	!.EE:&% -2^^<cr<<#t+D","2"2"4T:'tu(=TJ z	NIs!CI!3&r*C1
#J8)3Ig&!*D 1Ie<(CN'CN"CI!$-cll$; `. 
D!.t{{|!<]dll!K
  #>2<<1$ "%!3!3D!9J$'LL$=MNN##&}#5"6h}oOP #D5A;;{+u4&6t{{&CDO&6t{{T\\7QTU7U&VDO"%.."##$ 
'+'8'8':$ '$q(89:() 
 !Z/*4Z*@+.t}}+=t*D&*O #x! ',nnQ&7&@&@&;r?+C+C OOs 3H.9"o.F.F3H 0H HO 6:2 (,{{$$!%::h'61!%!2J+1Jx(!+DJ7MT<"/ +t!T	834.!Q1
 ,
#2226D*@|_&*22*.+O'D!Q1a '(YN#D&&_D-He&T! (%.O	7EIi(4!$ %0!%%0 "0 0
 '+kk#''61"%dkk43G3G"HDK ''-A`.D  %SYY~%>H 2C P2$'LLP2 M2  !*BI'!1>;P, BD**D*AB (()9:C  N 0!%,<!=!%@@*8D' +5D'$1$$7DM"))$/0 ""L^"LL* 5DLL4==8E}}4'e45  C#DLL1$45<<TBC.2215L::'#& '2$0'2 $2L "%\CNN%BA!FCJ!$SZZ 5OAM5O 2O "PCJ#&>>CJJ#>L"~~
!+ % E $$2D2D2F F$}4**h6'e4,,8
'e4++u4+++u4+''61+,(**h6 0043F3FF!0L,,,8 0043F3FF -+a/%)]] EE!OO/CODE+E0 "nnszz9O #33 J===&)O$)M $I!%J --lOLH X#GS\\>;W%#5b#9L!7c!JJ'
G<-D#%7.V*-<N9.	!%.$5	)!*D 1Iy00%%c*(J!MJhz04-Yuz	~  (&&( ^!<gF '&&	 	
 +^[Jy(((();<.&8it>ST >> 	%C||#<<#& '2$'LL'2 $247NN$CCL $%CL	% "E$4$44>>LL,,Li**C	 =s   	d,c                   
 | d}n| j                         \  \  }} g }d }dd d}t        j                  |d        D ]  \  }}	|	j                  s|	j                  r||z   }
|
|	_        |r  |d   |	      } |      r||d<   |
d i} n |	||||       \  }}}d } |<|r0|d   } ||	      } |      r |      }||\  }} n>|
d i}nd d ||fc S  n/|j                  |       ||j                  z   z  }d}|s|
|i} n ||||fS )Nr   r$   r%   r   r&   F)rX   rY   rW   	is_header	is_footerrZ   rj   r1   )rv   rJ   ru   r2   r~   new_table_childrenrw   rx   irt   index_groupr   	new_groupprevious_groupr   r3   r   r   r   rA   r   r4   r   r   r   s                  r    body_groups_layoutz(table_layout.<locals>.body_groups_layout}  s   D","2"2"4T:	#T2	!%.."78 )	HAu%// d(K%EK!34Fr4JER
#J8)3Ig&!,d 3I.:z<
/L+Iy)J %%7%;N!7!NJ'
G<-D#%7.V*-9<N9.	!!,d 3Iy*<<%%i0)**-===J!M()4	S)	V "9iCC    c                  j   r} nt          } r7j                  d   } || d d      \  }}}|r|s|j                  z   }nd }nd }r7j                  d   } || d d      \  }}}|r|s|j                  z   }nd }nd }r\  }nd}d}j                  |d  D ]3  }	|	j                  r|	j                  r |	j
                  d         } n |rM|rK z   z   |      \  }
}}}|
srs,|j                  ||j                  z
         ||z  }||
||||fS d }|r&|s$ z   |      \  }
}}}|
srs||
||||fS d }|rJ|sH z   |      \  }
}}}|
srs,|j                  ||j                  z
         ||z  }||
||||fS d }|s|rJ        \  }
}}}||
||||fS )Nr   F)rv   r2   r   r=   )r2   rP   )r   rW   r1   r   r   r?   rp   rJ   )header_footer_bottom_spacer.   rw   rx   header_heightfooterfooter_heightr~   avoid_breaksrt   r   end_position_yr   r   r   ru   rA   r   r   r   r2   rJ   rv   r   
table_rowss               r    all_groups_layoutz'table_layout.<locals>.all_groups_layout  s    )5&*-&^^A&F+7
$>u,6(FIy i &0@ @ F^^B'F+7
$>u,6(FIy i &0@ @ F EDD^^DE* 	E??5??/N0KWU	
 f #
] : =0N E	9n "=  NV5F5F$F G-/.	 
 & #
] :L".0 E	9n "=.	 
 & #
L=,H".0 E	9n "=  NV5F5F$F G-/.	 
 f%%z:|]S 	AIy.)6>9iWWr   c                       fdS )z(Return closure getting the column cells.c            	          j                   D  cg c]?  } | j                   D ].  }|j                   D ]  }|j                  j                  k(  r| 0 A c}}} S c c}}} w r   )rW   r[   )	row_groupr{   r@   columnr   s      r    <lambda>z8table_layout.<locals>.get_column_cells.<locals>.<lambda>$  sm    "^^- - ))- 	- {{fmm+	 ---  -s   AAr   )r   r   s   ``r    get_column_cellsz&table_layout.<locals>.get_column_cells"  s    - 	-r   c              3   <   K   | ]  }|j                           y wr   )deepcopy)r   column_groups     r    r!   ztable_layout.<locals>.<genexpr>9  s        I$0 IrO   r0   r(   rtlr=   )$blockr   r   r   r   r   r   rW   r   r   r?   rh   r   r   content_box_xrj   r   rd   rs   rX   r]   collapsed_border_gridrc   border_top_widthrU   rg   tuplecolumn_groupsskipped_rowsr1   r	   r[   rV   rJ   	get_cellsreverse)8rA   r   ru   rv   r)   r2   r3   r4   remove_start_decorationrV   rows_xr   split_cellsskipped_groupsgroup_skip_stackr   cells_skip_stackrt   r   horizontal_bordersinitial_position_yr<   r   r   r.   r   r   rw   rx   r5   collapsing_throughremove_end_decorationcolumns_heightr   firstlastr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r   r   r   r   s8   ```` ```                             @@@@@@@@@@@@@@@@@@@r    table_layoutr      s   H H
 ?ENN1$5$?$?J@ENN2$6$@$@J{{,-;H(4GZ	3? .//+-2[[9I-J** ''M022u-%%'*::K{{;5(((*
.." 	 E**J##J/%J	   &(
((*U[[8
.." 	0E**J%J##J/	0 j(
 %*"(-%2<2B2B2D/.^-4D4J4J4L10/#"&K 8 4ENN 334 L:$)$?$?!A!!), -9),7-9 *9;<*=&k+ k+ k+Z	4D 4Dn $$&J&&
# >>8u 	8JdX dX dXL- 	 IF
Iy !   "i,=?QQQ$$'&R	'&R	12E    I494G4G I IE%T1D*n	35JK) .AU((**,EL
  "44N~~**$$ &nn 	?F?}}s#344$4V]]$C!$6!,V]]; . %&!$%!  !>/v>F	? q!~~b! ++-oo

2U5E5EE%+&0 {{;5(  ""5;;~#>HK;GeWnkJ	)Y(9;MMMo8s   4!Tc                 t    | xj                   |z  c_         | j                  D ]  }|j                  |        y)zPIncrease the top padding of a box.

    This also translates the children.

    rP   N)padding_toprW   rp   )boxextra_paddingr<   s      r    rl   rl   r  s3     OO}$O *=)*r   c                    | j                         }|j                  dk7  sJ |j                  D cg c]  }|j                  D ]  }|  }}}|j                  rB|j                  d   j                  r)|j                  d   }|j                  d   j                  }ng }t	        t        |      t        d |D                    }dg|z  }t        |      D ];  \  }	}t        |d|j                         |j                  dk7  s-|j                  ||	<   = |j                  d   dk(  r|j                  d   \  }
}nd}
d}	|D ]  }t        ||       |j                  dk7  r|j                         }||
|j                  d	z
  z  z  }g }t        |	|	|j                  z         D ]!  }||   |j                  |       |||   z  }# |r|t        |      z  }|D ]  }|||<   	 |	|j                  z  }	 |
|d	z   z  }t        d
 |D              |z   }t        |      D 	cg c]	  \  }	}||	 }}	}|r9|j                  |k\  r*|j                  |z
  }|t        |      z  }|D ]  }	|||	<   	 n|D ]  }	d||	<   	 |j                  t        |      z
  |z
  }|dk  r|xj                  |z  c_        ||_        y|r||z  }|D cg c]  }||z   	 }}||_        yc c}}w c c}}	w c c}w )zRun the fixed table layout and return a list of column widths.

    https://www.w3.org/TR/CSS21/tables.html#fixed-table-layout

    r0   r   c              3   4   K   | ]  }|j                     y wr   )r\   rH   s     r    r!   z%fixed_table_layout.<locals>.<genexpr>  s     +UTDLL+Ur/   Nr   r   separater   r   c              3   &   K   | ]	  }||  y wr   r   )r   ws     r    r!   z%fixed_table_layout.<locals>.<genexpr>  s     Eq}1Es   )get_wrapped_tabler   r   rW   rc   r]   rb   rY   r   r?   r	   ra   r\   rangerj   r   )r   r   r   r   all_columnsfirst_rowgroupfirst_row_cellsnum_columnsr   r   r   r   r@   r   columns_without_widthjwidth_per_columnall_border_spacingmin_table_widthr   remaining_widthextra_widthextra_per_columns                          r    fixed_table_layoutr   }  sT    !!#E;;&    $)#6#6-"++- 	--K - ~~%..+44*(11!4==c+&+U_+U(UVKF[(M {+ ,	6vw<<<6!%||M!,
 {{$%3#kk*:;! 	
A D%(::%%'E%)9::E %'!1a$,,./ . #+)003]1--E	.
 %#(3/D+E#E . 8A'7M!$8	T\\%, *[1_=EmEE)*O+4]+C +41a !	  + +!?++7*S1F-GG& 	0A/M!	0 ' 	!A M!	!
 ++M 225GGKa{" (E 
&47DE!--EE (EU-d+( Fs   KK7Kc           	          |j                         }t        | |d      \  }}}}}}	}
}d}|j                  dk7  r||j                  z  }|j                  dk7  r||j                  z  }|j                  |j
                  z   }|j                  |j                  z   }|\  }}||z
  |z
  |z
  }|j                  dk(  r"||k  r||_        n+||k  r||_        n||_        n|j                  |k  r||_        |sg |_	        y|j                  |
z
  }|dd }|dd }|dd }|dd }||||f}t        t        |            D ]A  }||   r,t        ||   dz  |z  ||         ||<   ||   ||<   ||   ||<   4|	|   s:||   ||<   C |t        |      k  r|d   }|d   }|D ]  }t        |      |dz  k  r|} n |ddd   D ]  }t        |      |d	z  k\  r|} n ||k(  r||_	        yt        t        |            D cg c]  }||   ||   z
   }}|t        |      z
  t        |      z  }t        t        |            D cg c]  }||   ||   |z  z    c}|_	        y||_	        |t        |      z
  }t        | |||j                  |	||       yc c}w c c}w )
zRun the auto table layout and return a list of column widths.

    https://www.w3.org/TR/CSS21/tables.html#auto-table-layout

    F)outerr   r0   Nd   r   g0D   ?gv?)r   r
   r`   margin_rightpadding_leftpadding_rightborder_left_widthborder_right_widthr   r   r   r]   rc   rb   distribute_excess_width)rA   r   r)   r   table_min_content_widthtable_max_content_widthcolumn_min_content_widthscolumn_max_content_widthscolumn_intrinsic_percentagesconstrainednesstotal_horizontal_border_spacinggridmarginspaddingsborderscb_widthr   available_widthassignable_widthmin_content_guessmin_content_percentage_guessmin_content_specified_guessmax_content_guessguessesr   lower_guessupper_guessguessadded_widthsavailable_ratioexcess_widths                                  r    auto_table_layoutr    sW    !!#E /Q	#U/$,5 9!?$d G
& 3??"
6!3###!!E$7$77H%%(@(@@G"KHa(83g=O{{f551EK66)EK1EK;;001EK {{%DD1!4#<Q#? ";A">1!47#%68G 3t9 
J'*.1,Q/#58HH)!,/.(+ .J!-L'*#?#Ba Q .Gq-I'*
J #/00 ajbk  	E5z-::#		
 TrT] 	E5z-::#		
 +%"-E :?s4y9IK45AQ/KL K/#k2BBc,FWWO s4y)#+ Aa?!BB#+E 0'#.?*@@T<)<)<o(*C	EK#+s   3J7Jc                     |j                         }t        ||       |j                  d   dk(  r|j                  dk7  rt	        |       nt        | ||       |j                         |_        y)z;Find the width of each column and derive the wrapper width.r   fixedr0   N)r   r	   r?   r   r   r  ra   )rA   wrapperr)   r   s       r    table_wrapper_widthr  2  s\    %%'E/0{{>"g-%++2G7#'7,<=&&(GMr   c                     t         j                  t         j                  f}t        | |      }||| j                  z
  S | j
                  | j                  z   | j                  z   S )zReturn the y position of a cell baseline from the top of its border box.

    See https://www.w3.org/TR/CSS21/tables.html#height-layout

    )baseline_types)r   LineBoxTableRowBoxfind_in_flow_baselinerJ   r   r   r1   )r@   r  results      r    rk   rk   ?  s[     mmU%6%67N"4GF'' $$t'7'77$++EEr   Fc                     t        | |      r| j                  | j                  z   S t        | t        j                        ry|rt        | j                        n| j                  }|D ]&  }|j                         st        |||      }|$|c S  y)u   Return the absolute y position for the first (or last) in-flow baseline.

    If there’s no in-flow baseline, return None.

    N)	
isinstancerJ   rF   r   TableCaptionBoxreversedrW   r:   r  )r   r   r  rW   r<   r  s         r    r  r  N  s~     #~&~~,,	C..	/)-x%3<<H ""$*5$GF!	r   c                    t        ||   |j                        D 	cg c]  \  }}	||   s|   dk(  r
|   dkD  r| }
}}	|
r4t        fd|
D              }||z  }|
D ]  }||xx   |   |z  z  cc<    yt        ||   |j                        D 	cg c]  \  }}	||   s
|   dk(  r| }
}}	|
r!|
D ]  }||xx   |t        |
      z  z  cc<    yt        ||   |j                        D 	cg c]  \  }}	||   r|   dk(  r
|   dkD  r| }
}}	|
r4t        fd|
D              }||z  }|
D ]  }||xx   |   |z  z  cc<    yt        ||   |j                        D 	cg c]  \  }}	|   dkD  r
|   dkD  r| }
}}	|
r4t        fd|
D              }||z  }|
D ]  }||xx   |   |z  z  cc<    yt        ||   |j                        D cg c]	  \  }}|r| }
}}|
r!|
D ]  }||xx   |t        |
      z  z  cc<    yt        ||   |j                        D 	cg c]  \  }}	|	 }
}}	|
D ]  }||xx   |t        |
      z  z  cc<    yc c}	}w c c}	}w c c}	}w c c}	}w c c}}w c c}	}w )zwDistribute available width to columns.

    See https://www.w3.org/TR/css-tables-3/#distributing-width-to-columns

    r*   r   c              3   (   K   | ]	  }|     y wr   r   r   r   r   s     r    r!   z*distribute_excess_width.<locals>.<genexpr>q       $Sa%>q%A$S   Nc              3   (   K   | ]	  }|     y wr   r   r#  s     r    r!   z*distribute_excess_width.<locals>.<genexpr>  r$  r%  c              3   (   K   | ]	  }|     y wr   r   )r   r   r   s     r    r!   z*distribute_excess_width.<locals>.<genexpr>  s      (>01(+(>r%  )rY   r+   rb   r]   )rA   r   r  r   r   r   r   column_slicer   r   columnssum_max_content_widthsratiosum_intrinsic_percentagesr   s        ``        r    r   r   b  sU     \ 2,:L:LM*aq!$Q'1,!!$q( 	
*G *
 !$$S7$S!S55 	EA! 9! <u DD	E  \ 2,:L:LMLaq!&B1&E&J 	
LG L  	<A!s7| ;;	<  \ 2,:L:LM*a1$Q'1,!!$q( 	
*G *
 !$$S7$S!S55 	EA! 9! <u DD	E  \ 2,:L:LMUa'*Q.3LQ3ORS3S 	
UG U $' (>5<(> %>!88 	HA! <Q ?% GG	H %T,%7|?Q?QRa 	
G   	<A!s7| ;;	< 'tL'9ASASTUTQqUGU 8aL3w<778s*L*U Vs#   !II#3!I)*I/I5-I;transparentc           
          !"#$% |r|sg g fS t        g d      }t        |      D ci c]  \  }}||
 c}}$ddd#dd$d   fddt        ff}t        |      D cg c]  }|g|dz   z   c}%t        |dz         D cg c]  }|g|z  
 c} #$fd" " %fd	}dd$d
   fd
dt        ff}	d}
 j                  D ]  }|j                  D ]  }|j                  D ]  }|j
                  |j                  |j                  }}} j                  d   dk(  r"t        |dz   ||z         }t        |||z         }n,t        d|z
  d|z
  |z
  d      }t        d|z
  d|z
  |z
  d      }|D ]  }t        |
|
|z         D ]
  }|	%|   |<      |D ]!  }t        |
dz   |
|z         D ]
  }|	 |   |<    #  ||||
||        |
dz  }
  d}
 j                  D ]$  }|j                  D ]  } ||d|
|d       |
dz  }
 & d}
 j                  D ](  }t        |j                        } ||d|
||       |
|z  }
*  j                  D ])  }|j                  D ]  } |||j
                  dd|        +  j                  D ]"  } |||j
                  d|j                  |       $  | dd||       d !!fd}%fd} fd}d}
 j                  D ]#  } ||       |j                  D ]  } ||       |j                  D ]  }|j
                  |
}}|j                  |j                  }} j                  d   dk(  r; |||||z         } ||||z   ||z         } |||||z         } |||z   |||z         }nL || |z
  || xs d      } || |z
  ||z   | xs d      } |d|z
  |z
  |||z         } |d|z
  |||z         } !|d|        !|d|        !|d|        !|d|        |
dz  }
 &  j                  D ]#  } ||       |j                  D ]
  } ||        %  ! d |dd|              ! d |d||              ! d |ddd              ! d ||dd             % fS c c}}w c c}w c c}w )a  Resolve border conflicts for a table in the collapsing border model.

    Take a :class:`TableBox`; set appropriate border widths on the table,
    column group, column, row group, row, and cell boxes; and return
    a data structure for the resolved collapsed border grid.

    )
hiddendoublesoliddasheddottedridgeoutsetgrooveinsetnoner4  r6  )r7  r5  r   r8  r   c                     ddl m} |d| d   }|d| d   } ||d| d      }|dk(  rdnd	||   f}	j                  ||      }| |   |   \  }
}|
|	k  r|	|||ff| |   |<   y y )
Nr   )	get_colorborder__style_width_colorr/  r   r   )
draw.colorr:  get)border_grid	box_stylesider[   grid_yr:  r?   r   colorscoreprevious_scorer   	style_mapstyle_scoress               r    set_one_borderz.collapse_table_borders.<locals>.set_one_border  s    *GD601GD601)wtfF%;< (!a%e9LMeU+'/7E!+05%2G*HK' "r   c           	         | j                   }
j                   d   dk(  r_t        |||z         D ]  } 	|d||        	|d||z   |        t        |||z         D ]  } 	|d||        	|d|||z           y t        |||z         D ]#  } 	|dd|z
  |z
  |        	|dd|z
  |       % t        d|z
  d|z
  |z
  d      D ]  } 	|d||        	|d|||z           y )Nr   r   leftrightrC   rE   r   )r?   r   )r   xyr   hr?   yyxxr   rJ  r   vertical_borderss           r    set_bordersz+collapse_table_borders.<locals>.set_borders  s<   		 ;;{#u,Aq1uo L/2F/QKL Aq1uo O15%QG15(BANO Aq1uo M/Q
BO/aLM BFBFQJ3 O15%QG15(BANOr   r/  r   r   r   c                 0    d| d}t        | ||dz         y )Nr;  r=  r   )setattr)r   rC  twice_widthprops       r    set_border_used_widthz5collapse_table_borders.<locals>.set_border_used_width   s     f%T;?+r   c                 V     | dd        | dd        | dd        | dd       y )NrC   r   rM  rE   rL  r   )r   rZ  s    r    remove_bordersz.collapse_table_borders.<locals>.remove_borders$  s3    c5!,c7A.c8Q/c61-r   c                 4     t         fd|| D              S )Nc              3   4   K   | ]  }|   d    d      yw)r   Nr   )r   grid_rowrN  s     r    r!   zEcollapse_table_borders.<locals>.max_vertical_width.<locals>.<genexpr>+  s     M8A;q>!$Ms   rc   )rN  y1y2rS  s   `  r    max_vertical_widthz2collapse_table_borders.<locals>.max_vertical_width*  s    M5Eb5LMMMr   c                 4    t        d |   | | D              S )Nc              3   .   K   | ]  \  }\  }}}|  y wr   r   r   s      r    r!   zGcollapse_table_borders.<locals>.max_horizontal_width.<locals>.<genexpr>.  s     N-QE15Nr"   r`  )x1rO  x2r   s      r    max_horizontal_widthz4collapse_table_borders.<locals>.max_horizontal_width-  s!    N1CA1Fr"1MNNNr   NrC   rE   rL  rM  )r   rY   TRANSPARENTr   rW   r[   r\   rm   r?   r]   r   span)&r   
grid_widthgrid_heightstylesrF  r?   weak_null_borderr   rT  strong_null_borderrD  r   r{   r@   r[   r\   rm   vertical_x_rangehorizontal_x_rangerR  rQ  r   r   r\  rc  rh  rN  rO  rC   rE   rL  rM  r   rZ  rJ  rH  rI  rS  s&   `                               @@@@@@r    collapse_table_bordersrr    s    ;2v # $F 6?v5FG\UEE5LGL!X6IA|F34vq+6NO 8=[7IK23	j1n-K 27{Q1GI,-	Z'II O. ah!788Q:TUF^^ 	%% 	C D+/;;dll;;{+u4',VaZ'9I'J$).vv7G)H&',R&["v+:OQS'T$).rF{BK'<QSU)V&* FB#FFW,<= F3E(,R0FF - HB#FQJ0@A H5G*2.r2HH D&&'7C!D" aKF%	, F^^ 	%% 	CQ
A6aKF	 F^^ 	i(()Iq&*g>' ++ B"++ 	BFq![A	BB
 ++ R,--q,2C2C[	RR
 q!Z5
,.NO F^^ 	y!%% 	C3 <{{F1#'<<;;{+u4.q!Q[AC1!Q[!g+NF-aAK@D.q7{Aq7{KE.x!|Q
dKC17(Q,GaRZSWXF-b7lQ.>1w;OD.rAvq!g+FE%dE37%dHf=%dFD9%dGU;!<" aKF'	. ++ #|$"++ 	#F6"	##
 %(<Q:(NOx-ajIK %);Aq!)DE%*<ZA*NO///{ H
KIs   Q.Q4Q9)__doc__mathr   tinycss2.color4tinycss2formatting_structurer   loggerr   percentr   r	   	preferredr
   r   rl   r   r  r  rk   r  r  slicer   color4parse_colorri  rr  r   r   r    <module>r~     s    1   (  @ 9b	NJ*S(l\E~
)F %*5==:J , */q$C8L oo))-8l0r   