
    BeP                       d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
mZmZmZmZmZmZmZ ddlZddlZddlmZmZ dd	lmZ dd
lmZ ddlmZm Z m!Z!m"Z" e
rddl#m$Z$ ddl%m&Z& ddl'm(Z(  G d de          Z G d de           Z)dS )z1
Layout components to lay out objects in a grid.
    )annotationsN)OrderedDict
namedtuple)partial)TYPE_CHECKINGAnyClassVarDictListMappingOptionalTuple)FlexBoxGridBox   )hold)CDN_DIST   )	ListPanelPanel_col_row)Document)Model)Commc                      e Zd ZU dZ ej        ddd          Z ej        ddd          ZeZ	de
d<   d	Zd
e
d<   ddiZde
d<   dddZde
d<   e dgZde
d<   ed'd            Zed'd            Zd Zd(dZd) fd&Z xZS )*r   a2  
    The `GridBox` is a list-like layout (unlike `GridSpec`) that wraps objects
    into a grid according to the specified `nrows` and `ncols` parameters.

    It has a list-like API with methods to `append`, `extend`, `clear`,
    `insert`, `pop`, `remove` and `__setitem__`, which makes it possible to
    interactively update and modify the layout.

    Reference: https://panel.holoviz.org/reference/layouts/GridBox.html

    :Example:

    >>> pn.GridBox(
    ...    python_object_1, python_object_2, ...,
    ...    python_object_24, ncols=6
    ... )
    Nr   Nz0
      Number of rows to reflow the layout into.defaultboundsdocz3
      Number of columns to reflow the layout into.ClassVar[Model]_bokeh_model zClassVar[Tuple[str, ...]]_linked_propertiesobjectschildren"ClassVar[Mapping[str, str | None]]_rename)scrollr&   _source_transformszcss/gridbox.cssClassVar[List[str]]_stylesheetsc           	       
 t          dg d          t          dg d          
d fdd d	
fd	 |||          }g }|j        D ]*\  }}}}}	| |                    |||||z
  |	|z
  f           +|S )
NItem)layoutr0c0r1c1Grid)nrowsncolsitemsc                h    t          |           t          |          }} |dk    r|| |z  }} |dk    | S Nr   )abs)abs     1lib/python3.11/site-packages/panel/layout/grid.pygcdz"GridBox._flatten_grid.<locals>.gcdM   s=    q663q66qAq&&!a%1 q&&H    c                6    |D ]}| |z   | |          z  } | S Nr$   )r<   restr=   r?   s      r>   lcmz"GridBox._flatten_grid.<locals>.lcmS   s1     ' 'qSSSAYY&Hr@   c                .    | j         dk    o
| j        dk    S r:   r6   r7   )childs    r>   <lambda>z'GridBox._flatten_grid.<locals>.<lambda>X   s    !1!FekQ6F r@   c                   t          ||          }t          | t                    rt          t	          t          || j                                      }|s ddg           S  d |D              }|st          d |D                       }g }d}|D ]L}||j        z  }|j	        D ].\  } }	}
}}|
                    | ||	z  |
|z   ||z  ||z   f           /||j        z  }M |||          S t          | t                    rt          t	          t          || j                                      }|s ddg           S |st          d |D                       } d |D              }g }d}|D ]L}||j        z  }|j	        D ].\  } }	}
}}|
                    | |	|z   ||
z  ||z   ||z  f           /||j        z  }M |||          S  dd | dddd          g          S )NrF   r   c                    g | ]	}|j         
S r$   r6   .0rG   s     r>   
<listcomp>z;GridBox._flatten_grid.<locals>._flatten.<locals>.<listcomp>a   s    @@@eek@@@r@   c                    g | ]	}|j         
S r$   r7   rL   s     r>   rN   z;GridBox._flatten_grid.<locals>._flatten.<locals>.<listcomp>c   s     C C C C C Cr@   c                    g | ]	}|j         
S r$   rK   rL   s     r>   rN   z;GridBox._flatten_grid.<locals>._flatten.<locals>.<listcomp>v   s     E E E%%+ E E Er@   c                    g | ]	}|j         
S r$   rP   rL   s     r>   rN   z;GridBox._flatten_grid.<locals>._flatten.<locals>.<listcomp>w   s    BBBuu{BBBr@   r   )r   
isinstancer   listfiltermapr'   sumr6   r8   appendr7   r   )r0   r6   r7   	_flatten_r'   r8   offsetrG   factorr1   r2   r3   r4   r5   r/   _flattenrD   nonemptys                r>   r\   z'GridBox._flatten_grid.<locals>._flattenZ   s   UCCCI&$'' )>xY1P1P Q QRR *41b>>)@@x@@@A E C C( C C CDDE% * *E"EK/F49K _ _0RRffRiffRiQSV\Q\%]^^^^ek)FFtE5%000FD)) >xY1P1P Q QRR *41b>>) G E E8 E E EFFEBBBBBC% * *E"EK/F49K _ _0RRfb6k6"9b6kSYZ\S\%]^^^^ek)FFtE5%000tAq441a#;#;"<===r@   NN)r   r8   rX   )clsr0   r6   r7   gridr'   r1   r2   r3   r4   r5   r/   r\   r?   rD   r]   s             @@@@@@r>   _flatten_gridzGridBox._flatten_gridH   s   &"D"D"DEE&"="="=>>	 	 		 	 	 	 	
 GF+	> +	> +	> +	> +	> +	> +	> +	> +	> +	>Z xu--(,
 	D 	D$VRR!Rb"r' BCCCr@   c                "   |at                    }$t          t          j        ||z                      t	          fdt          d|          D                       }ndfd	           }|                     ||          S )z
        This is a copy of parts of the bokeh.layouts.grid implementation
        to avoid distributing non-filled columns.
        Nc                D    g | ]}t          ||z                      S r$   )r   )rM   ir'   r7   s     r>   rN   z)GridBox._get_children.<locals>.<listcomp>   s.    SSS!D!AeG)!455SSSr@   r   c                    t          | t                    r/dz  dk    rt          nt          } |fd| D                       S | S )Nr   r   c                .    g | ]} |d z             S )r   r$   )rM   rG   leveltraverses     r>   rN   z;GridBox._get_children.<locals>.traverse.<locals>.<listcomp>   s)    %W%W%WExxuQw'?'?%W%W%Wr@   )rS   rT   r   r   )r'   rg   	containerrh   s    ` r>   rh   z'GridBox._get_children.<locals>.traverse   sX    h-- $(-	QDI$9%W%W%W%W%WX%W%W%WXXX#Or@   r   )lenintmathceilr   rangera   )r_   r'   r6   r7   Nr0   rh   s    ` `  @r>   _get_childrenzGridBox._get_children   s      1HA}DIag..//SSSSSuQ5?Q?QSSSTTFF$ $ $ $ $ $ Xh''F  666r@   c                   d\  }}|D ]\  }}}}}|j         r:|j                             d          s|j                             d          r|dz  }nd}|j         r:|j                             d          s|j                             d          r|dz  }d}g }|r|                    d           |r|                    d           |S )	N)TT_both_widthTF_heightzequal-widthzequal-height)sizing_modeendswithrX   )selfr'   equal_widthsequal_heightsrG   _css_classess          r>   _compute_css_classeszGridBox._compute_css_classes   s   &0#m#+ 	& 	&UAq!Q  %e&7&@&@&I&I %UM^MgMghpMqMq %$$  &e&7&@&@&I&I &UM^MgMghqMrMr &% % 	.}--- 	/~...r@   c                   |                                  }|p|}||f| j        |j        d         <   |                     |g |||          \  }}|                     || j        | j                  }|                     |          }	d |                     |          	                                D             }
|	|

                    dg           z   |
d<   ||
d<    |j        di |
 |                     || j        |||           |S )Nidc                "    i | ]\  }}|d v	||S ))r7   r6   r$   rM   kvs      r>   
<dictcomp>z&GridBox._get_model.<locals>.<dictcomp>   s)    hhhtq!AUgLgLgaLgLgLgr@   r|   r'   r$   )r#   _modelsref_get_objectsrq   r6   r7   r}   _get_propertiesr8   getupdate_link_propsr%   )rx   r!   rootparentcommmodelr&   r{   r'   r|   
propertiess              r>   
_get_modelzGridBox._get_model   s   !!##}u(-vTXd^$&&ub#tTBB
%%gtz4:FF//99hht';';C'@'@'F'F'H'Hhhh
$/*..PR2S2S$S
=!!)
:""z""" 7dDIIIr@   events$Dict[str, param.parameterized.Event]msgDict[str, Any]r   r   r   r!   r   r   Optional[Comm]returnNonec           
         ddl m} t          |          }t           fd|D                       } j        d         |v sd|v sd|v rgd|v r|d         j        }	n j        }	                     ||	|||          \  }
}                     |
 j	         j
                  }|| j        d         <   nd }t          |          5  d |                                D             }t          j        }dt          _        	 |j                                        5  t#          t                                         ||||||           |r%	 d d d            |t          _        d d d            d S |j        d	         }||j        v r*|r(|j        |         d
                             | |           d d d            n# 1 swxY w Y   |t          _        n# |t          _        w xY w	 d d d            d S # 1 swxY w Y   d S )Nr   )statec              3  \   K   | ]&}j                             ||          j        v V  'd S rB   )r)   r   _preprocess_params)rM   r   rx   s     r>   	<genexpr>z(GridBox._update_model.<locals>.<genexpr>   s=      XXq))!Q//43JJXXXXXXr@   r&   r7   r6   c                "    i | ]\  }}|d v	||S )rF   r$   r   s      r>   r   z)GridBox._update_model.<locals>.<dictcomp>   s)    OOODAq1<N3N3N1a3N3N3Nr@   Tr   r   )ior   dictanyr)   oldr&   r   rq   r6   r7   r   r8   r   _batch_updatemodelsfreezesuper_update_modelr   _views_preprocess)rx   r   r   r   r   r!   r   r   
preprocessr   r&   
old_modelsr'   r   r   	__class__s   `              r>   r   zGridBox._update_model   s    	3iiXXXXTWXXXXX
<	"c))W^^w#~~F""Y'+l"&"3"3E3T4"P"PGZ))'4:tzJJH+3CY'((J#YY 	- 	-OOCIIKKOOOC(F"&E	-Z&&(( Q Q%&&44VS$sTXYYY Q Q Q Q Q Q '-#	- 	- 	- 	- 	- 	- 	- 	- (4.Cel**z*S)!,88tZPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q '-##f#,,,,#	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-sa   7G+:G1F4GG+(A F4(G4F8	8G;F8	<G?G+GG++G/2G/r^   )NNN)r   r   r   r   r   r   r   r   r!   r   r   r   r   r   )__name__
__module____qualname____doc__paramIntegerr6   r7   	BkGridBoxr#   __annotations__r%   r)   r+   r   r-   classmethodra   rq   r}   r   r   __classcell__r   s   @r>   r   r      s         $ EM$y ?3 4 4 4E EM$y @6 7 7 7E %.L----355555 	:3G    
 4> >    
 $$$)L     D D D [DL 7 7 7 [7(  $    -  -  -  -  -  -  -  -  -  -r@   r   c                  j    e Zd ZU  ej        i d          Z ej        dg dd          Z ej        ddd	
          Z	 ej        ddd
          Z
eZded<   dZded<   dddddZded<   dddZded<   dgZded<   e dgZded<    fdZ ej        dd          d              Z ej        d!d          d"             Z ej        dd          d#             Z fd$Zd5d%Z fd&Zed'             Zed(             Zed)             Zd5d6 fd.Z ed/             Z!d0 Z"d1 Z#d2 Z$d3 Z%d4 Z& xZ'S )7GridSpecz?
        The dictionary of child objects that make up the grid.)r   r!   warn)r   erroroverridezM
        Whether to warn, error or simply override on overlapping assignment.)r   r&   r!   Nr   z;
        Limits the number of columns that can be assigned.r   z8
        Limits the number of rows that can be assigned.r"   r#   r$   zClassVar[Tuple[str]]r%   r'   )r&   moder7   r6   r(   r)   r&   r   r+   r&   r,   r   zcss/gridspec.cssr-   c                    d|vrt                      |d<    t                      j        di | d| _        |                                  |                                  |                                  d S )Nr&   Fr$   )r   r   __init__	_updating_update_nrows_update_ncols_update_grid_sizerx   paramsr   s     r>   r   zGridSpec.__init__  s|    F"" +F9""6"""     r@   r6   T)watchc                J    | j         st          | j                  | _        d S d S rB   )r   boolr6   _rows_fixedrx   s    r>   r   zGridSpec._update_nrows  s.    ~ 	0#DJ//D	0 	0r@   r7   c                4    | j         s| j        d u| _        d S d S rB   )r   r7   _cols_fixedr   s    r>   r   zGridSpec._update_ncols  s+    ~ 	6#z5D	6 	6r@   c                :   d| _         | j        s?d | j        D             }|rt          |          nt	          | j                  rdnd| _        | j        s?d | j        D             }|rt          |          nt	          | j                  rdnd| _        d| _         d S )NTc                     g | ]\  }}}}|	|S rB   r$   )rM   r{   x1s      r>   rN   z.GridSpec._update_grid_size.<locals>.<listcomp>  s!    OOO}1ar@   r   r   c                     g | ]\  }}}}|	|S rB   r$   )rM   r{   y1s      r>   rN   z.GridSpec._update_grid_size.<locals>.<listcomp>  s!    OOO}1b!r@   F)r   r   r&   maxrk   r7   r   r6   )rx   max_xidxmax_yidxs      r>   r   zGridSpec._update_grid_size  s     	XOOOOOH*2WXc$,>O>O9VUVDJ 	XOOOOOH*2WXc$,>O>O9VUVDJr@   c                    t                                                      }| j        dvr&d|vrd|v r|d         |d<   d|vrd|v r|d         |d<   |S )NfixedN	min_widthwidth
min_heightheight)r   _init_paramsrv   r   s     r>   r   zGridSpec._init_params#  sr    %%''?22&((W->->&,Wo{#6))h&.@.@'-h'7|$r@   c           	        ddl m} | j        r| j        r| j        | j        z  }nd}| j        r| j        r| j        | j        z  }nd}t          | j                                                  }	t          |t                    r!t          |                                          }|D ]}
|
|	vr|
                    |           g g }}t          | j                                                  D ] \  }\  \  }}}}|dn|}|| j        n|}|dn|}|| j        n|}||||z
  ||z
  f\  }}}}i }| j        dv r/|rt          ||z            |d<   |rt          ||z            |d<   nK| j        |d<   d| j        v r|rt          ||z            |d<   n d| j        v r|rt          ||z            |d<    j        j        di fd|                                D              |v r1j        |j        d	                  \  }}|                    |           nh	                     ||||          }nN# |$ rF}|j        |j        | ur|d |_        |                     ||	d |         |||          cY d }~c S d }~ww xY wt          |t0                    r1t3          |j                  d
k    r |j        d         j        di | n |j        di | |                    |||||f           ||fS )Nr   )RerenderErrorr   r   r   r   rv   c                @    i | ]\  }}j         |         j        ||S r$   )r   readonly)rM   r   r   objs      r>   r   z)GridSpec._get_objects.<locals>.<dictcomp>V  sC      A  A  AA*-)A,*? A1  A  A  Ar@   r   r   r$   )	pane.baser   r7   r   r6   r   rT   r&   valuesrS   r   _cleanup	enumerater8   rv   rl   r   r   r   r   rX   r   r0   r   	BkFlexBoxrk   r'   )rx   r   old_objectsr!   r   r   r   r   r   current_objectsr   r'   old_childrenrd   y0x0r   r   rchwr   rG   r{   er   s                             @r>   r   zGridSpec._get_objects,  s   ------: 	$* 	Jtz)EEE: 	$+ 	[+FFFt|224455k4(( 	5{113344K 	# 	#C/))T"""!#R,*3DL4F4F4H4H*I*I '	1 '	1&A& RR#jbB!#$**BjbB!#$**Bb"R%B/JAq!QJ?22 7*-ag,,Jw' 9+.qx==Jx(,0,<
=)d...6.+.qx==Jx((!111e1*-ag,,Jw'CI B B  A  A  A  A1A1A1C1C  A  A  A B B B k!!;tx~6q##E****ZNN3eTBBEE$ Z Z Zx+0D0D#AH,,UOBQB4GdTXYYYYYYYYYY	Z %++ +EN0C0Cq0H0H(q!(66:6666**z***OOUAq!Q/0000%%s   H11I<69I7/I<7I<c                `    d |D             }t                                          ||          S )Nc                    g | ]
\  }}}}}|S r$   r$   )rM   rG   r{   s      r>   rN   z1GridSpec._compute_sizing_mode.<locals>.<listcomp>m  s#    >>>1uaAqE>>>r@   )r   _compute_sizing_mode)rx   r'   propsr   s      r>   r   zGridSpec._compute_sizing_model  s0    >>X>>>ww++He<<<r@   c                    d | j         D             }|r4t          |          t          | j                   k    rt          |          ndS )Nc                     g | ]\  }}}}|	|S rB   r$   )rM   r{   r   s      r>   rN   z%GridSpec._xoffset.<locals>.<listcomp>r  s!    KKK=Ar1aBNBNNNr@   r   r&   rk   min)rx   min_xidxs     r>   _xoffsetzGridSpec._xoffsetp  sG    KKDLKKK (VS]]c$,>O>O-O-Os8}}}UVVr@   c                    d | j         D             }|r4t          |          t          | j                   k    rt          |          ndS )Nc                     g | ]\  }}}}|	|S rB   r$   )rM   r   r   r{   s       r>   rN   z%GridSpec._yoffset.<locals>.<listcomp>w  s!    LLL>BAqR^B^^^r@   r   r   )rx   min_yidxs     r>   _yoffsetzGridSpec._yoffsetu  sG    LLT\LLL (VS]]c$,>O>O-O-Os8}}}UVVr@   c                j   t          j        | j        | j        fd t                    }t          | j                                                  D ]c\  }\  \  }}}}}|dn|}|| j        n|}	|dn|}
|| j        n|}t          |
|          D ]#}t          ||	          D ]}||||f|fh|||f<   $d|S )Ndtyper   )	npfullr6   r7   objectr   r&   r8   ro   )rx   r`   rd   r   r   r   r   r   lr   tr=   yxs                 r>   _object_gridzGridSpec._object_gridz  s    w
DJ/VDDD*3DL4F4F4H4H*I*I 	; 	;&A& RR#ZRA j

bAZRA j

bA1a[[ ; ;q! ; ;A$&B#3S"9!:DAJJ;; r@   r   Model | Noner   r   c                    t                                          |           | j                                        D ]}|                    |           d S rB   )r   r   r&   r   )rx   r   pr   s      r>   r   zGridSpec._cleanup  sW    $$&& 	 	AJJt	 	r@   c                    t          j        | j        | j        fd          }| j        D ]\  }}}}|||||fxx         dz  cc<   |S )Nuint8r  r   )r  zerosr6   r7   r&   )rx   r`   r   r   r   r   s         r>   r`   zGridSpec.grid  si    xTZ0@@@ $ 	$ 	$RRB2!#r@   c                    t          | j                                        fi |}| j        s|d= | j        s|d=  t          |           di |S )z
        Makes a copy of the GridSpec sharing the same parameters.

        Arguments
        ---------
        params: Keyword arguments override the parameters on the clone.

        Returns
        -------
        Cloned GridSpec object
        r7   r6   r$   )r   r   r   r   r   type)rx   r   r  s      r>   clonezGridSpec.clone  sc     ""$$//// 	'
 	'
tDzzAr@   c              #  J   K   | j                                         D ]}|V  d S rB   )r&   r   )rx   r   s     r>   __iter__zGridSpec.__iter__  s8      <&&(( 	 	CIIII	 	r@   c                   t          |t                    r|\  }}n|t          d           }}| j        ||f         }t          |t          j                  r,t          d |                                D                       }nt          |          d         d         g}|D ]
}| j	        |= | j
                            d           d S )Nc                8    g | ]}t          |          d          S rj   rT   rM   os     r>   rN   z(GridSpec.__delitem__.<locals>.<listcomp>  "    "I"I"I!4771:"I"I"Ir@   r   r&   )rS   tupleslicer
  r  ndarrayr   flattenrT   r&   r   trigger)rx   indexyidxxidxsubgriddeletedkeys          r>   __delitem__zGridSpec.__delitem__  s    eU## 	,JD$$d$D#D$J/grz** 	,!"I"Iw7H7H"I"I"IJJGGG}}Q'*+G 	" 	"CS!!
9%%%%%r@   c                   t          |t                    r|\  }}n|t          d           }}| j        ||f         }t          |t          j                  rt          d |                                D                       }|                     |          }|j	        |j
        }}g }	|j                                        D ]K\  \  }
}}}}|
|
|z  }
|||z  }|||z  }|||z  }|
|||f|f|	vr|	                    |
|||f|f           Lt          |	          |_        |j        t          | j                  z  }|j        t          | j                  z  }|j        rt%          |j        |z            |_        |j        rt%          |j        |z            |_        |j        rt%          |j        |z            |_        |j        rt%          |j        |z            |_        |S t-          |          d         d         S )Nc                8    g | ]}t          |          d          S rj   r  r  s     r>   rN   z(GridSpec.__getitem__.<locals>.<listcomp>  r  r@   )r&   r   r   )rS   r  r  r
  r  r  r   r  r  r   r   r&   r8   rX   r7   floatr6   r   rl   r   	max_width
max_heightrT   )rx   r!  r"  r#  r$  r&   gspecxoffyoffadjustedr   r   r   r   r   width_scaleheight_scales                    r>   __getitem__zGridSpec.__getitem__  s   eU## 	,JD$$d$D#D$J/grz** 	'!"I"Iw7H7H"I"I"IJJGJJwJ//E$DH).)<)<)>)> = =% RR#>2:2>2:2>2:2>2:2R$c*(::OOb"b"%5s$;<<<'11EM+eDJ&7&77K ;uTZ'8'88L{ =!%+";<<| @"5<,#>?? E"%eo&C"D"D H#&u'7,'F#G#G L==#A&&r@   c                h   ddl m} t          |t                    st	          d          |\  }}t          |t
                    r|j        |j        }}n||dz   }}t          |t
                    r|j        |j        }	}n||dz   }	}|dn|}
|| j        n|}|dn|}|	| j	        n|	}| j
        r.|
| j        k    s|| j        k    rt	          d| j         d          | j        r.|| j	        k    s|| j	        k    rt	          d| j	         d          |||	|f}|| j        v }|                     t          | j                  d	
          }|s/ ||          |j        |<   |                                 |j        }n|j        }||||
|fxx         dz  cc<   |dk    }t          | j                  }|                                rVd}g }t%          t'          j        |           D ]E\  }}	 | ||f         }n# t*          $ r Y w xY w||vr |                    |           |d|||fz  z  }Fd|z   dz   t/          |                    d                    z   }| j        dk    rt	          |          | j        dk    r| j                            |           | j        |         }t          |t:                    r!|rt=          |          d         d         gng }nd |                                D             }t;          |          D ]}	 ||= # t@          $ r Y w xY w ||          ||<   || _        d S )Nr   )panelz/Must supply a 2D index for GridSpec assignment.r   r   z]Assigned object to column(s) out-of-bounds of the grid declared by `ncols`. which was set to .z]Assigned object to column(s) out-of-bounds of the grid declared by `nrows`, which was set to r   r    z    (%d, %d): %s

zNSpecified region overlaps with the following existing object(s) in the grid:

zQThe following shows a view of the grid (empty: 0, occupied: 1, overlapping: 2):

r  r   r   c                D    g | ]}t          |          d          d          S rj   r  r  s     r>   rN   z(GridSpec.__setitem__.<locals>.<listcomp>#  s&    DDDQ4771:a=DDDr@   )!r   r5  rS   r  
IndexErrorr  startstopr7   r6   r   r   r&   r  r   r   r`   r   zipr  where	ExceptionrX   strastyper   r   warningr
  setrT   r  KeyError)rx   r!  r   r5  r"  r#  r   r   r   r   r  r   r  r=   r&  overlapr  r`   overlap_gridnew_objectsoverlappingr&   old_objoverlap_textr$  dkeys                             r>   __setitem__zGridSpec.__setitem__  s   %%%%%%%'' 	PNOOO
ddE"" 	$j$)BBDFBdE"" 	$j$)BBDFBAA*DJJ"AA*DJJ" 	:djA
NN 9+/:9 9 9 : : :  	:djA
NN 9+/:9 9 9 : : : 2r2%

;t|#<#<:
NN 	 !&sEM###%%%:DD:D1acNNNaNNNax!$,// 	KG #RXl%;%; < R Rt"4:.GG    H'))NN7+++#9T4<Q#QQKBBMNKK  G 4 455	6L
 yG## ...f$$
""<000'.G'3'' E3:B4==+A.//DD'//2C2CDDDG  #D))   H 5::C"s$   ,
G77
HH	L
LLrB   )r   r  r   r   )(r   r   r   r   r
   r&   ObjectSelectorr   r   r7   r6   r   r#   r   r%   r)   r+   r   r   r-   r   dependsr   r   r   r   r   r   propertyr   r   r
  r   r`   r  r  r'  r3  rK  r   r   s   @r>   r   r      s4        ej *B C C CG  58U8U8U \P Q Q QD EM$y ?> ? ? ?E EM$y ?; < < <E %.L----/11111 tdT3 3G    
 > >     09k9999,4)F)F)F(GLGGGG! ! ! ! ! U]7$'''0 0 ('0 U]7$'''6 6 ('6 U]9D)))  *)    >& >& >& >&@= = = = = W W XW W W XW 
 
 X
         X  &  & & & '  '  'DK# K# K# K# K# K# K#r@   r   )*r   
__future__r   rm   collectionsr   r   	functoolsr   typingr   r   r	   r
   r   r   r   r   numpyr  r   bokeh.modelsr   r   r   r   io.modelr   io.resourcesr   baser   r   r   r   bokeh.documentr   bokeh.modelr   pyviz_commsr   r   r$   r@   r>   <module>r[     s    # " " " " "  / / / / / / / /                               C C C C C C C C       # # # # # #             !''''''!!!!!!      E- E- E- E- E-i E- E- E-PC# C# C# C# C#u C# C# C# C# C#r@   