From aed505eb50712942b31d6cfa0bd3ca1729709eda Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 16:21:06 +0200 Subject: [PATCH 01/14] Allow `outline_color` to accept an obs column (#681) Symmetric with `color`: a non-color string passed to `outline_color` is now resolved as a column on the annotating table (or a different table via the new `outline_table_name` on the render params) and the outline is rendered per-shape / per-label via the same `palette` / `cmap` / `na_color` used for fill. Shapes (matplotlib + datashader) and labels are covered. When both fill and outline are categorical columns, two stacked legends are drawn, auto-positioned to avoid overlap. The 2-outline form remains literal-only; combining it with a column outline raises. --- src/spatialdata_plot/pl/_datashader.py | 120 ++++++++++- src/spatialdata_plot/pl/basic.py | 16 +- src/spatialdata_plot/pl/render.py | 257 ++++++++++++++++++++--- src/spatialdata_plot/pl/render_params.py | 4 + src/spatialdata_plot/pl/utils.py | 164 ++++++++++++++- tests/pl/test_render_labels.py | 36 ++++ tests/pl/test_render_shapes.py | 93 ++++++++ 7 files changed, 658 insertions(+), 32 deletions(-) diff --git a/src/spatialdata_plot/pl/_datashader.py b/src/spatialdata_plot/pl/_datashader.py index 8b9415e4..f3db5142 100644 --- a/src/spatialdata_plot/pl/_datashader.py +++ b/src/spatialdata_plot/pl/_datashader.py @@ -344,8 +344,17 @@ def _render_ds_outlines( factor: float, x_min: float = 0.0, y_min: float = 0.0, + outline_color_vector: Any | None = None, + outline_color_source_vector: pd.Series | None = None, + outline_col_name: str | None = None, ) -> None: - """Aggregate, shade, and render shape outlines (outer and inner) with datashader.""" + """Aggregate, shade, and render shape outlines (outer and inner) with datashader. + + When ``outline_col_name`` is provided, the outer outline is colored per-shape + using ``ds.by`` (categorical) or a numeric reduction (continuous) instead of + a single literal color. Column-based outline coloring is incompatible with + the two-outline form, so this path only affects the outer outline. + """ ds_lw_factor = fig_params.fig.dpi / 72 assert len(render_params.outline_alpha) == 2 # noqa: S101 @@ -358,6 +367,25 @@ def _render_ds_outlines( alpha = render_params.outline_alpha[idx] if alpha <= 0: continue + if idx == 0 and outline_col_name is not None: + _render_ds_outline_by_column( + cvs=cvs, + transformed_element=transformed_element, + col_for_outline_color=outline_col_name, + outline_color_vector=outline_color_vector, + outline_color_source_vector=outline_color_source_vector, + cmap_params=render_params.cmap_params, + ds_reduction=render_params.ds_reduction, + line_width=linewidth * ds_lw_factor, + alpha=alpha, + fig_params=fig_params, + ax=ax, + factor=factor, + x_min=x_min, + y_min=y_min, + zorder=render_params.zorder, + ) + continue agg_outline = cvs.line( transformed_element, geometry="geometry", @@ -375,6 +403,96 @@ def _render_ds_outlines( _ax_show_and_transform(rgba, trans, ax, zorder=render_params.zorder) +def _render_ds_outline_by_column( + cvs: Any, + transformed_element: Any, + col_for_outline_color: str, + outline_color_vector: Any | None, + outline_color_source_vector: pd.Series | None, + cmap_params: Any, + ds_reduction: _DsReduction | None, + line_width: float, + alpha: float, + fig_params: FigParams, + ax: matplotlib.axes.SubplotBase, + factor: float, + x_min: float, + y_min: float, + zorder: int, +) -> None: + """Aggregate + shade an outline colored by an obs column via datashader. + + Mirrors the fill pipeline but uses ``cvs.line`` so only the boundary is rasterized. + """ + color_by_categorical = outline_color_source_vector is not None + na_color_hex = _hex_no_alpha(cmap_params.na_color.get_hex()) + + if col_for_outline_color not in transformed_element.columns: + # Ensure the column rides along with the geometry for ds.by / reductions. + if color_by_categorical and outline_color_source_vector is not None: + transformed_element[col_for_outline_color] = pd.Categorical(outline_color_source_vector) + else: + transformed_element[col_for_outline_color] = np.asarray(outline_color_vector) + + if color_by_categorical: + cat_series = transformed_element[col_for_outline_color] + if not isinstance(cat_series.dtype, pd.CategoricalDtype): + cat_series = cat_series.astype("category") + transformed_element[col_for_outline_color] = _inject_ds_nan_sentinel(cat_series) + agg_outline = cvs.line( + transformed_element, + geometry="geometry", + agg=ds.by(col_for_outline_color, ds.count()), + line_width=line_width, + ) + color_key = _build_datashader_color_key( + _coerce_categorical_source(transformed_element[col_for_outline_color]), + outline_color_vector, + na_color_hex, + ) + shaded = ds.tf.shade( + agg_outline, + color_key=color_key, + min_alpha=_convert_alpha_to_datashader_range(alpha), + how="linear", + ) + else: + reduction_name = ds_reduction if ds_reduction is not None else "max" + reduction_function_map = { + "sum": ds.sum, + "mean": ds.mean, + "any": ds.any, + "count": ds.count, + "std": ds.std, + "var": ds.var, + "max": ds.max, + "min": ds.min, + } + try: + reduction_function = reduction_function_map[reduction_name](column=col_for_outline_color) + except KeyError as e: + raise ValueError( + f"Reduction '{reduction_name}' is not supported. " + f"Use one of: {', '.join(reduction_function_map.keys())}." + ) from e + agg_outline = cvs.line( + transformed_element, + geometry="geometry", + agg=reduction_function, + line_width=line_width, + ) + shaded = ds.tf.shade( + agg_outline, + cmap=cmap_params.cmap, + min_alpha=_convert_alpha_to_datashader_range(alpha), + how="linear", + ) + + shaded = _apply_user_alpha(shaded, alpha) + rgba, trans = _create_image_from_datashader_result(shaded, factor, ax, x_min, y_min) + _ax_show_and_transform(rgba, trans, ax, zorder=zorder) + + def _build_ds_colorbar( reduction_bounds: tuple[Any, Any] | None, norm: Normalize, diff --git a/src/spatialdata_plot/pl/basic.py b/src/spatialdata_plot/pl/basic.py index 37a80593..8545f71a 100644 --- a/src/spatialdata_plot/pl/basic.py +++ b/src/spatialdata_plot/pl/basic.py @@ -241,13 +241,18 @@ def render_shapes( Width of the border. If 2 values are given (tuple), 2 borders are shown with these widths (outer & inner). If `outline_color` and/or `outline_alpha` are used to indicate that one/two outlines should be drawn, the default outline widths 1.5 and 0.5 are used for outer/only and inner outline respectively. - outline_color : ColorLike | tuple[ColorLike], optional + outline_color : ColorLike | tuple[ColorLike] | str, optional Color of the border. Can either be a named color ("red"), a hex representation ("#000000") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). If the hex representation includes alpha, e.g. "#000000ff", and `outline_alpha` is not given, this value controls the opacity of the outline. If 2 values are given (tuple), 2 borders are shown with these colors (outer & inner). If `outline_width` and/or `outline_alpha` are used to indicate that one/two outlines should be drawn, the default outline colors "#000000" and "#ffffff are used for outer/only and inner outline respectively. + A string that is not a recognized color is interpreted as a column key (in `obs` of the annotating table + or in the element's own dataframe), mirroring how ``color`` is parsed. The outline is then colored + per-shape using the same ``palette`` / ``cmap`` / ``na_color`` as the fill. When both ``color`` and + ``outline_color`` resolve to columns, two stacked legends are drawn. Column-based outline coloring is + only supported for a single outline (not the 2-tuple form). outline_alpha : float | int | tuple[float | int, float | int] | None, optional Alpha value for the outline of shapes. Invisible by default, meaning outline_alpha=0.0 if both outline_color and outline_width are not specified. Else, outlines are rendered with the alpha implied by outline_color, or @@ -344,6 +349,8 @@ def render_shapes( element=element, color=param_values["color"], col_for_color=param_values["col_for_color"], + col_for_outline_color=param_values["col_for_outline_color"], + outline_table_name=param_values["outline_table_name"], groups=param_values["groups"], scale=param_values["scale"], outline_params=outline_params, @@ -810,11 +817,14 @@ def render_labels( fill_alpha : float | int | None, optional Alpha value for the fill of the labels. By default, it is set to 0.4 or, if a color is given that implies an alpha, that value is used for `fill_alpha`. - outline_color : ColorLike | None + outline_color : ColorLike | str | None Color of the outline of the labels. Can either be a named color ("red"), a hex representation ("#000000") or a list of floats that represent RGB/RGBA values (1.0, 0.0, 0.0, 1.0). If ``None``, the outline inherits from the ``color`` parameter when it is a literal color, or uses data-driven per-label colors when ``color`` refers to a column. + A string that is not a recognized color is interpreted as a column key (in `obs` of the annotating + table), mirroring how ``color`` is parsed. The outline is then colored per-label using the same + ``palette`` / ``cmap`` / ``na_color`` as the fill. scale : str | None Influences the resolution of the rendering. Possibilities for setting this parameter: 1) None (default). The image is rasterized to fit the canvas size. For multiscale images, the best scale @@ -880,6 +890,8 @@ def render_labels( element=element, color=param_values["color"], col_for_color=param_values["col_for_color"], + col_for_outline_color=param_values["col_for_outline_color"], + outline_table_name=param_values["outline_table_name"], groups=param_values["groups"], contour_px=param_values["contour_px"], cmap_params=cmap_params, diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index 1c9b97eb..cf9a6fd3 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -59,6 +59,7 @@ from spatialdata_plot.pl.utils import ( _ax_show_and_transform, _check_obs_var_shadow, + _color_vector_to_rgba, _convert_shapes, _datashader_canvas_from_dataframe, _decorate_axs, @@ -334,12 +335,18 @@ def _add_legend_and_colorbar( colorbar: bool | str | None, colorbar_params: dict[str, object] | None, colorbar_requests: list[ColorbarSpec] | None, + outline_col_for_color: str | None = None, + outline_color_source_vector: pd.Series | None = None, + outline_color_vector: Any | None = None, ) -> None: """Add legend and colorbar decorations if the color vector warrants them.""" - if not _want_decorations(color_vector, na_color): + fill_has_decorations = _want_decorations(color_vector, na_color) and col_for_color is not None + outline_has_decorations = outline_col_for_color is not None and outline_color_source_vector is not None + + if not fill_has_decorations and not outline_has_decorations: return - if palette is None: + if palette is None and fill_has_decorations: palette = _make_palette(color_source_vector, color_vector) if color_source_vector is not None and hasattr(color_source_vector, "remove_unused_categories"): @@ -351,29 +358,97 @@ def _add_legend_and_colorbar( is_continuous=col_for_color is not None and color_source_vector is None, ) - _decorate_axs( - ax=ax, - cax=cax, - fig_params=fig_params, - adata=adata, - value_to_plot=col_for_color, - color_source_vector=color_source_vector, - color_vector=color_vector, - palette=palette, - alpha=alpha, - na_color=na_color, - legend_fontsize=legend_params.legend_fontsize, - legend_fontweight=legend_params.legend_fontweight, - legend_loc=legend_params.legend_loc, - legend_fontoutline=legend_params.legend_fontoutline, - na_in_legend=legend_params.na_in_legend, - colorbar=wants_colorbar and legend_params.colorbar, - colorbar_params=colorbar_params, - colorbar_requests=colorbar_requests, - colorbar_label=_resolve_colorbar_label( - colorbar_params, - col_for_color if isinstance(col_for_color, str) else None, - ), + if fill_has_decorations: + _decorate_axs( + ax=ax, + cax=cax, + fig_params=fig_params, + adata=adata, + value_to_plot=col_for_color, + color_source_vector=color_source_vector, + color_vector=color_vector, + palette=palette, + alpha=alpha, + na_color=na_color, + legend_fontsize=legend_params.legend_fontsize, + legend_fontweight=legend_params.legend_fontweight, + legend_loc=legend_params.legend_loc, + legend_fontoutline=legend_params.legend_fontoutline, + na_in_legend=legend_params.na_in_legend, + colorbar=wants_colorbar and legend_params.colorbar, + colorbar_params=colorbar_params, + colorbar_requests=colorbar_requests, + colorbar_label=_resolve_colorbar_label( + colorbar_params, + col_for_color if isinstance(col_for_color, str) else None, + ), + ) + + if outline_has_decorations: + assert outline_col_for_color is not None # narrowed by outline_has_decorations # noqa: S101 + assert outline_color_source_vector is not None # noqa: S101 + _add_outline_legend( + ax=ax, + fig_params=fig_params, + outline_col=outline_col_for_color, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + fill_has_legend=fill_has_decorations and color_source_vector is not None, + legend_params=legend_params, + ) + + +def _add_outline_legend( + ax: matplotlib.axes.SubplotBase, + fig_params: FigParams, + outline_col: str, + outline_color_source_vector: pd.Series, + outline_color_vector: Any, + fill_has_legend: bool, + legend_params: LegendParams, +) -> None: + """Add a second legend for outline-by-column, auto-positioned below the fill legend. + + Uses the rendered fill legend's window extent to anchor the outline legend just + below it in axes-fraction coordinates. Falls back to anchoring at the bottom-right + of the axes when the measurement is unavailable. + """ + cats = outline_color_source_vector.remove_unused_categories().unique() + cats = cats[~cats.isnull()] + mapping_df = pd.DataFrame( + {"cats": outline_color_source_vector.remove_unused_categories(), "color": outline_color_vector} + ) + color_map = mapping_df.drop_duplicates("cats").set_index("cats")["color"].to_dict() + + outline_handles = [ax.scatter([], [], c=color_map[c], label=str(c)) for c in cats] + + anchor_y: float | None = None + if fill_has_legend: + fill_legend = ax.get_legend() + if fill_legend is not None: + ax.add_artist(fill_legend) # keep fill legend on the axes + try: + fig_params.fig.canvas.draw() + bbox_axes = fill_legend.get_window_extent().transformed(ax.transAxes.inverted()) + anchor_y = float(bbox_axes.y0) - 0.02 + except (AttributeError, ValueError, RuntimeError): + anchor_y = None + + if anchor_y is not None and anchor_y > 0: + loc = "upper left" + anchor = (1.02, anchor_y) + else: + loc = "lower left" if fill_has_legend else "center left" + anchor = (1.02, 0.0) if fill_has_legend else (1.0, 0.5) + + ax.legend( + handles=outline_handles, + title=f"outline: {outline_col}", + frameon=False, + loc=loc, + bbox_to_anchor=anchor, + fontsize=legend_params.legend_fontsize, + ncol=(1 if len(outline_handles) <= 14 else 2 if len(outline_handles) <= 30 else 3), ) @@ -479,6 +554,43 @@ def _render_shapes( values_are_categorical = color_source_vector is not None + col_for_outline_color = render_params.col_for_outline_color + outline_table_name = render_params.outline_table_name + outline_color_source_vector: pd.Series | None = None + outline_color_vector: Any = None + if col_for_outline_color is not None: + # When the outline column lives in a table that hasn't been joined yet + # (no fill table, or a different table than fill's), inner-join it onto + # the element so the lookup is aligned and the element row count matches + # the outline vector length. + if outline_table_name is not None and outline_table_name != table_name: + _outline_dict, _joined_outline_table = join_spatialelement_table( + sdata, spatial_element_names=element, table_name=outline_table_name, how="inner" + ) + _joined_outline_table.uns["spatialdata_attrs"]["region"] = ( + _joined_outline_table.obs[_joined_outline_table.uns["spatialdata_attrs"]["region_key"]] + .unique() + .tolist() + ) + sdata_filt[outline_table_name] = _joined_outline_table + # If no fill join happened, replace the element with the outline-joined version + # so the per-shape outline vector length matches the rendered shapes. + if table_name is None: + sdata_filt[element] = shapes = _outline_dict[element] + outline_color_source_vector, outline_color_vector, _ = _set_color_source_vec( + sdata=sdata_filt, + element=sdata_filt[element], + element_name=element, + value_to_plot=col_for_outline_color, + groups=None, + palette=render_params.palette, + na_color=render_params.cmap_params.na_color, + cmap_params=render_params.cmap_params, + table_name=outline_table_name, + table_layer=table_layer, + coordinate_system=coordinate_system, + ) + _warn_groups_ignored_continuous(groups, color_source_vector, col_for_color) if groups is not None and color_source_vector is not None: @@ -495,6 +607,15 @@ def _render_shapes( if len(shapes) == 0: return sdata_filt[element] = shapes + if outline_color_vector is not None: + _keep_arr = np.asarray(keep) + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[_keep_arr] + outline_color_vector = ( + outline_color_vector[_keep_arr] + if hasattr(outline_color_vector, "__getitem__") + else outline_color_vector + ) # color_source_vector is None when the values aren't categorical if not values_are_categorical and render_params.transfunc is not None: @@ -677,6 +798,11 @@ def _render_shapes( na_color_hex, ) + if col_for_outline_color is not None and col_for_outline_color not in transformed_element.columns: + if outline_color_source_vector is not None: + transformed_element[col_for_outline_color] = pd.Categorical(outline_color_source_vector) + else: + transformed_element[col_for_outline_color] = np.asarray(outline_color_vector) _render_ds_outlines( cvs, transformed_element, @@ -686,6 +812,9 @@ def _render_shapes( factor, x_min=x_ext[0], y_min=y_ext[0], + outline_color_vector=outline_color_vector, + outline_color_source_vector=outline_color_source_vector, + outline_col_name=col_for_outline_color, ) _cax = _render_ds_image( @@ -702,7 +831,31 @@ def _render_shapes( elif method == "matplotlib": # render outlines separately to ensure they are always underneath the shape - if render_params.outline_alpha[0] > 0 and isinstance(render_params.outline_params.outer_outline_color, Color): + if col_for_outline_color is not None and render_params.outline_alpha[0] > 0: + outline_rgba = _color_vector_to_rgba( + outline_color_vector, + outline_color_source_vector, + render_params.cmap_params, + n_rows=len(shapes), + ) + _cax = _get_collection_shape( + shapes=shapes, + s=render_params.scale, + c=np.array(["white"]), # hack, will be invisible bc fill_alpha=0 + render_params=render_params, + rasterized=sc_settings._vector_friendly, + cmap=None, + norm=None, + fill_alpha=0.0, + outline_alpha=render_params.outline_alpha[0], + outline_color=outline_rgba, + linewidth=render_params.outline_params.outer_outline_linewidth, + zorder=render_params.zorder, + ) + ax.add_collection(_cax) + for path in _cax.get_paths(): + path.vertices = trans.transform(path.vertices) + elif render_params.outline_alpha[0] > 0 and isinstance(render_params.outline_params.outer_outline_color, Color): _cax = _get_collection_shape( shapes=shapes, s=render_params.scale, @@ -798,6 +951,9 @@ def _render_shapes( colorbar=render_params.colorbar, colorbar_params=render_params.colorbar_params, colorbar_requests=colorbar_requests, + outline_col_for_color=col_for_outline_color, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, ) @@ -1886,6 +2042,41 @@ def _render_labels( if color_source_vector is None and render_params.transfunc is not None: color_vector = render_params.transfunc(color_vector) + col_for_outline_color = render_params.col_for_outline_color + outline_table_name = render_params.outline_table_name + outline_color_source_vector: pd.Series | None = None + outline_color_vector: Any = None + if col_for_outline_color is not None: + outline_color_source_vector, outline_color_vector, _ = _set_color_source_vec( + sdata=sdata_filt, + element=label, + element_name=element, + value_to_plot=col_for_outline_color, + groups=None, + palette=palette, + na_color=render_params.cmap_params.na_color, + cmap_params=render_params.cmap_params, + table_name=outline_table_name, + table_layer=table_layer, + render_type="labels", + coordinate_system=coordinate_system, + ) + # Apply the same fill groups-keep filter so outline vectors align with instance_id + if ( + groups is not None + and categorical + and color_source_vector is not None + and (_na.default_color_set or _na.is_fully_transparent()) + ): + _keep_arr = np.asarray(color_source_vector.isin(groups)) + # color_source_vector was already masked above; we need the pre-mask version, + # which we can reconstruct via length matching. If lengths still match the + # post-mask vector, no filter is needed (no-op). Otherwise mask now. + if outline_color_vector is not None and len(outline_color_vector) > len(instance_id): + outline_color_vector = outline_color_vector[_keep_arr] + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[_keep_arr] + def _draw_labels( seg_erosionpx: int | None, seg_boundaries: bool, @@ -1902,6 +2093,8 @@ def _draw_labels( seg_boundaries=seg_boundaries, na_color=na_color, outline_color=outline_color, + outline_color_vector=outline_color_vector if seg_boundaries else None, + outline_color_source_vector=outline_color_source_vector if seg_boundaries else None, ) cax = ax.imshow( @@ -2000,6 +2193,18 @@ def _draw_labels( ), ) + if col_for_outline_color is not None and outline_color_source_vector is not None: + fill_has_legend = col_for_color is not None and color_source_vector is not None + _add_outline_legend( + ax=ax, + fig_params=fig_params, + outline_col=col_for_outline_color, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + fill_has_legend=fill_has_legend, + legend_params=legend_params, + ) + def _normalise_to_range(values: np.ndarray, lo: float, hi: float) -> np.ndarray: """Min-max normalise a 1-D array into ``[lo, hi]``. Constant input → midpoint.""" diff --git a/src/spatialdata_plot/pl/render_params.py b/src/spatialdata_plot/pl/render_params.py index a0414d6b..48ef621c 100644 --- a/src/spatialdata_plot/pl/render_params.py +++ b/src/spatialdata_plot/pl/render_params.py @@ -232,6 +232,8 @@ class ShapesRenderParams: element: str color: Color | None = None col_for_color: str | None = None + col_for_outline_color: str | None = None + outline_table_name: str | None = None groups: str | list[str] | None = None palette: ListedColormap | dict[str, str] | list[str] | None = None outline_alpha: tuple[float, float] = (1.0, 1.0) @@ -298,6 +300,8 @@ class LabelsRenderParams: element: str color: Color | None = None col_for_color: str | None = None + col_for_outline_color: str | None = None + outline_table_name: str | None = None groups: str | list[str] | None = None contour_px: int | None = None palette: ListedColormap | dict[str, str] | list[str] | None = None diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index a64b0fd2..b1e11c63 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -431,6 +431,70 @@ def _scale_pathpatch_around_centroid(pathpatch: mpatches.PathPatch, scale_factor pathpatch.get_path().vertices = scaled_vertices +def _color_vector_to_rgba( + color_vector: Any, + color_source_vector: pd.Series | None, + cmap_params: CmapParams, + n_rows: int, +) -> np.ndarray: + """Convert a fill/outline `color_vector` (categorical hex strings or continuous numerics) to (N, 4) RGBA. + + Mirrors the per-row mapping done inside :func:`_get_collection_shape` so that + callers can pre-materialize an outline-color array. NaN/non-finite entries are + painted with ``cmap_params.na_color``. + """ + na_rgba = colors.to_rgba(cmap_params.na_color.get_hex_with_alpha()) + if color_vector is None: + rgba = np.empty((n_rows, 4), dtype=float) + rgba[:] = na_rgba + return rgba + + if color_source_vector is not None: + # Categorical: color_vector contains hex strings aligned to color_source_vector + return np.asarray(ColorConverter().to_rgba_array(list(color_vector))) + + arr = np.asarray(color_vector) + if arr.ndim == 2 and arr.shape[1] in (3, 4) and np.issubdtype(arr.dtype, np.number): + return np.asarray(ColorConverter().to_rgba_array(arr)) + + rgba = np.empty((len(arr), 4), dtype=float) + rgba[:] = na_rgba + if np.issubdtype(arr.dtype, np.number): + finite_mask = np.isfinite(arr) + if finite_mask.any(): + norm = cmap_params.norm + if norm.vmin is None or norm.vmax is None: + vmin = float(np.nanmin(arr[finite_mask])) + vmax = float(np.nanmax(arr[finite_mask])) + if not np.isfinite(vmin) or not np.isfinite(vmax) or vmin == vmax: + vmin, vmax = 0.0, 1.0 + used_norm = Normalize(vmin=vmin, vmax=vmax, clip=False) + else: + used_norm = norm + rgba[finite_mask] = cmap_params.cmap(used_norm(arr[finite_mask])) + return rgba + + # Object dtype: mix of numerics and color-likes (mirrors _get_collection_shape Case C) + series = pd.Series(arr, copy=False) + num = pd.to_numeric(series, errors="coerce").to_numpy() + is_num = np.isfinite(num) + if is_num.any(): + norm = cmap_params.norm + if norm.vmin is None or norm.vmax is None: + vmin = float(np.nanmin(num[is_num])) + vmax = float(np.nanmax(num[is_num])) + if not np.isfinite(vmin) or not np.isfinite(vmax) or vmin == vmax: + vmin, vmax = 0.0, 1.0 + used_norm = Normalize(vmin=vmin, vmax=vmax, clip=False) + else: + used_norm = norm + rgba[is_num] = cmap_params.cmap(used_norm(num[is_num])) + color_mask = (~is_num) & series.notna().to_numpy() + if color_mask.any(): + rgba[color_mask] = ColorConverter().to_rgba_array(series[color_mask].tolist()) + return rgba + + def _get_collection_shape( shapes: list[GeoDataFrame], c: Any, @@ -439,7 +503,7 @@ def _get_collection_shape( render_params: ShapesRenderParams, fill_alpha: None | float = None, outline_alpha: None | float = None, - outline_color: None | str | list[float] = "white", + outline_color: None | str | list[float] | np.ndarray = "white", linewidth: float = 0.0, **kwargs: Any, ) -> PatchCollection: @@ -534,7 +598,12 @@ def _as_rgba_array(x: Any) -> np.ndarray: # Outline handling if outline_alpha and outline_alpha > 0.0: - outline_c_array = _as_rgba_array(outline_color) + outline_arr = np.asarray(outline_color) if not isinstance(outline_color, str) else None + if outline_arr is not None and outline_arr.ndim == 2 and outline_arr.shape == (len(shapes), 4): + # Per-shape RGBA array: use row-wise, applying outline_alpha to the alpha channel. + outline_c_array = outline_arr.astype(float, copy=True) + else: + outline_c_array = _as_rgba_array(outline_color) outline_c_array[..., -1] = outline_alpha outline_c = outline_c_array.tolist() else: @@ -1315,6 +1384,8 @@ def _map_color_seg( seg_erosionpx: int | None = None, seg_boundaries: bool = False, outline_color: Color | None = None, + outline_color_vector: ArrayLike | pd.Series[CategoricalDtype] | None = None, + outline_color_source_vector: pd.Series[CategoricalDtype] | None = None, ) -> ArrayLike: cell_id = np.array(cell_id) @@ -1358,6 +1429,55 @@ def _map_color_seg( if seg_erosionpx is not None: val_im[val_im == erosion(val_im, footprint_rectangle((seg_erosionpx, seg_erosionpx)))] = 0 + if seg_boundaries and outline_color_vector is not None: + # Column-driven outline: build per-label colors from the outline vector and overlay + # on the eroded ring. Only Case A (categorical) and Case B (continuous) are reachable + # for this path, since a column was always specified by the user. + if outline_color_source_vector is not None and isinstance( + outline_color_vector.dtype if hasattr(outline_color_vector, "dtype") else None, pd.CategoricalDtype + ): + outline_val_im: ArrayLike = map_array(seg.copy(), cell_id, outline_color_vector.codes + 1) + outline_cols = colors.to_rgba_array(outline_color_vector.categories) + elif outline_color_source_vector is not None: + # Categorical column but color_vector is hex strings (most common case) + cat = pd.Categorical(outline_color_source_vector) + cat_codes = cat.codes + outline_val_im = map_array(seg.copy(), cell_id, cat_codes + 1) + # Use the actual color_vector (hex strings aligned to cells) deduped by category + color_arr = np.asarray(outline_color_vector, dtype=object) + cat_colors: list[Any] = [] + for cat_idx in range(len(cat.categories)): + first_match = np.where(cat_codes == cat_idx)[0] + cat_colors.append(color_arr[first_match[0]] if len(first_match) else na_color.get_hex_with_alpha()) + outline_cols = colors.to_rgba_array(cat_colors) + else: + # Continuous: numeric values normalized via cmap + ov = ( + outline_color_vector.to_numpy() + if isinstance(outline_color_vector, pd.Series) + else np.asarray(outline_color_vector) + ) + normed = ov.copy().astype(float) + finite = ~np.isnan(normed) + if finite.any(): + normed[finite] = cmap_params.norm(normed[finite]) + outline_cols = cmap_params.cmap(normed) + outline_val_im = map_array(seg.copy(), cell_id, cell_id) + if seg_erosionpx is not None: + outline_val_im[ + outline_val_im == erosion(outline_val_im, footprint_rectangle((seg_erosionpx, seg_erosionpx))) + ] = 0 + outline_seg_im = label2rgb( + label=outline_val_im, + colors=outline_cols, + bg_label=0, + bg_color=(1, 1, 1), + image_alpha=0, + ) + outline_mask = val_im > 0 + alpha_channel = outline_mask.astype(float) + return np.dstack((outline_seg_im, alpha_channel)) + if seg_boundaries and outline_color is not None: # Uniform outline color requested: skip label2rgb, build RGBA directly outline_rgba = colors.to_rgba(outline_color.get_hex_with_alpha()) @@ -2486,9 +2606,11 @@ def _type_check_params(param_dict: dict[str, Any], element_type: str) -> dict[st raise TypeError("Parameter 'outline_alpha' must be numeric and between 0 and 1.") outline_color = param_dict.get("outline_color") + if "outline_color" in param_dict and element_type in {"shapes", "labels"}: + param_dict["col_for_outline_color"] = None if outline_color: if not isinstance(outline_color, str | tuple | list): - raise TypeError("Parameter 'color' must be a string or a tuple/list of floats or colors.") + raise TypeError("Parameter 'outline_color' must be a string or a tuple/list of floats or colors.") if isinstance(outline_color, tuple | list): if len(outline_color) < 1: raise ValueError("Empty tuple is not supported as input for outline_color!") @@ -2505,6 +2627,18 @@ def _type_check_params(param_dict: dict[str, Any], element_type: str) -> dict[st f"Tuple/List of length {len(outline_color)} was passed for outline_color. Valid options would be: " "tuple of 2 colors (for 2 outlines) or an RGB(A) array, aka a list/tuple of 3-4 floats." ) + elif isinstance(outline_color, str) and element_type in {"shapes", "labels"}: + if _is_color_like(outline_color): + _check_color_column_collision(param_dict["sdata"], param_dict["element"], outline_color, element_type) + param_dict["outline_color"] = Color(outline_color) + else: + if isinstance(param_dict.get("outline_width"), tuple): + raise ValueError( + "Coloring outlines by a column is not supported with two outlines. " + "Pass a scalar `outline_width` or a literal color for `outline_color`." + ) + param_dict["col_for_outline_color"] = outline_color + param_dict["outline_color"] = None else: param_dict["outline_color"] = Color(outline_color) @@ -2797,6 +2931,20 @@ def _validate_label_render_params( element_params[el]["table_name"] = table_name element_params[el]["col_for_color"] = col_for_color + element_params[el]["col_for_outline_color"] = None + element_params[el]["outline_table_name"] = None + if (col_for_outline_color := param_dict.get("col_for_outline_color")) is not None: + col_for_outline_color, outline_table_name = _validate_col_for_column_table( + sdata, + el, + col_for_outline_color, + param_dict["table_name"], + labels=True, + gene_symbols=gene_symbols, + ) + element_params[el]["col_for_outline_color"] = col_for_outline_color + element_params[el]["outline_table_name"] = outline_table_name + _gate_palette_and_groups(element_params[el], param_dict) element_params[el]["colorbar"] = param_dict["colorbar"] element_params[el]["colorbar_params"] = param_dict["colorbar_params"] @@ -3000,6 +3148,16 @@ def _validate_shape_render_params( element_params[el]["table_name"] = table_name element_params[el]["col_for_color"] = col_for_color + element_params[el]["col_for_outline_color"] = None + element_params[el]["outline_table_name"] = None + col_for_outline_color = param_dict.get("col_for_outline_color") + if col_for_outline_color is not None: + col_for_outline_color, outline_table_name = _validate_col_for_column_table( + sdata, el, col_for_outline_color, param_dict["table_name"], gene_symbols=gene_symbols + ) + element_params[el]["col_for_outline_color"] = col_for_outline_color + element_params[el]["outline_table_name"] = outline_table_name + _gate_palette_and_groups(element_params[el], param_dict) element_params[el]["method"] = param_dict["method"] element_params[el]["ds_reduction"] = param_dict["ds_reduction"] diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 4c76b1a1..6a89485b 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -565,3 +565,39 @@ def test_render_labels_raises_on_3d(scale_factors): sdata.pl.render_labels("lbl3d").pl.show(ax=ax) finally: plt.close(fig) + + +def _annotate_labels_with_outline_columns(sdata: SpatialData) -> SpatialData: + """Patch the shared blobs fixture so its table annotates blobs_labels with categorical columns.""" + sdata["table"].obs["region"] = pd.Categorical(["blobs_labels"] * sdata["table"].n_obs) + sdata["table"].uns["spatialdata_attrs"]["region"] = "blobs_labels" + n = sdata["table"].n_obs + sdata["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) + sdata["table"].obs["stage"] = pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]) + return sdata + + +def test_labels_outline_color_obs_column_does_not_raise(sdata_blobs: SpatialData): + """Regression for #681 (labels variant): outline_color accepts an obs column name.""" + sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_labels("blobs_labels", fill_alpha=0.0, outline_alpha=1.0, outline_color="cluster").pl.show( + ax=ax + ) + plt.close(fig) + + +def test_labels_outline_color_sets_render_params(sdata_blobs: SpatialData): + from spatialdata_plot.pl.render_params import LabelsRenderParams + + sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) + res = sdata_blobs.pl.render_labels("blobs_labels", outline_color="cluster", outline_alpha=1.0) + params: LabelsRenderParams = next(v for k, v in res.plotting_tree.items() if k.endswith("_render_labels")) + assert params.col_for_outline_color == "cluster" + assert params.outline_table_name == "table" + + +def test_labels_outline_color_literal_still_works(sdata_blobs: SpatialData): + fig, ax = plt.subplots() + sdata_blobs.pl.render_labels("blobs_labels", fill_alpha=0.0, outline_alpha=1.0, outline_color="red").pl.show(ax=ax) + plt.close(fig) diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index f77f0ed8..1372f798 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -1473,3 +1473,96 @@ def test_render_shapes_datashader_under_bbox_query_does_not_crash(): cropped_sdata.pl.render_shapes("shapes", method="datashader").pl.show(ax=ax) finally: plt.close(fig) + + +def _annotate_polygons_with_outline_columns(sdata: SpatialData) -> SpatialData: + """Patch the shared blobs fixture so its table annotates ``blobs_polygons``. + + Adds two categorical columns and one continuous column for the outline-color tests below. + """ + sdata["table"].obs["region"] = pd.Categorical(["blobs_polygons"] * sdata["table"].n_obs) + sdata["table"].uns["spatialdata_attrs"]["region"] = "blobs_polygons" + n = sdata["table"].n_obs + sdata["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) + sdata["table"].obs["stage"] = pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]) + sdata["table"].obs["value"] = np.linspace(0.0, 1.0, n) + return sdata + + +def test_outline_color_as_obs_column_does_not_raise(sdata_blobs: SpatialData): + """Regression for #681: outline_color accepts an obs column name.""" + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="white", + outline_width=2, + outline_color="cluster", + ).pl.show(ax=ax) + plt.close(fig) + + +def test_outline_color_column_sets_render_params(sdata_blobs: SpatialData): + from spatialdata_plot.pl.render_params import ShapesRenderParams + + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + res = sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=2, outline_color="cluster", outline_alpha=1.0) + params: ShapesRenderParams = next(v for k, v in res.plotting_tree.items() if k.endswith("_render_shapes")) + assert params.col_for_outline_color == "cluster" + assert params.outline_table_name == "table" + + +def test_outline_color_literal_still_color(sdata_blobs: SpatialData): + """Passing a recognized color name should still produce a literal Color object.""" + from spatialdata_plot.pl.render_params import Color, ShapesRenderParams + + res = sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=2, outline_color="red", outline_alpha=1.0) + params: ShapesRenderParams = next(v for k, v in res.plotting_tree.items() if k.endswith("_render_shapes")) + assert params.col_for_outline_color is None + assert isinstance(params.outline_params.outer_outline_color, Color) + + +def test_outline_color_column_with_two_outlines_raises(sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + with pytest.raises(ValueError, match="not supported with two outlines"): + sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=(2.0, 0.5), outline_color="cluster") + + +def test_outline_color_column_continuous(sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_shapes("blobs_polygons", color="white", outline_width=2, outline_color="value").pl.show(ax=ax) + plt.close(fig) + + +def test_outline_color_column_datashader(sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="white", + outline_width=2, + outline_color="cluster", + method="datashader", + ).pl.show(ax=ax) + plt.close(fig) + + +def test_outline_color_column_stacked_legends(sdata_blobs: SpatialData): + """Two stacked legends when both color and outline_color are columns; no bbox overlap.""" + from matplotlib.legend import Legend + + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots(figsize=(7, 4)) + sdata_blobs.pl.render_shapes("blobs_polygons", color="cluster", outline_width=2, outline_color="stage").pl.show( + ax=ax + ) + fig.canvas.draw() + legends = [c for c in ax.get_children() if isinstance(c, Legend)] + assert len(legends) == 2, f"Expected 2 legends, got {len(legends)}" + a = legends[0].get_window_extent().transformed(ax.transAxes.inverted()) + b = legends[1].get_window_extent().transformed(ax.transAxes.inverted()) + overlap_h = max(0.0, min(a.x1, b.x1) - max(a.x0, b.x0)) + overlap_v = max(0.0, min(a.y1, b.y1) - max(a.y0, b.y0)) + assert overlap_h * overlap_v == 0.0, "Fill and outline legend bboxes overlap" + plt.close(fig) From 9b290a1fc344df17b1efb64bb312289de31d3e5f Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 16:52:43 +0200 Subject: [PATCH 02/14] Address review fixes for outline-color-by-column (#681) Correctness: - Labels: compute outline color vector before fill's rasterize/groups masks so the same masks can be applied to outline vectors without IndexError. - Datashader: ride outline column under a dedicated internal column name so it never overwrites the fill column when fill and outline share a key. - `_map_color_seg`: drop the unreachable categorical-dtype branch on the outline vector; only the (Categorical source, hex-string vector) and continuous-numeric paths are reachable for this call site. - Continuous datashader outline: thread `cmap_params.norm` through `_apply_ds_norm` + `span=` so explicit vmin/vmax takes effect. - Continuous outline column: stack a second colorbar via `colorbar_requests` instead of dropping the legend entirely. - Outline cross-table join: use `sdata_filt` (cs-filtered) instead of the original `sdata`; pad/truncate outline vectors when fill+outline tables annotate different row counts. Typing: - Widen `_color_vector_to_rgba.color_vector` to `Any | None`. Tests added: - groups-filter + data-driven outline (shapes + labels). - column collision (`outline_color="red"` shadowing an obs column) raises. - datashader continuous outline. - continuous outline produces a colorbar. - labels outline-only mode with column outline. --- src/spatialdata_plot/pl/_datashader.py | 19 +- src/spatialdata_plot/pl/render.py | 238 +++++++++++++++++-------- src/spatialdata_plot/pl/utils.py | 24 ++- tests/pl/test_render_labels.py | 27 +++ tests/pl/test_render_shapes.py | 51 ++++++ 5 files changed, 269 insertions(+), 90 deletions(-) diff --git a/src/spatialdata_plot/pl/_datashader.py b/src/spatialdata_plot/pl/_datashader.py index f3db5142..4f2b014c 100644 --- a/src/spatialdata_plot/pl/_datashader.py +++ b/src/spatialdata_plot/pl/_datashader.py @@ -5,6 +5,7 @@ from __future__ import annotations +from copy import copy from typing import Any, Literal import dask.dataframe as dd @@ -427,12 +428,13 @@ def _render_ds_outline_by_column( color_by_categorical = outline_color_source_vector is not None na_color_hex = _hex_no_alpha(cmap_params.na_color.get_hex()) - if col_for_outline_color not in transformed_element.columns: - # Ensure the column rides along with the geometry for ds.by / reductions. - if color_by_categorical and outline_color_source_vector is not None: - transformed_element[col_for_outline_color] = pd.Categorical(outline_color_source_vector) - else: - transformed_element[col_for_outline_color] = np.asarray(outline_color_vector) + # Caller (`_render_shapes` datashader branch) is responsible for attaching + # the outline column to ``transformed_element`` under a private internal name + # so we never overwrite the fill column when fill and outline share a key. + assert col_for_outline_color in transformed_element.columns, ( # noqa: S101 + f"Outline column '{col_for_outline_color}' is not present on the rasterizer element. " + "This is a bug in the spatialdata-plot datashader pipeline." + ) if color_by_categorical: cat_series = transformed_element[col_for_outline_color] @@ -481,9 +483,14 @@ def _render_ds_outline_by_column( agg=reduction_function, line_width=line_width, ) + # Apply the user-provided norm (vmin/vmax) the same way the fill path does so + # an explicit Normalize takes effect for the outline cmap. + norm = copy(cmap_params.norm) + agg_outline, color_span = _apply_ds_norm(agg_outline, norm) shaded = ds.tf.shade( agg_outline, cmap=cmap_params.cmap, + span=color_span, min_alpha=_convert_alpha_to_datashader_range(alpha), how="linear", ) diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index cf9a6fd3..82bce475 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -338,10 +338,13 @@ def _add_legend_and_colorbar( outline_col_for_color: str | None = None, outline_color_source_vector: pd.Series | None = None, outline_color_vector: Any | None = None, + outline_cmap_params: CmapParams | None = None, ) -> None: """Add legend and colorbar decorations if the color vector warrants them.""" fill_has_decorations = _want_decorations(color_vector, na_color) and col_for_color is not None - outline_has_decorations = outline_col_for_color is not None and outline_color_source_vector is not None + outline_has_decorations = outline_col_for_color is not None and ( + outline_color_source_vector is not None or outline_color_vector is not None + ) if not fill_has_decorations and not outline_has_decorations: return @@ -386,16 +389,45 @@ def _add_legend_and_colorbar( if outline_has_decorations: assert outline_col_for_color is not None # narrowed by outline_has_decorations # noqa: S101 - assert outline_color_source_vector is not None # noqa: S101 - _add_outline_legend( - ax=ax, - fig_params=fig_params, - outline_col=outline_col_for_color, - outline_color_source_vector=outline_color_source_vector, - outline_color_vector=outline_color_vector, - fill_has_legend=fill_has_decorations and color_source_vector is not None, - legend_params=legend_params, - ) + if outline_color_source_vector is not None: + _add_outline_legend( + ax=ax, + fig_params=fig_params, + outline_col=outline_col_for_color, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + fill_has_legend=fill_has_decorations and color_source_vector is not None, + legend_params=legend_params, + ) + elif ( + colorbar_requests is not None + and legend_params.colorbar + and outline_cmap_params is not None + and outline_color_vector is not None + ): + # Continuous outline column: stack a second colorbar via colorbar_requests so + # the show pipeline lays it out next to the fill colorbar. + _arr = pd.to_numeric(pd.Series(np.asarray(outline_color_vector)), errors="coerce").to_numpy() + _finite = np.isfinite(_arr) + if _finite.any(): + _norm = outline_cmap_params.norm + _vmin = _norm.vmin if _norm.vmin is not None else float(np.nanmin(_arr[_finite])) + _vmax = _norm.vmax if _norm.vmax is not None else float(np.nanmax(_arr[_finite])) + if _vmin == _vmax: + _vmin, _vmax = _vmin - 0.5, _vmax + 0.5 + _outline_mappable = ScalarMappable( + norm=Normalize(vmin=_vmin, vmax=_vmax), + cmap=outline_cmap_params.cmap, + ) + colorbar_requests.append( + ColorbarSpec( + ax=ax, + mappable=_outline_mappable, + params=colorbar_params, + label=f"outline: {outline_col_for_color}", + alpha=alpha, + ) + ) def _add_outline_legend( @@ -565,7 +597,7 @@ def _render_shapes( # the outline vector length. if outline_table_name is not None and outline_table_name != table_name: _outline_dict, _joined_outline_table = join_spatialelement_table( - sdata, spatial_element_names=element, table_name=outline_table_name, how="inner" + sdata_filt, spatial_element_names=element, table_name=outline_table_name, how="inner" ) _joined_outline_table.uns["spatialdata_attrs"]["region"] = ( _joined_outline_table.obs[_joined_outline_table.uns["spatialdata_attrs"]["region_key"]] @@ -590,6 +622,29 @@ def _render_shapes( table_layer=table_layer, coordinate_system=coordinate_system, ) + # Cross-table case: if fill and outline tables differ and the outline table + # does not annotate every row of the (fill-joined) element, _set_color_source_vec + # may return a shorter vector. Pad with na_color so per-shape alignment is preserved. + _n_shapes = len(sdata_filt[element]) + if outline_color_vector is not None and len(outline_color_vector) != _n_shapes: + logger.warning( + f"Outline column '{col_for_outline_color}' does not fully annotate " + f"element '{element}' under its fill-joined alignment " + f"({len(outline_color_vector)} of {_n_shapes} rows). Missing rows will use na_color." + ) + _na_hex = render_params.cmap_params.na_color.get_hex_with_alpha() + if len(outline_color_vector) > _n_shapes: + outline_color_vector = outline_color_vector[:_n_shapes] + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[:_n_shapes] + else: + _pad = _n_shapes - len(outline_color_vector) + outline_color_vector = np.concatenate([np.asarray(outline_color_vector), np.array([_na_hex] * _pad)]) + if outline_color_source_vector is not None: + outline_color_source_vector = pd.Categorical( + list(outline_color_source_vector) + [None] * _pad, + categories=outline_color_source_vector.categories, + ) _warn_groups_ignored_continuous(groups, color_source_vector, col_for_color) @@ -798,11 +853,14 @@ def _render_shapes( na_color_hex, ) - if col_for_outline_color is not None and col_for_outline_color not in transformed_element.columns: + # Always ride along under a dedicated internal column so we don't overwrite the + # fill column (which may share the same name when color and outline use the same key). + _outline_internal_col = "__sdp_outline_col__" if col_for_outline_color is not None else None + if _outline_internal_col is not None: if outline_color_source_vector is not None: - transformed_element[col_for_outline_color] = pd.Categorical(outline_color_source_vector) + transformed_element[_outline_internal_col] = pd.Categorical(outline_color_source_vector) else: - transformed_element[col_for_outline_color] = np.asarray(outline_color_vector) + transformed_element[_outline_internal_col] = np.asarray(outline_color_vector) _render_ds_outlines( cvs, transformed_element, @@ -814,7 +872,7 @@ def _render_shapes( y_min=y_ext[0], outline_color_vector=outline_color_vector, outline_color_source_vector=outline_color_source_vector, - outline_col_name=col_for_outline_color, + outline_col_name=_outline_internal_col, ) _cax = _render_ds_image( @@ -954,6 +1012,7 @@ def _render_shapes( outline_col_for_color=col_for_outline_color, outline_color_source_vector=outline_color_source_vector, outline_color_vector=outline_color_vector, + outline_cmap_params=render_params.cmap_params, ) @@ -1999,19 +2058,65 @@ def _render_labels( coordinate_system=coordinate_system, ) + # Outline color lookup must run BEFORE any masking so the returned vector aligns to + # the original instance_id. The same masks applied to fill below are then applied + # to the outline vectors to keep lengths consistent. + col_for_outline_color = render_params.col_for_outline_color + outline_table_name = render_params.outline_table_name + outline_color_source_vector: pd.Series | None = None + outline_color_vector: Any = None + if col_for_outline_color is not None: + outline_color_source_vector, outline_color_vector, _ = _set_color_source_vec( + sdata=sdata_filt, + element=label, + element_name=element, + value_to_plot=col_for_outline_color, + groups=None, + palette=palette, + na_color=render_params.cmap_params.na_color, + cmap_params=render_params.cmap_params, + table_name=outline_table_name, + table_layer=table_layer, + render_type="labels", + coordinate_system=coordinate_system, + ) + # Align outline vector length to instance_id so the rasterize/groups masks + # (computed against instance_id) can be applied without IndexError. Mismatches + # arise when the outline table annotates a subset of the labels. + if outline_color_vector is not None and len(outline_color_vector) != len(instance_id): + _na_hex = render_params.cmap_params.na_color.get_hex_with_alpha() + _n = len(instance_id) + if len(outline_color_vector) > _n: + outline_color_vector = outline_color_vector[:_n] + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[:_n] + else: + _pad = _n - len(outline_color_vector) + outline_color_vector = np.concatenate([np.asarray(outline_color_vector), np.array([_na_hex] * _pad)]) + if outline_color_source_vector is not None: + outline_color_source_vector = pd.Categorical( + list(outline_color_source_vector) + [None] * _pad, + categories=outline_color_source_vector.categories, + ) + # rasterize could have removed labels from label # only problematic if color is specified - if rasterize and col_for_color is not None: + if rasterize and (col_for_color is not None or col_for_outline_color is not None): labels_in_rasterized_image = np.unique(label.values) mask = np.isin(instance_id, labels_in_rasterized_image) instance_id = instance_id[mask] - color_vector = color_vector[mask] - if isinstance(color_vector.dtype, pd.CategoricalDtype): - color_vector = color_vector.remove_unused_categories() - assert color_source_vector is not None - color_source_vector = color_source_vector[mask] - else: - assert color_source_vector is None + if col_for_color is not None: + color_vector = color_vector[mask] + if isinstance(color_vector.dtype, pd.CategoricalDtype): + color_vector = color_vector.remove_unused_categories() + assert color_source_vector is not None # noqa: S101 + color_source_vector = color_source_vector[mask] + else: + assert color_source_vector is None # noqa: S101 + if outline_color_vector is not None: + outline_color_vector = outline_color_vector[mask] + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[mask] _warn_groups_ignored_continuous(groups, color_source_vector, col_for_color) @@ -2037,46 +2142,16 @@ def _render_labels( color_vector = color_vector[keep_vec] if isinstance(color_vector.dtype, pd.CategoricalDtype): color_vector = color_vector.remove_unused_categories() + if outline_color_vector is not None: + _keep_arr = np.asarray(keep_vec) + outline_color_vector = outline_color_vector[_keep_arr] + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[_keep_arr] # color_source_vector is None when the values aren't categorical if color_source_vector is None and render_params.transfunc is not None: color_vector = render_params.transfunc(color_vector) - col_for_outline_color = render_params.col_for_outline_color - outline_table_name = render_params.outline_table_name - outline_color_source_vector: pd.Series | None = None - outline_color_vector: Any = None - if col_for_outline_color is not None: - outline_color_source_vector, outline_color_vector, _ = _set_color_source_vec( - sdata=sdata_filt, - element=label, - element_name=element, - value_to_plot=col_for_outline_color, - groups=None, - palette=palette, - na_color=render_params.cmap_params.na_color, - cmap_params=render_params.cmap_params, - table_name=outline_table_name, - table_layer=table_layer, - render_type="labels", - coordinate_system=coordinate_system, - ) - # Apply the same fill groups-keep filter so outline vectors align with instance_id - if ( - groups is not None - and categorical - and color_source_vector is not None - and (_na.default_color_set or _na.is_fully_transparent()) - ): - _keep_arr = np.asarray(color_source_vector.isin(groups)) - # color_source_vector was already masked above; we need the pre-mask version, - # which we can reconstruct via length matching. If lengths still match the - # post-mask vector, no filter is needed (no-op). Otherwise mask now. - if outline_color_vector is not None and len(outline_color_vector) > len(instance_id): - outline_color_vector = outline_color_vector[_keep_arr] - if outline_color_source_vector is not None: - outline_color_source_vector = outline_color_source_vector[_keep_arr] - def _draw_labels( seg_erosionpx: int | None, seg_boundaries: bool, @@ -2193,17 +2268,40 @@ def _draw_labels( ), ) - if col_for_outline_color is not None and outline_color_source_vector is not None: - fill_has_legend = col_for_color is not None and color_source_vector is not None - _add_outline_legend( - ax=ax, - fig_params=fig_params, - outline_col=col_for_outline_color, - outline_color_source_vector=outline_color_source_vector, - outline_color_vector=outline_color_vector, - fill_has_legend=fill_has_legend, - legend_params=legend_params, - ) + if col_for_outline_color is not None: + if outline_color_source_vector is not None: + fill_has_legend = col_for_color is not None and color_source_vector is not None + _add_outline_legend( + ax=ax, + fig_params=fig_params, + outline_col=col_for_outline_color, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + fill_has_legend=fill_has_legend, + legend_params=legend_params, + ) + elif colorbar_requests is not None and legend_params.colorbar and outline_color_vector is not None: + _arr = pd.to_numeric(pd.Series(np.asarray(outline_color_vector)), errors="coerce").to_numpy() + _finite = np.isfinite(_arr) + if _finite.any(): + _norm = render_params.cmap_params.norm + _vmin = _norm.vmin if _norm.vmin is not None else float(np.nanmin(_arr[_finite])) + _vmax = _norm.vmax if _norm.vmax is not None else float(np.nanmax(_arr[_finite])) + if _vmin == _vmax: + _vmin, _vmax = _vmin - 0.5, _vmax + 0.5 + _outline_mappable = ScalarMappable( + norm=Normalize(vmin=_vmin, vmax=_vmax), + cmap=render_params.cmap_params.cmap, + ) + colorbar_requests.append( + ColorbarSpec( + ax=ax, + mappable=_outline_mappable, + params=render_params.colorbar_params, + label=f"outline: {col_for_outline_color}", + alpha=alpha_to_decorate_ax, + ) + ) def _normalise_to_range(values: np.ndarray, lo: float, hi: float) -> np.ndarray: diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index b1e11c63..975f0dc2 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -432,7 +432,7 @@ def _scale_pathpatch_around_centroid(pathpatch: mpatches.PathPatch, scale_factor def _color_vector_to_rgba( - color_vector: Any, + color_vector: Any | None, color_source_vector: pd.Series | None, cmap_params: CmapParams, n_rows: int, @@ -1431,24 +1431,20 @@ def _map_color_seg( if seg_boundaries and outline_color_vector is not None: # Column-driven outline: build per-label colors from the outline vector and overlay - # on the eroded ring. Only Case A (categorical) and Case B (continuous) are reachable - # for this path, since a column was always specified by the user. - if outline_color_source_vector is not None and isinstance( - outline_color_vector.dtype if hasattr(outline_color_vector, "dtype") else None, pd.CategoricalDtype - ): - outline_val_im: ArrayLike = map_array(seg.copy(), cell_id, outline_color_vector.codes + 1) - outline_cols = colors.to_rgba_array(outline_color_vector.categories) - elif outline_color_source_vector is not None: - # Categorical column but color_vector is hex strings (most common case) + # on the eroded ring. Two cases (mirroring _set_color_source_vec's return contract): + # - categorical: outline_color_source_vector is the source Categorical; outline_color_vector + # holds hex strings aligned to cells. + # - continuous: outline_color_source_vector is None; outline_color_vector is numeric. + if outline_color_source_vector is not None: cat = pd.Categorical(outline_color_source_vector) cat_codes = cat.codes - outline_val_im = map_array(seg.copy(), cell_id, cat_codes + 1) - # Use the actual color_vector (hex strings aligned to cells) deduped by category + outline_val_im: ArrayLike = map_array(seg.copy(), cell_id, cat_codes + 1) color_arr = np.asarray(outline_color_vector, dtype=object) - cat_colors: list[Any] = [] + cat_colors: list[Any] = [na_color.get_hex_with_alpha()] * len(cat.categories) for cat_idx in range(len(cat.categories)): first_match = np.where(cat_codes == cat_idx)[0] - cat_colors.append(color_arr[first_match[0]] if len(first_match) else na_color.get_hex_with_alpha()) + if len(first_match): + cat_colors[cat_idx] = color_arr[first_match[0]] outline_cols = colors.to_rgba_array(cat_colors) else: # Continuous: numeric values normalized via cmap diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 6a89485b..b6b4f2b8 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -601,3 +601,30 @@ def test_labels_outline_color_literal_still_works(sdata_blobs: SpatialData): fig, ax = plt.subplots() sdata_blobs.pl.render_labels("blobs_labels", fill_alpha=0.0, outline_alpha=1.0, outline_color="red").pl.show(ax=ax) plt.close(fig) + + +def test_labels_outline_color_outline_only_mode(sdata_blobs: SpatialData): + """Outline-only render (fill_alpha=0, outline_alpha>0) must color contour by the outline column.""" + sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_labels( + "blobs_labels", + fill_alpha=0.0, + outline_alpha=1.0, + outline_color="cluster", + ).pl.show(ax=ax) + plt.close(fig) + + +def test_labels_outline_color_groups_filter_aligns(sdata_blobs: SpatialData): + """When `groups` filters the fill labels, the outline vector must be masked alongside it.""" + sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_labels( + "blobs_labels", + color="cluster", + groups=["c1"], + outline_alpha=1.0, + outline_color="stage", + ).pl.show(ax=ax) + plt.close(fig) diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index 1372f798..d35467aa 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -1566,3 +1566,54 @@ def test_outline_color_column_stacked_legends(sdata_blobs: SpatialData): overlap_v = max(0.0, min(a.y1, b.y1) - max(a.y0, b.y0)) assert overlap_h * overlap_v == 0.0, "Fill and outline legend bboxes overlap" plt.close(fig) + + +def test_outline_color_column_groups_filter_aligns(sdata_blobs: SpatialData): + """When `groups` filters the fill, the outline vector must be masked alongside it.""" + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + # This used to raise IndexError when outline vector wasn't filtered with the fill mask + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="cluster", + groups=["c1"], + outline_width=2, + outline_color="stage", + ).pl.show(ax=ax) + plt.close(fig) + + +def test_outline_color_column_collision_raises(sdata_blobs: SpatialData): + """If `outline_color` is a string that is both a matplotlib color and an obs column, raise.""" + sdata_blobs["table"].obs["region"] = pd.Categorical(["blobs_polygons"] * sdata_blobs["table"].n_obs) + sdata_blobs["table"].uns["spatialdata_attrs"]["region"] = "blobs_polygons" + n = sdata_blobs["table"].n_obs + # Add an obs column whose name shadows a real color + sdata_blobs["table"].obs["red"] = pd.Categorical((["a", "b"] * ((n + 1) // 2))[:n]) + with pytest.raises(ValueError, match=r"ambiguous|matplotlib color name AND a column"): + sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=2, outline_color="red", outline_alpha=1.0) + + +def test_outline_color_datashader_continuous(sdata_blobs: SpatialData): + """Continuous outline column under datashader should render without error.""" + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="white", + outline_width=2, + outline_color="value", + method="datashader", + ).pl.show(ax=ax) + plt.close(fig) + + +def test_outline_color_continuous_requests_colorbar(sdata_blobs: SpatialData): + """A continuous outline column should add a ColorbarSpec to colorbar_requests.""" + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + sdata_blobs.pl.render_shapes("blobs_polygons", color="white", outline_width=2, outline_color="value").pl.show(ax=ax) + # Look for a colorbar artist labelled "outline: value" + cbar_axes = [a for a in fig.axes if "outline: value" in (a.get_ylabel(), a.get_xlabel(), a.get_title())] + assert cbar_axes, "Expected a colorbar for the continuous outline column" + plt.close(fig) From 028b5db317f9aece25a0749fc3d191e7c3f1f595 Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 17:09:46 +0200 Subject: [PATCH 03/14] Simplify outline-by-column implementation (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reuse / dedup: - Promote inline `reduction_function_map` (duplicated between `_render_ds_outline_by_column` and `_datashader_aggregate_with_function`) to a module constant `_DS_REDUCTION_FUNCS`. - Extract `_align_outline_vector_to_length` for the pad/truncate logic shared by shapes (cross-table) and labels (rasterize alignment). - Extract `_append_outline_colorbar` for the continuous-outline `ColorbarSpec` construction shared between `_add_legend_and_colorbar` and `_render_labels`. Encapsulation: - Promote the outline ride-along column name `"__sdp_outline_col__"` to a named module constant `_OUTLINE_INTERNAL_COL` in `_datashader.py`. - Move the column attachment inside `_render_ds_outline_by_column` (via `.assign()`) so the rasterizer element isn't mutated by the caller. Performance: - Drop the unconditional `astype(float, copy=True)` in `_get_collection_shape`'s outline path: reuse the caller's array when it's already float (saves N×32 bytes per render). --- src/spatialdata_plot/pl/_datashader.py | 61 ++++------ src/spatialdata_plot/pl/render.py | 161 ++++++++++++------------- src/spatialdata_plot/pl/utils.py | 63 +++++++--- 3 files changed, 147 insertions(+), 138 deletions(-) diff --git a/src/spatialdata_plot/pl/_datashader.py b/src/spatialdata_plot/pl/_datashader.py index 4f2b014c..722924af 100644 --- a/src/spatialdata_plot/pl/_datashader.py +++ b/src/spatialdata_plot/pl/_datashader.py @@ -20,6 +20,7 @@ from spatialdata_plot._logging import logger from spatialdata_plot.pl.render_params import Color, FigParams, ShapesRenderParams from spatialdata_plot.pl.utils import ( + _DS_REDUCTION_FUNCS, _ax_show_and_transform, _convert_alpha_to_datashader_range, _create_image_from_datashader_result, @@ -39,6 +40,11 @@ # missing (NaN) values. Must not collide with realistic user category names. _DS_NAN_CATEGORY = "ds_nan" +# Private column name under which the outline color vector is attached to the +# datashader rasterizer element. Must not collide with a real user column; +# the leading/trailing dunders are deliberate. +_OUTLINE_INTERNAL_COL = "__sdp_outline_col__" + # --------------------------------------------------------------------------- # Low-level helpers # --------------------------------------------------------------------------- @@ -347,14 +353,13 @@ def _render_ds_outlines( y_min: float = 0.0, outline_color_vector: Any | None = None, outline_color_source_vector: pd.Series | None = None, - outline_col_name: str | None = None, ) -> None: """Aggregate, shade, and render shape outlines (outer and inner) with datashader. - When ``outline_col_name`` is provided, the outer outline is colored per-shape - using ``ds.by`` (categorical) or a numeric reduction (continuous) instead of - a single literal color. Column-based outline coloring is incompatible with - the two-outline form, so this path only affects the outer outline. + When ``outline_color_vector`` is provided, the outer outline is colored per-shape + via ``ds.by`` (categorical) or a numeric reduction (continuous) instead of a + single literal color. The two-outline form is rejected at validation, so this + only affects the outer outline. """ ds_lw_factor = fig_params.fig.dpi / 72 assert len(render_params.outline_alpha) == 2 # noqa: S101 @@ -368,11 +373,10 @@ def _render_ds_outlines( alpha = render_params.outline_alpha[idx] if alpha <= 0: continue - if idx == 0 and outline_col_name is not None: + if idx == 0 and outline_color_vector is not None: _render_ds_outline_by_column( cvs=cvs, transformed_element=transformed_element, - col_for_outline_color=outline_col_name, outline_color_vector=outline_color_vector, outline_color_source_vector=outline_color_source_vector, cmap_params=render_params.cmap_params, @@ -407,7 +411,6 @@ def _render_ds_outlines( def _render_ds_outline_by_column( cvs: Any, transformed_element: Any, - col_for_outline_color: str, outline_color_vector: Any | None, outline_color_source_vector: pd.Series | None, cmap_params: Any, @@ -423,32 +426,31 @@ def _render_ds_outline_by_column( ) -> None: """Aggregate + shade an outline colored by an obs column via datashader. - Mirrors the fill pipeline but uses ``cvs.line`` so only the boundary is rasterized. + Two-outline form is not supported for column-driven outline coloring, + so this only renders the outer outline. """ color_by_categorical = outline_color_source_vector is not None na_color_hex = _hex_no_alpha(cmap_params.na_color.get_hex()) - # Caller (`_render_shapes` datashader branch) is responsible for attaching - # the outline column to ``transformed_element`` under a private internal name - # so we never overwrite the fill column when fill and outline share a key. - assert col_for_outline_color in transformed_element.columns, ( # noqa: S101 - f"Outline column '{col_for_outline_color}' is not present on the rasterizer element. " - "This is a bug in the spatialdata-plot datashader pipeline." - ) + # Attach the outline vector under a private column name so a fill column with + # the same key never gets overwritten. Use .assign() to avoid mutating the + # caller's dataframe. + if color_by_categorical: + cat_series = pd.Categorical(outline_color_source_vector) + attach_value: Any = _inject_ds_nan_sentinel(pd.Series(cat_series)) + else: + attach_value = np.asarray(outline_color_vector) + transformed_element = transformed_element.assign(**{_OUTLINE_INTERNAL_COL: attach_value}) if color_by_categorical: - cat_series = transformed_element[col_for_outline_color] - if not isinstance(cat_series.dtype, pd.CategoricalDtype): - cat_series = cat_series.astype("category") - transformed_element[col_for_outline_color] = _inject_ds_nan_sentinel(cat_series) agg_outline = cvs.line( transformed_element, geometry="geometry", - agg=ds.by(col_for_outline_color, ds.count()), + agg=ds.by(_OUTLINE_INTERNAL_COL, ds.count()), line_width=line_width, ) color_key = _build_datashader_color_key( - _coerce_categorical_source(transformed_element[col_for_outline_color]), + _coerce_categorical_source(transformed_element[_OUTLINE_INTERNAL_COL]), outline_color_vector, na_color_hex, ) @@ -460,22 +462,11 @@ def _render_ds_outline_by_column( ) else: reduction_name = ds_reduction if ds_reduction is not None else "max" - reduction_function_map = { - "sum": ds.sum, - "mean": ds.mean, - "any": ds.any, - "count": ds.count, - "std": ds.std, - "var": ds.var, - "max": ds.max, - "min": ds.min, - } try: - reduction_function = reduction_function_map[reduction_name](column=col_for_outline_color) + reduction_function = _DS_REDUCTION_FUNCS[reduction_name](column=_OUTLINE_INTERNAL_COL) except KeyError as e: raise ValueError( - f"Reduction '{reduction_name}' is not supported. " - f"Use one of: {', '.join(reduction_function_map.keys())}." + f"Reduction '{reduction_name}' is not supported. Use one of: {', '.join(_DS_REDUCTION_FUNCS.keys())}." ) from e agg_outline = cvs.line( transformed_element, diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index 82bce475..eb22bb35 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -57,6 +57,7 @@ ShapesRenderParams, ) from spatialdata_plot.pl.utils import ( + _align_outline_vector_to_length, _ax_show_and_transform, _check_obs_var_shadow, _color_vector_to_rgba, @@ -405,29 +406,51 @@ def _add_legend_and_colorbar( and outline_cmap_params is not None and outline_color_vector is not None ): - # Continuous outline column: stack a second colorbar via colorbar_requests so - # the show pipeline lays it out next to the fill colorbar. - _arr = pd.to_numeric(pd.Series(np.asarray(outline_color_vector)), errors="coerce").to_numpy() - _finite = np.isfinite(_arr) - if _finite.any(): - _norm = outline_cmap_params.norm - _vmin = _norm.vmin if _norm.vmin is not None else float(np.nanmin(_arr[_finite])) - _vmax = _norm.vmax if _norm.vmax is not None else float(np.nanmax(_arr[_finite])) - if _vmin == _vmax: - _vmin, _vmax = _vmin - 0.5, _vmax + 0.5 - _outline_mappable = ScalarMappable( - norm=Normalize(vmin=_vmin, vmax=_vmax), - cmap=outline_cmap_params.cmap, - ) - colorbar_requests.append( - ColorbarSpec( - ax=ax, - mappable=_outline_mappable, - params=colorbar_params, - label=f"outline: {outline_col_for_color}", - alpha=alpha, - ) - ) + _append_outline_colorbar( + colorbar_requests=colorbar_requests, + ax=ax, + outline_color_vector=outline_color_vector, + cmap_params=outline_cmap_params, + colorbar_params=colorbar_params, + outline_col=outline_col_for_color, + alpha=alpha, + ) + + +def _append_outline_colorbar( + colorbar_requests: list[ColorbarSpec], + ax: matplotlib.axes.SubplotBase, + outline_color_vector: Any, + cmap_params: CmapParams, + colorbar_params: dict[str, object] | None, + outline_col: str, + alpha: float, +) -> None: + """Append a `ColorbarSpec` for a continuous outline column. + + No-op when ``outline_color_vector`` has no finite values. Honors user-supplied + `vmin`/`vmax` on ``cmap_params.norm``; falls back to data range. Mirrors the + `vmin == vmax` ±0.5 expansion used by the fill colorbar. + """ + arr = pd.to_numeric(pd.Series(np.asarray(outline_color_vector)), errors="coerce").to_numpy() + finite = np.isfinite(arr) + if not finite.any(): + return + norm = cmap_params.norm + vmin = norm.vmin if norm.vmin is not None else float(np.nanmin(arr[finite])) + vmax = norm.vmax if norm.vmax is not None else float(np.nanmax(arr[finite])) + if vmin == vmax: + vmin, vmax = vmin - 0.5, vmax + 0.5 + mappable = ScalarMappable(norm=Normalize(vmin=vmin, vmax=vmax), cmap=cmap_params.cmap) + colorbar_requests.append( + ColorbarSpec( + ax=ax, + mappable=mappable, + params=colorbar_params, + label=f"outline: {outline_col}", + alpha=alpha, + ) + ) def _add_outline_legend( @@ -622,9 +645,10 @@ def _render_shapes( table_layer=table_layer, coordinate_system=coordinate_system, ) - # Cross-table case: if fill and outline tables differ and the outline table - # does not annotate every row of the (fill-joined) element, _set_color_source_vec - # may return a shorter vector. Pad with na_color so per-shape alignment is preserved. + # Cross-table case: if fill and outline tables differ and the outline table does + # not annotate every row of the (fill-joined) element, the vector length will + # differ from the rendered element row count. Warn + align so per-shape lookup stays + # well-defined. _n_shapes = len(sdata_filt[element]) if outline_color_vector is not None and len(outline_color_vector) != _n_shapes: logger.warning( @@ -632,19 +656,12 @@ def _render_shapes( f"element '{element}' under its fill-joined alignment " f"({len(outline_color_vector)} of {_n_shapes} rows). Missing rows will use na_color." ) - _na_hex = render_params.cmap_params.na_color.get_hex_with_alpha() - if len(outline_color_vector) > _n_shapes: - outline_color_vector = outline_color_vector[:_n_shapes] - if outline_color_source_vector is not None: - outline_color_source_vector = outline_color_source_vector[:_n_shapes] - else: - _pad = _n_shapes - len(outline_color_vector) - outline_color_vector = np.concatenate([np.asarray(outline_color_vector), np.array([_na_hex] * _pad)]) - if outline_color_source_vector is not None: - outline_color_source_vector = pd.Categorical( - list(outline_color_source_vector) + [None] * _pad, - categories=outline_color_source_vector.categories, - ) + outline_color_vector, outline_color_source_vector = _align_outline_vector_to_length( + outline_color_vector, + outline_color_source_vector, + _n_shapes, + render_params.cmap_params.na_color, + ) _warn_groups_ignored_continuous(groups, color_source_vector, col_for_color) @@ -853,14 +870,6 @@ def _render_shapes( na_color_hex, ) - # Always ride along under a dedicated internal column so we don't overwrite the - # fill column (which may share the same name when color and outline use the same key). - _outline_internal_col = "__sdp_outline_col__" if col_for_outline_color is not None else None - if _outline_internal_col is not None: - if outline_color_source_vector is not None: - transformed_element[_outline_internal_col] = pd.Categorical(outline_color_source_vector) - else: - transformed_element[_outline_internal_col] = np.asarray(outline_color_vector) _render_ds_outlines( cvs, transformed_element, @@ -872,7 +881,6 @@ def _render_shapes( y_min=y_ext[0], outline_color_vector=outline_color_vector, outline_color_source_vector=outline_color_source_vector, - outline_col_name=_outline_internal_col, ) _cax = _render_ds_image( @@ -2080,24 +2088,15 @@ def _render_labels( render_type="labels", coordinate_system=coordinate_system, ) - # Align outline vector length to instance_id so the rasterize/groups masks - # (computed against instance_id) can be applied without IndexError. Mismatches - # arise when the outline table annotates a subset of the labels. - if outline_color_vector is not None and len(outline_color_vector) != len(instance_id): - _na_hex = render_params.cmap_params.na_color.get_hex_with_alpha() - _n = len(instance_id) - if len(outline_color_vector) > _n: - outline_color_vector = outline_color_vector[:_n] - if outline_color_source_vector is not None: - outline_color_source_vector = outline_color_source_vector[:_n] - else: - _pad = _n - len(outline_color_vector) - outline_color_vector = np.concatenate([np.asarray(outline_color_vector), np.array([_na_hex] * _pad)]) - if outline_color_source_vector is not None: - outline_color_source_vector = pd.Categorical( - list(outline_color_source_vector) + [None] * _pad, - categories=outline_color_source_vector.categories, - ) + # Align to instance_id so the rasterize/groups masks (computed against + # instance_id) can be applied without IndexError when the outline table + # annotates a subset of the labels. + outline_color_vector, outline_color_source_vector = _align_outline_vector_to_length( + outline_color_vector, + outline_color_source_vector, + len(instance_id), + render_params.cmap_params.na_color, + ) # rasterize could have removed labels from label # only problematic if color is specified @@ -2281,27 +2280,15 @@ def _draw_labels( legend_params=legend_params, ) elif colorbar_requests is not None and legend_params.colorbar and outline_color_vector is not None: - _arr = pd.to_numeric(pd.Series(np.asarray(outline_color_vector)), errors="coerce").to_numpy() - _finite = np.isfinite(_arr) - if _finite.any(): - _norm = render_params.cmap_params.norm - _vmin = _norm.vmin if _norm.vmin is not None else float(np.nanmin(_arr[_finite])) - _vmax = _norm.vmax if _norm.vmax is not None else float(np.nanmax(_arr[_finite])) - if _vmin == _vmax: - _vmin, _vmax = _vmin - 0.5, _vmax + 0.5 - _outline_mappable = ScalarMappable( - norm=Normalize(vmin=_vmin, vmax=_vmax), - cmap=render_params.cmap_params.cmap, - ) - colorbar_requests.append( - ColorbarSpec( - ax=ax, - mappable=_outline_mappable, - params=render_params.colorbar_params, - label=f"outline: {col_for_outline_color}", - alpha=alpha_to_decorate_ax, - ) - ) + _append_outline_colorbar( + colorbar_requests=colorbar_requests, + ax=ax, + outline_color_vector=outline_color_vector, + cmap_params=render_params.cmap_params, + colorbar_params=render_params.colorbar_params, + outline_col=col_for_outline_color, + alpha=alpha_to_decorate_ax, + ) def _normalise_to_range(values: np.ndarray, lo: float, hi: float) -> np.ndarray: diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index 975f0dc2..0ca8dbc7 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -431,6 +431,35 @@ def _scale_pathpatch_around_centroid(pathpatch: mpatches.PathPatch, scale_factor pathpatch.get_path().vertices = scaled_vertices +def _align_outline_vector_to_length( + outline_color_vector: Any, + outline_color_source_vector: pd.Series | None, + n: int, + na_color: Color, +) -> tuple[Any, pd.Series | None]: + """Pad or truncate the outline color vector(s) to length ``n``. + + Used when the outline column annotates a different row count than the rendered + element (cross-table case, or rasterize-induced label drop). Missing entries + are filled with ``na_color`` (categorical: a None category; continuous: na hex). + """ + if outline_color_vector is None or len(outline_color_vector) == n: + return outline_color_vector, outline_color_source_vector + if len(outline_color_vector) > n: + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[:n] + return outline_color_vector[:n], outline_color_source_vector + pad = n - len(outline_color_vector) + na_hex = na_color.get_hex_with_alpha() + padded_vec = np.concatenate([np.asarray(outline_color_vector), np.array([na_hex] * pad)]) + if outline_color_source_vector is not None: + outline_color_source_vector = pd.Categorical( + list(outline_color_source_vector) + [None] * pad, + categories=outline_color_source_vector.categories, + ) + return padded_vec, outline_color_source_vector + + def _color_vector_to_rgba( color_vector: Any | None, color_source_vector: pd.Series | None, @@ -474,7 +503,7 @@ def _color_vector_to_rgba( rgba[finite_mask] = cmap_params.cmap(used_norm(arr[finite_mask])) return rgba - # Object dtype: mix of numerics and color-likes (mirrors _get_collection_shape Case C) + # Object dtype: mix of numerics and color-like specs (apply cmap to the numeric subset only) series = pd.Series(arr, copy=False) num = pd.to_numeric(series, errors="coerce").to_numpy() is_num = np.isfinite(num) @@ -600,8 +629,9 @@ def _as_rgba_array(x: Any) -> np.ndarray: if outline_alpha and outline_alpha > 0.0: outline_arr = np.asarray(outline_color) if not isinstance(outline_color, str) else None if outline_arr is not None and outline_arr.ndim == 2 and outline_arr.shape == (len(shapes), 4): - # Per-shape RGBA array: use row-wise, applying outline_alpha to the alpha channel. - outline_c_array = outline_arr.astype(float, copy=True) + # Per-shape RGBA array. Mutate in place when already float so we don't allocate twice + # on the hot path; otherwise upcast to a fresh float buffer. + outline_c_array = outline_arr if outline_arr.dtype == float else outline_arr.astype(float) else: outline_c_array = _as_rgba_array(outline_color) outline_c_array[..., -1] = outline_alpha @@ -3745,6 +3775,18 @@ def _create_image_from_datashader_result( return rgba_image, trans_data +_DS_REDUCTION_FUNCS: dict[str, Any] = { + "sum": ds.sum, + "mean": ds.mean, + "any": ds.any, + "count": ds.count, + "std": ds.std, + "var": ds.var, + "max": ds.max, + "min": ds.min, +} + + def _datashader_aggregate_with_function( reduction: Literal["sum", "mean", "any", "count", "std", "var", "max", "min"] | None, cvs: Canvas, @@ -3769,22 +3811,11 @@ def _datashader_aggregate_with_function( if reduction is None: reduction = "sum" - reduction_function_map = { - "sum": ds.sum, - "mean": ds.mean, - "any": ds.any, - "count": ds.count, - "std": ds.std, - "var": ds.var, - "max": ds.max, - "min": ds.min, - } - try: - reduction_function = reduction_function_map[reduction](column=col_for_color) + reduction_function = _DS_REDUCTION_FUNCS[reduction](column=col_for_color) except KeyError as e: raise ValueError( - f"Reduction '{reduction}' is not supported. Please use one of: {', '.join(reduction_function_map.keys())}." + f"Reduction '{reduction}' is not supported. Please use one of: {', '.join(_DS_REDUCTION_FUNCS.keys())}." ) from e element_function_map = { From b763376036543a5dc0b3a8336dc4270c1e8c03dc Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 17:47:54 +0200 Subject: [PATCH 04/14] Address second-pass review feedback (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Drop try/except wrapping the fig.canvas.draw() + get_window_extent() measurement in `_add_outline_legend`. The existing `anchor_y > 0` threshold already handles the degenerate-bbox case; raising on a real matplotlib backend failure is the correct behavior. - Replace narrowing `assert ... # noqa: S101` with `typing.cast` in `_add_legend_and_colorbar`. - Drop the `hasattr(outline_color_vector, "__getitem__")` defensive guard in `_render_shapes`' groups-mask block — by that point the vector is always an array/Series/Categorical. - Document the in-place mutation of `(N, 4)` RGBA arrays passed as `outline_color` to `_get_collection_shape`. - Drop the `na_color` parameter from `_align_outline_vector_to_length`: pad with NaN regardless of source-vector type so downstream code maps padded rows to na_color via the cmap. Categorical padding now skips the unused na-hex allocation. Tests added: - `_align_outline_vector_to_length`: no-op, truncate, continuous pad, categorical pad. - Cross-table render: fill column in table A, outline column in table B. - Datashader continuous outline respects an explicit `Normalize`. --- src/spatialdata_plot/pl/render.py | 32 +++++++++----------- src/spatialdata_plot/pl/utils.py | 17 ++++++++--- tests/pl/test_render_shapes.py | 50 +++++++++++++++++++++++++++++++ tests/pl/test_utils.py | 46 ++++++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 22 deletions(-) diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index eb22bb35..f038b1c4 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -4,7 +4,7 @@ from collections import abc from collections.abc import Sequence from copy import copy -from typing import Any, Literal +from typing import Any, Literal, cast import dask import dask.dataframe as dd @@ -389,12 +389,13 @@ def _add_legend_and_colorbar( ) if outline_has_decorations: - assert outline_col_for_color is not None # narrowed by outline_has_decorations # noqa: S101 + # `outline_has_decorations` ensures the column name is set. + outline_col = cast(str, outline_col_for_color) if outline_color_source_vector is not None: _add_outline_legend( ax=ax, fig_params=fig_params, - outline_col=outline_col_for_color, + outline_col=outline_col, outline_color_source_vector=outline_color_source_vector, outline_color_vector=outline_color_vector, fill_has_legend=fill_has_decorations and color_source_vector is not None, @@ -412,7 +413,7 @@ def _add_legend_and_colorbar( outline_color_vector=outline_color_vector, cmap_params=outline_cmap_params, colorbar_params=colorbar_params, - outline_col=outline_col_for_color, + outline_col=outline_col, alpha=alpha, ) @@ -482,13 +483,14 @@ def _add_outline_legend( fill_legend = ax.get_legend() if fill_legend is not None: ax.add_artist(fill_legend) # keep fill legend on the axes - try: - fig_params.fig.canvas.draw() - bbox_axes = fill_legend.get_window_extent().transformed(ax.transAxes.inverted()) - anchor_y = float(bbox_axes.y0) - 0.02 - except (AttributeError, ValueError, RuntimeError): - anchor_y = None - + # Force layout so get_window_extent returns the real (not stale) bbox. + fig_params.fig.canvas.draw() + bbox_axes = fill_legend.get_window_extent().transformed(ax.transAxes.inverted()) + anchor_y = float(bbox_axes.y0) - 0.02 + + # If the measured extent is degenerate (no fill legend, or its bbox sits at/below + # the axes' bottom edge), fall back to an opposite-anchor layout that still avoids + # overlap regardless of legend height. if anchor_y is not None and anchor_y > 0: loc = "upper left" anchor = (1.02, anchor_y) @@ -660,7 +662,6 @@ def _render_shapes( outline_color_vector, outline_color_source_vector, _n_shapes, - render_params.cmap_params.na_color, ) _warn_groups_ignored_continuous(groups, color_source_vector, col_for_color) @@ -683,11 +684,7 @@ def _render_shapes( _keep_arr = np.asarray(keep) if outline_color_source_vector is not None: outline_color_source_vector = outline_color_source_vector[_keep_arr] - outline_color_vector = ( - outline_color_vector[_keep_arr] - if hasattr(outline_color_vector, "__getitem__") - else outline_color_vector - ) + outline_color_vector = outline_color_vector[_keep_arr] # color_source_vector is None when the values aren't categorical if not values_are_categorical and render_params.transfunc is not None: @@ -2095,7 +2092,6 @@ def _render_labels( outline_color_vector, outline_color_source_vector, len(instance_id), - render_params.cmap_params.na_color, ) # rasterize could have removed labels from label diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index 0ca8dbc7..d041540d 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -435,13 +435,12 @@ def _align_outline_vector_to_length( outline_color_vector: Any, outline_color_source_vector: pd.Series | None, n: int, - na_color: Color, ) -> tuple[Any, pd.Series | None]: """Pad or truncate the outline color vector(s) to length ``n``. Used when the outline column annotates a different row count than the rendered element (cross-table case, or rasterize-induced label drop). Missing entries - are filled with ``na_color`` (categorical: a None category; continuous: na hex). + are padded with NaN so downstream code maps them to ``na_color``. """ if outline_color_vector is None or len(outline_color_vector) == n: return outline_color_vector, outline_color_source_vector @@ -450,13 +449,18 @@ def _align_outline_vector_to_length( outline_color_source_vector = outline_color_source_vector[:n] return outline_color_vector[:n], outline_color_source_vector pad = n - len(outline_color_vector) - na_hex = na_color.get_hex_with_alpha() - padded_vec = np.concatenate([np.asarray(outline_color_vector), np.array([na_hex] * pad)]) if outline_color_source_vector is not None: + # Categorical: downstream picks one hex per category from rows that *have* a + # category. NaN-padded rows contribute no category, so the per-row hex pad is + # immaterial; pad with NaN to skip the allocation. + padded_vec = np.concatenate([np.asarray(outline_color_vector), np.full(pad, np.nan, dtype=object)]) outline_color_source_vector = pd.Categorical( list(outline_color_source_vector) + [None] * pad, categories=outline_color_source_vector.categories, ) + else: + # Continuous: numeric vector, pad with NaN so cmap maps padded rows to na_color. + padded_vec = np.concatenate([np.asarray(outline_color_vector, dtype=float), np.full(pad, np.nan)]) return padded_vec, outline_color_source_vector @@ -544,6 +548,11 @@ def _get_collection_shape( - a single color or a list of color specs. Only NaNs are painted with na_color; finite values are mapped via norm+cmap. + + .. note:: + When ``outline_color`` is passed as an ``(N, 4)`` RGBA array of dtype ``float``, + its alpha channel is mutated in place to apply ``outline_alpha``. Pass a copy + if you need to retain the original buffer. """ cmap = kwargs["cmap"] diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index d35467aa..33276e6e 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -1617,3 +1617,53 @@ def test_outline_color_continuous_requests_colorbar(sdata_blobs: SpatialData): cbar_axes = [a for a in fig.axes if "outline: value" in (a.get_ylabel(), a.get_xlabel(), a.get_title())] assert cbar_axes, "Expected a colorbar for the continuous outline column" plt.close(fig) + + +def test_outline_color_cross_table(sdata_blobs: SpatialData): + """Fill column on table A, outline column on a separate table B.""" + # Patch original table to annotate blobs_polygons with a fill column. + sdata_blobs["table"].obs["region"] = pd.Categorical(["blobs_polygons"] * sdata_blobs["table"].n_obs) + sdata_blobs["table"].uns["spatialdata_attrs"]["region"] = "blobs_polygons" + n = sdata_blobs["table"].n_obs + sdata_blobs["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) + # Build a second table that ALSO annotates blobs_polygons but with a different column. + adata2 = AnnData(get_standard_RNG().normal(size=(n, 2))) + adata2.var = pd.DataFrame({}, index=["g1", "g2"]) + adata2.obs = pd.DataFrame( + { + "instance_id": list(range(n)), + "region": pd.Categorical(["blobs_polygons"] * n), + "stage": pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]), + } + ) + sdata_blobs["table_outline"] = TableModel.parse( + adata=adata2, region_key="region", instance_key="instance_id", region="blobs_polygons" + ) + fig, ax = plt.subplots() + # Don't pin table_name — let validation auto-resolve each column to its annotating table. + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="cluster", + outline_width=2, + outline_color="stage", + ).pl.show(ax=ax) + plt.close(fig) + + +def test_outline_color_ds_continuous_respects_explicit_norm(sdata_blobs: SpatialData): + """An explicit Normalize(vmin, vmax) must take effect on the datashader continuous outline path.""" + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + fig, ax = plt.subplots() + # vmin/vmax intentionally narrower than the data range so the shaded image clamps visibly + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="white", + outline_width=2, + outline_color="value", + norm=Normalize(vmin=0.2, vmax=0.8), + method="datashader", + ).pl.show(ax=ax) + # The datashader outline overlay is rendered as an AxesImage on top of the fill image. + axes_images = [c for c in ax.get_children() if isinstance(c, matplotlib.image.AxesImage)] + assert axes_images, "Expected at least one rendered AxesImage (outline overlay)" + plt.close(fig) diff --git a/tests/pl/test_utils.py b/tests/pl/test_utils.py index ab279d45..692d3bdb 100644 --- a/tests/pl/test_utils.py +++ b/tests/pl/test_utils.py @@ -519,3 +519,49 @@ def fake_rasterize(*args, **kwargs): assert captured["target_unit_to_pixels"] == pytest.approx(0.15, rel=1e-6), ( f"Expected world-unit basis (0.15), got {captured['target_unit_to_pixels']}" ) + + +def test_align_outline_vector_no_op_on_match(): + from spatialdata_plot.pl.utils import _align_outline_vector_to_length + + vec = np.array(["#ff0000", "#00ff00", "#0000ff"], dtype=object) + src = pd.Categorical(["a", "b", "a"]) + out_vec, out_src = _align_outline_vector_to_length(vec, src, n=3) + assert out_vec is vec + assert out_src is src + + +def test_align_outline_vector_truncate(): + from spatialdata_plot.pl.utils import _align_outline_vector_to_length + + vec = np.array(["#ff0000", "#00ff00", "#0000ff", "#000000"], dtype=object) + src = pd.Categorical(["a", "b", "a", "b"]) + out_vec, out_src = _align_outline_vector_to_length(vec, src, n=2) + assert len(out_vec) == 2 + assert len(out_src) == 2 + assert list(out_vec) == ["#ff0000", "#00ff00"] + + +def test_align_outline_vector_pad_continuous(): + from spatialdata_plot.pl.utils import _align_outline_vector_to_length + + vec = np.array([1.0, 2.0]) + out_vec, out_src = _align_outline_vector_to_length(vec, None, n=4) + assert len(out_vec) == 4 + assert out_vec[0] == 1.0 + assert out_vec[1] == 2.0 + assert np.isnan(out_vec[2:]).all() + assert out_src is None + + +def test_align_outline_vector_pad_categorical(): + from spatialdata_plot.pl.utils import _align_outline_vector_to_length + + vec = np.array(["#ff0000", "#00ff00"], dtype=object) + src = pd.Categorical(["a", "b"]) + out_vec, out_src = _align_outline_vector_to_length(vec, src, n=4) + assert len(out_vec) == 4 + assert len(out_src) == 4 + # padded source rows have no category + assert out_src.codes[-1] == -1 + assert out_src.codes[-2] == -1 From 0b273a808c0a1efc3ba671832791a9acb6e8fa0e Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 22:43:32 +0200 Subject: [PATCH 05/14] Reduce outline-color test count to the user-visible behavior set (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 22 tests → 9 (5 are parametrize expansions). Dropped tests that: - assert on internal render-params dataclass fields rather than rendered output (`test_outline_color_column_sets_render_params`, `*_literal_still_color`, `test_labels_outline_color_sets_render_params`, `*_literal_still_works`, `*_outline_only_mode`). - duplicate coverage already exercised by other tests (four `_align_outline_vector_to_length` unit tests are now covered by the cross-table and groups-filter render tests). - lock implementation details rather than behavior (`test_outline_color_continuous_requests_colorbar` introspects ColorbarSpec). Folded `test_outline_color_column_continuous`, `*_column_datashader`, `*_datashader_continuous`, `*_ds_continuous_respects_explicit_norm` into a single parametrized `test_outline_color_column_renders[col,method,norm]`. --- tests/pl/test_render_labels.py | 29 ----------- tests/pl/test_render_shapes.py | 91 +++++++--------------------------- tests/pl/test_utils.py | 46 ----------------- 3 files changed, 17 insertions(+), 149 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index b6b4f2b8..6b612ae3 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -587,35 +587,6 @@ def test_labels_outline_color_obs_column_does_not_raise(sdata_blobs: SpatialData plt.close(fig) -def test_labels_outline_color_sets_render_params(sdata_blobs: SpatialData): - from spatialdata_plot.pl.render_params import LabelsRenderParams - - sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) - res = sdata_blobs.pl.render_labels("blobs_labels", outline_color="cluster", outline_alpha=1.0) - params: LabelsRenderParams = next(v for k, v in res.plotting_tree.items() if k.endswith("_render_labels")) - assert params.col_for_outline_color == "cluster" - assert params.outline_table_name == "table" - - -def test_labels_outline_color_literal_still_works(sdata_blobs: SpatialData): - fig, ax = plt.subplots() - sdata_blobs.pl.render_labels("blobs_labels", fill_alpha=0.0, outline_alpha=1.0, outline_color="red").pl.show(ax=ax) - plt.close(fig) - - -def test_labels_outline_color_outline_only_mode(sdata_blobs: SpatialData): - """Outline-only render (fill_alpha=0, outline_alpha>0) must color contour by the outline column.""" - sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - sdata_blobs.pl.render_labels( - "blobs_labels", - fill_alpha=0.0, - outline_alpha=1.0, - outline_color="cluster", - ).pl.show(ax=ax) - plt.close(fig) - - def test_labels_outline_color_groups_filter_aligns(sdata_blobs: SpatialData): """When `groups` filters the fill labels, the outline vector must be masked alongside it.""" sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index 33276e6e..328ba317 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -1502,48 +1502,35 @@ def test_outline_color_as_obs_column_does_not_raise(sdata_blobs: SpatialData): plt.close(fig) -def test_outline_color_column_sets_render_params(sdata_blobs: SpatialData): - from spatialdata_plot.pl.render_params import ShapesRenderParams - - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - res = sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=2, outline_color="cluster", outline_alpha=1.0) - params: ShapesRenderParams = next(v for k, v in res.plotting_tree.items() if k.endswith("_render_shapes")) - assert params.col_for_outline_color == "cluster" - assert params.outline_table_name == "table" - - -def test_outline_color_literal_still_color(sdata_blobs: SpatialData): - """Passing a recognized color name should still produce a literal Color object.""" - from spatialdata_plot.pl.render_params import Color, ShapesRenderParams - - res = sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=2, outline_color="red", outline_alpha=1.0) - params: ShapesRenderParams = next(v for k, v in res.plotting_tree.items() if k.endswith("_render_shapes")) - assert params.col_for_outline_color is None - assert isinstance(params.outline_params.outer_outline_color, Color) - - def test_outline_color_column_with_two_outlines_raises(sdata_blobs: SpatialData): sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) with pytest.raises(ValueError, match="not supported with two outlines"): sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=(2.0, 0.5), outline_color="cluster") -def test_outline_color_column_continuous(sdata_blobs: SpatialData): - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - sdata_blobs.pl.render_shapes("blobs_polygons", color="white", outline_width=2, outline_color="value").pl.show(ax=ax) - plt.close(fig) - - -def test_outline_color_column_datashader(sdata_blobs: SpatialData): +@pytest.mark.parametrize( + ("column", "method", "norm"), + [ + ("cluster", "matplotlib", None), + ("value", "matplotlib", None), + ("cluster", "datashader", None), + ("value", "datashader", None), + ("value", "datashader", Normalize(vmin=0.2, vmax=0.8)), + ], +) +def test_outline_color_column_renders(sdata_blobs: SpatialData, column: str, method: str, norm): + """Categorical + continuous outline columns render under both methods without raising, + and an explicit Normalize is accepted on the datashader continuous path.""" sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) fig, ax = plt.subplots() + kwargs = {"norm": norm} if norm is not None else {} sdata_blobs.pl.render_shapes( "blobs_polygons", color="white", outline_width=2, - outline_color="cluster", - method="datashader", + outline_color=column, + method=method, + **kwargs, ).pl.show(ax=ax) plt.close(fig) @@ -1594,31 +1581,6 @@ def test_outline_color_column_collision_raises(sdata_blobs: SpatialData): sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=2, outline_color="red", outline_alpha=1.0) -def test_outline_color_datashader_continuous(sdata_blobs: SpatialData): - """Continuous outline column under datashader should render without error.""" - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - sdata_blobs.pl.render_shapes( - "blobs_polygons", - color="white", - outline_width=2, - outline_color="value", - method="datashader", - ).pl.show(ax=ax) - plt.close(fig) - - -def test_outline_color_continuous_requests_colorbar(sdata_blobs: SpatialData): - """A continuous outline column should add a ColorbarSpec to colorbar_requests.""" - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - sdata_blobs.pl.render_shapes("blobs_polygons", color="white", outline_width=2, outline_color="value").pl.show(ax=ax) - # Look for a colorbar artist labelled "outline: value" - cbar_axes = [a for a in fig.axes if "outline: value" in (a.get_ylabel(), a.get_xlabel(), a.get_title())] - assert cbar_axes, "Expected a colorbar for the continuous outline column" - plt.close(fig) - - def test_outline_color_cross_table(sdata_blobs: SpatialData): """Fill column on table A, outline column on a separate table B.""" # Patch original table to annotate blobs_polygons with a fill column. @@ -1648,22 +1610,3 @@ def test_outline_color_cross_table(sdata_blobs: SpatialData): outline_color="stage", ).pl.show(ax=ax) plt.close(fig) - - -def test_outline_color_ds_continuous_respects_explicit_norm(sdata_blobs: SpatialData): - """An explicit Normalize(vmin, vmax) must take effect on the datashader continuous outline path.""" - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - # vmin/vmax intentionally narrower than the data range so the shaded image clamps visibly - sdata_blobs.pl.render_shapes( - "blobs_polygons", - color="white", - outline_width=2, - outline_color="value", - norm=Normalize(vmin=0.2, vmax=0.8), - method="datashader", - ).pl.show(ax=ax) - # The datashader outline overlay is rendered as an AxesImage on top of the fill image. - axes_images = [c for c in ax.get_children() if isinstance(c, matplotlib.image.AxesImage)] - assert axes_images, "Expected at least one rendered AxesImage (outline overlay)" - plt.close(fig) diff --git a/tests/pl/test_utils.py b/tests/pl/test_utils.py index 692d3bdb..ab279d45 100644 --- a/tests/pl/test_utils.py +++ b/tests/pl/test_utils.py @@ -519,49 +519,3 @@ def fake_rasterize(*args, **kwargs): assert captured["target_unit_to_pixels"] == pytest.approx(0.15, rel=1e-6), ( f"Expected world-unit basis (0.15), got {captured['target_unit_to_pixels']}" ) - - -def test_align_outline_vector_no_op_on_match(): - from spatialdata_plot.pl.utils import _align_outline_vector_to_length - - vec = np.array(["#ff0000", "#00ff00", "#0000ff"], dtype=object) - src = pd.Categorical(["a", "b", "a"]) - out_vec, out_src = _align_outline_vector_to_length(vec, src, n=3) - assert out_vec is vec - assert out_src is src - - -def test_align_outline_vector_truncate(): - from spatialdata_plot.pl.utils import _align_outline_vector_to_length - - vec = np.array(["#ff0000", "#00ff00", "#0000ff", "#000000"], dtype=object) - src = pd.Categorical(["a", "b", "a", "b"]) - out_vec, out_src = _align_outline_vector_to_length(vec, src, n=2) - assert len(out_vec) == 2 - assert len(out_src) == 2 - assert list(out_vec) == ["#ff0000", "#00ff00"] - - -def test_align_outline_vector_pad_continuous(): - from spatialdata_plot.pl.utils import _align_outline_vector_to_length - - vec = np.array([1.0, 2.0]) - out_vec, out_src = _align_outline_vector_to_length(vec, None, n=4) - assert len(out_vec) == 4 - assert out_vec[0] == 1.0 - assert out_vec[1] == 2.0 - assert np.isnan(out_vec[2:]).all() - assert out_src is None - - -def test_align_outline_vector_pad_categorical(): - from spatialdata_plot.pl.utils import _align_outline_vector_to_length - - vec = np.array(["#ff0000", "#00ff00"], dtype=object) - src = pd.Categorical(["a", "b"]) - out_vec, out_src = _align_outline_vector_to_length(vec, src, n=4) - assert len(out_vec) == 4 - assert len(out_src) == 4 - # padded source rows have no category - assert out_src.codes[-1] == -1 - assert out_src.codes[-2] == -1 From 8c2f16c347e3e3937b387277fae29c7d811e57e4 Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 23:00:36 +0200 Subject: [PATCH 06/14] Second simplify pass: dedup helpers + latent join bug (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Extract `_join_table_for_element` (utils.py) to wrap the index-name workaround for scverse/spatialdata#1099 around `join_spatialelement_table`. Use from both the fill-side join in `_render_shapes` and the outline cross-table join. The outline path previously omitted the workaround and would have hit the same upstream bug on tables with name-colliding obs indices — this is now patched. - Extract `_apply_mask_to_outline_vectors`: replaces 5-line duplicate blocks in `_render_shapes` (groups branch) and `_render_label` (rasterize + groups branches). - Extract `_decorate_outline`: the "categorical legend | continuous colorbar" dispatch was duplicated between `_add_legend_and_colorbar` and the end of `_render_label`. - Extract `_make_continuous_mappable`: the `vmin == vmax → ±0.5` fallback used by both `_build_ds_colorbar` and `_append_outline_colorbar`. - Vectorize the categorical color-map loop in `_map_color_seg`'s outline branch: `for cat_idx in range(K): np.where(cat_codes == cat_idx)` → one `np.unique(cat_codes, return_index=True)` pass. Net: -117 + 160 LOC across the three source files; one latent correctness gap fixed; ~K-times fewer Python loop iterations on the labels-with-categorical-outline hot path. --- src/spatialdata_plot/pl/_datashader.py | 11 +- src/spatialdata_plot/pl/render.py | 187 +++++++++++-------------- src/spatialdata_plot/pl/utils.py | 79 ++++++++++- 3 files changed, 160 insertions(+), 117 deletions(-) diff --git a/src/spatialdata_plot/pl/_datashader.py b/src/spatialdata_plot/pl/_datashader.py index 722924af..51fddeaf 100644 --- a/src/spatialdata_plot/pl/_datashader.py +++ b/src/spatialdata_plot/pl/_datashader.py @@ -28,6 +28,7 @@ _datashader_map_aggregate_to_color, _datshader_get_how_kw_for_spread, _hex_no_alpha, + _make_continuous_mappable, ) # --------------------------------------------------------------------------- @@ -504,12 +505,4 @@ def _build_ds_colorbar( return None vmin = reduction_bounds[0].values if norm.vmin is None else norm.vmin vmax = reduction_bounds[1].values if norm.vmax is None else norm.vmax - if (norm.vmin is not None or norm.vmax is not None) and norm.vmin == norm.vmax: - assert norm.vmin is not None - assert norm.vmax is not None - vmin = norm.vmin - 0.5 - vmax = norm.vmin + 0.5 - return ScalarMappable( - norm=matplotlib.colors.Normalize(vmin=vmin, vmax=vmax), - cmap=cmap, - ) + return _make_continuous_mappable(vmin, vmax, cmap) diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index f038b1c4..80e1f053 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -24,7 +24,7 @@ from matplotlib.colors import ListedColormap, Normalize from scanpy._settings import settings as sc_settings from scanpy.plotting._tools.scatterplots import _add_categorical_legend -from spatialdata import get_extent, get_values, join_spatialelement_table +from spatialdata import get_extent, get_values from spatialdata._core.query.relational_query import match_table_to_element from spatialdata.models import PointsModel, ShapesModel, get_table_keys from spatialdata.transformations import set_transformation @@ -58,6 +58,7 @@ ) from spatialdata_plot.pl.utils import ( _align_outline_vector_to_length, + _apply_mask_to_outline_vectors, _ax_show_and_transform, _check_obs_var_shadow, _color_vector_to_rgba, @@ -69,6 +70,8 @@ _get_extent_and_range_for_datashader_canvas, _get_linear_colormap, _hex_no_alpha, + _join_table_for_element, + _make_continuous_mappable, _map_color_seg, _maybe_set_colors, _mpl_ax_contains_elements, @@ -388,34 +391,56 @@ def _add_legend_and_colorbar( ), ) - if outline_has_decorations: - # `outline_has_decorations` ensures the column name is set. - outline_col = cast(str, outline_col_for_color) - if outline_color_source_vector is not None: - _add_outline_legend( - ax=ax, - fig_params=fig_params, - outline_col=outline_col, - outline_color_source_vector=outline_color_source_vector, - outline_color_vector=outline_color_vector, - fill_has_legend=fill_has_decorations and color_source_vector is not None, - legend_params=legend_params, - ) - elif ( - colorbar_requests is not None - and legend_params.colorbar - and outline_cmap_params is not None - and outline_color_vector is not None - ): - _append_outline_colorbar( - colorbar_requests=colorbar_requests, - ax=ax, - outline_color_vector=outline_color_vector, - cmap_params=outline_cmap_params, - colorbar_params=colorbar_params, - outline_col=outline_col, - alpha=alpha, - ) + if outline_has_decorations and outline_cmap_params is not None: + _decorate_outline( + ax=ax, + fig_params=fig_params, + outline_col=cast(str, outline_col_for_color), + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + cmap_params=outline_cmap_params, + colorbar_params=colorbar_params, + colorbar_requests=colorbar_requests, + legend_params=legend_params, + fill_has_legend=fill_has_decorations and color_source_vector is not None, + alpha=alpha, + ) + + +def _decorate_outline( + ax: matplotlib.axes.SubplotBase, + fig_params: FigParams, + outline_col: str, + outline_color_source_vector: pd.Series | None, + outline_color_vector: Any, + cmap_params: CmapParams, + colorbar_params: dict[str, object] | None, + colorbar_requests: list[ColorbarSpec] | None, + legend_params: LegendParams, + fill_has_legend: bool, + alpha: float, +) -> None: + """Dispatch a categorical legend or continuous colorbar for an outline column.""" + if outline_color_source_vector is not None: + _add_outline_legend( + ax=ax, + fig_params=fig_params, + outline_col=outline_col, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + fill_has_legend=fill_has_legend, + legend_params=legend_params, + ) + elif colorbar_requests is not None and legend_params.colorbar and outline_color_vector is not None: + _append_outline_colorbar( + colorbar_requests=colorbar_requests, + ax=ax, + outline_color_vector=outline_color_vector, + cmap_params=cmap_params, + colorbar_params=colorbar_params, + outline_col=outline_col, + alpha=alpha, + ) def _append_outline_colorbar( @@ -440,13 +465,10 @@ def _append_outline_colorbar( norm = cmap_params.norm vmin = norm.vmin if norm.vmin is not None else float(np.nanmin(arr[finite])) vmax = norm.vmax if norm.vmax is not None else float(np.nanmax(arr[finite])) - if vmin == vmax: - vmin, vmax = vmin - 0.5, vmax + 0.5 - mappable = ScalarMappable(norm=Normalize(vmin=vmin, vmax=vmax), cmap=cmap_params.cmap) colorbar_requests.append( ColorbarSpec( ax=ax, - mappable=mappable, + mappable=_make_continuous_mappable(vmin, vmax, cmap_params.cmap), params=colorbar_params, label=f"outline: {outline_col}", alpha=alpha, @@ -556,36 +578,8 @@ def _render_shapes( shapes = sdata_filt[element] else: _check_instance_ids_overlap(sdata_filt, table_name, element, sdata_filt[element].index) - - # Workaround for upstream spatialdata bug (scverse/spatialdata#1099): - # join_spatialelement_table calls table.obs.reset_index() which fails when - # the obs index name matches an existing column (e.g. "EntityID" in Merfish - # data). When that collision is present, the obs index may also be a - # non-RangeIndex of int dtype, which AnnData's `_normalize_index` rejects - # when the join indexes back into the table. Temporarily swap to a clean - # RangeIndex / drop the conflicting name; restore on exit. - _obs = sdata[table_name].obs - _saved_index_name = _obs.index.name - _saved_index: pd.Index | None = None - _name_collides = _saved_index_name is not None and _saved_index_name in _obs.columns - if _name_collides and not isinstance(_obs.index, pd.RangeIndex): - _saved_index = _obs.index - _obs.index = pd.RangeIndex(len(_obs)) - elif _name_collides: - _obs.index.name = None - - try: - element_dict, joined_table = join_spatialelement_table( - sdata, spatial_element_names=element, table_name=table_name, how="inner" - ) - finally: - if _saved_index is not None: - _obs.index = _saved_index - _obs.index.name = _saved_index_name - sdata_filt[element] = shapes = element_dict[element] - joined_table.uns["spatialdata_attrs"]["region"] = ( - joined_table.obs[joined_table.uns["spatialdata_attrs"]["region_key"]].unique().tolist() - ) + joined_element, joined_table = _join_table_for_element(sdata, element, table_name) + sdata_filt[element] = shapes = joined_element sdata_filt[table_name] = table = joined_table shapes = sdata_filt[element] @@ -621,19 +615,14 @@ def _render_shapes( # the element so the lookup is aligned and the element row count matches # the outline vector length. if outline_table_name is not None and outline_table_name != table_name: - _outline_dict, _joined_outline_table = join_spatialelement_table( - sdata_filt, spatial_element_names=element, table_name=outline_table_name, how="inner" - ) - _joined_outline_table.uns["spatialdata_attrs"]["region"] = ( - _joined_outline_table.obs[_joined_outline_table.uns["spatialdata_attrs"]["region_key"]] - .unique() - .tolist() + joined_outline_element, joined_outline_table = _join_table_for_element( + sdata_filt, element, outline_table_name ) - sdata_filt[outline_table_name] = _joined_outline_table + sdata_filt[outline_table_name] = joined_outline_table # If no fill join happened, replace the element with the outline-joined version # so the per-shape outline vector length matches the rendered shapes. if table_name is None: - sdata_filt[element] = shapes = _outline_dict[element] + sdata_filt[element] = shapes = joined_outline_element outline_color_source_vector, outline_color_vector, _ = _set_color_source_vec( sdata=sdata_filt, element=sdata_filt[element], @@ -681,10 +670,9 @@ def _render_shapes( return sdata_filt[element] = shapes if outline_color_vector is not None: - _keep_arr = np.asarray(keep) - if outline_color_source_vector is not None: - outline_color_source_vector = outline_color_source_vector[_keep_arr] - outline_color_vector = outline_color_vector[_keep_arr] + outline_color_vector, outline_color_source_vector = _apply_mask_to_outline_vectors( + outline_color_vector, outline_color_source_vector, keep + ) # color_source_vector is None when the values aren't categorical if not values_are_categorical and render_params.transfunc is not None: @@ -2109,9 +2097,9 @@ def _render_labels( else: assert color_source_vector is None # noqa: S101 if outline_color_vector is not None: - outline_color_vector = outline_color_vector[mask] - if outline_color_source_vector is not None: - outline_color_source_vector = outline_color_source_vector[mask] + outline_color_vector, outline_color_source_vector = _apply_mask_to_outline_vectors( + outline_color_vector, outline_color_source_vector, mask + ) _warn_groups_ignored_continuous(groups, color_source_vector, col_for_color) @@ -2138,10 +2126,9 @@ def _render_labels( if isinstance(color_vector.dtype, pd.CategoricalDtype): color_vector = color_vector.remove_unused_categories() if outline_color_vector is not None: - _keep_arr = np.asarray(keep_vec) - outline_color_vector = outline_color_vector[_keep_arr] - if outline_color_source_vector is not None: - outline_color_source_vector = outline_color_source_vector[_keep_arr] + outline_color_vector, outline_color_source_vector = _apply_mask_to_outline_vectors( + outline_color_vector, outline_color_source_vector, keep_vec + ) # color_source_vector is None when the values aren't categorical if color_source_vector is None and render_params.transfunc is not None: @@ -2264,27 +2251,19 @@ def _draw_labels( ) if col_for_outline_color is not None: - if outline_color_source_vector is not None: - fill_has_legend = col_for_color is not None and color_source_vector is not None - _add_outline_legend( - ax=ax, - fig_params=fig_params, - outline_col=col_for_outline_color, - outline_color_source_vector=outline_color_source_vector, - outline_color_vector=outline_color_vector, - fill_has_legend=fill_has_legend, - legend_params=legend_params, - ) - elif colorbar_requests is not None and legend_params.colorbar and outline_color_vector is not None: - _append_outline_colorbar( - colorbar_requests=colorbar_requests, - ax=ax, - outline_color_vector=outline_color_vector, - cmap_params=render_params.cmap_params, - colorbar_params=render_params.colorbar_params, - outline_col=col_for_outline_color, - alpha=alpha_to_decorate_ax, - ) + _decorate_outline( + ax=ax, + fig_params=fig_params, + outline_col=col_for_outline_color, + outline_color_source_vector=outline_color_source_vector, + outline_color_vector=outline_color_vector, + cmap_params=render_params.cmap_params, + colorbar_params=render_params.colorbar_params, + colorbar_requests=colorbar_requests, + legend_params=legend_params, + fill_has_legend=col_for_color is not None and color_source_vector is not None, + alpha=alpha_to_decorate_ax, + ) def _normalise_to_range(values: np.ndarray, lo: float, hi: float) -> np.ndarray: diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index d041540d..ca5bf848 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -30,6 +30,7 @@ from geopandas import GeoDataFrame from matplotlib import colors, patheffects, rcParams from matplotlib.axes import Axes +from matplotlib.cm import ScalarMappable from matplotlib.collections import PatchCollection from matplotlib.colors import ( ColorConverter, @@ -61,6 +62,7 @@ get_element_annotators, get_extent, get_values, + join_spatialelement_table, rasterize, ) from spatialdata._core.query.relational_query import _locate_value @@ -431,6 +433,73 @@ def _scale_pathpatch_around_centroid(pathpatch: mpatches.PathPatch, scale_factor pathpatch.get_path().vertices = scaled_vertices +def _join_table_for_element( + sdata: sd.SpatialData, + element: str, + table_name: str, +) -> tuple[Any, AnnData]: + """Inner-join ``element`` with its annotating ``table_name``. + + Wraps the workaround for scverse/spatialdata#1099: ``join_spatialelement_table`` + calls ``table.obs.reset_index()`` which fails when the obs index name matches + an existing column (e.g. "EntityID" in Merfish data). When that collision is + present, the obs index may also be a non-RangeIndex of int dtype, which + AnnData's ``_normalize_index`` rejects when the join indexes back into the + table. Temporarily swap to a clean RangeIndex / drop the conflicting name; + restore on exit. + + Also patches ``joined_table.uns["spatialdata_attrs"]["region"]`` to the + actual unique regions after the join so downstream lookups see consistent + metadata. + """ + _obs = sdata[table_name].obs + _saved_index_name = _obs.index.name + _saved_index: pd.Index | None = None + _name_collides = _saved_index_name is not None and _saved_index_name in _obs.columns + if _name_collides and not isinstance(_obs.index, pd.RangeIndex): + _saved_index = _obs.index + _obs.index = pd.RangeIndex(len(_obs)) + elif _name_collides: + _obs.index.name = None + + try: + element_dict, joined_table = join_spatialelement_table( + sdata, spatial_element_names=element, table_name=table_name, how="inner" + ) + finally: + if _saved_index is not None: + _obs.index = _saved_index + _obs.index.name = _saved_index_name + + joined_table.uns["spatialdata_attrs"]["region"] = ( + joined_table.obs[joined_table.uns["spatialdata_attrs"]["region_key"]].unique().tolist() + ) + return element_dict[element], joined_table + + +def _make_continuous_mappable(vmin: float, vmax: float, cmap: Any) -> ScalarMappable: + """Build a ``ScalarMappable`` for a continuous colorbar, with a ±0.5 fallback when ``vmin == vmax``.""" + if vmin == vmax: + vmin, vmax = vmin - 0.5, vmax + 0.5 + return ScalarMappable(norm=Normalize(vmin=vmin, vmax=vmax), cmap=cmap) + + +def _apply_mask_to_outline_vectors( + outline_color_vector: Any, + outline_color_source_vector: pd.Series | None, + mask: Any, +) -> tuple[Any, pd.Series | None]: + """Apply a boolean ``keep`` mask to outline color vector(s). + + Used to keep outline data aligned with the fill data after a ``groups`` + or rasterize-based filter is applied to the rendered element. + """ + arr = np.asarray(mask) + if outline_color_source_vector is not None: + outline_color_source_vector = outline_color_source_vector[arr] + return outline_color_vector[arr], outline_color_source_vector + + def _align_outline_vector_to_length( outline_color_vector: Any, outline_color_source_vector: pd.Series | None, @@ -1479,11 +1548,13 @@ def _map_color_seg( cat_codes = cat.codes outline_val_im: ArrayLike = map_array(seg.copy(), cell_id, cat_codes + 1) color_arr = np.asarray(outline_color_vector, dtype=object) + # Pick the first per-cell hex for each category in one vectorized pass + # (avoids `K × O(N)` Python loops on large label sets). cat_colors: list[Any] = [na_color.get_hex_with_alpha()] * len(cat.categories) - for cat_idx in range(len(cat.categories)): - first_match = np.where(cat_codes == cat_idx)[0] - if len(first_match): - cat_colors[cat_idx] = color_arr[first_match[0]] + unique_codes, first_indices = np.unique(cat_codes, return_index=True) + for code, idx in zip(unique_codes, first_indices, strict=True): + if code >= 0: + cat_colors[code] = color_arr[idx] outline_cols = colors.to_rgba_array(cat_colors) else: # Continuous: numeric values normalized via cmap From 9df58782f1d14776e4bc1fab01c20cfdad96e5de Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 21 May 2026 23:47:50 +0200 Subject: [PATCH 07/14] Replace outline-color smoke tests with visual reference-image tests (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dropped non-visual tests whose only assertion was "did not raise": - `test_outline_color_as_obs_column_does_not_raise` - `test_outline_color_column_renders` (5 parametrize cases) - `test_outline_color_column_stacked_legends` (bbox non-overlap was a proxy for "legends are visibly placed correctly") - `test_labels_outline_color_obs_column_does_not_raise` Added 6 visual `test_plot_*` tests gated against committed reference PNGs: - TestShapes.test_plot_outline_color_by_categorical_obs (matplotlib) - TestShapes.test_plot_outline_color_by_continuous_obs (matplotlib) - TestShapes.test_plot_outline_color_by_categorical_obs_datashader - TestShapes.test_plot_outline_color_by_continuous_obs_datashader - TestShapes.test_plot_fill_and_outline_both_obs_columns (stacked legends) - TestLabels.test_plot_outline_color_by_categorical_obs_labels Kept the 5 non-visual tests for error paths and alignment regressions (2-outline+column rejection, color/column collision, groups+outline IndexError regression x2, cross-table join exercise) — these gate behaviors that visual tests can't catch reliably. Reference images will be generated on first CI run and committed from the CI artifact, per project convention. --- tests/pl/test_render_labels.py | 36 +++++----- tests/pl/test_render_shapes.py | 128 ++++++++++++++------------------- 2 files changed, 70 insertions(+), 94 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 6b612ae3..2024bd24 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -28,6 +28,16 @@ # ".png" is appended to , no need to set it +def _annotate_labels_with_outline_columns(sdata: SpatialData) -> SpatialData: + """Patch the shared blobs fixture so its table annotates ``blobs_labels`` with categorical columns.""" + sdata["table"].obs["region"] = pd.Categorical(["blobs_labels"] * sdata["table"].n_obs) + sdata["table"].uns["spatialdata_attrs"]["region"] = "blobs_labels" + n = sdata["table"].n_obs + sdata["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) + sdata["table"].obs["stage"] = pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]) + return sdata + + class TestLabels(PlotTester, metaclass=PlotTesterMeta): def test_plot_can_render_labels(self, sdata_blobs: SpatialData): sdata_blobs.pl.render_labels(element="blobs_labels").pl.show() @@ -120,6 +130,12 @@ def test_plot_outline_uses_data_driven_colors(self, sdata_blobs: SpatialData): "blobs_labels", color="channel_0_sum", outline_alpha=1, fill_alpha=0, contour_px=10 ).pl.show() + def test_plot_outline_color_by_categorical_obs_labels(self, sdata_blobs: SpatialData): + sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) + sdata_blobs.pl.render_labels( + "blobs_labels", fill_alpha=0, outline_alpha=1, outline_color="cluster", contour_px=10 + ).pl.show() + def test_plot_can_color_labels_by_continuous_variable(self, sdata_blobs: SpatialData): sdata_blobs.pl.render_labels("blobs_labels", color="channel_0_sum").pl.show() @@ -567,26 +583,6 @@ def test_render_labels_raises_on_3d(scale_factors): plt.close(fig) -def _annotate_labels_with_outline_columns(sdata: SpatialData) -> SpatialData: - """Patch the shared blobs fixture so its table annotates blobs_labels with categorical columns.""" - sdata["table"].obs["region"] = pd.Categorical(["blobs_labels"] * sdata["table"].n_obs) - sdata["table"].uns["spatialdata_attrs"]["region"] = "blobs_labels" - n = sdata["table"].n_obs - sdata["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) - sdata["table"].obs["stage"] = pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]) - return sdata - - -def test_labels_outline_color_obs_column_does_not_raise(sdata_blobs: SpatialData): - """Regression for #681 (labels variant): outline_color accepts an obs column name.""" - sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - sdata_blobs.pl.render_labels("blobs_labels", fill_alpha=0.0, outline_alpha=1.0, outline_color="cluster").pl.show( - ax=ax - ) - plt.close(fig) - - def test_labels_outline_color_groups_filter_aligns(sdata_blobs: SpatialData): """When `groups` filters the fill labels, the outline vector must be masked alongside it.""" sdata_blobs = _annotate_labels_with_outline_columns(sdata_blobs) diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index 328ba317..1254bbcb 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -33,6 +33,20 @@ # ".png" is appended to , no need to set it +def _annotate_polygons_with_outline_columns(sdata: SpatialData) -> SpatialData: + """Patch the shared blobs fixture so its table annotates ``blobs_polygons``. + + Adds two categorical columns and one continuous column for the outline-color tests. + """ + sdata["table"].obs["region"] = pd.Categorical(["blobs_polygons"] * sdata["table"].n_obs) + sdata["table"].uns["spatialdata_attrs"]["region"] = "blobs_polygons" + n = sdata["table"].n_obs + sdata["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) + sdata["table"].obs["stage"] = pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]) + sdata["table"].obs["value"] = np.linspace(0.0, 1.0, n) + return sdata + + class TestShapes(PlotTester, metaclass=PlotTesterMeta): def test_plot_can_render_circles(self, sdata_blobs: SpatialData): sdata_blobs.pl.render_shapes(element="blobs_circles").pl.show() @@ -62,6 +76,46 @@ def test_plot_can_render_polygons_with_rgba_colored_outline(self, sdata_blobs: S element="blobs_polygons", outline_alpha=1, outline_color=(0.0, 1.0, 0.0, 1.0) ).pl.show() + def test_plot_outline_color_by_categorical_obs(self, sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + sdata_blobs.pl.render_shapes( + "blobs_polygons", color="white", outline_alpha=1, outline_width=3, outline_color="cluster" + ).pl.show() + + def test_plot_outline_color_by_continuous_obs(self, sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + sdata_blobs.pl.render_shapes( + "blobs_polygons", color="white", outline_alpha=1, outline_width=3, outline_color="value" + ).pl.show() + + def test_plot_outline_color_by_categorical_obs_datashader(self, sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="white", + outline_alpha=1, + outline_width=3, + outline_color="cluster", + method="datashader", + ).pl.show() + + def test_plot_outline_color_by_continuous_obs_datashader(self, sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + sdata_blobs.pl.render_shapes( + "blobs_polygons", + color="white", + outline_alpha=1, + outline_width=3, + outline_color="value", + method="datashader", + ).pl.show() + + def test_plot_fill_and_outline_both_obs_columns(self, sdata_blobs: SpatialData): + sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) + sdata_blobs.pl.render_shapes( + "blobs_polygons", color="cluster", outline_alpha=1, outline_width=3, outline_color="stage" + ).pl.show() + def test_plot_can_render_empty_geometry(self, sdata_blobs: SpatialData): sdata_blobs.shapes["blobs_circles"].at[0, "geometry"] = gpd.points_from_xy([None], [None])[0] sdata_blobs.pl.render_shapes().pl.show() @@ -1475,86 +1529,12 @@ def test_render_shapes_datashader_under_bbox_query_does_not_crash(): plt.close(fig) -def _annotate_polygons_with_outline_columns(sdata: SpatialData) -> SpatialData: - """Patch the shared blobs fixture so its table annotates ``blobs_polygons``. - - Adds two categorical columns and one continuous column for the outline-color tests below. - """ - sdata["table"].obs["region"] = pd.Categorical(["blobs_polygons"] * sdata["table"].n_obs) - sdata["table"].uns["spatialdata_attrs"]["region"] = "blobs_polygons" - n = sdata["table"].n_obs - sdata["table"].obs["cluster"] = pd.Categorical((["c1", "c2"] * ((n + 1) // 2))[:n]) - sdata["table"].obs["stage"] = pd.Categorical((["s1", "s2"] * ((n + 1) // 2))[:n]) - sdata["table"].obs["value"] = np.linspace(0.0, 1.0, n) - return sdata - - -def test_outline_color_as_obs_column_does_not_raise(sdata_blobs: SpatialData): - """Regression for #681: outline_color accepts an obs column name.""" - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - sdata_blobs.pl.render_shapes( - "blobs_polygons", - color="white", - outline_width=2, - outline_color="cluster", - ).pl.show(ax=ax) - plt.close(fig) - - def test_outline_color_column_with_two_outlines_raises(sdata_blobs: SpatialData): sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) with pytest.raises(ValueError, match="not supported with two outlines"): sdata_blobs.pl.render_shapes("blobs_polygons", outline_width=(2.0, 0.5), outline_color="cluster") -@pytest.mark.parametrize( - ("column", "method", "norm"), - [ - ("cluster", "matplotlib", None), - ("value", "matplotlib", None), - ("cluster", "datashader", None), - ("value", "datashader", None), - ("value", "datashader", Normalize(vmin=0.2, vmax=0.8)), - ], -) -def test_outline_color_column_renders(sdata_blobs: SpatialData, column: str, method: str, norm): - """Categorical + continuous outline columns render under both methods without raising, - and an explicit Normalize is accepted on the datashader continuous path.""" - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots() - kwargs = {"norm": norm} if norm is not None else {} - sdata_blobs.pl.render_shapes( - "blobs_polygons", - color="white", - outline_width=2, - outline_color=column, - method=method, - **kwargs, - ).pl.show(ax=ax) - plt.close(fig) - - -def test_outline_color_column_stacked_legends(sdata_blobs: SpatialData): - """Two stacked legends when both color and outline_color are columns; no bbox overlap.""" - from matplotlib.legend import Legend - - sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) - fig, ax = plt.subplots(figsize=(7, 4)) - sdata_blobs.pl.render_shapes("blobs_polygons", color="cluster", outline_width=2, outline_color="stage").pl.show( - ax=ax - ) - fig.canvas.draw() - legends = [c for c in ax.get_children() if isinstance(c, Legend)] - assert len(legends) == 2, f"Expected 2 legends, got {len(legends)}" - a = legends[0].get_window_extent().transformed(ax.transAxes.inverted()) - b = legends[1].get_window_extent().transformed(ax.transAxes.inverted()) - overlap_h = max(0.0, min(a.x1, b.x1) - max(a.x0, b.x0)) - overlap_v = max(0.0, min(a.y1, b.y1) - max(a.y0, b.y0)) - assert overlap_h * overlap_v == 0.0, "Fill and outline legend bboxes overlap" - plt.close(fig) - - def test_outline_color_column_groups_filter_aligns(sdata_blobs: SpatialData): """When `groups` filters the fill, the outline vector must be masked alongside it.""" sdata_blobs = _annotate_polygons_with_outline_columns(sdata_blobs) From 947b8f89539392c89cd17996fba42db05c5c7e81 Mon Sep 17 00:00:00 2001 From: anon Date: Fri, 22 May 2026 00:07:33 +0200 Subject: [PATCH 08/14] Fix outline-vector alignment when only outline has a table (#681) For `render_labels` with `outline_color=""` but no `color=` (or fill column without a table), the labels render previously derived `instance_id` from `np.unique(label.values)` and pulled the outline vector from the table in table-row order. The two were positionally misaligned: position 0 of `instance_id` is the background label 0, position 0 of the outline vector is the first table row. Result: every label was colored by the wrong row's category. With an alternating c1/c2 column on a fixture where the table doesn't cover all label values, this collapsed to roughly all-c2 in the rendered image. Fix: promote `outline_table_name` to drive instance_id derivation when fill has no table. The outline vector then aligns to `instance_id` via the table's `instance_key`, matching the existing fill-with-table path. --- src/spatialdata_plot/pl/render.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index 80e1f053..ba0ddfe8 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -1966,6 +1966,13 @@ def _render_labels( groups = render_params.groups scale = render_params.scale + # When fill is a literal (no `color=` column) but outline points to an obs column, + # promote the outline table to be the "active" table for instance_id derivation so + # the outline color vector aligns to label IDs by the table's instance_key rather + # than by positional index. + if table_name is None and render_params.outline_table_name is not None: + table_name = render_params.outline_table_name + _check_obs_var_shadow(sdata, element, col_for_color, table_name) # filter_tables=False: match_table_to_element below already filters per From 193086fcb2aeaca3b99856a46985ed6239ca86d2 Mon Sep 17 00:00:00 2001 From: anon Date: Fri, 22 May 2026 00:18:23 +0200 Subject: [PATCH 09/14] Fix datashader outline column-attach using positional assignment (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `transformed_element.assign(col=series)` aligns by index. When the post-inner-join element carries a non-contiguous index (e.g. [0, 2, 5, ...]) but the outline source vector is built with a default RangeIndex(0..n-1), rows whose indices don't intersect get NaN. Those NaNs are then lifted to the `ds_nan` sentinel by `_inject_ds_nan_sentinel`, and one polygon ends up rendered as `na_color` instead of its real category — visible as a gray outline among otherwise correctly-colored polygons on the Linux CI runners. The matplotlib path is unaffected because it goes through `_color_vector_to_rgba`, which operates positionally. Fix: assign positionally via `df[col] = pd.Categorical(...)` (which uses position-based assignment for ExtensionArray-typed RHS), on an explicit copy so the caller's dataframe is not mutated. --- src/spatialdata_plot/pl/_datashader.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/spatialdata_plot/pl/_datashader.py b/src/spatialdata_plot/pl/_datashader.py index 51fddeaf..3b6d9bcf 100644 --- a/src/spatialdata_plot/pl/_datashader.py +++ b/src/spatialdata_plot/pl/_datashader.py @@ -433,15 +433,21 @@ def _render_ds_outline_by_column( color_by_categorical = outline_color_source_vector is not None na_color_hex = _hex_no_alpha(cmap_params.na_color.get_hex()) - # Attach the outline vector under a private column name so a fill column with - # the same key never gets overwritten. Use .assign() to avoid mutating the - # caller's dataframe. + # Attach the outline vector under a private column name so a fill column with the + # same key never gets overwritten. Assign positionally (via a Series indexed to the + # element) — `.assign(col=series)` aligns by index, which silently inserts NaN when + # the element's index is non-contiguous (e.g. after an inner-join). The NaNs would + # then be lifted to the `ds_nan` sentinel and one polygon's outline would render as + # `na_color` instead of its real category. + transformed_element = transformed_element.copy() if color_by_categorical: - cat_series = pd.Categorical(outline_color_source_vector) - attach_value: Any = _inject_ds_nan_sentinel(pd.Series(cat_series)) + cat = pd.Categorical(outline_color_source_vector) + attach_cat = _inject_ds_nan_sentinel(pd.Series(cat)) + transformed_element[_OUTLINE_INTERNAL_COL] = pd.Categorical( + attach_cat.to_numpy(), categories=attach_cat.cat.categories + ) else: - attach_value = np.asarray(outline_color_vector) - transformed_element = transformed_element.assign(**{_OUTLINE_INTERNAL_COL: attach_value}) + transformed_element[_OUTLINE_INTERNAL_COL] = np.asarray(outline_color_vector) if color_by_categorical: agg_outline = cvs.line( From 7fc1f88847efbfa357e4ddb5e01bc3f36aee9fb4 Mon Sep 17 00:00:00 2001 From: anon Date: Fri, 22 May 2026 00:27:52 +0200 Subject: [PATCH 10/14] Add reference images for outline-color-by-column visual tests (#681) --- ..._outline_color_by_categorical_obs_labels.png | Bin 0 -> 56558 bytes ...Shapes_fill_and_outline_both_obs_columns.png | Bin 0 -> 29926 bytes .../Shapes_outline_color_by_categorical_obs.png | Bin 0 -> 29897 bytes ...line_color_by_categorical_obs_datashader.png | Bin 0 -> 30486 bytes .../Shapes_outline_color_by_continuous_obs.png | Bin 0 -> 24998 bytes ...tline_color_by_continuous_obs_datashader.png | Bin 0 -> 25505 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/_images/Labels_outline_color_by_categorical_obs_labels.png create mode 100644 tests/_images/Shapes_fill_and_outline_both_obs_columns.png create mode 100644 tests/_images/Shapes_outline_color_by_categorical_obs.png create mode 100644 tests/_images/Shapes_outline_color_by_categorical_obs_datashader.png create mode 100644 tests/_images/Shapes_outline_color_by_continuous_obs.png create mode 100644 tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png diff --git a/tests/_images/Labels_outline_color_by_categorical_obs_labels.png b/tests/_images/Labels_outline_color_by_categorical_obs_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7fde1cf65204eca4f677c21e41e63c97341ffa GIT binary patch literal 56558 zcmcGVg+JZ@_rNbMt{7M6aMdtO=L}cpba!`54HL7gyL-Bu>6+o1o}RAh?&fzt-~Zuv zJv<(`?|ZNJ>-0I#6Rx5x^9qw36953bl9QEG0|1cX5Z|mIWW-<0WlHwYl zvktSp(ukyH;j861{3U~eC@3frDN#T!PIp9pr+eNM-A?O==m^P zrC-x^ZKob&NJd2U+%^OKI|1H zt^~Y1y{&G^@922EUUWv!Ew|IvotMBB;jtP?`}pDR-?GL1zkn-1Ggx_WDrsz^D7L^*qe%y!$V%l8|`Kj`b~-VMIV!KUDg0w-i< zwwv`w*zhbYC~+s*UmwobbU)uK@h@MleZ$3v!lTFtqNR;LuLqxP4&YJ>sHi5{@CeyX z77kDc7--ILn!`EZMt)Z_7vrL$Z{JopuXc@#+!)wv*ZJNYryBd;MUinU3vMN8=|gvXdT>mY}@%KU8<=>-g z7lFt2Y=s}ovRZvp0jPko(5A}Pv_Pg6kWss}atEy+^=i`%4aQ`>< zK|1Oiy_M-}PHcw#<@THNtzm?EF%?-gv=$ax?2KiXmp5Uin1)>)FSpm#xgrik4ND=F zeJhKEm>9WMhc#Z-;%K2Ufj(W4Q7%EN+JIS3t;VRc!^l}(UER*Eymy@=a}H?bxh7FKwd9qT@0V9ps}XJ?tg{>OIsaKGA1^QBfDr03J3UP~uYgAn<9an)64V&5NUgH8nM{lC*n!dorh&=6$;~p)5KX#mo_(5DFFWcs8JIwO6|>5%+*^CBQ8f6@j|tOg@N5GE;|ax%YnWYWQ_kks*LyBs4_X- z3OW4o%)eaAHZw>IQ--MiLWtt=@r$OWzFQhSBO@B}R~4pdPhNT31NSD<2eFhboj8ps z(xXqLRM>Ex#UDxldO5E5bnpNV!&FP}o*-0&&b%}^E=J`#_J(oX7lp2%fsjCHhH<00 z!0tnJWPu=$KhQXw3WEiFF;Ex~x?U4x7CeXs2I2G|1W56fpA=qICI&Jj7Qgveh}g%3X~R&TSDrAf%0Lu;A>=nb!|)D0u3oF zke-el+G5+S#QSTWoPuIpa3>3$`pciRWN%Oj)#j-iDR6k*1=hPhJJJCKb+0F6CX z(|xEw_-uqtBD_LkzghYRzk7s=vbU@uOAO;QqQaHPu1(i3{+;5S#5ptzrLST0M+YuM$l8jgF<$4wK(=|9u$3S$&dA?N)) z@JAAx^N>>gFNzi^q|&DNmZ*P{H8bttyf{B^a$4TMxO-0(8_#9A*yQNcytwDyWH`Ec zhE2-x^OjLmwA;Ab9}#Orf54l?E8zUiy{*KC%%72U2;%_`;eRCJn7+JxtwAoJdhZa5 zQv3UxEJ27t^a=@07cM*&x*1JFDEcAjRgO3qw(s%_^f}_D>03uf$B!RBdglw32eVFb zyly0wtOGuL2$0X=2~V(k4G#L2>-3OLVqtW-eV*+hp2;$tw~IjlXFQ&(#Cv0Igux`m z6Bb0k@rb6gxi*LtjS`r_prihE#VYM^O;w=XWGMPK<$Mp?3Bo)FVqV*{I-9$*;KoA{@0{V+b@a`K`8cwh%8bFOj3aN5PGC+I+k$Js3plbSu$R3oL~Z z<*c`Buel>38@;Rd$+vmmPy8XA) ztWHch#xN>oGuARHB!*Fh+hus{$P zS^m$;JXw$jsdD#4UY*rfEqXcYjg2{C=ZaUV^7Zd$>qHW~DIhkTpv(#sJVU1Xf04T% zvzGb!C%S6vX#vo6*`RG19?TMym7~uG^jTMo_>mkt5LO?&JUg8%4&8NUv6BYQeXYKo zZ}=)?e^V!>ecY&uBk>RxE&DOjwO25Eta;U6KcO(3;0-Ym(P*~t%~q=MhvSybK4%eL z84wr~TIWbru7LE~RWR+5DPmk4s{J>S<6bN428nU$)eH`cc)iKam&#}Ad~uNLA2h9l zb#WqAzgHE{SS();)`TnwGKPNgfGImry{2h_gyG}?`sH7=AAJY;56XEA!BAwplzlE$ zsOJM6Fj>ho+bul*1NbO&i}UTni0{-F89YTFP`V%Z>|6QYI%10M{<-GOhX*{TpcxEZ zsaj${gtC+#bs8mLzFDtdfJHzfv{^O9?spu-84+*c(G&#}HlCiIu4hKC`9ojzj^JUx zUFm;(v-XK@L&lENCkwfnA1l3(w&=~FTxccg@GOL}E~`>ckOd30dg&>55QPvm&TWDLaTbJ865A$8Re=^ky)g_mGzPd(8s@ms z(hA9!GJ$8}J}*bU-bG=bsDhYY4tbltg{^=8Jt*&2aIo2e>WfO>ew)Gc;zKh)1Ay7Q zN&>;P3?`GJwU3Tp?)U{Z@G5(=Lf3~Rw{xvRfA_3cz|4ZpLTV_DmqT(^0g%5!=+Mx@ zAlqFp&W#J)DQ{0ZcXk*!Lb7@0{)M*$hP7(|<8@LmvJ2?5R5R*oS%u|KcREsqaRu%w z5*7;(9Bt#gP8b4X7dW9#)olmRAg>t45hBiitwM4_GO8OlJUDcZ(A=FEXWV|^cg`TG z{b z!wXQUvSI0OOV@c2q!H6((tt5O%>Cf}q{VGwfj=x>ko8d)@;m~C0E)bQ=y z!5wNdlVlJ4Zp%K^<);?n91fPEExA3 z=OMC-tl=|hc0xe_CMb^v$QpERX~Pms=NKD9g#@7?d}4<_5kEdMmI4zC?mR`4HgP(T z@!oZH67&dx#Q+J&_Q=I6u~h17WAFdD9T=RZ=wcwpfmAIq*BXcr1*F5#?1EUwj3mez z+wLY?ji<;<&nUms<89kVRD2q67JkBBohnp_Q1vGdlh&aDjQS;9j7Wpx@rsEwlGE!a zIqq7V&;zFsr%bB}29gLilm_68+R?r?1dMDtIr5}07;nAZV@P`qnl_n1-{rjmA3GpH zISzdaufI~kGhTWQ#Zw7PJZXJ(E-(lBYLfu&a3m&tN0Gd+vE$p%(eS%pRUXMo@sjQH z6q7O@3Y5l4Uk3kBhO5y9eGNR+ugZYX0LeEEK=mh)i~<5E!0it){WbZvz8BM!jB8^s zUaBmlBbmfL0W<+S)ZsMsV!gOYf~a1zug%zQIejp6yd3oEug8LmMu7)w08Q|j*~1sY zoSFB9pH_2y|n@Y#NnW zRWMNq4BKiGuoARG#R5QRxO|kQo^T#-=@q$V{Xs07eF4AXkwuVopBkejX!K3%zjDjs zvmQ%a|Cc+FTGYNl3N!%&iUvaT$QbiQD?3|VWUAiP*H>~Dp4Gy&l6eP{(g@2qOBw#o z__rRr$8I&rEl({GQ?{5gt0P=*@XF)*{?6D@Vq$IcU@~$R9r@4m=CccmKghN7rXOW^ zqFhi$w2~eJYn*!17S{(qq!^KME_~v_A_f7!@#5$XT6%Ut$}%IZnBL7h5&A zt$Q;7K=^IBJ9|1;A4*>-wbyn(%Y-hNj9h~$ITH9OH*kbW48kIcPt{i)aU`!w$2{Pu z5WHwP7`9@haHF$Ny~OJ{iW8n;IUH^hv)Cx?hXImVUg;6cJ5z}(l8U$Q$WqKzEe`L7 zNfQZ%Qa1-=RJ&hY12yhB?=c-RBWH4cr3Z#lXLdomFV+XYt_}Rf#p_)wC9X^XefvjC z>BYr263B*Q(EF>T)(^)g`|Edgq#qsUsDQL=Sr(vx4&jypxHLrM?DRGxrvIju)4$ol zy5L=6yL!vf69H#RW~cLdN8I-w|hEcrN*t(kd%ZVGNF4#g*sxtjC~l(O@2&- zeYpJC^d1ups(LPBB^svk`jASN<^DS?pIe0krwdb~GN@9lE|8^8CB!_f;EA(3Wu(or$#12lNUzy z>?0BVuH(Tc>#Is-=GQ7WF`{X{+|^)#3qb+(c)cisnCXA2QTVKKr?Gszo}agW6)Y5Of(*J0H-4V2S5 z`Mr;mSyh=8k4GmlZl!#ZPrICG->O62Vrc}KAl$tOh9ZhUN=H<^B@J-E$Er`1Q6|yE z6~Y5A5Q-&#ArDaG5T_BCL|^L&FyD1=;ZiY1YQTyC!Vc>GiBx{3_^JoUE&@0Je83&bXzB`4u`?nQ-NBx&};x1_YA+O)oUh?uBA&SGod>@ex%Ul+ac$zrYVN*7E zH2R+b>0ky@Pjt$Fn(=E*O3o7DO{n>6`CX^?5PSyBmD87$6ja(aR#m#MYy{AJ3ytQ! z=XqDv>@p3pMp`fWNpu=(rVgUpb?P`mAVuvp9d;`@a%~HTgHXy7I#f)p=hy9H4d{X6 z^i!C`@T$v59=GZa!at8hDDFQ^lyt4WZ`GC;Pe8G;P79)T;DaD@#6a#an3acP7Qj18 zwwgrghjqkp)30GP`x03c6(7WwiRo`(4!=U)tycuvN#)`#qd}}cA231#T_FmEyn=2z z=8avl<-?O1HR-O9iN9$Z6Fu>Gtn6#`Oc9b|wi-M54Ef%Qm>gxU%N5 ztI=gKQq+Mia7+s38p-Mk8sjYHIHOjNY%dYug%g2X&}Jh1Nl?UkJz2e9MPMYql8NR=A&Q6J;XEHl%IO(w{$saW`Apx2#SMLdwR{r3L2VBc1kaOwJKIEUJ=3HI$KW zdM0LVaHUQI6)|Vr>)d^NkEm&Uc9Jm&(BNl$P~KdReu(BvFphv> zoC6peMl&6Fk7hwc+u2>G4gL*-@m`O%l{?RArSOL|Ydr94-BDVltL5+gqMrDKUx_8Z z&rY5oQm&65=tp=EJ|QQ-6|}`Md{VvC$m8+w$eS-9`~f`iO_eWS;n(RSjA;kMGm#aK z9VS{?#d6{Qqr?4pdm$kMkql|f6DoUVI8)9wTDKj{crQLT*vM#QX@c%Ii!*!$+fR~= zL?*Kg!17UFT9Ct+|Li!h`k|B)l~;MI49bEy_O*D9e&z3&e4<%`Rf*F0{>E!1&rV+g zK8U;_5qZ1{c{is)|5r(a_M&2trXfub1!3 zKc=R>Thi*T;H1ZMfv`ppMsVT$)hMGGq?)}I7EN|4y)@$E@v>;{I}{jJrAqyL=w{(h zBOgXJ@g#m!CDmS7)P86+PcmukSbChZ6~ndic6ph1zRO2jT`oGnyeQ!8x=kaspMFYA zQnbkVUKfQ+nMFC7Ny#iBFcFK{nJDY$OYA7GRL$q< zpMP)v^LGV#Sbd1tv{Sy7RDJomcuTF|4(9Lr>{oc%?QEY6X+BL9{&J5+^%WWd1)D)X zeT+K50HjN(G!iqSLyZV?Vt#bN^`M~eN!*mf+lLbS^3Hf*sBXRnt(lI|V_=p*1+A+5 zTnfKmOQj+s&$|gNHG-DyWlP-b*#r35GVHIp4VSd_#&3`oNBPaLLbiZVbFo3T_GE4A z!buYoLQoWM{emKE=CoSboIG8|waiA7%L(>-4rSA~el?y0s?5#Ni+V7@IZ12Bd{c8-4psWpORz6L4q{Ms$)} z4J78b;BHfb`J6g!np3b#W@(DlX+MNZps4=mYkAmL(z>7aRZ-D-rozE$M$|sf0}1zH z)0SG_GCZeRoH{2B9~Q#%w8RwBX(uVOP+0)rNz$k;z5sn&Kc+FeA%!2=I$2!RzVbPW z{Cf3*STrk6ZLS7$rgvvIUz(i6&u32Qg5^gi3=Hom8u#8%-s26rkV0;OB2>; z=WSa}Tw>0)4qs^s?*}mkH?33(5hzD;wQG$=f)#0F{8MpamI3H5*p zSY`ceH3v9!z}g+g4#A?OI#h+|{lts&-U!%0q13oWzM+<4lM~xQz`) z`S+xj0zQJMd*PlRkK^}gfxbR{*h(4Sev|;a7>329-u^k@SPN-aQDEd#La)IDsgrZuKxr>Fb}MF?NbQ#I z=i$10VI78lvEpXh7C7Q#E+BssZx6w5#FBm(d;utMK%mMgQ(HFdvTNXba3e14XWFkq z&31CZ)FzF)qK&5pdTN|a{BLQ;D{IdP<`|I?<3p!fZ0FeJRRIYWdWZ!hEMaSOK-Xs>0!5PJN1>H56b)|_dcM= z27_t-6>M3O5Q-&$kX-eXDF(cvn=3-!5OjfIamkiS-!2Fo%9lKIpn(#yNe-3g%a=Vv z-VBX$I1O-^W->xX|P@QU?x(w zy|I~gAS85mzY|xUpl=6YYz#x!{R>iGbo{nJZWqtME>Glgle6Kp7an<%-fV1)+`yTb z7GM%v|46%P(?8sNEi^6$N*Y3hM`;e|$WWV%k1@^CEF$E}OJ4cC)q63DDe|6E1(*~F zdhBQrH#bNLv$0jY=+J=9YJaZr^}1UcZ5&i?0N6do=kv^6nYVvpf5c;aiuZ3Xh@>+& zCA&Z>@Oeml%zRbdxx@`eq||}3NtG;)k2ZJJmjV@If(*6kMIzgyO;pKzBx{7&is+DB z{N1m@zfn9&4Z>fZF(R=0kpqbCjge(c+HVC6 zgL0k?5Zxp(S_`-2la!Y#0}Zv*{rcUk&;r(pY9kJTw{KT)#FBqg_ak`|ek$A^jqe`+FRZ z5eA$G$~n5mQPVuLbOdl_opA`7e1y)03tV_)owF+YP$Gg6Km)!oUVELmJ^82mm9!+I)Dx%k1RjGwPg-n}>(Cez24jxmeVl#d%|x=x|LB}tktZc`N6T&ZK5@=%KzY{ z8u**bF+U+PN;c8TGBpJML$~UXVXT&V%qNq6D)Ym=`R>x6O!^>zqCx@y6yA}z_{Qz> zdbwon_QhVAPMd>Rs>Ebj(FLtx>!)wVYx}Q(Vs2HTEY6>O9dkKm_Uf5JgimDC^&%9V zGnf1vTfNqsgxF8#ht6+OlD6N>`xdn-Mp*3btwgaQ!}5hlIQ#|LQWI@_H+&^%VQv#| zh7p-QmF`ID@8- zG*g>>w<34R^mz4i58@zkP&~bDv$IhBk8h-27T)H!gUE(NJ$2m!gs z1_QNwfB8uA&`wv&BUm7#sFuV@)6e!}v%KvY((Xzv{_d$Ag`JuM_t{}wADC9T%{5z> z>D#O9I--|OpCbl}iE)P%I125Y#p!}Tku2#q`V(DSeK)Q6?u>-cdyAI#A^~@tRLv(V zLtc^!cCw82+QMsu2P#(-@zk91_M;(p);`Hlb3glI)hM(pInL?N@6Vt!VdMUAePn5A zd3AMFUap+MBd3}%9FGqb*uf%ZWnyOL%p65Q#~B$O<|Zav_;>R_!ltL8r?>y96@hQX zr=_(Rk1mL;se$BAbEJfgvYSN)E%RXb%bR}$JVnM1+)k|+_1W3viUt6^@R|dO_ zjM=q4^&OME8a0JJhES=qMM;g*Y2bn-{nAcpEZp3r$$P{tS^Zw)QI}#@zxM3pVi%{W zbgX*iRO#Sjb)Aya%wOEbS~IfTRK@7>^q1W*fwIi0fp%h5p7kc2WkTJjUAyhY>DVobF zp~zqNcsOLoNPs>Ri|&6(f<7Tv*y`uiVa0U@B_P8 z?>cf1go=1XM4s+;a!!`p`2l0z9HbqaF~W#v>EsfAt)Iq0B&hr@ClC|aPWzPj+uc+t zY2}Gpc+>Q)M-PT9O(g*oZL9xE)i^g zzbY_xUeMW6r%zbpK&SI*8fY@He@Zxt9N*3HA59DTW${K7%FNTS;aFq%X=&I^;hEQ3 z-;c&FNb~7)zku4|anU}4rwAr7x<$ZQYz8fVz=UIhMVFZfvZMRu zp?eWAqPst+si~?G*-BEcM&M%zW`v%dT{)qU#OU*SKZ)_~&v(;93py&n_4d-iOED&<^ne&{cW9jLy>;%X)W&p()!bVE7U>rK^fd+(bM%C(aC7~2(jS8V(fq(Bapmk7ldBH`B3xRm!I zVx*4wJNzvO%LSsmpS;cSHsE=jOEbS*QmOpCy*ckrK7>@H@#Fn85*ec|7rPG4FH(|~ zxTXfxRU-m082ZyH<;Y4m`8O;->2s!#wYpNaXabS*S;$oan+Kn!ElBd?QReXvroRfw zw({X)h*HXZ>bBZ6+OOV>1jrw>jG~$?mc`3)P;c5=<`fBU={O0jBh8L7#+dyN7ac;Lw}d5796)7RR1>@uODWo;Ifcy59$Xl5%a$3ar(^eJ~o>0!%lls!q`bi`xw!k z>VP;RTH(v;J{E9Y33Bd1wQdL8z%JeIqOmM#jd?yR+ZivJIyQE$Ur4>%0~Qq;xAZHY z-)T_%poz&0NiynY-9YwWxVr7c3|dvK6;jV~ zE{KJ{+|$Sm5z)$@oY;4@Y4m_zEJUk+IceiZG1GKP&PPxWssZs`@!4`h*7k#S^}Dib zws|Att!T#iQADHZgT7{0Cp$+MQ&B*ZOuS7yf0`mf7$F1qH-jQ#r~T!a5b%Uls>MUN zh&saACmz>Pxwm|ZqWfI~jC7+4myB{UJV=Fsm8P^RbzGM{=7M`o8|FtyDc*l}fkJtLEH`Bz@n%`?#F~rmfAcH5DsWTXge4j#X07!&f)XPHP!9o z@$5_)76g0#-rw))dO@tdx32{e?@dw9bkCYHThHIrZ(a!&uFl)U#NUhrV{o?4`2XT_6f;_vDk zFZ9#ja}+B^KN@DKb<;kFo5G ztIGuPWQLaCka&FbAa9=felz0ijnyyk{!zY`sR+S>Hs=E65{8C{>EdOjr9=A7Ah6xG zV;2Ed;$Z|=L}o7Rc?d%LMn*;krzv0^E-NcjF8Pm!0qC8)L8+L*48&^+m zENh;|3rk=2}lFWMa&UZS=xmG8%<1nFfaz7 zZv@(pp;kV~BBwFNgDb0v;PQkd_E_N2Ei4^A{;@UMhdw^D#EdY*WbX|8OJ4a5Wb;1w z&djf&F0Ud^P7cjZPn#ir`?~5$8H_sS1ol4d;ijnHTwY3^FrKExJ4~_UQq~C$5-LHV z>OY(T%h&8qihJ2w)U%770&Ufc4tzP|b9`cNq)YN8f-F0{Ngs-)OYyc$9;@LLWk+fS zt8@1i6iyEb2?^HUy{!-c8C9(H#l6RH(_9CqbEKxdn#DZHtTIb280tPoM}CqXpZ4$P zeL{A3tA6>nUC8v^#1<6rn=B?S#soERdnn|Yr3L-x3^fdjMQaZVL)~h>?o@!v@{m_m zRM;=HS0B}3gcJ=j%Nt10U_!MV7rLx2Z~$46@nrQZf)W|uiJT7-0wW?KBm|dxBf(5; zn}%8EZ>@4R?dZQxYZ5aRtWRoaOZS9kHBcy=xmfelGd&(UAiG-9R2OCT~t8`4- z6z8R}N99Jez3VM=BIR3Y1tJ-A37#T(w?asRoBRWsBvj4dEmtvrTw3g3u<8EZTfkhEu!f zuXDbaV91`@S~Nlo{JIu|fj2Y1s;o#Vd`olw@lpBFw>KrgUsH=Zg6{)wpCxi2ul+0` zF|ns)Eq0XCO~nD<`}-?Kcx$;l_;wh>6_Ih-y)-5hucvWZFN*FQVoQ>OCdg8mFr?@E z@{?r7e(!!aTV90J*ViNV3O=2_A=_-W@ao}OVS~RaWQv#=c55|2_#@GmNA98|a6Z$} z_Gsq8{{H>-kplDR__$ZA!Eg#&CYNPIo>GN&4Nfrh?(WWpvnC3+tva;VG;vU4?yp6Y z&J^V*KS$Y=BA)iX)>G-fXWnQ0F((V6i@mMjU7l|O890$xlE{$1b%cg+-uA^S(DwTv z>YR{$M2Ke#%$w_t?_O~;weo<^>nE)721-UD}r2mP)WW#-|dJ#T@viP zC&VP<)Ixxn=xb-65t|ctE50Xe#$A+R=H{CSynC+Mc@+V{zwFB~9sGSkswt@^FQ1h9 zAK4mdB$FA8bplR@qsK>AXaUA)%o^lVY__ug@8b(Y;!^gTDp{|(8VXqpIguxi*8@sI z-@(6Lyu}*cxez)1iIR1J$i#~gjC$9@F?YIR;+v0Dh?Stry(#Olth*A?r@ayGaR zF9%i4$B0WRD_H?q7s4kU7g=s&t&BSw?z;WA?8iMQq!-jBJih z_d}^IhIG_S+VLQJh0lq#eQGM7e3C=Os}2rpdq0)&m|UJak?8(i0FR&Cq)5 z)W_YSmX@Qpl9!0ZG1~jIV#bA5?V+fq7*cyQRNl|8BO_nd zgGuzdO{2(6B@^gf#~!W@ZjReen%EsZ3>&-oL10NTery*yVFm^Z<1Ox3*5wkK0@0?? zuNEP8-=t7?{?M6_!(x^;U3*?k&JF`aLs8Q4A%FOa-avMvpxx-I@aTD+EJTN~qe3Af zG65yc*%sTE^sd|PDSq#S^~K7tahRooYXY{m^!uJhT^{libp*39(*nS#y8-Q+pMFmN zUNftaL1;VC)Q0QNPBG6m$OK+#WxXf$wZ3VEO^AF-8?1K#5$r65X>&Z{IW}0T%D>9- zvHza_goCXP)d;r>@=AcEKYZoRx@G#%MZWS$G9#B43AvtVjHlEy>xOEidi4VS1}I}r zzA70yST5gHTRb$0;F>-yj?!(Wwf2TfM-xDK`v3Xvs@} zL6KM?md0GHZ{}@db{`Knxh%I-tHarc3yN_iP^S+x9LX;g0 zy`Pq}W_IIc-2J7yM`V*kuaAmDa*3nr1uE+6f5fA(XZ{j&hyN0aZGMY^!@J!nw7*Lj zWVys`dDSyI^8pjz^!=zKv%HrF+;^~a&IuMWsqA_cLkmJeC5zkizN}mccyPHoH~atr zTfLt$&wgIvipFTxl=ILBaKHsK>~(&uphZQ-jltFsof!V~;@3G|gSGF?LHU|Kid-|T z0?sbieH+v0R@DzCa<;PON%$<_SyG^4MA8P=$HVxH<0eTm?SS^E*#E{dr*s3Yh~cPC zH2>pIl7p8{o6zBWG&&!rprbKn5%`U46Vqgm)WKuZW6H_an58zA6Snni;9-liv(WSL z_^j@XiOy7kP?lA2piS06+aJ_}?;GxE$s*`r2Kg_he)1>N3L)DIN?e;}%EsP&Pbb9xRE(h!OPK_Qk3XQ%t}t7RK3Nw7F5{%-`AY*}7wy9=HxJXFV{GbWhpl3TP}ok49aL zZr+Wz+c}APS2=^8k8rl1ZzHcnPfDFZ(g!H<<|miYKRMx2>as7F3#Jn18;#reu3!Xs z)-;P2qzV_9YyEo>OEJOyK)Fm8$g0W?81WlNMaWjk8u) z!~gzz88KHNpGen*Bt}j>SP%HswS5_bXOt>$9PW?IB%`=(Fp`wKJ|)B)`$I`6E8J>5 z12V#rYGmqFqOQC(RgYf#MLn}>)G@`Xo+s3DmlVG5vol4A_P#2Pa2M|{zUpUM`o<}r z&?wj?HT$B+jr9St>2kiTkcp;cG)6XOK+>pA-P=*iG3DB$s^7a4SesC=(9<$evJ#|W z;R`?cAgfh%wTh*WbhrBfB(?TLMX8rm21Vv?CQHA>|&%-~1ve{%hMVAeld3 zrM~0G`p)ZD2=<_}VM$=Sa+nl-Al~Z$6RCowiuuC7v3QbtHX8ChYzzYxFA#7d>!$#r zA(gk<99+5Gc*oH$1}a6KL6hr=jorM1fGN#h?!p4Bfw{7mjo$imhv!0?^VAb1IKMxi zeEgR4q1o8AO~HIE=r2)g54B-ug`9N|{wG$!A509IN_a{H24Nf6a}=pKl#3#RvZOk-+I$UdlM(!O*woHfO22Q+kXky_S_E?!TJTe@m#?!a01 zo*)7s@jbN;U#fhg-^4Dj>QU=4B$4M#J%4HkJ3r%y{}j%#!jN=V1~^L!S2-_?60~j6 z|5Z0k@p|F8UEsV^&9;XMu%4rE&vjo+DW5OSqThGMGu`?7X{uO9MJDZiYxC%}y9+2l6u-OJ-rKn~b5EvxO$(jdv2UzwT887j>WdoQHglkdD=#$&~ zdP&4&@raNV*QFNc)l8g*4N~EC@7+tU?hE{nJ>HqP8s3%J%){SXhEnXF>-vIK3U(k8 z3%P`GWpyd8lu}a6ZbsT64}n-bh-4$A&Jcl{JAkA$Z-P(U}Spp%kK>h~4%IT$tXvAJ33EUVWn*YsmyFz%XNG#%{ z>Q}-AxC)wKqx1wg4J@MuhIJOco$+!}_#0Szd8O=lE$JBUHqT~| zD>y8!nmUyt;LBX$({d3q;8C+w2dN)82FW!2h(>Ax5UT~SFi(YAkD=f1bhS`t2z<-c>0P+1|IC0iZ+!sq{n zF_&fX7n_I2SEdX%v%Xsiw}0(0XxMPb)}zwGI#?^u%AU9=t)#+YlD)REHG33S%v*-xemxsOj^QJYLG9b_eNi!kK3N?FF^1VB7a%ua%JWeXU zCcw*^X$Uc{Q7)S%jY6QE70ty1s-2x&FBHi!d z|IRnpnl*CY=bU|ZT>G~bjKk(}2>tO+xL?oIT=&Q2Sc@TyK3V zYI!yKpo$mHot_w6jEY1ZDG4h7Ww9K<3}Xng;Kv-IGJGqolrz}#y!xCWmr&f*wL~;d ziaHLwW!tPp&6XL;41R90WeX`b3G?U?THP?X3+*D_xCfqgJ5~?1&53M=S^N)fbwAn$ zqUIG0w;m|W5+x>Luix{n;TwTAI)s}X4K$u!ohUpf$nZR7qjheWo2Xy^L3XRazSc;q zG#rxc*2W@oyXk8|JjFKIXL`CYZWKEdAyJZD4BfaWa+@a&laFIg<0ldsl`O@8!yv&D z&uAXdvQ9kRMr-N{WZ`bdsraqSZ#pxjKJjLgJ)zmE{*uTg>b?I_McN}!-DM$LqgD7- z?FbcQjq24)85($Xy3pIed}5h!i#=_y`)<~ft>2j-X{-X_J%ebpAFALM1r(FzPL#ve z3~hxh=xJ@fBnEY}gZJT}aDVm!qev;&=PE^gPrv>DFx=TkwliHWk_*s$WZs zrf7#fMuHW~SR!J-J?pDUPHKFh+3NWd6Lh(c1NUtdOWySm+bh&dWa(m7 z?wZnnIE?N)xtqsNK3hpGXl_*5U?!wwz3C_J`zZ9;^mp8GvwNRjW!F_;Av3@g2ZqF)93i#{NskdAT2|Tr1PhMcqT)?dXG)|~ zD?ojzb#H5b7jsnA>YzK)TwvKI*IjdoG=zuzW3}Y;au4n#=2+(E)_opiBJ}Q^@f-8X zGGa%;Q1m^o@2csgefLKje7P0uv+10DBE#HwLr;fH+Pr`LWsjgxjH5*p{MM*%V!_0s z(L+s;US4);e0E-I+rM@1sO}ZTLh091gI$hr(AvZh(U2i3PWwc7V!{a}#jhj|$CxpD z@1{l+9$3@5{^dwu`kEFg0a6gnnta_Ogw}F;Mvv;Ykt5pV9I{-0beNBXM)mw(_vqWQ z!3?|uhHN)Xn&#@#i88mQ*{cE&xlhm!ytiN%(B=uzfDQABeYWB$pf0?S(5KwE86k|r z+qht4&<(>RDwv@Z-P+9coO(hlr1N&L8M5bZnF`Ns%QAYb!cToK08zuaLP&59SWd!qz$PwocO#d)HIUo|MFk)>D~ z|LJ$ECxLtc-o=Y}GaeCmS_N40c3rEg^zb+_M= zCjKXUQox{`Eq@mt_3;^>I5;byf4f)n!AyGES!UoFWD2$o(JXKgHhvivS1HMh1nWMt zaR0&EcOQW<(@l#;C*P@WR8zq&{-yB8lv#q+-PvWy$c{jPLP&oxL9vinSK#H>{pQk< zv|sE||NhRBX{YivI&|J>^tY(KZEfi5veUtT9^xii$<(4y`&p%UE0Zi%EJ#(`Hb6Cj zN{ww^{{c96s*(Z|GnA|l@nG4@UBanPUoFF4qJR3&vYJ!-j;JcOclUwsrY<&rGIrc0 z@HyK^OXXe$phgt$30ZW>lhVU&j9M29mK!%I2BE%F7SRnr8*@Ke#c$uLis6#>yNO+_ z(kpZkagUcnYR%K(ag~Ss+NE{mg}m1kI$z@~k;}RwgrC5@Rn2ynstL^TlRqhu~WwwTbujG#uQxURiealv7SMvsl4A`7sRVWHP z1Ye%sPK}Nh`x92e3v1z^cb={N`*GVyd~*NDuo}CXyi1CCkU|6)x7OBeMnJPt$k{LQ zWF+#BjB69=+x!>_NbWe2A%x3Mg1=e7g8Z**JCGBV8-OE@_;2 z*NE?TI(m#olQC4B%opl>do=j8OW))GONSr5mo$kfA5NZqCpk_IL!kf11bMge^apY9 zB}&#EKl?3lz{tmenKvzVH*wyMZ}@-02_-j_-{EMYd=ifi8c>T@4Tpk7itT{HG_@Sh zoCj;!hGbk7_s7Vpw_d*#;?}3zNilFzBX|p7NCN`{_Oq3DLnimNmIH|;IlhCI+*;b& zIqnm3o^5xaaPH^faaPf^LJC2<|Cid8Hf$xo6M~L40ssjG1qET0f!^Zll;?%M$W;SctMLZUl(Y(Osw1k@S+#ZDGeO3!HAq+;7tBTtfGfmQ#>ZJq=BLYrsN zPlIMFjd-kn3IZY#0JS`Gf95A4tzegGog2U}BC@=3%oK@-`SGXK32odP*Ipa}P(%?u zpR)i&l?U+3{m%El*k-IA1p&=Rv2yl8kpdCy2LKmkr=?v2O3@2K!W@qoJ%Ap06z}}% z{s8D7aa!GYNc6ueJ}!1V#}Ri*d^K)sckw1Ym?q)j&QNSxbqFeGZ_eC_fy0%@i`rAT|4(*P;O=adiK}ZZ0s)7XP5TZqm%JMR z+XAWm;r>RWSaD~iqs^?r*lm~(z=95!T9EAQ>fq=}@bUu{)orSPq(O^)+ z3o-p_1=n64mr#EHv>Lvb8Wp_(U*!@Sfllq}Q$%4YRQAV+XRLBhsTk3VM@;1zOwcfW+v z5R;Jx{+>Z?Xq>ch+bdYU{gHJdOIN!kuD92Sq~FBHFF=?+{6{-Njo`bD_+DseZ|hl? z;{`w&K||Ct;^UzZwDpY*Ev*J!whFsx-|yIA-UclKvF7AXDh)kOW;oJ&IN6KUW*?w5 ztgN8WGd(p0DmwjwImNauEiFz>en145bpq_XcgG4~wGfkGQiB?Bxpo<~u4B+E`7Z@b zxM31nT0mo!Wv{9BLoNImlO#U#7tUvvyep3amWiCQ9k{l41JTyuk}8Emc(`j-%FCm0 zuX%l)xs%hk09@5tDEM$!Vn&Olp^#ahK~?p)W@y#e<-(e*OI zF~%#WeopD*h<$Z<^vys%TsfQy`fZnbUP3n2g|6dS%Wr(we(irjnLi#JX@XYeVjr-c z|A*&D^HYVC^~Y#cVrpoDvlD%SFKj%4fkZ6qxV_=V`{=4#RUVYQUfWHT?(grL^@etU z;#MsinRyMk4SITdq@oB(_IUbU`t5UV$X(sv95E`Ui9<*@O~vIOKbRKLQ1kuCxm&;t z5e3z;+d#2kaEF!{G&wy2-oPOl*q5I~js|%ErK+)Mc%cT!MDhwz^ zFzYpDLMl#-%;mHWzCfLq!b|Gjf&pve|?WC;4o*(_V4Bn zoUOKBAz0B5z8x!ofmPDnEXc@M0$^%QE55AMmTNs9L2a8Sa~PjdSy5T}k?7Iryy{fH zRg`K>3PfDm+B3~A8=?=lZl4{aYf_DUzW{j6=H@1_(4GMJ6eF-Q=bLSCrL_u&h7f81 zL;RAI%UsgQ$;r|2l?9uqXlKQ<74sV6)!EruENVk`ojsbSMaKqxz*;g0(&t< z?b^!m1MdjzSe;5kJxxtb@YGsb9+o0eVX%Ucd%o8>F5czi4feB#GkZ`JhL6|1*LSq! z(Tnu*yx9ue7+Ow7Its{=GznnC*84FcbFxl+l5%%#Wn8i19{5H%PC>YOuC%AMlS*oW zhD42!w2V+^XJ`I4_nQu)OQ4q`OI5Hqod0TX_Bo7qMA*8Y6EC9NpeZ(f23rViUgs+h z2_X?giWgExW>A*roxkv(ZJkP_EJPq=Fc0%9G72YMPAu1l=T5=Dsu_Y+CEKg}EGCuH zGV^rvK0=TAgolDfZX%*<0GES8*fUMBI6z>rdHVI%Bjc;G<9s23Rz^8j^bSzpS^)%% z-)ZSGF6b6Dc=c$t+2!--mi=;JdAY+QpANtRM?qEf(SL|!t^6@E@?;F5UE#1$|E05Y zrCOAQl~urTf%oko!G<{a%GKLcqjMlpeFi9e>ZI6DRD=)e!RveE%+1fwJ9nHtu4yOO zz@VOus@wc-tzp*KZzD#4)M>MkQGxjtGxODC?tQ)8G~#4LxC*#EfcR$Acb;04M5V`FV~|=05{0%a7lrq<>UJ)9s}C}o|2kB zxJRcKDOFW}=Z9-y7*BnRTAYMy+LqaP`k0Fro19f-Wvdq#RF+ha>#KZMGgQtffJ{m%|7p7>PvB9j=&qe`!;%_A+h3nOZw%vg0Y@E?<<&%2&zZYpPBK1^1aV0~>dWVsVV4!Q_kQ`3> z?)HJYLWPXzlem=-6FS86RezILo+s@-^BC>eZS}Wa(y*ls(3P*d6n>5TxgartzT$P} zm&!e>y4PG>jS?vs1_1=hSZf*_@eNr-c)q}-h2sE_l=;(b&dW%Gf z^A3%=Y)G|rb&u71a5xXk>qd50yMo%ns`V=XAJMxOh#%O7Ec&8b4jLE1xqaN5>_)Ba zV7q+({v9`LBZ4s}O~832=>8-ZK%!V8T_@xiaVUgNfn3xN7zuJ*nYV8@0Y&ZHeVo{+ z4oG>;0N<>t{of$KD_Zeq-US8;l6wkew^lX<{8nN}>Rq$B3x%4472L1~OhUJ<5fNZS z54#@jW$Ey6!)O!2r|lXR4}f6m4{)#Fyd6x&z-J&^NvB8O5*3V`toWL`(9E@ZO1LCLeqd0+%4nhqUx~lE4 z^^x@l+&HjXq*Hfwbgbi?&t38wS9s;YUIQM!p1C=V1sfMvjZEB2dV2cz;$PR^wF9mp z2$^ga%`_@V zTQa%hE`&^MKILTLY2Pxm=_-_M;(z=dd?)l7rIULjwv4esO>wd`O#(;PEjK&+;f#T^ zqvI~HDsKXBF9!z)fpDz1DhMdViG^)bO%7j4R5$?x_-IMNce392)Q)E=$jO0r2_W(0 z48_Hu23WDRcY+)oDk+;l&QdnrYSE9ok?d~7!OD8#+Yy@Iwy0YSr6I@79R36R)Ljl? z2v!tUH+ta*JfRJ4%GL_AwAX~`b6PYS@A{}U`p}DhPq!FYJD29vwSX-wpcX;%-8OJ1 zBrwUhciwmG@= z;{3LtJHK5_(ik^v6(vd2chOoon)R9oc$m#!=;Xi^vT|%R+tgXqGr#+QOTF%f2q*!3R!y)GU1)2&vZVuaG4p#spRM*5r%=Nb{5^#K(nVEs1c*~{lm0t=MCst8l822L3c#xf;or`B6+ZX6 zJNmddt93~ZWMFA;TRTL(r;o3aqB2cfo)S#YvsER#d+*D0#ts(0li*}gq7|30zrZ-3IjUtFA+@1XjE)w6v!AW(|1) zZ@ncN-|9X3HqI@ZDKABQ4ShC0VG*%E5@D-acUdfU)(#Fy_(LS+8aVv7O6+HJF4+)@ z7~wX|qf{C8vl!tiRc8Lfz_pNZPgvs@3)EhQnb6+>sZ*QMl<9ngsmo%h|@A5YHq(Li@h1ucf|{`(8YH z{M|%N2c-@bmgg?o{533<#sf(?;0Z&2{&z=A2(mRxJSI{OIplq-QmHQb>S#5i+0dJP z{mAB}bLCiZi0)E#bHW(9Z2;FV^(n{hM~RQ0?(%S5P)gUw-!!Lf5XBGfNGYB96t=du z$rG>L{s6l=<2{nfVN$u*x~3qfto$cyc4mh3Nz}Amwt%y-!Nzw8y+B9~?)q;1^-i1n z4p{w|uSX&}Npu6yu}0#6pTIx3y}boWZ4e*Q(bJPOYVFPG@2MdPW-E`h%-HjPWxu9MB=K^q0b6a}J^`JpQ6F2gBQ}slKRfhZFz-X(fTe^>Vi1KO4SDgu zxwn&l)8^5la?3fDsfZhevq_49ule==k`=czOhZcKP0 z>>Q$uE5&X#RlD;~|7*s0XhUfrQ#C=U!@3uOeEoyOWGC?1jPZ#{MAq{#PwWZvSWKjN z0;KSxNVk=~lAylWD@YjB4*u()jEj0WQHH79rMi#0L#*~mugM1=71MdYcl0z%aFU?^ z@(5|2;5K6FU+z+#qfm)Gx;dkdiLh4p9d2;(0nbMzlfMGQc|ezk8Xq4&1~{caa9F64 zD;inw27DW&Yx(OxJVLt5_O2hv$*QV(Op()e^zby0S&*`i8AYLzQ@5AZ+*7we;Rpr> z(|P?{1d-vpZj*=W*^m&F+|dh=Yy)Wsxg-XkH#v`S2SDuR@;fd7FRO7;Pd1Skc>iGi zE<&)_n?Z<*iHVuQZnS&m+aE)=&paE%p-CRox_GT>K#U2QCi~@P_qr0UmVF-JZ#3=@{SN2{Nso z2c!{_Aeqz%LUVAN1iP^h{mX$hl66V8KBlYxhs!paHQ-PJeFr!v`+&YoD(dg;S?rXQVur0)+1dF+yq=}%lX%9^jC&CsUEVO-XM|)(B|zxk zhtIs4zuKN!8DLN9`&MP7UpUPGx zg}=zBJlZWAON+)zDsual6D!5Cr?~2?#}AfM&JiE{S`xSWh}L0MM<{u&aTt$@gnpNV z$XJzwE;3F07`mpEAR0zBWAIqVV(#zMmjwyNz1cWk{JuHwl~$?OKblMA5n|&$e6;OFm|@fB#5uadDvqaBKmm zC6MK|*{5b?+!|!9^53uN&+%Tz7y(`bp9LE+wr_{A#YeEh*Vn$Ed*`O62ynx2$i8uk zgPt2cB_2^quO%07%KPwD-njf505A8CyU+%3H~|h{Vg#fl?$2gT03`mMKsPsAB1n^U z-u@eUxZM&1c^1V8wyp9)v$hSy@@&g4uWs zp8xh>1&HQO+nss8p_Pv292xri}bWI_nCKL(Gq(2R3vrveQbVvuM>AAinxE47p$cGobExg6)``Kh8C zpMhP)4K>^)A=6aYyNO3+eqqxF{>tW}9$ zVg9^-YB(=@)YgSISkW*cC@3+Dk>*X=*@2}->EL2B_x`OjwHvhXF8b@eT^tLNkp%=VUU2n+jEKI4ft1>#&lbhr`omk2 zxd@b#>a2!Y*w}bmjX-K3v2ri;g&QcJfUUquPmlh};sMMQXyszJ<^A(JNrj!AeWmto z6c=|&T3T9as*`)c1$i>oo)Tb%Q$;2OSj9T4++n;p;miIFs zTdxDZ2?&Bg=LkCohgaLOl$6wCx+}i|e9Z?S&b{{M)=sYAP*4aG@jc~i_XA*Oh+Zi` z{4X9z+dtlK6AB!TbJg8jC(M!S$KI~4u1KW_Az%VQEc%%GnG@=Q%;Z>9+8ih457Q+! znl$G4>`gQ(clU-sul^%T%T+oo=I6{9n3^5 z_j{?dY)m#R+M&Yp>ZwnscM)z+-;$gpEiOkwneguX-(DHzRsfa)cjRXJ+ZIu1wt5!# z7r{@#r=#bVzU32DIB%%odJJy-S{JfzF9#bq8D3?)z_|IzHuy1~`8e$CXjV(-iiX6= zo)b~jtZ0q%<41JeuD`$uzG1LSrL3l7#P{%B!=1}|i4oNnOkcD}l4Eqi1C!x_s3gDp z+E_b@>O-Bwzr7&|G_T#D<#K>cK}5R*iBEyOxLMAE(ZmywUoi5ftYzN(s`(M2Y~{nH63_&eYQ7S)o|SRlva}p z43Rh(tRU*%bR~JBxhMq|5`6sl8H9xw!`bJag4OBlXFh)=5vEh9&vk8HC!oFhZ}rm) z9O@>eiqlZgs6Q%lm|8a3UEqOIo&Ni|5x&Y{()kY^GB$?qL^G@U^&3n7>G>b|=-3A& zSX(*YyDGi)v6yp8L{;n1X^m2My-Q;c;5JHkIZ*kmL&t)~hPb_bW?)F@u^WtimS;!A zLroA-zPxEvS2kdocy7f)CLklB>bDj)Y*JaF=$_`$N7Ao%$HPceVq2b_g_9gCU*AXM zbDD{><1|#5^TjBUBH9fykw5m7raJ+X1{H1E{&-m=?N(O7e!(XBIukue%75%OIJm%c z(a;hbZg(^mh1KV7gV6@K+iYoUzpxY0qOcG+>%p5IO@9e`9cE)GpB0EpyF;vN97V}pemyU>qPqwgh?OOt2+Zm{Xb9imAh9oFZj{Cdbi)^b2I1J#NovwzYw?*Rxx=velb%R%iC~*Nw^Wu{Kv8K&fG&PV^JL+k_#lx z310$g*DKmlKl=gt;rMP_JQLS|rCZU_h{|k+rQ8+@)eYo3O)!f>TwtACv1AH;#Cr0I ztyk_6Es%88q3}m(E{3YYr~nc$^5vy@hggAure6Lx1i5UzE}5k~2~o*~LN2gSt5{z9 z6}{3(@&mg@N@atYZ?r$U9OBrEs8gWJ#V*4H(1?=pVvdDH^?14p0eeL0U0OkO6|?h# z;l`rsVdfO;=7d?xwXwf(S5E@w0KAkk5gpC@!CaP`MVq%NTwRq!qUr`GsLz_-H(%Jy#I)Xr0LVErLG5*>HN-OFM=~+0KR{Uanm9J!-@PasYF7*|9Z4iF z?o!?k?U3wvTCjgeV(&HeG=l0L;^%Icd!u}iepo}w{thONagN&ZZ)8q*?I3*I{v!zhrkxiP-v{7u7w$7}7Je1}Mi{=@%m>vW0G@B_I~W30T=!KwYV* zm5$)%8{kFMsH7ZabmU)mDJYb5G*~VK1qKG5r+i=B#mi=pr&6N9zc>OSbDe-k zNXI^cP0rF^Z6aCJmYKZ{nrA77YS)*PL*dNx@1Xawcoct>raNy$O~|Id-y5(pZ}UGFDWM^iY{r0p&A~=cX~u<9qHm0C-Ns6{ zy=0O^nT(&KaA~1Jd9QzaO0(O9f;Q*ZmA;q9BH!6-El^-aR*KSXR%<#pz3oHV94M|q zWkJpy8$ua@@!VRgOHbo$L`8U%GMQpLUCv2P?FTwiuS$F4(#^LfGO%1RE-=--m`XP1 zdM0( z8h7b_}{A7893|neZkJ8X+hTw=(B0ki#P@%TM4-xgS zfIR$>3ZATa^H67F?HaO7r|`LzK8KIW&DCXh?oh54F4MI_;H&|fYgKeKv&5K$ImSmm z&c%hPzQb-Nunid3jl{{d*u+j_x;6=M(ukkAX=>0G{7^_mDlREuh{^9C*1fkj;M8Tn zh?M`Idd)e$|2femtC`z}!N0S#Zb(lIaqaz2n5?6fRji5FVla%hoXYg|DQ}M^YR%9w zq?h=S*x_8)jWrWZpV|NRJTvIjHF_(cUpM64A|iG>@o!0j z4`3=Rh|mz3kNnwvooT<}z|j4@f|2lLD!vRvXnl1Hww;w}Y3o)bhQPpthLnyp3#Ns2 zha<#VycV93*{>M?ZZIH7qG|ZVHj*#v9`Mm?Ce$vI<%ZVx$o&GxqRm~d5g+oe?4FA0 zzaoKl8~bdU=hU1B^E>+?pMLYURM<&yW~_5NBmNm(9TgGbj&$0{;vxl?v)KCwddf*@ zln#>3t5NquU$NumWVo*@ z=KK@y7a{?w9xSZR5OO-U#g4Iq(~n;8dcZ}uw@5# zCHU^c`zuH0HBU}rLqV5CG?sk$NDJHe>r4dYwYibx7DL3$wS?3TGXU|R{wl~`5hV(7 z%Lk)7ro{{!S!qXvDrGQ{oOM5=Nsrsg(L7acg+U-sSZGC`NmSWiC8AzBzG7qf?;Utk zI6O7GUDd+Xzewhi)chF)d7i`@WRys#*W9}S723W0+#4!9n1}3kD6>kz9=w;5*;A8R zf1-x$80}z0dSBDsxI2;QISl(}%ngvCssuK*a1n2QRWaBbB9j2r=w%IZ05^+%u{q?) zUy7+kx6a9|mhB_q+rI3+oaW!8wMnk{SFp@hvq=)UlzTYBIW}t@wtrCLfN5**#YbvJ z1DHUZ1L|#Fyx{39`ktcY$tTMfE|A@u%I!?n@$W_JYRO~BxusW;d^+N!{2d@Ju88>w z!d9!PPI2k4b@hWC!%7R+HX7-D_4)BXqZ9dEw+%-jq6kloI8DZdAv%k+Fn~4sjFn_n ziKsS6zB1TdKiG|LzuXii&Akqc>M!2S;-S8ME`sp#)~2AQay?1zm`VTB6}FclzMY5J zswlam@>eI{j7; zwf!_oq5z`>+WaL~R({fCW67UqJX3(wm|II!aKOY{ix)VEvtmT11|a~{2P-lm1h678 z6D?7{fV0~~p>$QPe1sw*qbK#*5V+rQ59!&}3V6mvrqh#5Z=8&@w6hLC|KDi8V~dl6 zP81N$wChT<)2te!3xDM4@pnZWK=YUOOACNUJ4-1k-$-HHTqy zHJE4y>IOi|(8%TUw<#P|j16o+6!92xY6S1W_^9>S-#$-QP1TCn zZJ(i(tIu>wpQ~UR{*-Gos#2Tz+XUV2AOG{OH#w+m!K6XF@X zTYUl=9oUIbPmxRP{r3J^oKCFU^8^k{)#Bq;C#UK&KF0~A3fbmTlP>hbfp zL*ZVluYS}O7XAk0CXh-2&CV_o620@*xp%^R*QPsDA?U$SS-92r`FmdODuu+m-nVU? z#s+J(rCDx}Z772rsYaUjpWvS^%Si?b>7*3NRu%JYBGc@VisE^Lr;%$dhIt2d9B9N_ zLj6CdHvzvTt*NE5UX+Q733R=@ekET!`LnqcN0I`;+sL^Cnh$-gnxAc+(#s=f%`hIE zXuVjiDEk>+cMZF~Q5bRun8_xsh&n_vUiLANo{zjtlfqbo)!XwxVa?D8+{uq0-2OO} z&(8y{v`2{^cbTh(D%M^()%g9^_?0bSCBa?a?HC5>K&VV>Eq>%utNHsq3&E*o%yW6# z+3}RDQ~J&-nLV`d>-v)fXt{*Bj$$D8GJ|-vg>*$UlL_^=#@4)LIz}Ny8)wgod~GEq zB~X4I0pd_N)Tqs~1Bf5M)Tm;W+?>=@BFvBH+InRge2o;cO11wbpZjwzUA!I@5-R=(ze~rwbi_dWjMkDTs^CDSj%uZu^aU3(S9VQxw!+&+v z4G~Z@7$n3rdG@*op!Pcbb=l9;MM!K$*gtJ^invR=NNITQoL>Xlb_JXL8+L(1;J)EU zsz3ST-7Ls5g()7DK+jBkYYinad7!wrYgUJr_C+@3msT@|U~%FodB_g;GLIGv3Dzs_ z2~AXpVG}2(jaeLQ*zctmor)_FB%8u+k?8Q8m*9AhX*#VJ-NLQ=o+oM(?Mb{%i?Yz5n8V zpRz0OEcuBJ1X7#J_3d+7VsWsc?3Du z{#yG#P*ByshTS!@=F4zxnel3g({L_!dtBO!)6XTnTe8H?2yIX3PfT6DY!TC~Jy}WL z^O`}gKzwT%`^Z%BOw?Q7rQOKULu%)7q$W69B0zWch=KtkWF#Py0@?|CpIuz5RIzn( z3UJ1dxas@mmYfih7`V=!LcKv2rF8o4{bVzTmzHNLi=^w0Eckii0aQYbe(T##a;UW; zppRnl@V$%0^~jp-r-T_R@6>OBdO3iBxr?eMRX`PP!zR2URBKNot{dhSNs93qSy$86 z;i3@KJ@gmb{SK!-qtNh$X@iF-gq7bxR*Xtlap$9>k!AOvsNnwV|GFPyN;ScS_l-(C zSX?q_Ev%xU(*_Wy&>-(wLkW1{98cQ!uFe-I`s_w3-M=YO>d zJb4JnCVYFR5_LZ8N!w;wpyE=i)pqs_!Q+{EX^k?1pZwuwwfE$UIZUxsqo>XQ8yXu- zQ~de!=M1bMqnLyw-r!`(Ea+-V7`1;y#aovO9Ia?-bLy|umhv6c2k+DO02UK&d8b3biYs6Xe6<3qKcm|Ap7zR|6J68UjHW^%fAQ`k3<7kfBJ<8yDgV z6KNxC2K~RPyqP53JHITbFjK*)(VRIJYE12y+r$ps4PL~!MZ~i>ZzB?}wr~dj&1td+ zelQR63xodXN=*B#=%kxD5RXPtfmCY}jj5#=EM5?TU;i4C5Zf3vMa=}+04ytdjRH3_ zHH-}^v`99ss~(X_BP%I97%}q(c6SE%+d+^%=K?8Lw~^N}DVs`}{I9c>X%DyqjZO-9 zyq;NvoU!(h25psO%hz$p03GiT{;CsTAw>UD`3N+d?yF;9(Z1%hL}efG77b+M$ulMI~XnEv1pIl zXjS5Ox=#K2gTWg_A3dl4?yQlQ5twcZ28P}MVWx2Q2*~V%Y<|Ca%@QaQ2zwo7y>=^R z8v<+-WjVPPK(PbkNG*~_ghEQ@*txpx`oe>Q{@f@59JaRBMEYal$N0*nOzsmt1q1u9 zsO|e|PmtNW$eEZd99u1n|Hmb7zv?yu#1fwN&+*{|V|vB-axU-!5!D8aFTl^!hWQ z)}TVQF&E9Mg~oWFYC*E=$mHbY3giM=c41h0N|{iw3kp3&31H zcJ>j@2BDJmezc)&F-Ur%(x(+`YiAezsp`Iv{B1BQM!7aq5E&oLJ9$5U*nM>zM6o(t zs7iakCo6C(Yg%abI(~-@%zH3j`O|tWewxoQTgBw~3*`&@$&%6+#tS*Gj|GHL6AMlB z-+plY2cnF{-CIY=uy-RO{0)M=O7xhfT6z{SVg>SvBbNn^9@8s-!-fVmvWfxM*GtJI zdOySFr}1u<%JNzWUV)p7>(ObFUkUKG=9OIAjimg{9c@w;4?5R@;IVlvL?&A^RhjR9B}{?zLds7v|D{y2@HG(`}HqpvEXB-!!eL z`4tfQU5px1I_p%u{1kMb=g_3pt+ur#EN&_9&OjGo*>3>w+hZMy!(6;&9_;yQcG%+f z0TQSdLhf6dte`a*(q&j(biUw~`h8I`QnEmZGK);0l4;YKvPz8}<*`Q_wd8C!dxwi< z>~?JmQK9+i)khJMLq((;R`j`_=L=sqR-M#KK{v7BtUE3WyQ!Luk+=rk_4ZF3r?!K_ zb%GKpJx%qC<P}au9>gfDw2DRbHMsk;bKmc8f`G z>H_0rwy91Fv=-{MiNA!+HQ9 zY*~0pF5yCUQ}_XcArAR|ECkfMYY?|x3Pb!l*A5H-G+cZ>dfO%U5qL+=GuqElpx^YA zXxr%S)r|I0%s4#R;dcE*O?j5o4*bdYa6U@2Zzl1=Peha#nzFSPpcxG{ECnt`;cClx zM?zPri3Nb*@sgwnH|gQ`ime52fjknmA_Ri=dB6Ogqy>W?nfS$YEC^e%G){XHOxU{#yC|YPWCh9fxnua65D5uBe;As zQ*E5RzCgowm(rZRxN+534|?sfnp~RMr}PWiOE^kyeJ62>Q+oZU<0yz6wC{c1w_9AV zas14=z`k6^*nU)$o#L^%QhTkMCAA49dN$zWZRd<+2uWfC=N$?g!_&L(=WMzVk25`1 zfbiwHzDUD$rdN+#TSg}grG42=dV9p(JdwbMU3h0N30Xsda>{|~$6>;sr2urOoKuO$ zml~`7YO}e<7(quY`pcqRWkIAQHVo=CD0|d?{WtT?SiZpLE!n6PX>lRWpjC{OhA) zrxYnR?Wg(a)7;_|Q)oWF_~RvR_u_$jQOmI2O9j1vQZC}``}==>#i#p8n=X34JvNQA z-Ehrgc2D@V-DpQ^x%y*{*Rj3qLz1jh=CVrt1_aPGljF7-R)RtHgfIB~$fI{;f&6tDR5`z!lf3b+=9(sZweb7o>d$Cy zm)n+d)1nAyQ79}d{0yrD#F9hz40f`dGPitr%>qft((z8l8Bi<3GFBIY1koV>&4qnB z>U9WvDQW1H^?+>2g9K{-apogp)U3a-XPN`{OBE7nIl8s=DK+2f6OC2+_|5<5Dby_4 z0mC_jEJT%V?bUn4y7Y_=tt0bg(7Ks~0lM}pxr$lsXTR367AJmWBG{x<+eLE1*j3%9 zwwzn1$;O4e{(?}xoEO&FQ#`K+Y}fs(m~}1c56DQqZwvceY!h{7fC1f69G%-ISJCnQ znZur-ik}sDy@LdYK3w*T83$gyMS{mCCnp2Va6V{zLK55x?0R_Aop4zIg;2h#%~;-l z0JWuSY`mhDuP20$8|Cks>)!Fb;{HA{`-Kv9RKzZM#t3fn?M@96a_}`CkkTc??jO!a zghdBw9yW5*OB|K>MGEosw>vOsq-xX&+N?L&`oDyEEoJ*kb?26pmgKB_*_uC7RzVvL zl~?<(=0ixbID{|Wn1A5BX=O5u!bBS4(c*ikR zAoh`^M6yC56~r~7&2bS$7)(U=AX?+of2l@9zc64?jB0a?RD3=|5^R@iJZ_4>%ZCd( zY8Fq}uM#|LBo(OnL~NZZh?SVMF0$`2Jh=LKRG2s`vd6;ZQ}bk=3CshfCJ>zycP-s zH2^67O0V|!C{S*LdB4tW2aP~NyE9obnj>-p#1wLhipg|4Ux3RF7+?3-vt6Ji#_eo( z`cW2idv)@d11OoC?RNS=y>_ap%DJAhnbq><&74t!50Y^ z`7zZHM0T|>a^!!h@6%Pusn9xI+dXJ`iPA7=sMm$R@j$#@^0!#LRlsD-}~$cMBx?AU_}x@pT6?)u}7r_1F@Y1Fchp7_kLV2?U;w%Y@-l=xb^wgOTTe^A<}c z-~@Eh@OaSt0AA28AmCjA2^*twR_Wd~m_c3z8X&G47oAYS+;%wVnpg%}(??|qASa*m zcwopF4AtuYS$&<*!Y1f|dG>MGq~l)VZ0i0~=h$srBi(DhD3>T&2VF7YS6(ylLzz2V z1LNwA;(zg)vfKp1zPWK(lcwoZZh z39cmlpSYkPvUkWNp>y3~TeUzcL6484YLL^kvNKh!Z%I=-b-CFu)t3FOgZZ}0y>ZFcGtFbpmaql#%n^4F!*DKKSP)K@%o!uQ~eL&elA3xn!g) z2@M;BLS}&WD7D^=vrHp87pYWs8LjtCME<}tcEe|KAI$Nq4liOL4cyokpxqJ#Bfqm4 z>FHyLxq3E^mw*IK$0VSk*tSf&0vN{7Wv3vZe`G46aPygB)1^_`1ybgNiyH+6g@=>e zhb16&y1TikDleb%5CO7lr=}>yGoVtjssq0~R9gFLaDo{4lGI}_gzJb_;6 zvy><&Ojb(j`$B_#hjG>9&Jvh0Uv1V4%U7j>3MzY$8<2%$ybydPq2!Jr+(KAdkQaaN z34QBwIF`Jcn~)>k>#_1z?O`TES_QNRnGwre?TS4g>3&T|A`5H6kR6pUf}Z=TzIgFg zRt)tVjhI^3OjqdIU`27#T__s| z2Zw?a%+`2^3sbAXXzP?5=C?WiK^l3OL}h=I^PR*ZUv+zcG54{V2$mmTY+K7F1|)4j z{@5YNNQ@1R@FAd=8vr;l9iEF&_RZ$`9@YLvm=q*k*sF4m>F4lpHXy084T1kA3#Y+gHSvuy*PuVXWV?+7WaEB$|Ez5h@rA z*4r!B#~1v{5@40j!CdK`Mj58}wuJUq8vR%wZn)U4Ml$0z2MFj}RdF@4^K-XTbAn!T zrc6C&q=nYb9bQn6qIyrSOSOqelr|_#Eu+sCo_S%npk~Ch(K#K~9TW1!tj>iS(-EaG zd6T2d=@?w-oh0&qZECXbno%}j*0WojSs2ZLiK!X~+|iJjAGQ*W5Ne6%9tq5zWC*OI zd%ZQv&dSL6{TBIkzhc&7c(kBS8;yu07glzJ7j5_aQqg?gjxj^m9&j{5Vb7014CL^p z>!pKhjMK1Yd~{SmLk}HD>6`_20FGJs0UZ2w*&814V#zlj2}y3hq{T#Eq-62LAHMI*Bc& zabJcEg9A~UhVw^5pfd087_ZhRi7OzEfCwcUgkcco;_9gRn0EnGBqt{)0G3&Svh6+@ zc}?^O2V}M#fR&C4X;^t#B}Mmb0J%5SjEwj1*~=_y zN#kP7{5veV*49cDN)J6GE;^7bm%zF$&~0V_&D@K%?IaLC}1_;UbhNVo=dzRrsgK#eIpf zNhM2;vGQg^aG|bu<~7AzL31}k?MA>NiT!3h>9m~^U5c2`&-0jkaBvWKbHbf1Tbz=T zQ=+ZLm_7_F1c0`YOF#jkmBSa|waPz(i3YFBty^$TC=%9#bB#H%P%w@ zFDx;}`u3|886Ak3PduNd7YF;L^=&RpP2*uLGsE|mT&W{%(Ojuz1OQ(h}lV9P3r-^13v66v5#4)aXXSrKi=w@nB)#^(Zg<^o`Dqc zU2rF`0(OW0dwvc9$wi2uCd(5WWc~7lQ6GARw18NW=7t(n6N{Whf_Db@G%m?;guJ4ugHoI_J zuEu&0?2B*T9T_LzTOXMt2_o8e8^%w*B-r5<&5>b0h>xQ;D0P3rbmPCSK@hClr=C8J z*;J^cSsAn$Em7Hzf(myRqrCUh>VvgImFRrRnbcfjFML~M^R>~%l$|WYdkHL9u;~f~ zdM!#XV-5%gurT7R$f~MRsKh<@f0qI8nB=d5#pwGFubgrR#s2~9z=|jth@)zViTKR7 zWmtNtso*a4v!<1&BF|1o)T}^52%WXOGhJ*^H81!J6I=aRtVo|yC2 zmkhk+bOAA8DVoXAEKZ;p1=xej1~BH3fAdW?qI=+etbzV-!7A=)D<>y6P>@&vQ z{4ab5j0l^!z5pCxz&bqt&?D_}_!sd7PRYsNZ#QTOIKL%~aYc>c)vzZo2vCJ!El(|IEv4FVB7; zpyWiCsH~>O6`lDLtEs4fu|^2ze$LXzo~6HQXrQfZjRwW zOEhPt;Zo1L9x?OwNXf4C0orYBAwuR zV8AixO`DuYhKJ)4B?(A}q8JV+YacmRe3VNJhs2nW@YszE18CU+bH1CAi zTNJxK(t9hp?)r_3+jnAu?^PI4!FaTDtTeuiY1~n|GIMpu9t?+41aJi$Dv+-zO7_My zmMm&vJk__@zpZcFf7*RGP~?5`(-~U85hKb*P?fEuA*Qr?4GFX?ylO+Do(Linj=e??gI3PunjPXI!zO?S1UZ)Ss!k%x>B z9s`cbXkWBe)OX)${@R6@+Ru>(;p8!!y)YSw&&Hpw!Xo4ZR4sxx(mN2KKq{~{ z&X)Z9c|F2=JIIAfs8b-=A8qyt%}MGqrkucc9h7yp{~~+C=tl()LQhE8Uaee=jJ#R* z>`UtYn2;F^q9YJfp70HpBGpIb3hxmrR{GdP`FXVyr3z;}@?a1q$-iR=f-rx}PmR$v zk|27B{}>Zz0I5TLR%0Vjr%q95`CTIHW+KP7Xrxi%g!SylxS0Wsp=TeaNSW@0qB<%s zs1V?M#ZXZDSyTrnir;3El=3z3Z=+R*E9~6XHXBX`h5gwPu)NWC=>L(C-}I+Fh)2BS zl=DAxil$@f&(&g>KbXTeN(&jWNI;PdSGOC)nbpxdG2i4gkigUl`M@z?%6pXrQ`68U zPjg|nBMeyD%7Q}tv zFh*ue?m@1z8-puv{_ECP`RXN<&A8#q&qX&!%+^4C_}Oy5#oL-5aSRbfInIUwW;v0} z*{Ad4WYf`LnhLY6xglSzPN03(s+C5q%)CQ)je}21J;<6WC56LCPT{&{@S$t4rglSJ zVK{c&bx)?mV^a|!=I_<~cZzI;Fydt%d)2Fh*AXXafqi(en?nQQpgZ^5W?P+dH;MGr9taflgV7H zDzs3o8~O62{dea;8mI|;Rr25h_^ZSk9T&5d1b?_T+^5}L+f zzbi=c|FbC&;aaa}UGrO9{5-0bxCMiu#94Z^gP3^@=*5H=G8e54&IO$}Bu% z488|1tMbXA&-GzPe54Dv>rJ3rrfceju#3gwgIMbZ=wGCmc8<4>LyRuzT2M3#=dEH& z)C}(#o4DmGaTO4emf!C2@3T^_g!M8qt~z~G4*gjCpT8Fi5i5GPdX80#F265s&VuZ6 zt@ogFCfri@4BqxT3Ax>h&zONn1LL54phZu|R_(d%hr6H8*_^}8_~kqy6$d>Z*BdiR zlaBBAA19k?xm{I~n`clj1p`@R{Li~B0LH`v&ZTC;n@3d=^@|=Q(F3B~v&3c*)nW@f zNSCJ2qgCF~&cWAi4UpH?O`FH5SV{QfiV_ZCCRqtD{x9tq%HsTa?~x%;0!=Iq*^ndf zbK>{YXgfJ4Exch7Fs5~{W&DT9Apwa7jn!O+#Sc=x`>8Rg zz@olG#FmW+Lvw*t;ND?yE!4giIQ|veD)ou?PFR=QrCS);Y(u(#k(zj-%jpRq*Kc#K z#ROuyla4;@p@9YZfiV}65_$v9Iutdd&F0ZuWuIJn+Pi^?@e7*sxei*kZ@M7n3HJ0c zVipv3Uh4sh<)&$B+1qkK_E>b$UIC?OS67K_weQy7qaYs?ah#EhJ((muQ0oRZ{=R-= z#X{9R*qpvdy0z0SuxM|+3+h>&@jup8A!14NwFwr12a!GTCMYHOfyQbETGaP`riz5L zwd(3Q#tc2*jG^I;U*{wNfh_FfT=$pFiNou_s5W*zYyPH&y1ymKb}<7&ik`z6$kqt! zV(o5=yn{ZJX~!E>6^uH54+6Dmb*H!N@`po*Nc|t| z^<5(b@!?|ObOr-4&2=95nbO0-?r;q(Tn*1JzpLK|T8K#HdC-`Ge0d~tpdK_Ki*sG^=3k4nZLt;M zm6fk;O~FeG8Hf`Y@NV*31TB9(kt{~&{aTUZd>wjSx2ll#XKgZk^*hOXP4SF(37P&& z*;}7Xb($&R$b5uN{$y5r2y7H|8=s8p0{G5;_vLiN6A@c8Se-f%amyBb(HO$L=b>+D z@9O`JmX?Xhh;85fKG}=5KRnTjoLZqeH;uiKT>wo#n#kbZPambNe@T1;8RkVs()HG? z`JEE5vC!TmQaDDik=%-f^WI0*J!x126gT3(i{2AI6^YAY1i5T2X87_-kqNYdH?uIy zX16LJl@v*J%xCVp@z}LF9#9=zcOcQLA;bavMqHnfPI=}xt&r1#BzOWaOjrBFk+To+bk_CB-%~Wctg^0g?GZP2~_^P+evi9d`*sCr2 zt@FX5^P}JRCFrPq_BENoh{lRnB>E(vJvLc-1w;q!W3)#vkjrP(6C||V`8qHTv-T&x z$h|;Rd#S`*^`uUeT^Vd{+&5$?$iaWnI|B(E(@*_hf{?n?#i;@a*K4Euq7E3owa^k% zLYUX-sDS~PzAL1sU7HGu8V93suwEa~37f)2WnS-Ic+&ME_|#cvHMhOFxSo%4*tz&- z!bnIOn;AyX+Zs2i{6}U`d^e3Pz8YDQom#!FzmqJS=6!lD9vs*$SXt}-z2tBrT^?l2 z0I$gkbLs3W7gXGdiV--vmCE(zKE*b>)MD~Q5$z$rw}6dXp`$H%hcHAKs~p9=((570 zVIe{bw!1xeOB5FS=CuXJ#Tz?>)lTAZX}bTHiN!3=ps9!1UDGecEHL{X1(a7;qXm2ImOIGQMLP=Zk}th4qi3 z$ub)SQm(Gzi!|WI=5Qx42-qXfnD#If3fST}z!j}U`G78^qABkvqN%gfzTDMHWcQ>N zgg>+}^2ky;v(%Z%jfr=4b{<~+#)PnNuOqYQ28}cqC@Pbrr&bheMF{@uAyR{KlC4zp zSGOM=yhSx=L_TUTFL69}nf};#S>>&CL{AipBV(ndo{VAstZRtrsboFzwUDTgZ7nX1 z^ct4(NJLFD7Ea#t`4oIETaNCpecWdnHrPa5Hz1n|T|P~F#dp9p$nBnTTu>ZHNrcvm zGfWO!t_Oia&n$BXS$&qN6oQQe@I2z{21XTE3TNQy&M`)>kZhvOxB| zNpy{(nlBm;h@ccnmGn>kUh)O|W1 zXHIgVOx6udAO4=SHKg_IXdcgTPN4Kl&1rE+Z1-u|xnn&!KnE|}D^ElK`Uet;aLXAWkVTb3^dQWYxRn&P#2E=#w6c>Upxk$u{(d6mosEU_X`(bH zR5=Sx(e%Gu2<%_N>%ZgUDsC0Hc+A%mgdN6a;VJSq{D<`Imhy*~J1Qe=`W2ZMCs#+* z*DQ!WHa*?<$%CsdQ%%Z@PvB{dLDhT>i;nNUmycS{4=()7{XeV|``*XmO7cWAzhi4q zD!G?Q6aMB8ZlJbtXntGrNpP=c=P;iw2LrYJXURJbgt3pwkq)qJ`h9QltD&CTags_`NER?x%p#u3KAip8C=G=m<~ra*<;^nXZZ;ceK*A?3ulX@ zs^m0VBZ=jYEsrvL0U|9kG{W?B$QhCKUA^3E#X}$Ykmv}6STR?JiYXDg1!TpbvTxG( zv5otBBrGE^HeMEl7tY6p`*_K-4JfhoFfrTOCA6o&sEfAYGI3v3l2R07U%0dMhbg$I zHSt6`QB0-EWl%V1nU-NlAfzK-|K_b@OY2KsD@CXlr1k<_5b)@H&2TYZ?x+17CtqF{ z?9^>nTQrFRu?Zvs6$Ns2pybKGHXSuJCn=ZY(Dg}!g~|V;M>F z-ej3OR+8GyBH{03kr)E1W}Q~9IzV#Z8Y_8f&2Q%B1u(gX(>Y)V<|lKXipX@A@~1|Z zB3QqfkBIH3rw6fu+(Tb@Xi4>hE%eQ2!K)VJAPD+faw@0*NnB1FAW#Vjok^)MboO%c zbm`87s-9G3G&0XQ_=x!}kVWDONtliqD}y3w9E#_}Z%>$82!MI~MLXLwK~#;xESs3r zFeTovL9iTg#S`WR>bGEYI1?XIeuTR_9RaM9n)Zog>={;5vGrqNkH6@P`%=9Nu|t~B z{Fdp@eh|hRWPDn(sH93mRyXIs?}dEY7*!YHG)}Ax^;N7`q*B<3-;7(dO5r1$->Gnw}olTIwSS8^Bm zf@lL7i^MI^NP$nLo&)3=MO9H3FXbrXp}~v$^D;ZJAU}3%n8ygQCfMvIovidXE~{XU~o3bunmq&8!^VuU>tl{Lpk@fN#65?(atTMD4= z9a%F}qb=QZQCe|vXR+d-z|uBg9pyWRd?+8|YQh`RdO=I;CP*eqRslj&AH-md8Ih$^ zovPf2^dDr|y&g@#A}3~Tqvki+g<+8FLaC6=lK9*pVYUGqy{9)ZIJ2BHK3n?%E4pT? zJdHsKSo!CdJ+_N$=O->~e_e4G?o4lwOj47ZhVVcxCZAJWn&xg$zOL1{U$UbNx( zN-I42B-R5@mCM)*s8!vjN&k8A->uply7!Z#N7?o6^pD=%ZhDwqVmE~(Bqy$~L?v+| zU{=ws4{Qek1B|Ih@dO-D4u%mF*-5G?6vj=v-e5T8x2RQ#(1QSd7&5wI%KwePt}3Y* z*S(R>Zbv0Une{M{l55z-9_rvSvUGTzOG5U&p9lHfW&3}~baiA7usM_~!H3d`&%az8 zL+^V(%mP-Ta>A7qvTCnlZ+fiS}Qe+g$lCaE?J%JYb#KbVU@aF zCJC0E3NvYmxhXrkt^kyUGm=h!V82h_ExMMffjUXn13I_se$E4xLtBEas5_Ru@C@S;g?ka8wG6NFrjYmcBSwA%rx zFY=YdT$Nw@ay&-9a=s4gCf`c(P-_`z8J^N)=D@c$QcriZXb>DJi}B{1`eH84v3vP> zM0Vu|dxjeQYuI2fjwBzeQk}r2%f%|^ZEEA9rKuI43M_|8fH_~jIcL6XhbriuJn>c0 z0Hxa3r+eDTQyZ`zrCMAzh%qyK3(-z)On#e`E`@v!F#aX5seYb()4dR`Tr^1?%kOBl1~=TQsgPZ^ClTL}4cA|~18X8%(@OX0xL zpd6$SLOmwr@t5opFfIRTVM0H!Hy=(Q%O3Hc-&WO}+0us7rad3ivOZnsfA)o3P)Lp8J)O&P zKZl$I%~p*a>}JSImg{3;@f%<%n3`Ge=MC<%F{Irn=0cumPM2>mF-L#CU>eb4ZU)<$t zmv@tXQfuq;;o*V2@H(F8mlD)dvrFiYS&C< ze6&%^ylE2&o56D^Aw2yRya=>!Uv@l(%O$zc!(OM$Wb%CUX@{v@KDci{Lsm^)KyB zK*ywzSO#de39$?rWQ!9OMlunKl8%vESck3zzHT9zv!}z(mv54t0;T^o8Ytwfze931 zifhr&bnS&t{<5*24y!u8&NjD%KE=i*qOtwHkNEAVlbWxS#^jD$)oU2DVoC3(zT036 z2xtgGyskd8zFK)hDnM1$PyW;D3GVgx#$UcR%#aJfl*OR@nq@iBRfK;=zmJkFX{91_ zTiPZyPB%O;ed8`Nr7|mK5{8$LPD`x&Y3ZZ2SnFTM{Jx(|tkOty0o*pRN&f8&qd1^A z3Fb_JTEEGeheqL?cvN9J5$XoTyr{+eK~LO5`T)K2y=&B!vq7&23`5 zjhHf(air!&9erb_yLVgS`9A*!gH(V(iSZ#iVr88#qge? zS$*&MtEzN{+2YEnt1VTbLJG5s82kJSK7pF|`2cA}MMW22F3Pq;SkE_n^XA{?C*YeI znV5J247@-GN&j889lqRbt!3DL*@yDd(#xZTi~Wj%S)Wgd%RkVf(NoF!6=mk*eHGs@ zkBW)0&PLQ*C?KM9h!!0w53319=zlFxWX`M|%Eq(uLgG4jpB46stHcL?1JZ&pso4u4 zPcy(Q{6^j_oIF0}Sy~d|B@abKxg}6yzMTtc7NLPNVc_Ot%yKoKDlQu7S{|md5hPb*N(w)W*TMR^%v#(54Jhyx0fGFaiB~9B z|EOze`2v6=@%$ogt3QFldu7^?>0{s589zcEuE_=MOUufnFMr7cTf$yD<8K`uZ-Fob zuj=of3X@n2VPa!hU?swOqw(^sjsq&NNajD~T}y|IFLPZJK@)Br%ZLxx2TjZ}^9v!( z7+tYp%7j}Z30hGM(hlph7~Cm=}u$HWrI_5VHl=VSw1H~%zn_>4;KaAL)e z(m~gNGfT#PoD6=4geL_xo&_{(;{IpQK0e^11l(Nlzz=W(a9J1iLk~K$Y5YQT^6U{Z z`qC?D2uG9}G#qenh~|$x=>H<5<@TIL;iUhvj_T~O7lfY?r1%F+i!OLRn_S5SD-Bnn zLpJP+K1weX@C}Rhb5rcc8$oroIu!V38BRY(r9M-9zU=Vq<9sXPJJQ}y zacwJ(^H>rj%Lz(cr?d;xj*_H_?QwX*ifK&X-%`~iCs<`Nn;n)tpFsAJNcd|yj$-B=Jm37 zSd+bYRDTx$t}wuMZRt6}oWX?gNAh0{g%{wn0~}po)T=z#wvm1Be}u(`dk(n4d7Qi+VgZ^`G$7w1Z=?az977)7>|hx=VNaRd43I zS9vbL?XnX83Lr9$M_FhJyY5L<(-u6Ex{~M9lzOFzRQt(Eez{U+h#{{~9ax3%S%b9M zzMLy}F25n3)zHWQ-qF<-eGK^}SSAFy2Iql(7(lDK58x=%TjxgHN$h}6@H3F3;`>S& zQ&i;yc;m}8@)*)pT>gC>16Y)uF$pOE5^H&S{ssOn_n1>F2a$CJ8)mrJ2Tn4fD#UC! z8@;FH@x?Oo*tO<}z>8A;3uQX{CAxNWAxe%r6X-}xY_D+@ z-xiQUcXs1ZvE)-@Dyrcdbzkjl{Hd+ zF+1aww{K#ZIgG6L{Q!8wEaYkipn5JIo-`cDV({Y?2nY#Hfvz@I*14G({z0dA?|jU) z)YTPAyrL%Ty(B)(%*?daEFJrT%HNJQ`~(c{0BG#8)+tR-Uj+SAz7+Nl`}RY{!1r8g zQ>2Kvf#OcwsWie^mRKB4jnr|88BL*VC%#X8O=0^U^qEnYoKdk+wRwU%Aa06roLGM_^*%C^fb zXHrFLdjqsY=dyq{LVec5ZIbv&gx_M7Q34)7Ag_CTaYuza^i$^1bz|{wFIAX_$N7IH zo^E0trp0;&Oavk=Tt)Pb<1db58IgY#+BtMaF|^z(yQtQZ2M!mE14X9FK=BxjxST05!09XffMNrW%KFN>Fe~GbvI9h)zJ3T?7`nCyG*X8bzLxd)GfO zCTe|W#)tLguI0>letC$g7`2^0abt_wtd*3|i!y<(FtV7XV^@l3>)un( zR-iCpfRlXxiyb9{XCn>vx#;Yhkh<0yEz%psC;|9U-kXzDsTSL%&8sXDMj!n5x&(1X zG?G|+1NO~=DIp>OZI^PMBEG?hdDJ*dXA3K5Qb>Lr&tCXW&3#p}pGeoy_x66{bg;@Y z$C}_#AOr`q$_3%q(Y>u>@9t?HSDNT&^(r}7uakF~FbY*+Qf*i|wkDu3j}Cd}6Y0RU zWbVDIW3Qv#&P||{R_eJRy&WyCxmboVqO5gAP8Ps4oCcVa)g0^60D1!_Kk|p;2gGTT zaF2PW;aORk%XtVozWg4m#qR9LQy7=!g{qZLq&pqmo_5I+Q9W%;5sqg6e% zuT@n_No4e@x~{Iky=1lVogou}4pFq1g|6=ARbac%A&ZjL>kH&vDS~*%TzhgfW!SFg$2$poHId(r`d>60jvxba9Md!}M=mHXh zz6N%hnGeqgXS6@DJ<;e#Y$B5V@W(Dl=rNQ_M6!t$fRjo541ye|v6ssPRD!8+w?82a zP;;wJED}QJ#ah9fj)hYfg+)|(tMY}YzNB2Je?WCF*qoRVn{prM_XKPUKIq*;FRRh6 zv>jNSY1~(xTZl+^!#6?SA;%Mxi9@e$TSr<(78io5%`sQ>@?Y8l=kwlOPorH${*KXV z(#M?y=rCX3wI6x#z0cbOf}?%?dKf+T`!|GJ^Z3;5fCqh2>O!3k494n!^7+3!-2k+! z)$Q3v22(Pv%rgMyp+MMYgj`nIe1HWi5a2KG+bGQ3+1;%*s<#GWGuHogdHy%5%_ii& z4mmmmm4MWMI;g#?_y!gJiT0Bb_2L^jbRrxj z5V`!+%kROTs%Ug?)K6CtIgy8z>Fu+1kvYzvoil497%_yihV#(1L>3JuGQBD_ORrxQ zOM+FkB@d$(Gk=_lz7HZN`TAF}Df7AL`vBux$dIspLz*S39@B9?rw z+PQ~$n^cX@QpP`T0aorF=zMq>;0^TvY6MKOeE`QZ9)*zO(R{sJ5&)6c0HV*me`%xB z&>P7OF$n-?-RO(8S=%>w9oZ(_r2N}})bHhjToq{Quz0jKR5ee_7*q#Bxm&Fm*Drai zVLLg?{_WNtt0vhDi0<=*?r@|u7o&4BXCf0RCKP+*RgQjU=)F9dJHL=$o^5oZoRL6A zknAfn37C_PIihl|X6>CGLZLf`ZzyhYVG)VL6K=(X(>2RGMh%}1TpwJMk2VT<0Rl{C z-#IhP(>I;fZZhrPZ+g@Z4~S_BwF?VrM8oXwf?pL(vgQ-F`JFxwQo8*MVF0m|47*k! zo%U~e{`=1#;IZLz(z^S6>=qWZ8P94F@E5M1#z&?gdx`X#4)xB!4*EUfScqInQ>@qL=` zWd~nwd>OYM@dAwxqvLB_-5G=xJkaw&LE37eN0#n2<2YaUy6R9k`P69nvBd}K#qwaV zE%!ad@3|td05+NYiBj+D`}jAX)!_kVX3NcMp?UA$|6!8&SIYq?l7T8Owld&s2U>YH zfe{V8?d&(>_beJ!m6h5CjX*~cAkh@Ny{tOd>lVlU^MiAA{xiExP&w7nk3R8zaCqOx zgl9o$%&#C0xhr>O`bM`c=Edu6uN3nF#=Ycn9>=k}!a8rWN3QAXOtF<021p%A*`XD3 z(Y*V!{4klPS;mAH7;_AAZpg<7lE(Ngn=bz>I;aZajARbJQ%a#~T{{G1tbh+>D1sF! zjp++uw+1BPZ|58c5!>9J%AVF;o&ubuRGUi1x}R#N23ZR}vKgasVvj7$HiL1;6jBAJ zOgt0&7=L%Ql_+dvk5)>tzxW1Ras5YmsWu$xK`V?CuuFa!Vw5Rt>Ddx&u0w~8-f=(OA)0e!i zu+B~*?W}sK_XOwy1!Yj+J=IDGi=xA6!btHr)L4_9kwoRNeQKYTXRz0H75+aq<2qW)6nE ztZvCbeaT45K!~S14bC~jdTlT3jrAPI@ISgUx`NZ}i%fNfQ4-luHm<(P6*A#lh#meB z4f!g(rdkzC~#S3Fhz3h4|O&UwOL3*k0r(et|}73 zBhK)6|8O3Z{8O`jNRnQ}{2tL+C1LhKf2j;@sJU?maXxjUi!ejv*R1PZm31h#egZtH zGZ6DDO^hEe6L|xwA!bW-9jy{Fb{aw+7L3ja*lT`6FJ6cSK}Xdb*zbyv?3nsX%&3IM z%wmLyxIi*tkv4tdzDw{e1SdOSx@iV><}sVnO6&k7K}X5bwv23ikv*RSW+8II?o8ps zP%D2#+y)*#!bPVC8IZhGn!CIy-o}Q z{x%TC6Lo;x3_eHLj}43^AN=fwkY0DmI@zG`S?dQ&h*_q>vZ!H)3KrwLG`1u#N7H7z zL;VhOj)W~vE*glUDs2jnuqHy1c!jm+Jr-z%#kzaIkxlV@?jLVK#QOVzF@!FE2ic7gI5l70RXRqFFAtgTkG97r8 z+hz?Mxt&b0ujEh39`Yj^z7!}9BrS|&@P$Tt($!;$#FqH&Q`#(^G)u&dGd z^s8|B-dpo}j6)0g30$`8z1dQCjk6PleF=qNP%H)742nJIpXt+^xlKz!&f-#6E~(Oe zZFj<0UDd{fKP|^(V2`UG`78bkURC%$n?D}&yR=u}OcB#U#gC30CGHqaVTd#M!sCAA zpox%D+7VFX71sI+4oV$E@`5>+HhCWDR_uo(<=rMFo%0d{4-(-DyKVsX{?MAUPp4<<7PwZq?+7ux_nQ>sn zdp5z|tj?}RRGGcM(4hE5*ASUhf{|yvL`z(9C;ze!>@3xyOKU1 zJin}M3&yl0{{3LR%_a7J$^~(=jp{OE+_}b^mT^#34fy=%kyluI(dE44eCW0Z67C+j zJ`+j)Kz2t;r>jgNpX~YU4s*@!Mfl_ej;V`I|6q0GtRj$u0#M))RdOIc29?v;?>koA z%u}M622NKyHZ%wPnh4f1!`yL`gLim+0vlf=?C5x?PxM=UuWLqeQtQixFf)XfUiB$z z*>p22SK(vB3Y`Qg)F5o?bR9BG?70;=YDP~4zF{acDAI9{7r##B!uzI6-h{~&3x3Id zv9|w0R)JcvJ?Z%)bgdJp1h+Xl);6!4hi$s)TpDcAhaI7$4Iu{8ZN`!#7<7{b2kG1*L|XKh^;IGjfvtoyexJa^`K|N4^Q|M91!}ZguQG$i zk+b+VQH>-;*dd9X)b9l09gHaYnfRayMn@r zXeg!o5U#?n7nnpAsRzJe2Ifto3(m#Q2BvGiU>hopD$PKxYe z%GZuWK~^!)lKESi+tIWz9uCa2D;Xe35T{&+fW)g*@I|L50iSX33$sza{Ef|_K=2b0 z<{JoV(x8AjGQa|P?Uu|ffLyRQmke28sV(S3cdB4_R6i0T>U`Pv^@oDaPsoa6+KuGt zAZHpd3O)4-3osqdvlxh*>i@!I1cOdG{q*CE^ik1765W79LilYZ)v2>kZns};7m$8} zq(>p2Q&&rFVCQ1>P{6$VD|+mUf~9RKsp1O>oJM~+NCkclAd38I(=Qe;W*6Ef-gm-# zJ`#dHBiC5ci5S1)-cv&6A?P$Fi(ZLniGr9l#7<8{U+10wY-)QcE02OG45ThVk&TsK zA!}a1)eE3Mh)>r2jw9@XeGEiBCeG&Zx5#WF>d(Y&smeEk>7uylsNbGME0G1mt6%eP z=WaD%GNK1~+*c1%#uaPTISBXqtV65~nYK56STgWju;p9>zgVl79pG~5GXxqAl)xwI z`964+*khogy-=1nU7!h!@{-Qdrw=<1rA}`pGZ4dYJcsE0sGOP@&G6v(1sHx3zZk6K zlgRif#EEGzaKU?_MBHdaP?DTz2r<=28j(Wq?Ve^O@W2M_wo6`CBon_?9k7RLJvDkr@5i!Z$wzJ~EN)%Q3I*PSdSgHu&wa*9ubV`&I zQMD(~a%>@R0oGH*3~2J!U1kzD#(cv z+lY#;5c42G#~d~)r~eptH0ACmd-Aq!fL2v9y02d~;&v3Ia@jAWszS(Y+cnutRzY1F zYM;bdR)R%B50)UFo-i=|+94YfTszG}LkUVeZ;~cJUe~53lg7%*JG=TGrxj&qy-!=% zRw&WK#fQq5)Y0Lh*n}?DcR*TyC7)TNT!?5TGs_!(p!AHg$B*&k5H51(_esvZ+uE#r zs(>WXL(V;)xtKj<5Ps0@C;2WIUoVTvvY%{5*u#IWKby6GFG&cCWOrF;B6|p(zF|2y z($2WpM7k_fchQr|6HacUp<-)Ufl$=4~`@@J8XdYKPwB z$%oIIvx^nR842-W3LBo&$B|5Z>FD+h%OLv*@MR|mDD(O=XjY1_CLQY+ibf0&`|87( z>eN4J)}F8q*C4a#Ogq#&46K0aT`f*sRepHhfRGM`J)DGAyl{}3st^~%$9>%s(_q-O zaHXizDC+1aaPBgv-B9`RK`m3 zFAAQ&JMr_p-d_4Nlgi6mb$uvVg%q#JJo2Tp!}qj7<39l8&li5>rr&JKue9W?2;a~g zy6oDz=!!I+zhY)f6GVmeW+jZgkWO3&7zGm>y(0BcEd)6VEl)O+{?h z+FU$*7igOxY3mI->sP0~ZeK5@uf7){2}mcE;QZl2L{y=;SC=&jL;iYxEJMGQ&Tgjo^7lex%<}Fue{Wsg^LUi#{Z-a1^=;CFTd=deSP{=2oY@=s!_|l-nU-c z!ZEn-Q{|~%Bn>@YS_u){Qu5VE;>MO_pNMP(+B6Pp+IfHuGk$&@^f!Tl_r!)~MO7SS z-aU~hKuECJ&KQ{LFr;@q{>S^lG8Fh!P z&|A)IYiIQznoKscgh4#iQL}gb2nMhy#HL@-(>`o3>o1TSh$sZU=ck3PXlgzavL%thhdJf8{)OHcVK3*C%O3J~ ziHD!f8*Sc2%W%V=|4YdYtC?TD85R4W0nE)EN&^-)-Nl?mmVk5M+J+JEk<^doZzjvjHj@AY|S}BE@NOa9Zm!f8~E)hz+;mcTbBOVPIj*{K2@L z@(Y-f6OKD?sQ(gar)<{#D=miho$uOk%8(1`vva>g1Q6u@p*NQ3yg&^s2k3!( zr&=j@kjD)tksp3nVOrI>Z1IVpA^_>WvQ!@b3d* zTnskWOu~5Jdlch8#|r~UK*4^#n%VE$pyrEv0^E4LkA|e@qZ9dFn#}MXQ@4dqLkX1& zN%D2m(GVY5`E*ABB(y*M(PhbhoAr@#SK~M@&k=1mspNJ3F|ggI@($;f$tNg3YDyX9 z*z9RFBUPW5bhE}m`ucQl3_1Td)jM{4~5txcwp&ee4?e#1uO+5XR>@d6Z>9ULAad;=7%z_2QViGR@B{B*4= z3=j(edxwn9RvJ+dvK?Ro&7|tvZf<6*L*xlc;KG+X$|Vp`&05P}=G}UXFb3u4j)zZ+ zEe-T}zCK`Bt=ks`I*&8KYIr}#>t)}J+=bDX7r+jO7n?^&@d#ABTRo2+dg zVB8GU2NXZfeeH~2UHb()PjNS_Kj?P#{G>n3fBraWA;TfMfFcK{PUCmGrz?Pejk5Ro z^*Gtgd^q;#cs^LJ>F9&~gOuN%%69@({g+(C;5{))xJJ6L;;4$d`azzmUF)bDDz>&N z3rqzKo1%W737dN8K{jbhFGdeCRf=YD#?0iNUu;vM zRLi9&GlL8>V|$Xi7K*Q3x>k^BGgv3bZfrc5T)qepn$of|`YO4J+jl$v(fC;ys1!3A z$N8Ps~sR~piIRqAn!U^4R%p7kjN+k6H{xz?&PZvumYic?w-XpamS*~MM zA3mH1Wues5y|woC_P&f8Q(!?eF!R!j<&uLN>x|T=oTSbdFbC~D24YEzWt{l@=KkG5 z+}H}PL#(N^^!2^so-)lt^Os3U2xFWboT@Z5G-Nv|Egu8*eFFpT%Z8kBLh1>8tXuBA zOh)gl{Onb2r=l@fH;r2~k$lrN_?wsQaF_m{G*1XbE5zZ>WBgt5|Q)l$m zwxUMDZr}d3dAtQlb@`cj+Ha)leAxz@xF{Dw)3NM)~C~xqhdSBC#^XqUs zw>9a3f!>Q_!kNLs*j1vZT^oMGXq8!scY*#RCeZqbX6;ESG1|bHWtb~SeyF3NY`NW=99P%-L;Va^OC>~) zhV;^AeM!Hbw1Sm=b91vt`*#mbYQvM^rO=$8?{>xyn_v8VX_u!}F?BqgejH#%snmaA zg!Ilzu6pJyUL+wa>ko_uF1$R5bQ>ae#hX#n@u+;;1||lmPodOMs-e*pB_-loi5>(t zz7Rl5`N(pqCuE|E3hgB&CGq7VQM@X`4Ak&Ecki?-?vTGT)joaN)o>68{ZA(wxj#Mm z$S|yfIkHgN{&rN~+h;z^DW9Yl@EsvnYEOu?<>^H7kJ+i*kW`f^*Hj|J4^b6Oh4rl} z(nGZK?B5LRs527gp`78$9EzB{&GhnRsf-oO#IAVDXFehqBoW0H6Q92N(IsSKnEbv} ztT^M-?X-@O0Qf^b{7eJaSBj?8+i{suLxO$I*pzcl?VtHfYto{7lNK4<@_5_w)RN}f zdxgcN6GteIepz3a+UMz941&`|)4)r-z`@RL4I@hdR^KC_W?>l%ONE2r!S%ZtQhh%> zPjvV6>`#Yt)3)7%fY2}iTmcTXT+uuU$AGgXNk>mldZCrYJK`<--&Z?3chvA0yZK;A zKSzh)ZJsPRlC1k*pW}^|=$In!AMizs6Mn2uzOJLadrY;YS$VWFpCJ`Q(|khD(kMI` zJ@9~sm^IPlD6T(47v@ODo*iz?)`FJU`%%+-Rhb~cR)5>Rby)my2kP!W@e0Rc78s;sx|;qjv%L$ zl9G}G;%N#p+m!6B2InPyC+l>t6Es_!r&Ie=eph7K3f6DG;quuZ!X zx?;KM;R%FvpJ0z)?(afEE@19|;Jewg{jDs_tCz6n!P`pM-ewymm~M4Xl4uZ zbHk@?gCe*4tzk*KU36@0Y+t1eqR*L%%^XJTR#rueH$&qO%WwFIQlH{Qi_C zp#TsMO|f_U^72OoDdsW@nI73sH`MFL`lRW@+gM?{hMnW#r&O!-d2*cqP#73aBiO$N zOf{w+TX+*~*Voq#Ox;4Q*r+62-3daMXwDA5*4XA5WR*(4CN#n| zwpiwMM}5TdC3rj~3U_HJg+a&2h@F-7$$fogK?V&qFG{PP!Z1$W<>QLGzz0};=3CdzZhIyyA(sRU=jX!4pp`FfAcXzJ~Sxz5s% zBg5H6fs?P)@`qQ9+pKv<3=8vZ9q7aljsP}7b(Ryu?A3y6=z+Y`_)Htpl50+CM_D^* zbab>=?7h?E2Oki$<4;7mo!|+_7~dUamcmf9a!q-vEhZs7UtO)0#dBMSc|mZ|9Q2B? z{|#$9-VuE8C0`v49!WGk^Xkyn>eMk@ii+Xs+w-E-~zlO_FT;IqI-0=FqXaW1!A5aa0 zWzsk+Hix18aJT57x)aHQYtqDAoQoq?pY``_mY{6!>N>Oef?vJpm1Sh#*SWa|)6DJ; ze<$xPss1c2w7+nt(%SPuOuZqsPr9_nLk9<84u1`_q>3P{Qb7d;?t`$19GQrUBQQd$ zYiP8VjM9jY_P%y9?26ExuJ>##5k~1G*4lRP=f79;Y^B_C^ro^ z;Y0Zjq%)^W%f|jwNHK(2!N+-IYnzp%OuR~4@y*1-;>u2kuCDIv?C!dN=#?w59lTB| zEGiP@=Z|2`sAh#d0rC$*Q3+{jKiuD;RL;a)g9$zu7(o2nI%s%LUtizEL{mshQ}djW zT)JiS%jD$j2U!fWi>{S-AKqcDIyThNxdwsBh6ZGK+W=hV0EAHao0oRw7Kiq3g6Y`nI6CpfoikbwwHwtl-A)S?wz}&UvG$3&P!0&mu zyAx!V-)wBSuLDxrr;FtN2VA04RW@B@qMj>~Ov6;;Z@sxW>k9xN#A8r!am)N@y|d+ z6nB})4BVRzuSOihW!r3~M5h3B;LhU>OG^%JkXPi^($Fx*d)oIpdW+RLkuQEH{Z{4F z6SDnxjKrD9ru*pVXlM=G2vPrtP$10k_oJV|t%5AKPIj$3|A*_`2L#Ysr;l&6Zrbeh z5g(_9LAhxfsCIL5T#WRuvf+qMFwZuwcQ&)KvKo{Yq~cXfwPUnF@bM|@4Udi*Qvg?K zzrk%5=z=QMS?japwG3A1C=YWJ6B9#23;+w^*hkf)Gm-J)0#W{JsD>M@YzL$(fj;Cc zzy+Bk9pS$?gGjw8WS%*%!rSuYa{_nO)YXmP-@43Pjc|l-9@y-le}JHTDs?j}&3m+> zOD)@ho9yi%wnErUp2%du5L&BzO}r$!w8{Q2V7?m~N+EJ9(HZqcB94UvO`17&wJChqs|->?J9uKjzm^-9tW zU$e-h&#(n*4PMeH>6%?X_!BMOJmta`Hp0RzfzWO&X=-Y+)gNOkLUg&r_DgQ7bnMD59@BkuRwm*b|P{9N&ROgA1cW0XAMyzABwK8wE0oG#<# z04X@oIp=_s)kq&0^`)g=US7$zud7UgTP)${+{-|IgQNG+9=y^Ey9XJZwK9zG)doUd z;$dHUt=IC`T=I*Tfe zx;I=V5%*2_or+6Km&WQVN=u1EA{19(Gb!3sPQwNR*Rrt3P^1W)+Z=G8(bi~p+ygz;MhatHG6V83-Ff_EFISEdhnBR!`yQNzktP?z!(W3brsaI^DEfhPH%GMxlC;o>?b zjFvr^u=DEd1(_`fESiB~cXukV8ICg)AoYZ;aD~HZNZ=*%+mGVx$wk7=t*UaS5!zGv zoK-Ng|I=dt3h#Q%x^>ks#L6MP!yVft0cTj|PpJ^L$1{5v^dg=h-MszPBn!0wcM{$| z-FL6bJMLh$pcY*HuVPP&dO=~ONR@Q_3M~%~64y`w$c1iZ{|y}ViTAs4JjzE0Q^#b_ zGpsC$M}#fk#+elh|7|^Q@141xMDj@k0JB?q!|+i}IF~*II7C+gEt>*TS<$Zf8@`Q@ zygD!Axkzr901YQ_>5>_QY2lv6%pt6%g8ckUsQhFT5Ae=-dpF=?igcnERzleBU}yOa zTL~Z$2dH*Ve7sft7+9v)R_doV5_`|zySxe%Fu2(fQe~9DpV23v{sn4-;G7c>Zc|L% zBYR02DAZA(O8}qjhm89NHU07#*Xt}?6>WlQ+QmIk zR9G0ln2Uu9s-vUh3}82bS|-6a#I8;2Md;7;n4LW!*`gpLz4Wk;V*?v!|z9w zoOm=Uo(t;*&6E3w8p$=?i~R#Fcw9+i_^*(}YU~~*u>#eCidY|vB(=dn?{?8NKQRMK zp6uPaTWQ@MF<>7-qYslN89H(D!0&bukANXruXDZqlnC6X$O=of?1*5@8)P{5h7A%a m9M-`QlZZws|9{@xc6@RvTkTps$&`))Uh1kSm2xG^;Qs;l)K=sk-bCq-r0NeefxZW z`u+i5k33Y@J@=gRe!XAgInHMlWjTBtDjWy|g0CPiqXvPXM1gO1C@T0Lld<<-ArR+c z1sO>V_mrJfH+Mw)-;VjoogXR3$~er&1{g9znQHB!q@=hZOl0UQCJA8<2$DwEbM`ll zn%f(s(GhT25BTG#xh<=PzOzo|N5MlcV`2rGJ3Ak3i(PHs?DE6Ho4D98HZk_ER}aXb84au86$cJRw1wQzi-?%G(xe>+l9Zcj(OWa`EzHVlF@{9sO;!*Tapklv zeiL%Bp00j38PTZ2(kUKIb%iR>Df!skL=uW(M1cv>9~Y&IEZKTw*HLXo?ODT%=dWf> z5oAo!Wb?Z6Aw+3Jgzojt^T@V3u3DoDau=E3X58h0ehlsj>WZ)9825H+V)n%(o{<)tM9?+bGaYm}~m0q^5s zIbqjr3M#6ksHpv}hmj(v#=05>f?cs$aW757}Po} zw)mnoUmx}kir-zAchVK+=ez$a$b+n`ti*l&Dtddq{Oi}R&CSi1@$47Nk>cK0JN&97 zbt9o8%nN>F=Wmm8;XTRrO^M&X-)`om5zvdJz+zHT8lBda!M)hYeYUF8?0wU)*Cg!n zZ#2QsTN@Uz*cPm=IPZ1TUszI)G;H>cVJ<)lId2T*yi7=Xl?z@)bKm=UX4kM&ot>RM zkSg4Kd%0DVjGeAqW5*BPHg5RoV?W>cxloq?O>>|dHZ{G)tnEZuh7Gu@4Q}M+j7$Cq3jv1dSDUqO(4K;;T1$j)6!dh!eDh_jSw)R00m^?Is8A zBCN4ize9+=e*N0uwudPJy|`FU!y=%eprw6RIr$=zPG3i--hN(;X0LC_;hKy?D;zH; zZc>GXg(W&V+M<$@?-`D3!|b@>0GxxPT8lj+BV&$badD9~wjetj-6z)yyy*7M!J%x@ zcA%#Rb$?inUjNh0iK?n9E*U#m7|!pWyLBxs5(&Ly4EU=K9H@;iC%Rx#-!{!EC)u7n z(dS6$w=iW|b#1_Abg`vR?$6!wkd+NA*$Of)YsPN_M}?qEItb8!Yo4nj2yR65ko_7Kx6E zTEHj!%KSOiukAqhe7x#_NLF?HL^)OHsdmK*{oQ%z!Y}`K&!>Ain^V%#_MC-^H48^J z`+9p#2Urzi$T$sXh=>kWVqXuW2##1+i5(9~S6U8QAm3leqo7&sk?{5_rz1RNy-R)TrwcXq8!exhRj5(HL zTxb0RW~;N^+1>rJJKV4m2Ap3e=pC9C7#|Vwlv=F};qtq4YUy+=DnC4DK&^fA#mN~dTZ4s#^@y2yf3k}vf;0S~77|&}_XywXG)R0|yOpC)*eWQ)YD%#G z+d&is(z#v;%;RFV#*Y)V@w*#-AgW_Ys`-8A|`2ZezxLrATpBs&hjqy{S?b?bB zBuTRP227FESO|zvDNm%pCSJv`?G82B;AweCq*q@?n`PJ>|)~Z5`bJ8T;_BqH9)B+9*v~DvQNb9y& z_>MxUf`WqG-Q9T~{yq*=wo2C))6qM*KD&xsdGjysJ6wwah7m(Uw}1Y1XX*u3yr4)x z3%yJjOie{49cgWAYkNdibbNdq6&2Oe(&8Z+ZA=lv{PAqoZR>BbbbnT_m7cYW94tVH z!$4`|8&|nq;wBm6KkZISB+b0{csRD}5l5ceJ;sI#wF0 zKM@y=LbmHZWI9nVfaMI498|XYB*#7|*`oG145vbS?!+Y^P+QKK?QI1vN<%}V4ezZc z0&xR&)xvV#tz@y$&Sd2}i2a!g^Opt&1|}v;;Hsb5%?OO*8G%jxROiQAP)k4|xGyCj z+$Y)Mz3lepewH>K_N0Bfoy?RC)2_6@r{di>HeHGP)6=79k-*odSB*p>|NK$2@EEOQ z^H*#0VG8@OIzZkuf2OM_>H2xZI!4)^_p9K>RHNUG)uf>v!FRDtrRHp?K0nn#w8akF zAqxmd*6P0W~!*DnENVGO;z=o)gNYARVbt9>2}>_ZZbPr zFL>2;XUgT~WE^Bm+vAO40kLFvS}n{2;{JM%R?iZlgltNU2N)se)^cmfHj&$d1w+nM zZ}})KJzii)`4#2j)Ew9-8hd=+LMjhC$<>g{XUQ^_xuzl$`-6gPS+}(IyB;)4NrlrM zgIfN>cCrFdsHs_4Ra@)+w@90_>3r#3&1`&1%5?{|{r&C-6_c9xZB*N$L&NORT0gbm zdovT0Oa|zn*i}*6qWgNP+vUktLRy+Q$jTVFWX@ZEpK@>vq#06MXelr~&UfHEKWIsc zyEbhnNLJwPUio6ZD(c5hL}{WUIaU#FrLb5{&G|Xu{HT9%l)7rRyxg?Y=EV!K z>;1NxSyx?fhiQX}wjlMhcB5ujIefel!jsyKd4;#`q35@y+irhzc6&HR@Tsh03vZC? z+2!cItd9#v9gDJixZo_|BOmwQ8TrqS1$9oBV7|3DYKm2gtM~sn=k-1@F%iP_@F6XM zoQ1{OXn}fSv%<&^P}+h61K)v|201vGke=holdX|FLeS`8NP^rSoC%kUpfRrN{)uH7 z@nJ2Q5C_L(ET4*XYLEsLeibSH*+^S4ewKlWdaQ}!`8on%qN?tx>)^4!BUskCL&#CVY zY{b%^r&QEY1~qp2pnU|z7zY=Zx?{6stA1p2D($@rnL=&<${!cG=t{$oEc-i1*n@29 z^?jKKs0uJ=|9C+}o*aL-RJ!ag4ByiGG9%^kLq&n=6+IE7yuhNYIsg2QE68xpLN|3h z-XJPLmq07(0k+enYkhD)fSH-uK9}2FMu}EF5()45LdgTVzR0n{H&~dMYbz@%iXY7b z)!0IrdW8r6^j>tRDa0^CQFVKbA~kGnxB15P)HO6nV6dpKUvuE0{T78zD;|DowKE)u z6Xtf=95Ri8n*#@n&+4#{S>{xA5++8O2O$$nfLI7${81Eajjb&V&om5bU){LRAr8bLcDuy=Lud+=@pwM|t~`{kv^y zIy*WH!0+2G5{h4^!$ZN*bc*pul*g7IKYpyAW_5ivZaN(y_(Y!y;_oq_R)mfc!{E-F z)wlQ=k5_+$=e9>#Re#wJ&A-nUEt#@$dr%>=wG9{V>~|sRO`*)jJk0D7T$l3oonGw5rk^dbT zkw8((tB{8rZdMnG6Iz@=vw{!Vbc4RlBxR%pc7>o4VLRq~6ts;nc6blAWM}L!c`yfP zkr4UVsrbUAIM^XmTZs>tp=vHcH%l63wlCH+NwU+A;i2jo^^BohSifuo*8)m>VJf2s zW*2h^-ubR=OdAWQpT0^-*1wnnysma?oYn_^Zk05EezUX5s85?<0n8K4Ye_a_9D4VY z3KvD9&D zINHn~R(C($xo%Xxn{-vBh0)r@2UZ@GRxUOx)@UxOdH%+Vq@J^InBJ!YZ81Fk1yW|w zWFs!Wh1w>midK&Qq35Gef-C|297--oJ9;!>*%*uqJGUys% zV-i_AE4`4VlhQRlkKGU=s;Dao4r{ycRH5E%a#)l~=tb!0{5x=;*v3+{l9ED&D8zjK zcsl8ehP69gGiY6PUz!lV&={anT3QpJd$|VR*}1tvK|uyCV~G2vg{126S&^Rot?SBk z^ZN)A&7digaJ8KuL8K@$zCP(Q1$7!X6@M4A>SYLRsfV9(e0%3`t0s%Df`gQfVhHhp zLd>1RANavxkN_-r zlH_Ziu^HW-4NprQ|UI1i}u#Oa=E0f|4|%rS?FW_--7F(UDw3g!YbeVTHD}4 zcxX}PU1V@g6&wmKFRX0z5GFRrR#9Q4L7UO+F^$~g!qk5>ce{jQ3@NG7Rd5h_d1}gJNIR7{0S#Xx z_p7ex)J#qr;yI2U0v|PsIGk2N1w_9*y_e9(B-}~is0*z3XPI0W7?0uofe^TbmXw5i z6}H7&7eW^Kbdmuz=j4#+!H4XWqY&tuCj;||I=_TIx})^=xgo2<`3hz&;V|)?e*GrK zce5E%kVV&6WE%HGq{3Ibp-ja{g$FNOBIt&nSsNwqXNN#WkDp-phFDrLd!(xSL74m$ zJ|Ivksu?{W9iD;{xVT!#_mg4JH73OPhMk+nEX-gNpDy8qihe`iG9(BMK^>Ds->q4? z?zd_+Z*o?|Mv7|oKF|KxB)TQi?DD?q0hC!)1@SYx)s+9`__6J?BK?(?=S0}X znvi-)YzF8`k=bIcvSGLrasyi7#$<_gc$Q@(en=>h7nMVmYQp->^>SH?yG+kcun#J92`Ac6UXs8eeO_`u#`;;`vSYJON^Igp-~ z#j~TPq&35gW%H}txEZGM4E^hRiH9cmiE*8CWk+hxdu300SQYAH>nBJNFe;FzT&m93 znb4QdF5zy2ml$RcD*?qzEhG(Yd+TBEr(6JG3S+M6JNdPCe0Td{TizSt?qibDTJ``+ zgh7ERLdB=hn*DMK^G7(%9}cEI3)FN<4S_6;XVHErP}pzl)c0Q*Ey>^CO3fLp>`2ZT zXv9gNlFTco`8tLAC%gh58D>CnAu^?p4bcd0SuPexu}+FHx}ef5JX?P{{q1(kR|NHe z75@iiRz#)*bV21rE%?Rf6bg%vH@WBK`kA&Cls>uYl0ME<1;_|_E(XP_)TRp4u37&X z{jTY-nc1#cG=x99R5=s8$m6P#JNF-h1WZLc;CaF_GB9MvfOe!MOInbIKIx0m7?tK~ z$(?QYx%<{|+XaHiwVlf$Q|DO$(%D9N>@BTTL-D6qckVCE(x*z5XdnoF8DIIO0=8FW z5IBzH>1X+g$i|;tlY!TwU6bK{Z45p|EhLaIt)F2f->-cvWnjh>`x@!fGI|H7Qo4@h z!of~zNj^rZ5+nG}pRU!!U7tPAzG>uqO(H+qjrW8VvC7e(MM-Od8vG-S;;-0ynNGNr zXu}zunu|2EQ83ao=ASox!Ormqny&e<#*bao{@cw_4Y({HqEOoXAb&Tr$g|bA8~srG zQ6xK9)SoRWXtf#b+c5+?y}#Bkb5_KVGE?n(>h!VVWJ6Aun_%^gEP4{2|6kQ7Yr$+z z$a=|!b_{%5>SvkKqYKqUw(qoa0J)9J(*oY zhx&AAR56sG^m*<;-iR9$NhbEd19X|pJ2Z-OI5Y8^Cj{%f=cV9kdGNGhkRoBN{kfnY z2u~*#Um1)<5uIXw~ScQz0O43FLLY#^^N) z`pU2pUnh2TG;yf3DTjk(+GcG_H>fhHw08C5o30W%fxQcXg*kvPMd{3Y%v z@8mQaChG1#w|x&i47J|4%tV`-khG~%>_pB&3*#@9W)W|r-B2rAB!Ud98oQZS&{pq^ zjMfwt<*g74daJ^}^an5^rUiD%MM)AGsa<6=JL%Ks8X6Kr=~_h2j=~=w`MZduvb_B$ z_~NOQEx!tF0K{tmKiCQL`eoTSV-{>FyTq-qoy5I&@-Ls}hn6KDQ?-REd_|5t$a^%z zj{lC_5fp;Lh8p<@JV-i~21HrxS`L~Yk?AjgLI2*3(do(iTfY|>a258dfr3k}TrVP- z4Jtf*{gO^Z7>s7H!Ix%Wa+%Xl7G*ZQZ{){?{IKwrTJwDB!_UkW9c3nJtHWP#62LGf z=NejH7Q1QcQURxROCx6pQb;%s4z|4RnpcSe=3!{#Ywc3L@jX^0lGq;>p##O++@S zre_gvDh{fnhjS#d23mfqh(|Xi_OIT+QB(GJog$)t5}7K8AIZ>)@SFHv`%m@<9Rc#_ zhbGOy#qe9d9Cbw~d?RhM-M&clu-{OSRW$^U*GdQ@zb$JEGn}yM^c9qD^6_QT_ovK~ zMkC2NPVsCI_J?V63r_k_iNyk`LPm-+s!X9@LkuDRg@-q9gb`&NCS0v9l$2V1UMnG5 zbpu+H49`bWBkX7;dbw;O1EN6eceq4iq*H5*;VZxfX!Zen3CU7j z4x1Qd&|JD7ONa`s3hK}a>lXv`?!NyHrM%oIPobbPmOD%r@WX|48h?8Uz{p`j8_+IdLY{;cZCd?$T%G8<0Hajf5pTr1Nb(2A0JfZm@&$)LZ4 zdQ}tA_|veLpxhTCLPdSs5RwbSfbwF6sx!);(7VYlI5O1ZcCf$r!?0_z?!duO<+oa> zf;Ye9-{kUBxknJuKaBTKjBTTO?is(E)i@hB%twx2Mv7$9M3<>ZqT-*7D%DDMnAiTY z5l;@{2aQkRyo`+Qe@7CkvX5(96mZ?v^7d{T*~EiF-vVq(M#hD^V0(KT0D^~y@7uVv z!dvt6^8t9!Q?X521t9S(xyaDWiRyRLwY9bCsgaLOa^#X7&9CHwI)4pm=hweyZ2M#> zUNW7iLU}+`r~qubT^kkF4t%1pBp9w zQ#_;~EqZURPInrXLZ65ME&?z#%{Qmh_xQXL|Ez|d9v%ZP@2DB~yU7X`9-gE9#Wuh_ z>@{84IXH0TXutvh$1v-;_Y?fM0c-&nAY&5}_yMxMy=`j|mU>)70`X;!iCyt2AWX^0 z?<+_s;F9st3G{*LopN<>7Jpaj*Wad5zG2AdAh_K7bho8XMN9kBdGn9saz{>fww}jk zPMlg~Cows>W#y#p^JF)k$j&TyPZ(zt1v&ZIzrxZAj+JTqW>K&6{cvjjIfpj&5{A3nl^G)FRFBiP@}>&G2YNZ6}lcwyy>evbrFn(3?brS!+~+x9O9 z{Qdn=G&D6cEzlii>s{@W~hk%D~|nj>f|v0z#JeW3oxtuNV|VcE1$fh1WKX zVJA=%?(K)1MZReKcG)&9bejIxhG(+vgL0Na%4O~;Eit<9jnu1ZFyQf2PR^8@$^kO9 z{rB%ziQG9A6>2frC}^0CfR0KPasj+tMMXtsCKEVO2GD(>M|PTWC!(UEjr{q;#>V#T z-?M%|O!ank!8ti=bcz8qo|OARgf4I7vBJs4cVbjG7T#gfDeZ(;5nU0ZH0U0`825ru z`Y~QYJDNZ5KhI}B3m(M{fYnSFTP1=0fv{|(lz zAkTHtRVQ{s129et>)^7ZDH?bbB&x`0&LSK-UfQ_7=MR`ZEjNkQOG` z|JM4)Q(S>_hSu&a%simRmyd=t2mbPaIFFQ327yp4nBK9Q^8-ZO(a}*@Xz0HanIPkU zz`(JqhdqMi5mzkV9y{+Z`~vf|>q3h!fNpsbUqONhXnUS>;bock#sf<5jlRoRy~~ze z(}jhs>cso`WiIOeC&t@nbX-O)uf=bE$Im!+(gN5U@Mz%cWJV&L9Y1Y;sk%yW=f*kM zp0yP-C0p@WI}42!Mc=L^$6f*((}eS{xdF-H(b24(o0pfDsiFMM`;DOtfF(7|&Oz1z zD0}GbAs9a37`+=1W!f2`|6%njfN>4IFIbNFQHESnwGHCb5C|+h3K$t#wdEjPLNDoq z2TZ;19UaSatzwv;MZXuIDb}gtPVR5AG@;{2=r!j~1goED_+j})oVayOG``tEcDV}&V&PyMJQFdVOII^SLVln^#^1W zN5T^jma1{Bt*wA0q_%H-#=y{W_Ns4<8&6u5q_p$+_x@!V_R$l>nnX?jm5(GIY0!%S z&UgO1zM^Drp2{TH6lP7_YzvkwJKC3&PJY1WOc^ZBKUv)$(-jNLQ|7~iWdqA z`(l5tiIRVtPbCEE%rI_65Iiu0u?XMp7G1w&Rdrj5Q2$+uS!GI?(n**cv<`qw-XO+< z={(*7NE`eyCE5WfnY^MR6`!>RxMa_he=G`r075Tzu@Wo1TbuQ!)Bpm{0W97E;5bA9 z#eTKdJimOvu2r@GPDAu#wr3k?EflB%a5tJ%(E`$C>1XyC{gywFc&huU!Tc)Nud7f) z@n>0EAD~h+qMMD#N`)IT2n!2yaO~dQ?%mxVleb7!0_=)YKL2>)%$(DWJ4kk<^CvB@=xMpd*_H<2$lcElc zjM#0!NPo};ZHfDsEP^|LeQNsEa)Q?RKYSEKX z_1B^&aeEK+$0zCgi0SF+@4$z8j8{mubv!SfV3)eD;W+E2#*}O%!u7LX%1eEy(ig19 z%+g6@d^&yUEgzbbN|~s9k4#B*AZvTjBQBzppkw$Y*Xj}G9?)|@QK?zXY_y}wOR2wy zPnAi0Sj#S2KR#c$#S#;p|K8d2g>d|Wy372#M z+E#7hGB^f&>2jfjo@kmj?y?O}azLbgmPb;@GlxZrwRbRZ74qxR{818Bc3K@Mu9e!b&^rA7mdRgN$Ra8-z zxX<-RpHKa23n`-g8fD+4KG2N$xpd@>3^61Rdve>|a-vhpEZhXLVunRN>Hq!u^}>Ya zH~)VxLeuw^N`W^o;UStEIEu<)swNX#~NN8aVyaA6rw=pCnNzO!^pBAa6fqNi(L zG&I5%)YtQr#L*+=n*QJ*t)8uYXSDl1ZdD@gH94Pkewp0Tl-uwpD)^hiTqp)S-g&z4Op=N(em7myXg&?)Nlf4*ClV^RDd5WME!?~TRqgK#vu@zKCiX}QA?Pp8 zL8J9xn9|s#OQ;f~u8KSCqVdgyhE=@26b@{IjwDY~WXwrH694yErxJY|*)RQVCDQm; zj=jz0C+{dODX+iANyVvZ1~mSJFhE6WGrEUqo)%3pw(^GjQD~|eg`hj9_y{-oKW)tA z#>m5F>Y1o~KurcvBUQo5VVTEf=?oa{Rt!vgq|XJDvWyUfM4Fi^&;Vkwx**KqfZMa> zAVP-6Gdoin&zvCw^`y-|eU?V2LQY4d@#V=#Xk>Qne9mx^>H5!HT;60bFQ1E{`YIb$ zEF&=hRs&tN9s_Ta=Vo&%vnH#k{$(bvs|%LzDO|`;Z`aK}hW8~s8Kg!3^OD9lf24SO z0Lb8UA=F|Le_*hEJ0s#3um$ArB)O<+f;DwQ-0wIzBsmgJQcI8hLBJj4nd}}RQET~N z&pG9M{>f-@@1A3JOV{b}nZx0MPf^7OT7B&^CI;$scOfA!s);VQ<>;E_ao}4iS%oUE@Fxr^q9nHgc7xMV7k$uqOAvM33tfh1$`(L%r~v~sVy{% z4PnObD01H5K$nq@Tl|}pC3N@BD3OBu`Et#t%u(!N=M3{GGoDZa#w$+r_5<{6rI58N z0%9T*B4}uH`s-(%^hSYUp(6*&%U!d9xObuj0PSg&?z$QCecPy9jNa*BQt&oEe?(oE)2bn>LY&_kf7GZ6dC~_6^U~# zfuz}9{&(y_E1XfGS?!Du_D?xAp`E(AQELB+ z(OgY@Y4(~Pk)bR*3=q$v4F{ZXE)SZItuk|%T%#N{B#<$=@dG&x4?i!qHO5OA`r>(L zZP5UOwW4%y#dbqa!?UYtH^ccVF#V<%!bm|ONsez(*N)xzmnroaJv6f|zbjC*eyVEl zz~0*2d}pc(h_?WflDfRSd_NEv{X#_`RI@aJvJ5D7EKN*IYV2m`ypEKraSPMfpsn|F zi*aiJn0}f*UU>tVMA46bpUt%eQ!4$;>lEjG`0iw6$+DeF{XL(npjG%SX{_v`x_5bw zr2lQ5YH%xshY~+h#>2zAm)-zzLbcuOC17om``7&Z{6P1Q?YF<+Pe?{WB67Kr1=vtR zk$s36=q zG3f5=y9O$o@hmyQ$j)U4f$v}-DlBah5)@2?9UhOop58efH}EV5x2tB(!$wo{FSrDb zx|JBsVjag{ODWW&5We*K{eEYfX`F6UJsG(xY$($V8_sE4`dGop`SQQ{Q5;Qqc_`q) z`INw9(-usa7e_`)igFIl0tgkSe|ow}!ul+ZqzOfj|LWQo8#apx3fAT4-%qBI;5v8g$fZWJnF)01;q~Jsa4C;%mQu!g!SW5FmxV)sv=+i6SX&{u8l?kx1CxHlI2lQa)`-_K%hjgMI5Tn~7 z4*hy9_IS|9L-t*M;sQljXeJ!8?b^Tqb)mU90sqJj3KBF$Ynx(Gh$-1ps!hxc;M{BZ zd*&OPtSN)e#<)Q@sV{}p$RyQ^x{!sSb!mltnTL&`EIF3?Gb=#MwAYeW#c9a@0%{5H zUx17U{f@l+IXI2XtSohPbr*d?TwK#%I7JDT6zS7NVo8{r zn~&J!X1sYsfKMA9{g6Ta(TSfr^!I)(s;*E&`%Bv0T$x6S@N9;s4hsx;WBiHqp4(s` zn|KqyOgI{f;o0=)^>;lrwV3GWgMR+`#^XOPUnX#zbQpZ7$&SPEOWzWL{H;6s$Sc^|ougu+NS^Z5b zC@3g>qo_ch*=SRUL~0-a(cct|0i&VLe3a=70AEb5#FB6M-+rL-R=He<7JcK&fz)~INzU0S0 zDyf;Y#m~C!>+Wr|2+iD=?}$}B)257!NyFio3T|74=o~eJf#3M^5V?TkiKqDyQ}M){Eq@!dwn+22n`Jg z6b~=Xybd5bg>OoqC-?g?bX7EhthcnZ1h~@&QaV-Eq?D9(9w*k27-of-9~S*dK0c7= zG8|X)KLI@H`uh50Yy4iep`3RFQVoO)XwsFEpZBK<^Yin&jhEH7zg((rg z3dWmHK=EGMbZM=vJ$Wx!?Bf}n0l*9(vVR>kJtbIohvVVmUNmG#l=$7zt@#Q? zQbK_Whj2{esoy;xalYfm9CObNz7dw`^Y zf?rZ}PXqNp%mn@s!85B9{1A1{FLfLWkoNxLFG#Y@GQN~g) zbm3f#Jd+4`fp`+XH0u{bW40r4raRy=5gpi>AUL{tH+wMci>g>45u!WdW*JW%bnrVr zqFz!q<5ZsuZ+Yakcq#}8u$qrveOowi2XbA=@87>6a5lC>Atu2`VB3LhWI$1`|?Rb@$hAX7uozD@29M7 zl;PLVKhdrd=4Wcjri}ATG9S+Qm-enVMTAR`yJf|*5u}G)%`kFK0(^W7hvN;^Q##6^ zU)S0x>W+HK6th_Nc9fW5cOsi?uBAV103)OvoFN?*eM#;80kh;mv&xgQKKuuYkxXvn zP{At|Yzt@|pXqB&?I_v5_&qPM@f86%9kAWcR(SNBM!6ATiZ z7KNdf!!wn`g(x8)=5p*XL;Uvpl=W9eC|+X_DlhX=kU(hK&(|1N zwtceC)q`H+s0L-xeDIV&hb?aFTgOQ~kl*{Q0)%1;e(W$+h6*@Lf@Fw~V}dJxPfkQo zP#ZBeI;ydzZJ8mpApOr0i=16q`q!oQyy%yQg^bBJyOXBgxl7J*G@^O`kgqI-I?%jGqiFz2+@%&~L=WnV+6ilzbovc{RNiYxsKrPtz<&W*arZ(;%*;@V9Z=oHZ zypMN!`P<(1z4B3z8jMI>Btri#(4?4SXvdHuN(o4gOm$%o_Jj-eZB>{Te`OTw25N&? z`YJd&0ejh;U4~NJ_S$(9I0f$e$;;zS(5_|OgSY(vRh16Hy8zh0clRaiyb*xU*wwAZ z4-E|gS%}v!KMae?3zM23*lieL>UU*-dayqII=%D%Z6N+h{mI`do(x{%#7~)9_&$!x z*z%7V!de699N)Nx7QDAvbR~xPO9>=?9R(JJ)!u|s{f6h_;`0`j0B`vWi;0VK1|lIe zC^mLMe*V6@2-sh%DB3OyHU8>%FbMi;=K|dCt)B@RpV5Z*BVCz*HA!Qf8H5VEz|Krk zeM1FPXq*noaApYPUx49-3B`+E0Pj@WZZ?zwm<}YOMxVkv-33c;bmgM}2+5Az;-5`u zh?F*?o;eIXP{#nV<)nszs{<%N`Wm{0PKeK^JzC{|Jy*xqo`^?u-%tKP% zC9!S9$prC}IKe?V0GBM!m?51+5u!sVx3vhb#gw~~>A=h`k=>Q-@)4x)LtmybN&km} zqwoSj^!^r===$+LKXv^3D3XN2F~%fiWSnJWhcMVM1$m1gEpQ&;Lm9^c9r6jRTS&CtIgrvxby(2MemOqrn!_dH!jg)! z@jAkX@-cM7du2LUoxcyI=dGn++`o?yg-G)EKN1fa33uv%8p-i3$744$+t%TJdBfmC zCOFP36bRMOLS|GSykBNb6DZ-K;4GJavHs%n@8x39jS@lcmR5-i`f}1W;b)p0bwUpL zwgdZ$Tg>nHT*XIzKMsgKM3mw29rQR0=PejvBO5RnQKr^TJu2)kj&bqOjs?whz$m`J zsWA8R^h{_dx)U6|;QQ<%CNq)wB*2Q!=g4(dmWqr&sCcb!>=y_=YQ+d!=GXA7RoSV3 zVE%(9Al_fa1Fyiw!5NqPPGZ1L!-|U+`T)JWDefhA#xb1x`NJmifpVy9cuTZXvBzLc zDvcZS_kvAy;KjNoWRf7U#xGfLKW?NIwU_H)&9;~7Ipf00V53*2#X*Tiel#Y>wU*FO zLHKO%tUq6m)-U64BUc|&U#QBPV762xaoe6a09Dq~+`PMD2H@+UZ5SKoB)C6zLOo_e z!0(sQ?vLyB{fpi+69#Wfo!aHoeJhUYg9IAu(IgP}F1|^@5nxOlP{y}9!Dx80P!b?o zFSOd$Ep?%d^2|^abOw=PmvA8D0y@ERlXk#zfZ69mY_~H}(#RKJIy><6!sn2dc6bn~ z_RL7g<8_NKee?xZ#jQ;DGbnm)i*;hHgnt-S6iM8Ax-+NQ*5nBeHZQsBHCA220$Z>s zRWWAfY<{eDJUkTeNT54#QdW-Wx7eDhdeXZm21db^6*CBMIQ#-GjSe7leLKW3_vAPb zMD}M1Ev^6vQd(USYEu6&SD2<<;GBp1IfJKgg7J30$HjrMoDKs^=;m;Fx+f8|9`T~LYI%fTq*$OZLz<1OR zgprdvN+Wilb{DAU+4YL77)F&S@drsRHN3+%-%< z?Wc~?;?;ynj%(-e28{iB#RJwsuBRN=mm=H4L!#*v2n?TF}DLo~i5t#}FSb8f;wkp{7fZP!DLST?L1VHxS)&Q@iHAWbM z@^I~^0q?^#SKlMff`=4 zE(}IwiobkR56@z!mJ^M7mp6@vKI*ep@SXj`j3Q3IzGW~l*l5RtG+F@k%%SXqUozo+ z#Lb>(ySjFDIiK!sfkp1Yr%2^&%`#;YDtn49N@7EY=q29g=zh=;K0bSBrVtbIAupkt z_wVSju1Vjq;JX^GVeV`O1={^vo-@lL@ z&Ad2g4UIS?GB7Z(yu94@Gnh6L@Ig%$GOb|Xo zMbIfc8%(K}`9*no*h(Zc!f5Y}Kt1Kfm8vte-j&rqObWK(n2yA2wG!{>+oT(()-Uax zD@8%`gZAUwP+ZQ0`^Zxy+1Fiy6=Pv$?n@K@wD~6o%xMrcb@kYo7}wnyK~TrpO$f|3lWFNvfPtN<22 zFsiww0qB*xto#}pFLhYtyE1GabI z0wJMZ^4w-m0@Nw=WPBtB7S2rw>jYuMb3S}DESp1mT$4lAFwA}tjyMvCQI(D%pmXKu zKOO_#$bKX@+?WFN-9Qt12uS6yu&~nle@Gy(j(9g&YS?Vt7Ie@Q##vQU0meE&xj6&u z$+Z@nVVC*EPqiX^l3@{)8QXY?9Y-aU6 zK8=71EC9@-1U~T4IJJgZF|#fhhgQ?*TtB#`a&f%2jk%v!_eLIIPXp-4@Ah_8MZgK_ z>7}su7HvG-!uAlMlT{^qsxt~Q!o|@#FlM2-gOvn3;t#kNv#!(cTta7oSKz7Tp8iDC z>bqn|KK*&u1B>r?sFIj)XVN$(0lEayFTHdf8F$8aXI)c4OAqtAd>JIGC8Ama{%waL zD;C_PrHydWt09nCG*!XP>ZDwJN^Y~RD8?q-Hzj%>{=U1o03R#Z91S&?Em*x1I1&tOEw@PSD^o(1~_@kYPBL)ck=?{Bd#=#FY^C+`u1XHUL# zlR5S27HdMt!UCU~9gaiF>h}6;6aEQ{{MkANX^87I@u8z9W-@yDWf<+XC!lo30IDE3N_Iy!-wFsN$8N zrM?%iPpc?)exW3$p%DT952CfodaTFxIkA)%Za$F|;G9^#02UX(q+mzKJ-ugBw_QEK zAP>IUevB+1&WrL}wER~X2y`G<0BF+v91iODY(q_Y zx)0(n2OO?d>yUv&0%p2QiydP3^W+{GD>3+~Gr}9$SqW0S(g-FY9p3lluOp+3Oz6?$ z8T<6iqg_1!MxO=8%+6*8{T={+N}F#%OEwHd@=O8u7!FvQoj*BY@KDe?U9Tn>0$2P% zZj8Dj@L0^a({f_3TwUu_)PPy&iDxk za^Q=b`LLc^^x6${9YB0E2;>eqNMx~YjrUe@&At4hT0Cdeq`XM0++?ve(9r83aMIR$ zEzvSpIkhLx?mZAuDHjuN0gMHFp6?mu8X- zG&Wt4mz33O*FOt*wr^`_1K0h=-fm#>!9U)Nx80BzdB0!%9>Yc|FzwZtV)4b80>ofV z8Qn`t4FsYcuMhx&jg2DnB#-gEKoM&w9~i(WbmW46MUTGClQk(99Qt!6@WZQV zXvjRq2W2O5pfOdZa16O66wCG>F9XOTJ&uI7MI(&Me=?2@vv$F4#uP#9y&#Qm^9?jS z?8OI;HzX23_A$(0ualCI{i~;=qGIa>xx}?juPE&;ccPZ41ZSLDe3DkYdEpo^v*5Ks zq0oIh@YD@G4)R{n)rM;s;KP?!fxrvYM3W>X`(w(URBo%-nVTAtt!Dyuzz{qp0JKiP z&;RJrqt~fIRb^#S#X=4X67uq0z=OFtdk(M`P&L8%0m%rpsK<|zt$Pj&*nDMVWE>rz zy=2Dn$)Qc-wNe9)-9+qallD+xqrC@D!9xhbBk#Y`gx%~E6tE$z^dJ|4*})pz6=&!B zwg~t-rK?ladYq4bFOk2Z&Mw0v|4o_GM*1{z9ALC_hrhml88@&qC9 zO!_D9C6A8F_YgHPF%NjK1F#`3kLv4#h(|j@kiPjalf(!!QTb->c(d55h6Px1ENA^s z%i;WV9vd0h#H>Yz&9`;y->(3R22jS9A3jQ>CsqC=vc|K80OS00z8DOd^VllBR}=#M z7l?zoLnvNYJ1D@77q}0Zm_S=ZMo$k+t(U;i3@k(&v9HC9`J{1ia7yadz~eOjHi8s$ zf1kl43cwV3ucM1kHUiU~q@-k}MZe$ce%`&iG>?A;_ibf&3=4QF!p-2PTPGlu$<50n zq!V!msfLJ%2=r(71F75mNB*}%>EM3Gb{~Ut2F>X$xJ95G)$deKKYus%8~Ma;qHGZi z1AAkIADI9^sLB^8QRWvQ*VS)V^y0PMKS2VpgQV2d!ge#Ypz~WGNosEh2v;a? zTOP)f3b9j3W-1ZZawuwkIML%7s6>&A0mc*X+>rarA?Gx(rFa3Z8T7#aQ{0!vQ`Npv zA5*4CoDgLwQ;}pQ5~U&uMM#E(ln^qDOc~OEBpHfKhh)r9rc4HYA2etmd;^^mjAKKH)vb*;6obrZD?w;ZK%tZg~#l=b_MDa1gYppc;86EISwjdhk2 zt(Ck*!qZL}+K8_3{5RXQE4|Wtahd2>5Y+)_fyqiqvoa|V_y}hK*?-z_5%>D!$&>z= zTi(FJL+0fb*D`Q$kPsjH<|7;^5E~l{PW&56ch%qVN7v5%#5^SS1(OZIz|tmhX{o6w zRH><{hxIWEnW*HNL7@;Tq_oG6Pq%K}!Y;+aE%msp><{`YZC%|p{2qYCkEKo^(9m18 zXNW$Cjr})ev3}`&Y6GsZrDLete|@OZr~21xW&p~Zu1gzA^Lgk^2Za|rWzPvniODs8 z8JaF!Eg!=;g50_O{c$NNDKRmwn4R+$XEeiXS)c%x{KS{!+cxt2QkEo=kqqpdRmH`z z_sOQ1;Kg%;t$7>kQG5IBx{>cFn;5Exm>Fu)dp+Kfeql}7kWWdTPwzMV(F;Agjliq4oDLF z8i654oN+r9x3R{JdE&hxhk@VV%dfI)m-NHbv#s=Uc3e?BEtPxdblC~35=EsGv4FEA zEXN^!?y3Ew^ty z|9Sz=tcJ$MDl|QqU_WnZ`5A(;EI{PlyKENQt&B!+v%QhkvJvnfstuZ9q)cD~m3m17 z1_IV%6_v#F^z-)TG~o05@eIQ6`bzaW+V+P(>4I|ekI8E@EhWJj69l|kEIqxwoy%^R@Zaz+#qKJ z5*Ib}o(JdLw~AkHiFo)rQ`EDQc{H$xK@Y>T<5z$82-iK9*ZkyM_G|98{=FNvK?XN? zO-`^ZC4}6(sWw~BaSCI-(l#x4x~oz7(P6N_rwijLNk^nBn2{q+@>~K+8!zt)oP-5o z^e>zsjv;H|CjWJAK0ZVqAvvan{a#9!jg*PkmvB)`0{ftpADDZyGikpEc2KnM$KgRq z@)+96#Z?L^eV=tBtjacP|NahDVJ19P3`HGdwdweEybx8i`g@pv`}U*<4@&)3+#j_s-SPidmy=)RoavLMZ`Mp3>6tnD zJ@$i6=W-q0R?W7CcUgT+<%s8rSMi!d>+~CS(j5L-aE|AI8TsXa-@_oPdciza)FXQYjfCFHU*blc1 zm$|1^f4&tlb&Pgy=*c1aUYYb*w0z3@ICOTNx3=bBXU7^+y8iFa=AB2dxmw|6aUbkx z?h%?FN>GKzPr`PC9pDa++$20Izp>}xT`$1Y`SziVT}=QLIv5g?vanqMlfT5HK}_D_ z6DkKruW*}qO_9iaQ9axU4Gqh1A`VJG}jAHQ5Wb6OTLnxcV)? zi1gh=G{tJBrMVd?A>rZSYwy~Y14^clvC5vlhiNzeQi!mdW*>gvzCvLKUiaty_wx;N z7nGTq_RoH)^m!uU+~#4Nulut9iSaRXg%YIKzk6)yP6}%Qk=58dI46(tmznI{va(#1 zRv=EM9XZ`0_e;_$t)@G>xMlQxlycGmd84uk=aKtKY1V-f?S>v}B5WGE^QyLErmxl) z?iX=*EJR5^D>}1%yNbS_?x#kdxUSgqiaq9{m9La<&UvTxA0!N#T% z+diVJQpGSsePN)`21rLSJ96??qCtLqh*6V#&Z+5E4XAeh@4>BwCPTGxYu++lkv0~DQ@CCEMy!aI?&wgp*4y>fAz&pc~+rA z#n1cF_*fPtBZb@1M(>hL>(r(#PdSbB4j8=|`J>nO`aC=0<04QH(u#|_C)^5!`R>@E z1J%uRML`L^3+9qcCcj$xa2a4ORgCX|@1GBspGQST`T#4Ucqk(+201hMu{VWnEWxMr z&BolPx^vmm9Q~-ob~H=6&a_DIcgsirW>VU=S9G()ohBKq2K;zif?T9QOQX@S=V%nl zE--49-P>f8gfgP91$S5*1R8E6go{B?Vg(6xbaZrZ?I5DV?YVj7E2`XWd*$X`Zk-Z7 z+`Fq}_m}bR*9C*t?1!$HEhud}a;~XdfB`RIKU}qnl6%2q$$LO;b)gHtveaofxxC;< z+34-Zj~^p%rXY_$^7hobCp5f26VVNToIrredv2}MtJ~!FHa*+QcS6lj;HA|&Qp~Fn zy^)bu+C$=BonLLUv)US3fNca`GJDuKGl-=qtPX+sSk99U-WI((^#?( zol5>eczqx{aBbdv^>Ymsr+3pvT22RmHUWmVOY_@}bDdsM)kgg=vgUBqrhHOPk0#BM z|1OjD-$=UtY?tKiJzyXpwb9#~H%E7=d2KdG%6}Ae|?u3CA5=EOrwR=woN_X zBGK#dNcq|%K)CnP^u(fh!GtD-g4zG&BasC2E}?|=?O3{BNQjm+r2z&cr^od4>94b% z5}eE*lebz(SQYhLvPp}`3_ttw%}lJ2(^^!h(rC7&5_d$Rw|ctKm#2J`q=l%vw3G60 zJbdPkUW;_v?x-|s=p*{2Xy4uct}CfzYE^yer`fc#ywtHCKZt`Gc-)c!1&u zXt)0Fn_8ei{wJ=Aydtj8PpL{AIHMJ&E+-xGu~V^65NVx5h);^|Tr&)M$g!CL#R9z? zD;~@>%ltv9;ZFdmt0O^Lqz4&q`Ps85RA0$==&3d`nXvCJWSwc{h$<>`&|p~6giUMp z$-_lj!C*u4EGMTRD{hQYWM^lyESXdq>zO76t;oiF^Rru*B5Rren}X0NK{y3IHZZ`$ z=!SA#4j(dG7|<8z1V97M^jYjVV={gdadaAC4d<;y*ad?JPU%VQSru^;gFr%&4RbJ8nm+4A{td=Yqyop>l#2=rqhn%t2X9>A zKF#)Ked*iU%AK8>Tlh>kbtk`YW?4W|87Wq}~T95iuD-lP|@M4J6vfZ?tZc zb2JSpTI{-u$HI1GyYWnQ?aupgB4($A9ml7dAJuBIMdnDJ(~n(t6ghRMXkglD?~MIB zx831S+a?B*3>_7k2fqZ7xXD!`*K^OIE}?@2ig#7q1|UONp}sc9fU=zg3<3%2jEI%B zzqL8{`$0hyWSybmzUPm+CK4e}pdJrBw@?$QK=#P4nB8b^L9YSX0HEFSO2czg48f;~ z&*xS{5t_E=z~cx|%z8N2p<8?S9b8c1gQO0p1Mj^)Kf0ZE)t~X40H>{ z!DGKo8D7uK#qFe9DLNjrGq*xL{gmC}{B4YA{aE{3b54L|Kxe#XaYpv999cO_DEhD3 z^tzP?D;;gkCH8ftC&%B`>kYHuYRO|ntB!sRpe{eu(*zWOg`G-2!bKaK( zf(3AG+V1gKq?&MisX@_1VLSOyI)qIcwUr3@gW==)(tzErbizjrZE^3*Y3Zf1HjuKP z%C4f##vj~4T0>e;M#BvV^*Pw>eS1H@uP*sac@DF0lI>0=YJ-Vh4?gkASFW*IWUo|@ zj%+=aL!2RWYJA2o1fRW5Z{9(5P@V7Jg{GIKzkjfC)Q4tPvRC5B=Lz{rZ!ttPbhs7Z1fPPvsj2Du+A2NzUohvse_i6@F z{L%RDLn*7*@XM`1w%tHSm*l4VWq6xu45c=$??jLDj!<xYxRNu}C#n^Y7Ab-t&{q+9|(vRCb?OSU{cEeTt)4 zbd7fb`5nv7cM_SLMn+{l2aDR+HMFA-@2UiNL?=`1I9Ne2Tp?WM#AcZ6JEt{Hvlul# zUs^TNOc&Wu4$JhjjyVtk@}b6d)`$}#{sqYY#jE$*88b!tv3O%q$Okgh?#MtfHZ6fdp^FvoRSz7yM;l~dz>xtDD{|@(w$6b+6FHF( z8z0{fdX8wo(L3O|g4;q)ob|VYX#I1kS46^rW<+-|1XDlTIpZ|gyK<*EHTGW%DW+TIK-S3|sUnF~k+8Q@ zH4jl<3C`w~2RIt2*JRDD7-vL`9W&BGFD8t;DPxV9yn2+P;(`X59G5nD_Vbj)Z|RM+ z31iQ)8;;J2zig!EC8t`bsBBvgB*pI7*OtI-`^@cfp;){Sm1wv5`OdEYNOse1B@OiC zIYYkDK`S>cXXAs8JkDxKn`|6dU#n1m7EwHE+&nZbUF~^Eag9l^r(iFYNcf3V#U5J5 z@vF8mA(hwd31xM&lk+ELW*0{5+5i zU{i@E^BzTng)8^S<2NI-7Z>Wil`?No+nTiPzB(RP9#B-;rkH3;$CbMw-P>F@y(z8B zwJ=}kMy#@`DtplWQij*|^V_Z}wsV8?B=HKXh_>$&V<~*o_dDX`#v-1^^6>39yBrX{ z%W&FLHmI}6O3l4L#p2*1ZEWW*m zTGTw+QsKCS)-gYGk#9elnQeY?y8fzDCgUSvW!la3wCwe>OLqJB(gz4d8)Uj)9!B5t-mh{T9foX!p`)QfhfA9Yd&q0;-@lgb^({F(2@AaXV&&@E z5Hg8Kwb_>v|I~*S`bVT5WB7}fxf-oCT3iEdOqn`^r~u;m+jCkIw#u$NJwTmsek`t+E%;ie*J^@fwfZ#z9jN<^F1ZIkUWi8 zs>i<=$l}!2qyV0(49=o>2EkzvF=s6N#+((Ysi`q~{Q;8(ItjAb5OxsGN+N_mA{>?Q z5~7!tJux41TaYU^v~K_2qdhEvGHtC^RZGZgQdrbtkZt|c*P$fS9Ux}?``fXAOTQhcwb$EyyiMpZTLY%Uej*bI_BaC+d=7F|R0jK|hDgZ*hu!sm=oxFB>I+EFl zMq}5(h@8{7+kZ-;=?unYe{jDmJQaCxXzSO+t%pJctot(mSaC*lS{Yb!zmto7dj8X8 zhFdo7aSBtj@F&FFy_@ecrcJ^I5BaXglm78kMe~Jacp6+?Twu&*s@Ccu{iwU-8Ikje zZ?MLm;zJdEY)*Xefyb?i3Lj<@GQ&F^yU?qW?6K6;Dy$CPEH+JS+^hpkG23sv|1-tB z&17_tRc^8itp(6!bXr2fX$GfV3{D6=xclp1Mv&4AaVMAPv3j<(IhmM^ zy)W(xp%evw5=4Fv)w9&Vwhd!XHYUoPKggzkm%5!rEA$7I+`((#`QqCU2IL_eMlwyh zbHhLx+ddeS>(~}>56dShIT(iJsFRXCaf)n%*3kngTcFB_jRf%OO!{BEo&cE?v0IgI zHCESy=}oGh-b7Wplg9c}sUVlu2-n_3F>yKjBYtNJE=U8mo8?>95-d#(&8GPFaZu!r z!&T?v#=wZ2#A<-2p2$VJcrk0e?Bmw!ZoB+BAY-{tdMTv_>@Mw9lKWg3@>o0EoN(x>IW(5 zk%H58km>}?BRF6opd{GF^8-8f~THkvXZK z?n7;<(A)n)o&h;Trw*dJiQwA!_zqnCQjbm*3OT_;0mhI*H}PM8tNPnhbV^ot)K@Xw zvLKbG>Nu^s9(imd{oK{of_n`97n9d5^}+)6490rhm_9$9cM;MT%XPNs5%zZLyJ#X* zF?>tdHGvdJd+G70CmYqS9KDB|nuGH%EIgw2A(MvnBsBFK@9;Yn4Y;_tkaSWGtaj}G zDIqCY1(uAMV4t7g&U&-mc3#|Lf7*|p{Om&n;{eMU5L1Qw3}(i_*!knmLDDodWE70; z#GNGsV00+c>5*!T%V?XBDQ1P7eW%^=6(~0AkWs1(*Dd;Y|I6+>l&yh!3gVdP za*WdD?Nr|N+Sa*m%QtGluct!|Ph}bfu+%x1n_-H`Ypz)|CMIS?=EkuuS?viVFL3hm z^0KkLgU1mdFV&XyH`cc|F*=V?FfanLvc+)DL73YkE{<&M#qlnyo#6=?;i=z~{>>zb z=?#0*ALY4h6sw+nQ2&cFZ>Zqr9m_hxv6@dFzgDGOZX4U4c35Mhw#oE&rIC+$M;vVZ zMz3%^dt&~!=N2Li(oOT@y%4;zBeFr-Ywp5{E?*99?$Gyej$?y4(Nzq+MN^-!wjhAG zw|tL;#B@&%y2|+_j-5Mq{?FAxs3G)L_t+dBU@FHpP0l!$zKDr;pY0h=#(=c+OYR{V zTTkcidbpE~Br98^vO2f4*& zw~TUnMrS<_mB!z@2Eq)!V9ZWJmvR`cs>BipB@8j0Wwg`v?p`oUxCa;1cra><{J3GS^Ot^7!AUIjkMn;80DVH^W zz?OPY;+NaT2R5~r%{SkqoO>^yYNru)^qNt{-tQm!A3-7ADPKfosYM4}FUfK|l9iXr zLpkZwmMOK}EXcIABhKF|)-W%Kn}JFO++r)t7>Ic{>+|Pd*VRFx zfG=NyGjh;zucRc72Cyx9$ihtAQ#v|0C*7TwZcM&UYl6+PIZh{8MM*#aG41$zW%XfV z*7No@rPtCiayw$G+CJQkb}D$IbCRqt=HVUpDbd+bqcw8JM-Yfu=tyyBdn9jz;iPTb zw{OQ2LHZVP=gt|!5-Qz#CEiPWas>~C{)6Z|UAk}Mp}s}*C{D28;2;8w;mrQ9#3Uf= zQAEriJ{;V9f%+Yq2xu)nDtrVd1hWAaPX(r85p6TV;nFz%yUa{7runp~=_T$B>8JlQ zIK{K{8w>u4)ld-IY`MkW?XH7@)`k!XCSk+ma2j^UDUO}`6bs{s1HF=lh64;*^FP>m zLPtQTl^hp~*x{2uH9<~vO*fT5ZC^%3X(`09DCxyuI>2I}M3s-;-j7B=-f3tX*4}@L zGNMC31;e`FGIswACIa=ev1B^lryX7YrnX-Gd&uX6NZ0Ybm8bCoJ%(p?MSMBy64d_l z|FTDE?hKjHX4l?MIo@@RhN6xnyPY)>gEC@DZ!VqRQX~0`Tu=Y!l-pcG!^etcN88cc zozA-2C6-#z^{M?^6Ec*NbnB$1-S-Fh{~P76$V1tG*gg)a4fa?VH?Bb#3uZgf1+u^k zJ1G&f1Ce?Y1H&H#w4(6#0z{23-&5O*9f`7#<$aCer4Xa$mLH-=O3_z;Q@Ws-SoF0_ zQDTX{wMz;rKRUfaVIup3n6!(F8+R!OqX)^&8-C6r!&I@!imD6E(I8}f5zG;4g-cqG zm$qTz-8dfD@R&puLHR^+WTU>vz*^cXEcv~0XjY!%&gE~;9dV|$bK991nV1MkzjB>$ z2oN^G;X&hnqB8L&0^eb@g6`MSE4|)5(bFQeaeUWhZvFY>JpBu&6|%(crn)?!Oi&-R zEK~h(Yvh?Vb$db{he1r#0`)It51xXDEC&zC#|SI_PGLH;EpazLXL|RHduw4^;)#Te zznuBDr-c3Z$>Tq4)TAEm@mg*QBMd=^n|A%EKyrVnDkSu@fcjFu{k52+_#mC`QQ2F~ z4?Ggz$*iTOh{3Hp`uQ=lK`;&;c-XG~kfu#C$yZDZl@}0t$s`?eyg2&yDtF9g723y-!x;4rCXXYD(N_!)zckq)5d8RY;NK$253P*}4-*n5UCIfglbKy| zk!1%MJMgh6T|FMkY+BI~kljm9e{(bBb!1|?n|(|n#toH7A`~ywR(N^ zC!jVl`TO7BVW#2pnJ!Qd+5oSkGfzUJR(r!XbCz*OE?U7od!9XgT92F7_Y;1_LJ7o6 zBcvQYC(O`VuGNMHm*6y*?`Z1@Ce*!mYO9Gk$v>yzS84iH+9`?c=3I0l#`2H$NK0c& z*{qR}Zpj!Z(CUH;i))r~6d}bllQ(a+D*bpulKm9eKea?Y658=jnz`@#Kw%g_{5Jx=8!N zmrC1VX2f9bZGC5H`oh#|v{`pewEVNb{z> zeUF%!KyZCyrYwvn==Brx1?GGH^g2~x1knQ+lVw!|` z1_XaYbickf&>pC@K6+YO<7d5u{RuB5;dem1sS<24cvQI508?PVLh1L}G?n71!dLoH z^?W@8NyfGfr^z_{B@U0N{^#i*78-Um?bo zPu8mT{GAEt*S%Qb!pGyLv0uP_fZrt$-1bP}j=`jxGUN^|5_ZY!0LyA?vztufh7mIK z!Uvg3I3S6eoqY~U^G}ck*oHR$m&f3cY-%k(?P)ASj3yz5j)>$&tUp0&;gAY-1|WP7 zv2;8rn6J^)(P@KbU5y6-W;6NSyD!1W;qV)@129erzygl;Spyfbf;S8j5me{Td#fx) zJWeZT8Pvuv-JcCQ@+-LriEqBZ-H4X5 z@43a>;O7O847s$kJsg!taWNk*l~DI13gOtXW1#0vzTw!LtLUk4wh$Iws1>|b*+ggJ zvvi@IU`Rmf<9BST-geYlCW4R(AbaERDD60#r7n^&3OMcn95p7Y71$DCsP_Uv4Dm0v z6OI@B+x-U)Bwz8zFfqE>E5lVu1})nXq6Vcq8lEUIaOPOGb{_jWKAvY%1aqA{3FrZ? zaSe??k1I$~K=}U2lYQ4#VYxzLpR{zeLCf3`Az|V2!5@eqTu%%UjW`dx5gJeEX{)e9 zF$PKj*lSOqkw#JkzD%OzwC&Bz%;5gYDUO3{o{vwGfx0UYdsJ|6@axwa+S%1x@;k4A zVgO2bZdx)qa+CjdSeUbNQr6~PU1#6zqFJ4B-=Cz5 zOL)Q-cZexKq7}lFZe~$x>g(YId+tyQ1s&N#6)zWju9ba_Rs0kRlEDgV^y9)%3&Yw= zTrek*8M8(8iChO26j^=!TA@2#4i`lN8-^-zmA`=WlA)O6G#1$6i~MzcMF*Ha?|J(D zT!*>+y6p4*`Wg(9@hiJsM2|v98xX{Z0urZKtsAY>`&HSd_f`Hz`n6siTXT4d4|m}) z%b>#*L|!;`yI=lV!o+H3X>pmy7LJQAd=8Zabg{{%q|AfVON2QmcGs!#w<&KUW|0o4 zoYVm~-cNaycM|F@qaX}ax#kjG65962#1mjZ!SA*h)jg!4fx}WzN|wM?+~QMRMiI-( z&AoN|HqIikmT~E~dGO%D*=N1zQYXe{RQu; z;WU3{;#GN3eXvCH#TsXyot?PeMojTzR>Yt7I9YQX9k8W3EIh!r!ziN2=EJcu3zI$KqN162F$DhT+&7ki zk=XQwgFWIOjV{AF4{wmMiAgi9INXsa8DLy-0-3+tL)Q`6E4Ala3NccM$rKx01VEawvKw_SLbmC`Tm1h0JIe98 zKfHp#l7BFI0NYmWj606d^PbwHPyW{SaGscjaO*k&(+XmG=8ibDC#!x0r)2)>Ptn^0 zya#+e!L-1fpOr%QvM7|8@N0|TM+{Yf?p_2Zv}vm};$S!rqk#}PnY@jgn{d7Op^1R2 zmp~IBQTl(t+l?ms_MJQH*oOd3dZ8|1*DKJ|sb*1_-|)N%yW5}7L3p^#291j)7_+^+s&waFY=?D_RIW9uWc&{l9 z=L-fLqJ{oDU`|L27)jN8K`b4f9bzxswX6Aj!NSZ(;)CrLT^Ja1QN@9Vz;g1Bt{?|P zLhSwX?ucGl*Tu;m;FIvED4727T_i$XIMe#Uz|2eqfj98=J!+Rn8-=Yo-*Ea|dt2Kp zNRnu0@e$!ZB;LC>vPWsu$+LANi*kwk2>511?d;?Hj6Wk363YZ-0e%FhiiwPc1-HpG zNB9h?LEzC)Q{y}QUSBtJj{isjPE}Zw%lCW#M6~R!--E=m7xp8SYZ*g#i@qi%{8cCy z^;bv;vP>#wtfIJej)~?i&VO6c;OPubm|#{FTrn(i5cxK3&l-r+IM+mEXY@5#Z_bwn i{(nA?^Z$AB=lUk!wF#E^nv?w`d}(Rw9?sLS4E#U2S({)0 literal 0 HcmV?d00001 diff --git a/tests/_images/Shapes_outline_color_by_categorical_obs.png b/tests/_images/Shapes_outline_color_by_categorical_obs.png new file mode 100644 index 0000000000000000000000000000000000000000..781c6531641f64df694e17c3c1729e5d498eff86 GIT binary patch literal 29897 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 NH6=~ON{n^*{{XHc@L~V} literal 0 HcmV?d00001 diff --git a/tests/_images/Shapes_outline_color_by_continuous_obs.png b/tests/_images/Shapes_outline_color_by_continuous_obs.png new file mode 100644 index 0000000000000000000000000000000000000000..b4291074da41382139bafe181d868e6c59ce0123 GIT binary patch literal 24998 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 GF8mK7UYbGx literal 0 HcmV?d00001 diff --git a/tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png b/tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png new file mode 100644 index 0000000000000000000000000000000000000000..f23f23bafb35262ce0ec872214f10b36f5da9673 GIT binary patch literal 25505 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≪-|Qiy=k50Iuj{uIL}b1U!IWw*w~$)B#?}kmluH9T!|Q1 z2*?rOr;~|g4pn94<^P#Gb@lcCMi!D8HUA=KS*}f%lmIi?pRe(YT!9c7h{(S{uMy+O z7Xe#|2WL7qT57*^^%GrX;4WExoJ5CkS`fY#*+G^Q3{tAHaLOU(D8{TZmIse8lfaHYkrG}Ij;!XeX?R4uW=fqngXG)Ru z`!gI~bXak-uPR3;lBtc~=9$nb4wFo%Po(7JT%4SKx%pEfjawqCXOJQc3=ba-rgB^# zk(ikLixDCqAgpOv^~RBd(Gr`PikMHIrpLzSfM!~>@B6>y-4u*t5dy+R2}{{mFG(uN zH3@XmVW#TN&SXzUF)_MUFx-OjE#} z3j(5QX0_-NN19z-LXXSRAPV=lpzb;Ty;)uz@+b{?cpw3O{EkfroVaWEWy*-_cV~Vp zd%NkP=$(epyn>Q;uX6XRwaSGR={6q`{T6pepuYhZ0p#}pTag2$V!+bi^C$ffvoi{xxOYS1K9GlGTEs(2FiJD5JEc60HH9)>QJv~iGOawZv z*G4avtgNiAuCCEW0VWv6avDyFJf^Hq;bn_Kc4=4O!oh_XMuK3da(RP?9d>z~aCe#i z4MzcF`FML_19U@2$CF4r#y#Yp-ddO*TZbuu&G0W@y!2U9;a18oA5^TKpc@?a?NXj7 zRPt@>Wmb$o5@AJ^m672EdjK4@{(*s)o}GNVes3|Q7CcfDuWn6t_#bHftD{Ob=+yD!G}7u4%qnG#ZR>B*r#fTjT;J2f){W{nQOjs&3g7L2seDt?>938H)*?tS{W zo|56FyI6Ll%J~F`Qa`S-y-g;DCR79W-~>|)FOff?c%&l^V5oraeNkyCpWQqsDQPC? zS#PM3(O!rx|71PbpKtH_w!^d;5q7Ib5e)aNicN!ad_NU}}-tuR{NCZORL5#Y%I1G}izdlp)J>7ue zx<9Ku7>aFh?lvg1D3p2SQD5#WX9l)04DR`JbU#V_2T;P_D{B*Olxjv7*=y#ZCDt>q z`O_(o2wB)R$NhCy{x@r%AZE2|HOuMMag_-u?>gCEwdCLBy9Qm00;p=Cy6|@$bWSWNeME zSxRN+Yy<%xRwu738ZQOqD@;N|Q#)r7;}OJkF6aLbc>s6%>KSx>ecj@5MgvBiAYko+ z)>-pmRb)}84i1z$Ppc{*w!EZa4h3gn(U@!U7mAi4!DaYVl-PF56Dr| zYz|G%d1)=4EjBDP5q)gd>iFi^WHJ5>~&XfiysTJeGc~ zny|3ZWRWsBJ}RoJ=|H>($^#y5+Msx~QD>;QFdf#(* z(p`_2^hRcTVlBYJ%TW~u3SW~8W*3|1oes-tG86LnS0}ijCT|S}OW!(+ja3 z9&GF>0jzOvF}CJ)h}34x3ffs!6)WTqJi(~$dBA}}(Oz0|>gZOWqP@to5zYs5w*<*V z-%S_xHRo_J^fEVYMiURE$dN78bbro1gCHa{;k^4PCFP>K?j4@UruEd}edXcJ+jpgz zeOV!3P^*Cb6ML%MSfDQi{WnS#D?tqdfv}Fq0o(S*eJ?DqI2H2V5&SSYZu~&qcX1 zYS^4b$F#N$wY6oHuR~#=*@NF#uG?E%K=)xJBl`nRAvn6-QGzS2Uib!qxc?3R+TKrb z^_s7CUh$2Wh-TuxUGi*CQQbqHMb=t!CAqTe*$*P43e=%02sQQ$q%r%)nE$M;C1hm0 z|2OdpEXMx=1WnvYoNR2nQ>7_YZKMzx4b5*LF!lB#L9C{|m_Qljb2~!v0*aDs?idjf zdxpP1WM;MrQ1RLn{E38@*B!`5%_Ih^iu|Kqpjny^5ugFYN0gwc=|paB6EbCmc=q~v z6QK-AD4oKgdorpT!*jt!CYJqfB~`mTUGO46ivg3PD@#l7=;*?`jX`{=sks@0fE7Ca z3aXQu8gAy31NJuH@$%pJJph9SU8o(fXkcA28?;5cfl1on&`@TrD#P7zpbl01+pS<~ z1P~HndcABt2H0>UgD1DVoC))ubrir-0}$Gw1-%FEl=Qrg>pUQIZgPnqMMM3;LwnKj zI6DQ=h99vgGs~MRzPdH&oQ#!|AZnI+Mi5_dpEU@?WxyoX{li0ROA8=(4GmX-S^p2m z&vN(jk`x!W0}vF5)4=uwQ=*sW_wmzHBO_oq^6%fjU_@bWch_#N2EGz;mhKw0Rev4a zC=t%JIXe+_H>Z}k(olPPJ24T}ikkIAq3w7ZcyN0qpevA&`5COG~phF*zGxX@{WT zT<%w(Mhc|`3z5-{S+)rPDB+Z%eORBmK-uW%sB*3Z8VUa_P-}(bKpX+krbTd8Pu6>Yk}yFGdxQK7S=RPC z!LalXv2y9BjghDAQpewtEc&|y(N{0lTf5<6#5C(~en-;aUYr$Pd9##S=4pN!ADEq+ z1M3tkkz20cO4L~e`aq3V85kW1Wy1u0JD?V}plR=u{C61Wigd2MOGfa%HNhNfRJEZ? z$rY9i16GX|&Z@!5I9!A@i!*bD1%|UeTl||-(=!P0Ab`E*Y(Hvi69#oy_P@gb>rR1A z8Kx8cvuZMJy@+>H^yG~3={>21YhB^3Y_QNXG10)aq|2uGL@NaynSO$qhzq`r0mD_L zVl|*ro5TIn3%cNh;{yIE(zf;0At%>SUKHq-$>%R0cHazPC;7ZoJ{6~mC{sn?jzcK;G*xTCT21ElC3s5~Ow5kKeD44Ws#1b%&0(x0_)2x>!2^VIL zgfXjFwoW+?3)vp*4Hr`&DC?C_mIB<AX(g@2H6L&DZzIigph>?1&IQt_~AoUW~KoL@-}%K zGdd_F%EgdB-uD8d*~vzIqYQe(wxOjq*Zt&P8$8YmBRE%7a%?2|+w4s%nOW9sFICP) zwSYq2&67Qrg6W{nRZt(?0D={Hw!6Nrs-Y2@GUP8rHWcKb#_!>wex9TrS}W+*GXLS& zr}7+iC8x4ecn&rC4h6>>^mLV=+Ds=-YFnO*uSY+GQzY;V1``RPt%&eE|F2p9 z*Rxwu1NqUxN*3BXgwl!%^vX(AUEKw1(iaNgD+2874go<2U&FxfxYh+GNWshnA%{5< zJizCLB_&OE3-w^*yeS))M+F`kxUNS)j{|8mCP7W7zwRvxInvuOZHW@Q*E1prKjX&q z{CaiZ{QU&fpZ#6o9IA1s0=4jj6wK12FOFE1+#L=8NRJFH6$b#-Jo*hP4nNK1H5AD;(>gb8f(8CxW8+8BzZnP00P_Un2( zl9W)>P+x%wTwzQqKE7sp7;hvCb8`urL=FxPTDdR&4R6Yf(12Wr6e99CQhm@o0t1N@ zs&f1%+*U~kh0H8ixs2oE;DA`BzHE?4Hb^x88w&><htF~Ls&529*KFr zVEclYTV3HjtJcSlAAtee!D3`<3-Um}e*P3%JOVzb2>^lsCliE%Z=-Mq&U(}fChTu- z|Myf4@&768y5p&S`~D#_Gb>qTmJzbbD8j+9vpQu&HiZfql__(XJ5$(#$N%6_5VvR!t4}K~obG(A?aWr&roR2juNu;HoW!Y_a??XJzlOFi+3d`y0fe%nLspcqCVfHqO!aq5aPtnc|oKxbN$H)T%1M>3n zff|l_dal6d!O?Uvf#Z49(h_A{w3kfQH#FQTQ*&g(oNni%^XuPs1~JjmUT2;rwXDG> zN(IwQ{xh=zFAx+Iw8!Mi&rf!6IEDt#AX;JHT`ef2P)@-eZIqBe=z|_$;;t?;8!2sV zZ50(86O;1AWxv<;wkl1gcn0u0S*|~do@JW!=c-6?DU$y=i#{}C{hP+ls;oSyH-bhx zJS+?rcW%P)@bD)96+tuo6lF4qA&di0+uOZY?t&Y_1O&Jd7!<~Yu-O1()Mp7MsqvC^ zTwGkp)6PcgZL7ty=GK( zPf3Ocyv$k9_IvdEP)%9E-objE!dSXvWCRuz#OE9RLoDubC1tpIPvPl1J)c_A!dH zO2@O&w0eJgxlg68(26vnsK9B z-R~NBU*u0Tl?o3H#e8+mNmGTa#GGkdEVGM12vR*jtS_jgL zXH0G9F+0jmaK28ard`=W1|C!RN8a6Xr9Y; zS1Du)l?EMF$bc#L%Jz~j??4O92pfw80q7yezcZRlpmvVH7P6Wu~XL*u3t z3RDN!j@fIpzECZr7UAAVrK<0Lz=WeH=9HXQwcDlB)<>l}52f7VOFGBkEf;Gen5iAH zg5`;D3nV3wex*jN1#6LjpSg@##03_hcRZdMBDA2%w zb9Wpc?CY~`G^Fwn9v9qm91Lh>g9flico6L&qQoO2tShgd1YmX=9LDFAt=k|>cm)|N{NaGdiIO8s zCXbw7Tqkl+f-a5`(*(61vP#9YDW(kkl;g!m6Igl;88}FoKReHLfnT0yJFCf{kyxr_ zt@X+}U5R*!TjNGxuM@HR`+c>7rfu{#ZpYRVk(quH{PY*m-uSRd^EmGmzqg5rWE{`r zg*ilABqcmd6Zp45@ZdCT|Xol|`+Z)70PJN9cD6HF#? zm|rhlaS%TOfP>m@6dDaqR_?Fj9eCy|(^jq%C-$|Cekm+xEp*j+ z-w{hWjL0xX{w$eO4hPRM{M=(@DRaOedNk$D2Jn#EUBF3-xwdZqZg^ zQz74YP&!-_L<#C*I{j9oMirVW_iw%#=y!;g5Uk(W1VaFnElr`u4Quj z`Pn52#cCA zi9=9);{BcO##ns1WI&O_Pa*3$!h->@y zU3=tWl3=GNkw%+Z|hMs@Xi7Mg46e z{8Q(+IXQx4 zOdup(ychyW0g$zxN0>1h8?}0FJjY*fQiKpM=kZm>1WFh>ou=5{c+s%+Mha81>}8I` zE)NCpA5eq?EGd{}>#$mtEYPpLc`uvy+9%DsZPF;U`dqC#M3Osw`H8SSaauj9hUDMz zt%LPJvYDpefBeXJkPG@7k575BGBUk=nnZaXk@GJ|DvQ#pyf^!9nd>mMS@1eV93eT{ zI(irs7buyX5p3_)oHEiF@V&2-(V6(G)fv#-?9d%$4UPKZVg|y=k_d!!RbIV%&(MO+ zmptlTnys*RvxFk`!TEd7zI|_>JTcZi{~WK@rx`D$J+?5|xAxZKYwBMcC<}R;9ISWE z+|Li5FEkEp6n4tji%E7k|BLe1%Q?(_5;eQzC@#q-HKT6+F=?GU;`@Y4{;*Y^_x18Z;JKB}XmgYMMQ zvb%toc>3<52Nv{TV)`7r1SgY?5dJSquyQ~Td(m|oxxoiKUHs&Q4a>!(-G)esc+_oT94Z;1}fqm z?lt@2!^+C?T=9E*a;<=vTIG^SpIZMHr}10vgMRU)tCH0ml~njWe3RBaFyZHJ8smyx zm1x~2>UiWdJzIKb_h54^&FIpdr-DZ|e%Z0!t~g2i0sE1RgW-7c%%{m~p1Xexc~PVT zV^YeBR}*yZtu-=`jIoHP^j@29ZA>wUiU#gLI$`gxP@*{LC2t&F|cY=`C|D=Vw4sED3$xyK6`ZxDjjzzMoZ&Qyk;5D*X$0)zms z01}x%K&$Rp>y@l%@uNFm4?%%AFYT%v1`MF=E;sokvBh>!MrUvx>B6G%|6*6ncl$~z zQc+RSFJH|sAb<@GVzp@2f{iUbN7=n7Hj7<(|I=OGvb5g*62q-eKr_7FWhj;m*`r_= zH>Ir53cZ=Ew6u3dQyBUg^>n>(85wJoL48^y=d`4U`&HA3W%&|bd#t2+h@Ty|fE(hR z+ewVvA-5P?roXvusowiZ728CHiTzrmWu4tp*9P1a-rQ*pndOqQTho;0;= zixc;14suT^&y=|ky%zK9QyPvRPYIdmo%)8YV$c8+Vym3hUrk=^hSKLa&Vi$bgLTC@ zo>+2l`|yS8@_RC6n`GTd_AExrkqOJ*SyT{RBmWPGZg=HwNxDRuM(~H1S*pJ9xKgO8 zW$2tvmL-&_#Ymajk7j-q`?1txKU>75KNxpMp=7aA9b*argBGp`xPvGZ3Pv6_$%rhQ zX=n@))f_3FB` z3`n|@kd$0pUPj-Hj@I9Q4)QVPaC*qfKDlPEy=3Eq`VLx84S6$WGHE$ENH#(olor7I z{GSzjYS1mcx+;oZ`&7&&fy{#L!J28Gm-~(+*r-g79Mxl@o1{q+m#BI5WN1ih%a-ds zRc&o;VSFW}g;pSb@ZjoZ7m!=0Tk+fS_TqA%UI)+ zUv`$`O+N32HqYKNT{R_#Owy_6wO{6xCu~2i5F?H)Ot_N2Fl=i~*{X=CGdIWXT=kA- z*<;I-zhYz~ZHRTMh9Z#+EWM@PU2i8QeniL8!u_?s_c4=QSF%ODTY@s~Vl3bJYD=EV zpLTn8+cu1i`)s!sCQZ{N3v^GhPn`j3zEs3|((X*Pl8F0e;dSp(>4*6R+oc(jl`y1g zh*Hv2XC56?p7E^6zxMrzH>`?|V?1S5&uW7w#l2r|=v}o+$*FaZ78)EjgD{RM7uP|q z_LrYRcAWPgd{#Zj$wKm_PnM!G$g8+4B&5r_({st2(14}T#i;7I3G)ztEC|ak*&P1- zYQ6Cj<6b*PF&E&(Z7LCd31(W!g~g9AOT$*qqW?u_J)eGX>4M#!tlw;{)!ggCogKn6 z2r~(h)S+TknmZ+V=Y*d@u_<|*-Apf{veZJCimpR7(A%e4VvBEc}pmis#Tr8a;8Op82IhoSW4iX4DS#L7Lhnbb~+{~P| z_XO7l#Zs?{Vg*ev^L<6RA3^u8w(D)Y7T|Al`Aay3H8py*TS|I9Lp)tXwj=X(HoF<_ z@*oj`J?8JeE+W>DDJn&zV`S0q(ua=|z4!O-EM!ecSWI>oSkw+h@oCY}F8DeBVqc3)e8@Ut4hkan zImh}PTG*1Bn&FrT(5j7$jBxexi%HD(muDsHkKMi}$|-CMP#?-LUhz2Dk;%J|pT$}xyEL$%&OBK6A5(8zUYTjqt&+gJ$Qo&n;~ zp`u?n65{b`R$QyOxVe$?$IHjpe-&7oYO;}vq9PeXj-#XS8?wE9c1Fg=y?J{f`@qp# z8>3qIIy7W{VC1AVWsKt4EEIES){&c4@8LgBe2*H)d8jT`Vd31NA%|U}_!F{Ab^(<* zQ>l$`9LB~{RfsUEQ>jdPf-^+gU;Ywlud1EP`V@N1?oghk;8?E-_-)WyiAn7Ljy z{xQd?n-GmFWgpE1 zPdh}*X=6{Jbiczsqg{n@GVK%0JZwBsev1*;WZa7){C{W$uN)QQ)p+eYm9nEEg3Zne zmaAM%#9U#-BM@*#6HcP*1c+*DO9`7W%~Wy+4E-!m`!;Z=$9CxT3TWl{OzJLe`tL1W z+3WQNtbet1XTK~RdUT69R;ZZWK3t99KXN$4^R`36n`7Q4?|giHeMv*Lsm0`Maw#srAQP3IGQM{_Lgr4NL?b5~&?|V$WS|9UL5h*G^NS;<~~n4o=tm znAd#xtj9y-P&nIo;(dR>+|KQc-;&CFIKBJQ4F7a@I4%0I-o5*Zu>j8sYu*}B-?C*3 zfq>MkpWP21j$y*as$I}^`Mcdqsr%@-%9d@6X0#$YcB_S?J*)D*;A1q7^u?1iz0QuI zr>P!%VXL~n*DWpkk)=x@;3h+XeE0ZrO8fi5!a~sg&?YkJt+%Tn!;>-#Eior&Qf{s= z4^OREkC?D9*|F>wv(U}tXJg7LX>iB|cCE2Xw0i)%A*z1~kbO)RRLp8m%{U^HTbvLo z2UfS5T*1sOMaRgfu;)f$={+VR`>Q{l=6{*2vyNSJ%sZ_%DAGvK)auZGf_Zh;4br%r zt}ZShuGvz?@1&dsx2sJ>FGff!d5^o6%}%diq&;> z3%x}qXIF!|4Mk%vYgZ8v9Bgi6ba9Jo4B|?&vjyKY92mHPehRs79i5$WkYQrbqNYl# zs2sQw6A;mSAnDWN+|G@Anm=A-xXq>;pve5dMHoxJwpK+|)z-v>g`jh#2U9yzm_2-b zUs;9#or6Lf*NKj>ZQHg+XkySA)={z6|0Ag4^v+(Tdkvlg&$#y?eb1S zk)Fw*y(~Dw?`3f8JK{9%*HDvge8m`@m*>u*T=lNA9n{ENs)&RdByr`{2mF&jC}^P? zNC*zw#KrZ1M0qWIdV}$ABz?#ANb8oT<{w`@Tju+9eP#d2v&XgT4sw23#Y{y6?O1LP zs1BvZmgKZV3pTOGxF93Kz}K43e~P~X1`_}-)RbFnB!IhvdsWzk2^s__WZu%BJ&={c zl=~~!h`F?xuSYKEI3wBP#Bs#fLOlBE)yDeY`cg^f?!ODzW_8D3@7w%5%j(sImBa~J zDqUf7Z48Z6N}U{#$hxj7!}A8;ZH7lnk$amz+xpmH;Zh?tt|89royF&q)~wV7V31~f z^JL_SgSj%eJuq^%pate%bc5hz90QFmCMUbNxjlchxZxxO{E%LN%kf+-U2B>Bb~w`L>jpCa_qbP;A@{0^3R5iq zhR%5Xf=Q9xJ=-V0MAp}9AoYJ+z-2g$M3!GXd>ik@?9%gnJdti|UKK%1^!;0B+y|ry zT)}4tX_;|LJ~s*|BxI{1>W3u|Z~%7{#+5+uGRl`Rzs}{|(q(z60{e2a*&R1^} zI){7`;B{!!ux&pZfN@mH9O{%m((TNlk!h-?syb^)(WFCzNVoGwO-;iW%{A$q9#Dfx z)!>#9PJ$Rith4GqiMqu=dQOt)th+Jk{>0bqT3VBVVXbDS5F8=$p@yYI?YcvV~J_9%87FMVh zVU6XEQH4V!TVD+Q;=5Q>pez;dluuSbt-$~Y|7LPreMglXa_1bhHjl-S763KjWREyk z{I}-czZBHfLm_Cz?!jc-!VPUPHW=pJ&6eEa3->7$_6W_&T+ELyC?c z8{egj5)n+tA^xBN(AeTqDk-78+1+#mFMa0BnKri@;EvIoYU~Y)zm7eFmZf(JUmNiT z?*sq+j!&q>_ik#~b7eAr3^i36eq$RMTYLL(SdT&!E0a8Wv65*z`|*7iZVaKp^?DmP l)mQz;*INABS5~ZWc$}*fE<6709lm;lKq8v!SLr%O{TG7zZ>s Date: Fri, 22 May 2026 00:37:34 +0200 Subject: [PATCH 11/14] User-controllable legend titles for fill/outline (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the hardcoded `outline: ` prefix on the outline categorical legend and the outline continuous colorbar. Behavior: - Single colored channel (fill OR outline) → no title on the legend. - Both colored channels → auto-title `fill` / `outline` so the user can tell which is which. - New kwargs on `pl.show()`: `legend_title` (fill) and `outline_legend_title` (outline). Either overrides the auto-title; pass an empty string to suppress. The fill legend now also supports a title: scanpy's `_add_categorical_legend` doesn't accept one, so it's set post-hoc on `ax.get_legend()`. Stale visual reference images are removed in this commit so CI regenerates them for the new title behavior. --- src/spatialdata_plot/pl/basic.py | 10 ++++++ src/spatialdata_plot/pl/render.py | 29 ++++++++++++++++-- src/spatialdata_plot/pl/render_params.py | 5 +++ src/spatialdata_plot/pl/utils.py | 5 +++ ...utline_color_by_categorical_obs_labels.png | Bin 56558 -> 0 bytes ...apes_fill_and_outline_both_obs_columns.png | Bin 29926 -> 0 bytes ...hapes_outline_color_by_categorical_obs.png | Bin 29897 -> 0 bytes ...ne_color_by_categorical_obs_datashader.png | Bin 30486 -> 0 bytes ...Shapes_outline_color_by_continuous_obs.png | Bin 24998 -> 0 bytes ...ine_color_by_continuous_obs_datashader.png | Bin 25505 -> 0 bytes 10 files changed, 47 insertions(+), 2 deletions(-) delete mode 100644 tests/_images/Labels_outline_color_by_categorical_obs_labels.png delete mode 100644 tests/_images/Shapes_fill_and_outline_both_obs_columns.png delete mode 100644 tests/_images/Shapes_outline_color_by_categorical_obs.png delete mode 100644 tests/_images/Shapes_outline_color_by_categorical_obs_datashader.png delete mode 100644 tests/_images/Shapes_outline_color_by_continuous_obs.png delete mode 100644 tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png diff --git a/src/spatialdata_plot/pl/basic.py b/src/spatialdata_plot/pl/basic.py index 8545f71a..4d32ff8b 100644 --- a/src/spatialdata_plot/pl/basic.py +++ b/src/spatialdata_plot/pl/basic.py @@ -1058,6 +1058,8 @@ def show( na_in_legend: bool = True, colorbar: bool = True, colorbar_params: dict[str, object] | None = None, + legend_title: str | None = None, + outline_legend_title: str | None = None, wspace: float | None = None, hspace: float = 0.25, ncols: int = 4, @@ -1102,6 +1104,12 @@ def show( colorbar_params : dict[str, object] | None Global overrides passed to colorbars for all axes. Accepts the same keys as per-layer ``colorbar_params`` (e.g., ``loc``, ``width``, ``pad``, ``label``). + legend_title : str | None + Title for the fill categorical legend. When both fill and outline are colored by an obs column, the + two legends default to ``"fill"`` / ``"outline"`` to disambiguate; pass an explicit string to override + the fill title. Set to ``None`` (default) to keep the auto-title behavior. + outline_legend_title : str | None + Title for the outline categorical legend. Mirrors ``legend_title`` for the outline channel. wspace : float | None Horizontal spacing between panels (passed to :class:`matplotlib.gridspec.GridSpec`). hspace : float, default 0.25 @@ -1338,6 +1346,8 @@ def show( legend_fontoutline=legend_fontoutline, na_in_legend=na_in_legend, colorbar=colorbar, + legend_title=legend_title, + outline_legend_title=outline_legend_title, ) def _draw_colorbar( diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index ba0ddfe8..fb9325f3 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -366,6 +366,14 @@ def _add_legend_and_colorbar( ) if fill_has_decorations: + # Auto-title the fill legend only when an outline legend will also be drawn. + outline_legend_will_render = outline_has_decorations and outline_color_source_vector is not None + if legend_params.legend_title is not None: + fill_title: str | None = legend_params.legend_title or None + elif outline_legend_will_render and color_source_vector is not None: + fill_title = "fill" + else: + fill_title = None _decorate_axs( ax=ax, cax=cax, @@ -389,6 +397,7 @@ def _add_legend_and_colorbar( colorbar_params, col_for_color if isinstance(col_for_color, str) else None, ), + legend_title=fill_title, ) if outline_has_decorations and outline_cmap_params is not None: @@ -470,7 +479,7 @@ def _append_outline_colorbar( ax=ax, mappable=_make_continuous_mappable(vmin, vmax, cmap_params.cmap), params=colorbar_params, - label=f"outline: {outline_col}", + label=outline_col, alpha=alpha, ) ) @@ -520,9 +529,16 @@ def _add_outline_legend( loc = "lower left" if fill_has_legend else "center left" anchor = (1.02, 0.0) if fill_has_legend else (1.0, 0.5) + # Auto-title only when a fill legend is also present (so the user can tell which is which). + # User-provided `outline_legend_title` always wins; pass empty string to suppress. + if legend_params.outline_legend_title is not None: + title = legend_params.outline_legend_title or None + else: + title = "outline" if fill_has_legend else None + ax.legend( handles=outline_handles, - title=f"outline: {outline_col}", + title=title, frameon=False, loc=loc, bbox_to_anchor=anchor, @@ -2232,6 +2248,14 @@ def _draw_labels( is_continuous=col_for_color is not None and color_source_vector is None and not categorical, ) + # Auto-title the fill legend only when an outline legend will also be drawn. + outline_legend_will_render = col_for_outline_color is not None and outline_color_source_vector is not None + if legend_params.legend_title is not None: + fill_title: str | None = legend_params.legend_title or None + elif outline_legend_will_render and color_source_vector is not None: + fill_title = "fill" + else: + fill_title = None _ = _decorate_axs( ax=ax, cax=cax, @@ -2255,6 +2279,7 @@ def _draw_labels( render_params.colorbar_params, col_for_color if isinstance(col_for_color, str) else None, ), + legend_title=fill_title, ) if col_for_outline_color is not None: diff --git a/src/spatialdata_plot/pl/render_params.py b/src/spatialdata_plot/pl/render_params.py index 48ef621c..1d18a725 100644 --- a/src/spatialdata_plot/pl/render_params.py +++ b/src/spatialdata_plot/pl/render_params.py @@ -188,6 +188,11 @@ class LegendParams: legend_fontoutline: int | None = None na_in_legend: bool = True colorbar: bool = True + # Optional explicit titles for the fill / outline categorical legends. When unset, + # both legends are untitled unless both fill and outline are colored by an obs + # column, in which case they default to "fill" / "outline" to disambiguate. + legend_title: str | None = None + outline_legend_title: str | None = None @dataclass diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index ca5bf848..66317748 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -1977,6 +1977,7 @@ def _decorate_axs( colorbar_params: dict[str, object] | None = None, colorbar_requests: list[ColorbarSpec] | None = None, colorbar_label: str | None = None, + legend_title: str | None = None, ) -> Axes: if value_to_plot is not None: # if only dots were plotted without an associated value @@ -2012,6 +2013,10 @@ def _decorate_axs( na_in_legend=na_in_legend, multi_panel=fig_params.axs is not None, ) + # scanpy's helper doesn't accept a title; set it post-hoc so the user can + # disambiguate fill vs outline when both legends are drawn. + if legend_title is not None and (legend := ax.get_legend()) is not None: + legend.set_title(legend_title) elif colorbar and colorbar_requests is not None and cax is not None: colorbar_requests.append( ColorbarSpec( diff --git a/tests/_images/Labels_outline_color_by_categorical_obs_labels.png b/tests/_images/Labels_outline_color_by_categorical_obs_labels.png deleted file mode 100644 index ac7fde1cf65204eca4f677c21e41e63c97341ffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56558 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 diff --git a/tests/_images/Shapes_outline_color_by_categorical_obs.png b/tests/_images/Shapes_outline_color_by_categorical_obs.png deleted file mode 100644 index 781c6531641f64df694e17c3c1729e5d498eff86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29897 zcmce8g;&&V*Y(gT46SrYm(txJcuRM8my~pOOG=k?w}3Q~(k-oYcgK72eE-8YYq^$- zVSaPvIs5Fr58(=O(yvenQ6Uh>E13@xN)QN49QenC3=4i@G~<{AfjGy>NQkPqWgKRH zal@UN>+kqt<~e9KNAd1@?5>af>0~=uU3pEUtA@3$|4ui57S5l%S zw@KuK|AijcqS;ov?~)0Q7~Y3VA5yaH>ZzlJ%-hlC?JQ5s+{A#Mb%!)qF>!7`@E;aD z77b#IqQOpt$ewkMH$MzM^JLJ#5intdPMNF)`~ts;u2aoJESKPqh9BBv`QD-HuLI8~ z#Q*;vDtq_WwH1a*zg>Wh?Ie`U2SP40$$RbGtOMB^NhcsAZ2A1J5A8q`O_m;#KEn0+ zZ?Eg&pBlJ@P-3}!$(iw2YY^2l7(b{Oz3KD!#98dGS^;9nhQ4$Wlrr&oboCKw+N=)b z5Y1#(#eX~*h@og|`8kCFP_b#N%Y|%ZS?ebp^Pvo+u^P^6;Z^@E*2lJnoUFP0I_vPf|94*yd*4ESAo#pm7 zJRl$-V zE8yqPpV>ZlCF)grki5LStHZ@@2Ojv`$y-ys`Qwh~C-8*==fByj+V2<&>V2P|SW>Jf z@+9Z2@Oqx^rtc+U!mieALk)rjSV9w61KXp`q!sYnnqZ zhMTW34wWk+;&I54Er>VOtWeYcvh0EpYP{O+4I#z|)v7p}DvFiL|IC+Z)!?z#>0eM# zfP_g3PdlVnwul)5o4&dy4kXRI1ZRZ7dtnIPF-XM;DV z{}$^l&(}lA?B=W2N4QrxQvbsU&2P8abf_f!`Ei~ND)#M*F$dvCSy?d9E&~I~O$Qz; zsg(IpnuNha*OZhLM%Bc`L z)J)CJ&ep3k_gSjcZKaku3#te41ir(X2%Y9ltl-tWyzry*aohE1D!X)rTF32HdPzwM zvsS%(7(!wXVQVG*f?nMWUgh>9VBA71b>sf(>Mx*(7<)mZnCSG+AWmJHDJ$HT+J2n`IL93C2)wrcog zbV`iSY1fpJoIF%}u(??&%xqVevh&)*>Y~Rvs>Obo~Jh99im!Jmi3r(|$4} zczEaC$+yD7zM~nuAkJvDx*opbUUIn7A;#Di#yH02qW-TsK0e;;_cui~HJS(`6O)am zRUdwnfjBf`7efmE)!9082`8RUF(Ieb^OLaA&+CTzuS!n)RfU8Lg5oA$UP?0Y$P`lf z6JulYQ24CL1qHVde!>=t45!Z4pqG@Ruv&#xGzI1bLdWiy@Us9N-2nR!y}9btJ_1#9 zSqkM+{BX@8SDwxHMJij)))HOJj8YXt`e$^Ko+a> zf^$bNx31F3pD-~uj|IW%>EZT3uVQNW^Aq!{f7e+c)`A`LUh_wymMINQ+>eNeh>D7u zpP!GE^vzMQnk;oKz;Ca=bFlJpFJjw2z_JyuxSNu^nwuqEaIGbu)_%TesF0!!`m+>Y zuApdfqsPq7z|XI(m>3rqw?$BDj{laH7Od;Hk*${2IHq9`fEQ{_!Mc{VmN`@gS#_QL z-ZOZ{m8>aDoYr})ouzRtXBysK^x(2;XpxM>uc@g~AC5xHr;GSy6dn`Po|sAS=e17B;diG*GComWezN{R$bWeU3K44#FI^F1P}1k&-Dy@v^k$E-EBrH zwgDPo!zvHmDI75?D=s#$M#?_)rb|>pO`(QxJnhVWN+c@$96Lsce#l^)iaEMIWjpc<}1%-uRm)aB+6;V)7BJr7xV&Mx^ zl1)XSAQSL{^LTP{k|pR_saaRJ)xEJD$N?)7_8$dm03GUag?!8T)ZwB${wI>jyG10= zFR@oMrIK1RDiB;KLau7g++q_AQ}%Qq^la}BRg>3G7j@a(2!wi`k>D1uzdY(esH*WC zwtqOp20%=JgN2PD6};QYk3Cvx^8`6atAdM_)xI|jD}Y=8grnQrTX}&~33vC~M0(|U zfyGSzFDpLxhZ7SMV?y@_AolgeklZhrXD_=h+Wye!Q|M9J)j-)0kvc8U#yFIvk9ftw zoH}1&4AxP#R8+=bTFWgikufoL83B?onz;=Ae&g4(w9L2sZ#$N5 zH^yhbTt}R7TQ6V`Sa2w}KRy>3s|d;b0Vhaft>>l`cm^kc;Ae!r>%f{Tl5v)pnS z!+&J4+AauTWvv=apgmr0O<}gs#F13gVM&?V1^AAsUVa~IY!g=&B?o&Tcj}k1(9+$N zeg8vLT2jKj!29ap4$Y7Bs<c*vIVk-anQ-GGX$Z31jhOB9EIZqO;Y^DVuHxwKiVqu@3_4SFi zrl;iq&Fo*^fvKRA@YS2`=tAM6K~S@Rd>b(ng$|_pKeUKfsLi3vx*Wq$ z^t!NRW)~}xR-%Q(vzAuWZCM`i>iOkPM_fJM$4hVq`+Ivgwzr3C5BB%9*%7Pe_Rr7G zOf*^O=yDQkYls>L0p76S*xKBzaZ-}i^cbG4(AIa~OiG}Yzq`3PSg51r;^N}x=jY~b zB9%hHll;t+iG)FNHfyZ{OJC2sXdzqZG7+MAInmyjr`%t+v|aHlM`0i$4zS{ zI6hu`4_S4nuQ9Iek0-)6P6~YO^^$)Jld9P=;-YwTsL1}ZNRV2hZFe0M3MPc6^73*` zA)6p*XwPSGIQd5YB$)D&lan(uN4Kf*M#udzT6b-ovAP8CH6bCP$!^(-E1muQd&uiY6>^H&fdvw2wX@aCii2RPt2XPd+7l{yOr9|<5d z3E|9d_4!rH&ry^4z2EwSysM?f`m^rmBgEup$@=aG(Rt|z7-QC?P3`uHb0ODMZ z2fs_d*jJWot3Mpimaa2``)Rf^O+(SmP^=1(5cyImo>+RKCl&7WbeE`)VL~>@U`u4= z?xE0{#q8Dd^D<8gA_7@f-Jezxfe~OuL@4oHzmfX>5Prt=V|j=FRT~-qYL`}pTJk2J zcNP(TlB_A)Yk_N3-Oi(RtxId(=m@JW$JS-S=&fJ^y>G(4Pw{U*O2rTldN_%Sih?L8 zD7b9bR2Sz3V9T z!j?B_5QHeoz6~yw?AnT-JO0Q#P<6AO-90DOx4a@qIiH6lVreTM{AomyPBk(BLOeqM zXr+A@LdDzfDC;S8>*H)LHukzh!TwRz#;AZD0ao!9R7Ap^MTv{blH@&(Vq!?GmxODm zJrVKao57C!e;VIlbLfgsD{A|H<1iOSJDOa{p1jtWs#J?km95E1ES=foUUB=^ zFsJtd8;_c|NvFfMK-K8d6Y>h=B(pb%;Nqzp8XAI10fhoYc7K0=04jc-kMgHp*ev~+ zu;BuCGQ;~_ZbXYuo=Gsa2s7%vJV8hG-Uk_(L83VXUv6Hz57zn(bSedbvqC{KNyxR= zDidcUyB%aBA4i$VUT+IKX)LlR&XPw~?zQsi)9p^?$Zq;d1d*$?sJP4U-15iRiyUF$ z7Kx}qSMUVMB>J_#dg7+929W2?u)AWxFVYm^5oQDw84e^Y8vs*|K%oXM zTieCtM@*p`@Hkhlcr_En zn6a@;?gs-l`6sz)H;eH8gt#F47(0i?7$!ri*uU?+w>{fQEQY~iV9jd88}udLl*gsc z=fTrL%e&7V%SS$hHHMUb<+(+Aaw9Pb)HE~Gr8m8Y?#RY=jTp87&Lq)x97)e;pYdZ2CZd)w-M0rHJI?X3gpu`=!J!! zL2dnw{|k#Bcn2g$-J+=(-&F~vVv!vD;I>`Ks%H;pCncYIgY$S#4+-rLdTKO~V5Qs^ z5qc9@m|}R?wb=aT=O*^Y;{=4%UoqNz!R^9ax!%Po*)sbJx3%9R#1uvF{M7an+u*?+ z>qRs<5L=f?H0z;7Wk$;1G=OgmrH4v&4CO!H5(^7r1hPu8il(QFz^|dU@naNODrfGt zJ8sI##M^MCQ_EywwmR>2D|yn$XDwCfcSJ>@M@xZPBRwt->iUx$85F2}QE&34qK8IC zI8*;SJv}Xl|Lk3=`l;Wl>$so5UP#lxN$}nGnIEKBxho#h!OWq|P@RUlas@Glg1rY(85F~f^G?zb;06UEX$W{opC{ z#0d06$9^KMgIyQ{0 zj8xTI1XcmHsXPo;5iKBZe3O65XFlOp-YOT}L;rZ^D+&cO+z1WxJ~?|nO9P6z%bkkD z;@1`gT5bw&epI;}9uhqYiwQEgLMk58E$Fwv(Q1E}3u@YFJ`=Lu5Y72(xJvie;(8$y zm^nGmd7{K}>|0Tn)hyMk!KTHcW~VM8@xIctLb$}zk}wa8dCPPXn0~&DZowk<6`v6iPJTGR$Kx=N$l3I^yy0mh;{M&m zshs=HUkO^NMlARClcPUOtnp@ilB6#U>m7UZz?P5WhqBLtl-=csD!gj4stn09AAOk? z9tT$~SC9W&Oi?^ApA_P(zg%nduYmnzr6`i5f5?3LdsCpC%M58=#$jGILs4%4>Uvnpop1E&K`7%s@xWD6DMNrhG4+Ax1 zL?Nw4{C|@E#i|?G^?6@rNfzCxn~Z;K{yWw6l(;XJ^q0Xba9{)>4F2nP0=0wxhMbcU zg|D2f#HtNv!(8FC5qc57!TbBk;5ApPsE+KG@lMiy{ID7_-4WM_;4VY=0ql#S_k=gL z7=I5oM%B1gQ<%%0h{y+97$s_CN(s(J*50(;>JZ}%vEEm3oihnr?|aroa%V?Rm~{;#6b{^9vEl$NNT zS5;kvns`RrR=?IW0%^!Km{>)ru#2>xY(5TkgT-N7lE<(Vtdy4c5ewt@Q7KGBgM;B+ z#ZJHA8*5Cn?B5_s5}a(fRCx5?+*<4oCaOT*m!*7eR8eepEyC<9$xM1|&!8IMN3Fp6 z>OFp{7UUWzkIS?^W5~oMt5Kqy!e%e!C{iHaCp>@i9^)y}oI zE~=ChVbtLJ+Ad`}NJo!wj~>@EGwtSK7+^YAY0rHBq@NDwW+(^aal4|Y zxhO9lO$gb*8oW?Cs2RNB6A51-VXB!z=JbZ2e!Dm*uGyH+IsELD+Y*M3^ZhWg z$mgu)eo0H71`>MhxHbabP(xM;1JC+5{>4Hk_Hf4^cG}9c3kQ-6OFn)s9A%S%QO%h& z8hbw3ccy#a=M^FM#sB4+j~0x7Kqwok!G4lq%xGHg{S&B}N%fN;W`C)*ph^pO>Ah;C z1oZU$={M(n9T)K+eM77LG5)*v6yKeKW~`=jWJ^bP9u?oz!Y4Iq5!PN&cq1t_k#9pB zV}ggZ z%rvOkppT}T*FBr8C?R|B`8m%b$Xh={vP_ld#i(9{gYXdN<}vbA{z}@(RFia$eXkFr zOP8{|+%EdR5`~YYuO)(HgEmC&Ff#u5*H;Yi20h@g-BR2UI%oOC$(=;|zsVG9Ahp-rp}15jcutDuo%FU0)lY=!05!~FbX`yvf)Aw6cRRMPQF)z1DRl50fu-V7x~GZ)t14Wk5Ggx(R; zsNZ}*FzDcsZp2^zWA8yy{MIDUUouS?tBSYw#j$_>@+ z%p@Sy|7^4s*+yn0B2FwTv(H3J!Y_C;|DLD_8!H~WY!&4<4h!Jh zyQdkviMZOMs5*>JoYB27_|T3K9eGkj^P%NwF*Du5@xFgj7T!+Ymn>peT9d((7frWY z$#12>X=*2+i7~YlRYelb|LIT;;wCz64O4k1fwigmVL8N~HD|xAT59Io8!B}<=Jpmo z1PE>|5d(9~Ly!ymS6^bPRp~Kl^3oq#pLtTG;n0%v6q?FGGFzf&Uj6#?6!P7u_5Re_ znCyrQXRTnEq0#q#Y*!z{?2t!up0ZQG+O74e;(;&7z0R0brt~##oG#lffW|kyeoA!M z$T0BG8o4_Y6-4+jLTVp>PI>YC{%>zTyhb~L@`pOza(p)!#Lc4%%j+aABg2;e64}U- zI^SR(r7u@3sIHcZsyd_c6nN;812rY)5l;9#k=De5R*5U7q^j4oU1 zB(x7J8ITh|X?)&# zFJc&Kn^*1*cfLHEP;Vx>#9nz{Uj_Np_%KENvKn}{E`ilHo<>MQOlDJ93qae|p|=sK zrX=(I>A$)v`hcu+O$fWFYFgve03dR92o_VYQi58h3ia3>&F7J>3?e>wVXoo=(XzXZ zssw$TPoEg;F)cO$d0FGFeH*G?*@GloLZ{PLyN64jq^W|aAI30HN!ajQ$yJM%hv+VS zde1n2D}0d}M8Voc+)DyZf9W_|faz=*U@){}dfZdrvfJ4Z5g9z)OLVF8Ps-!XR~|zJ z{uMSp8a=|bIg4!m-S6HcD1-4E!YlXE*5QO34L=Ae79BFP@j{{X>33m&XTZk+iZJ5Q znY?y{$dN=WKVi(x7-I6P7)<&~hmQKYlM>3slbg5{>H7WEKdV;bAfi0E99MC{=TsAj zRRrcr&itz4`W=Wf!}AlnLm;x&Ch7qqNCvYm3dU+R$wr#ITydj)x#BTW>RnPGw|RFZ zTD82?uFvS3Tsj&dt5c(rTPsY*ui${K#s1S6vc{0nI4fxa#ggb9l|LO;W70x0dqK21yhuq4@J;a)(fHfU%S( zQB{a;^tmwT#J>V=J_7B(QWbS|WgV^!vd~!qwZ@heRY6`NXd?0a8R@K0>^EzN<+89N zb=9GOGQ3bHPTqWE$qGK)@(hMi+^RamUyfG0bGNQ$R_k#aqK8yw=&`#5mQd9hy&2VH z22^OLt#lU({I5>#`W6Ir1TJ!oj{=Q;%JYI}P-pvUj84qr5!cgB67a%G74 zo9+9=Ydu?jwA`v)p{ALPCy9cNu7dl^DVade&G1(Q9-tW@?LaaDyzvV+3oDnZMb1@3 zO`pi1P_{pclMC^0g$<_7dFNNmXpW|LYpEIbxIt5%?q6^FnhWVM+g}!L2<&Nzc&T7H z1_|Gi<1llZ$K~1iIlueahB&6+1t5C?*~iVnG2P!Uoj>uSH3Jp#&=oBpN2vtDcD=Wq z?fb&A>Uo|1>L>O5edsFxjct9mDEkN$JwSR~Tt6tQ{Uxjl`!%tSThEsGE!~Jfe&<<| zLNh~h7~HDiA-hA0;k5M5yAmrLkX4E>6k(DY#KElH$BKX|)22EAb=;t?C_7@!k0ad<<^@E zoiuXqPfJS&1+V(hoBW{P6hFclh!y#SmOu+fQC}?E7 zjvL9^c82e%Wt4y-m!Fphm=n&=egP=6-Gzs+V>~%kX>Xgmom2SH|+?)cJv}`Oiy1-N9n=q- z4%?YznS|6O3D3-oho0qH>ic`=6@~q{uYniny~}}e*CI36MN>rL+;LDPEv=!IS0iVJ zR6#tMqZt{*uF^ADwM?F#p4*$7Gc$sN%|@e8Cdi9^w-<~?@bqv#rtftc92<-22NVzI z{aI!j8mXcw5?)6WAlEAw{udq_Yd=?+IbxPzs#!MUq34~blq9?9*lePCx;ry+W1@Oo`( zdI%s)0b>MAzghUQ9pSLVVRJ-jS%%9I4cOoA zVTW{^QE?b!4sSZ{UfzA=&2gmA6n#+FWIC{OZe1QZK(moki9p!zf4tq!ZUVZ`&O|-| ztDX)!iGT14Bc?(LkW*37(0Y1$R2lFnsJXaYw?{LX6bdFRl$4Z!TndPv@~K^`ku5`i z_h_jeIl0neqA3Yzz@!bGoKbWDr8{xwN4_)$sD#3sMf|_pv{=(vf%;ph_h4u;Q9kDBn#fUW2Ma->sh0(O9vnc4g4c6-F^Try#KpI9xkevQX@rCLh# zmRn9JUHczh*B!xW&%ZE|2t~5|kxvTLaZ*KU8CJ!x&;dK@=NKyCE=8qFilS77%v~Y7 zr61qFe_vZ$0|TK4=9N5Z8Ra6mLm+oYvbGn`SOJp@G6k?40Cvm!e1v-e*huJ_K!kpA zkIZV@0~#qtDec?0o4vBCM!V%SC6Cea2@n6xAN&e&=$QyY6U9GFx{L(7@^BxXP@nVy z^l;v7n7W0kk2-B}XcfcCioSg~=k-a&FsHYBg4d<-Lsk`M%b=0J#Nn};E(ZGogrLwK zQDj3HtSz#(yS*}CCm9?Xil?>&8M7x8vtujGdR{RIDhdT&BVY+>TJ?R_Et_G{s<*f~ zS^u$yyTe!H_{WJCHAdVz#2$TUie;A#6$(@I+;#Vc=Zq0iIJ&DY=bhNsW-U%TI$VT2 z)ca>l;ZNc!@`0ix^ zz9>p@6^c#yau3*Khp1chaQ(Gd?ytV+E9+i{wPxZCb8C*xR-@)-vc0u9^T>(YPGdUV zX`Z#j_$n2WQ{z^WFtFxtWZz@)!xM}UTrQ1!Ca-T>j%%?wQndUBNn+feb|Pf2g;xyD z=(#zffa2L{!dv5(Pbg5EkVyYA2yG+GoZcgOzP#?FF>mWApehVtH!}BD%8y$L-2E4*g$a=;|5+p6+PN0}ySG$Pj795H))t)xdebWa zaGJ!7E0^DXSJmW|p8LChI zq=Pq2N`b=DfCF?mqx>|5U(Et(1qO-`hvfVlj-Nd+sB|;BV#)0y^iQ|M&tH&`y9R=H z&Us9@MF@Me-ep9JG7^jm*N~QF2iT)au?FzMN9a7BV}ZKo9i$6oU_Nk(Dk)qmgGR0n zmkHw62EBs4>4)JAMW#pg9}W>-?d86v*?jYe_s|T< z>@(OQhOhTO2+#-}?*3d!3ZE#ZkW2S!btN)FY3Wip$T@&goTsdk5K9y}fWM0y|4l0e zZ|>yTMo6LD`TeQIWxaVIX1O9ngbtoF%rApV;}V&RRis0j&Ep;HpA(p_!XQe2C^$0x zNMAi)=dXwk=PHaUBg7-;;QBCQW%w!cf9;Paa(i87IduRZxg0n89yiNx6jp!BFg)jd zEzaq(AkT$hr7sHAR?k`w5_~$gioX_;G>VTm#vswV8%gIMBnFaEqcaOs@DW4|Bx3v& z!YIw5etivbZ?@lCxCZ=kSa^wR+`mO325eN<$jQr5c`8vFVO^{N3|=DDC8DCHHtDf# z!xNW!7e2UoTShoVrSU}0dIL+!yer+7Lma|gd7!S5HYALKA*UpksK_Y&G7E3gN-S>lLgY?pRSiNp-j^=oC5c ze|I7821QA1kd_M(6?pQZJC!Qq z)u@bFyITw|{`%JFpi?NAC`81KI^crS08x0VwCd()CC5Nh8o+~4#LMYy76+;epr38BQ4CYS+g|#N!_k@@ z&HIp>3FSubBiDIm2x&vhBoJ{6YYXq%T1ebp+dp+k?x7`=5{6!;rgjnp7OdSih}#5WiVNLb^I9z%wKj;`U!X&*0ZBWz!(8}aF`vY*gk?}OL-kk4)QK~1J;{x2;pGd@Phn%ZP%r` z2ACOCRhQe!6KZwu&2=*djUW-I2>lqEZNT`@FJD)tzR_5yr(j4sIzzW<>wmcvlp@f1 z42si%|0E!QTAL{V1mWS~Sp|dpZ)A6Yd=^8( z@A{VZbL%p&zNj}vxw7Li`BnW|Q8Bzl4OKH*{tv#fXM{}j_>~w-2L`fsMh|w#I1303 z8D$wuBJ`@I#j5nOyiVT8jkNdwfLHLv-)d#Wzz-F1b#(#MO8J&)azqO97* z!v+k2?O>LlyZWh})RUWz(L~%wqx{Dvb4jMRHriHt#j`1$u0oC*1HgR)YPs)pvY#v~ z7pCjv|K9$~2tnq&7FrFr$~y8&XQ@sCJR&ZFgvgz1c?Nm{S>F@pmI0l*nrd8djfSJR zq)_b@jJlH?#eVBM4N?5DLM>eedDhq$T;Brx)hWZ9yY3|_3~hS$TL65$_}vlu}Dd5uDo8xRWXdc@k9Z9orJ+r zy`^bC)Qeh5N6bK#`hCQV{Wbdf`npW1Uc0u0h65vr7ynVFfLy_zc?3S6p! zo>#>xrND{|Y6ZBRnKFWc>0Rfc+TU6Ez`UTDY;0sCp~yr>$K$f6;^pO~rKJUMvR+ke zObl202xt1&q@<+O)Lqxs3N>pR8=Ftwy!v!QI9Ox9f19XEUwU{uI8=9Z2t&ZqC?)`- z2QVh%Gi&W!dO&KKii(PcYnOmcH%&c-TBbtn{_ZX$G&ChKk(!3aiX-i1TrUN|a;`X1 zrW}%AD&RGLn>m@7eBZtw1hv@6i0x|oBRFfozz8hG8Vy^2qRkSMl1PMo1m3;-4Dj*` zWiU9HYwieusxA<%7wU>~ayri`aO{hwQWF#F!7+Wjzh1QA^6(+XKq|NZ*fEpap0r^4 z&{f}HyG#;n2v{PES7g<^T~U1Acg|W`gtjeQwPq>X6TyPJ|KSK;P^sdU4*cFNN+jiV z{Ql#|jiWq^a;bte{o@|~ogPw}XQGlUUdgQ9f!)JKf;=!*%at9?oHwcGCYqU>3j=4^ z{~R2^&+z!n;2Q9#I4y?;2xiwmcDb&Cr{0yAtZJyU)SAoR@xEEO4F5-cws&zRK{2HIL z1t{_hF2H?*t@gaObF~2+M3r9KpGMnZ!fH^)`8?j;-racsi`&gj)a!S7)zuD*jkXL) zvi~dUfVd0Hz*i&0;5pO9is0$M0zyZ(Ga*gJ%*pm4o?8$hrA-4XDr z_~JckzRXcTdD!oa=K{aRAt;`+Jdc_IZXfd}9{pwLP8);mz~ppyRf-gIbhrc6`70_-5TpZe7X zqRcqdGT4%z!4H7ByeP2}{4$7-FWzMpmBbM<9LcW@p`3n}sYQuo6x6^(MNSR@G4l%4 zO~AN)4G217K*a!#j*Qbv#m>$S*z{k_5JgkBz;$n8VqybI_4n`3fOG0!U-V*!?=zT= zJ1A?w<}m5DTqLRM!Q{|I#Ky*IRrqWsslTi$xTXTvOHSs#=KvHY3~~T^%x<{_oC4sA z^8zjsdXjK%d^P>e$5d+?CqqA!4U$4hSTGSDyAF}$V3M)N29vBAZ z_t+Eb$&9J_J$47cfcG+9a9TaU8skZ(vKazjI%A{cC@|C4VXt@ zE!FqAl`NZqbpxFgI5;>RH-95vnhC(7v$0i!)Cg+7N*5oousk~O;hL(dW6+3zgO5)$ ze8$|g)ZGXUX&Q;l>{(j;o~0ge4gnJ@Fb`=rSb-`Z^miblzlMk?Ca$d+K=31fEiR@b z^n+^h3pmrD$095Y83N2XVbn6i;) z6EB-t0glxB>*JT$VBdP!IGV{nhs_kL|D`M4|2#Wj86EX0E4G(){Ei0Qr-Z@fXsQ+R}Bq;WBfAc+SJa%}KP{56i(UT>@2t*Bd(Hn3@z&=!EGz587n8R@P z{bI>D?Zt?SjZHCKICL#jDedg+jE~1oepd|$32^s;`Ev#Y{dI?GmU)oK05<|mw;tC= zZD5_XXjO0}3zRlDH-Y*6)tmR!92|+iM&~U+4@V2GaNr>h7S=?Od^YGNP$^K-bsFIW zh8PM83b5w^_F7I4I3QqLh;A0~|`3TG?9} z%Ah5Oo>%s5muetefnYt>80S8aRW>bem9fn*GP!*IGc0Xu9LfK0UslygKXH&t7jtCJ zyV;fep*+SGZ4I>`PSjl8YV$YmpGALnYQ6cDMNt~bod$()rAI@JxY8E}(&!?Bpn+Wq zdU`%r6b*VaS!DZ4QAS9$v^vSAYT?WOd`nbHIjv_OK-kG*CqfSaS-9F)Hon(rz5FYu z{Eh?9fop4*!3jqXyWV5cjQi8A0Yh-i;D;H74RcBVR_3+(^3fF*FhWugda2W;pLn@83+de7NVh| zGB7aY<>$NbWxi0u_cu3eC@IwRoSZXebs%Han1$!PCMC7wN>^4=5}PAvm&;5n0S@p>Y**u%rayxSY6a)=5D zq=|_^AtA7AgwYTUGN_+cg^>4M{WhOm|Pm6X>>7ZOcEiJ5xLuiDRCdmP^JfY8zPTd+_OF~GGf}3n5YCy%d{`uS+rROj}@AAW*}jL zhKhtuJ$Jd{sa+=gNYH&@W@ZK+@W~W(02!VBa7xomU>9H#g;us6wHzGSXeI;S*L&+( zrc61|!9g=zyI^xwj9H*kHd8y_K4J!!Gq*2Dl|z#tlRuG|oLoCq`x!n-wgKEA@NIwu z?Vg*v27(Ge17qMdI9P(zWn>H;92^{J;2wfUgAh$w?riB$;^yJMEmBB~S+VaT3=VL_ z&EPSYkAwbo=Bul%b#!#B+)0!0%f&%t4v73Kp|sg@tU6Fj{QC8`%uH`ZO%r)HiI-O| zFoN3sSVzpC&`?sUbvrexTUaWRCxd`{mq%v@dL4kT5Tc~4%xyEjrbw4CC_!)9qs%!{ ze*2}uclOUzLJ0?GaH#@7e`7EKU^mWm5QeLZVr?514}mXHNJvOePcN$nLDb>J7+a#> z;q%fLGL*y^`iiJft&9XCba?Y@Bf$L+XvtxanFL903K(ob#R8zpa_g5>=c!K+a1Mb{ z82GaR{<7c@4?({LQSSWw9EQypoKgr~MBdbH2nI=u#Y7&kt78&zMTHxH6AFwR``MYc zTMHTMhA{JW=JJw~zd%IF@_o7m=j7l|Lu6)?S!hPvk$@2OC^6Jzxi5`xgt`Ry=sTXD z`0qE4T8{z7>gwuZVp5;uA&vp3jm!4WbWa0e1nBkBOa|;GXnc7_l%`0I0%nvS-n>Tl zx^64K0MZo`7uOse#an0UdoIkS#<_k%{J62O2;>xO92{0Jj4K^UDJgKG&TINfTaVlC zL(t#Ug870@I;){XdM3{StA>}l3^clcmM{aha=kXKqN&ZTt=gV{fB!P!5C3#O2c)_x z!_1G*|K`h<6R?gPc)oR@`@Q9x_8I~RnP>~{q#KRZW}$WyOoEi()yCPmzGwXg;0d4& z3R_N6`}#g#?$5;%^PT~y;JzMAV3pSSR~iTvfaUfj^|@IGfT74`e-_k=K0ZF+=b)L% zwRJgx^##ZV1qA`L_9^~5;8;JUbAdu?_Iw%iACzm>0UR;aXsfM=3zpEcX;ILq7a0Op z5ahN<0#b9>UD$75Ndr)ohmHT4twoVAaMl9CJ61Ea)(p_~I86IN6ueaYHonKzQ zWMI%q_68rn5p+z3l6r&*(gRl~*gC>!Gti8tR^|c}Adv3Px5v!QPtMQp59-EVdP)G| zk&XWj&I&Lr4-9;mjfI2a<8Ot>xO;j^OGs4H1~)JZ2rQi+fVK;;4=->QsH$TlBbV3L z$A233b3_9{7b#4&z$EBX(xRz8kpnC9(s}nnD5u-E*DM|aqyl>Lz5x)pco-8FW{{~S zYiVP15P*PYHkS2xHp~jP>}ilT8z_ySLlADfRJ9B!$d5PwVj0yd6HS|?V@bg?_ZOR3 z3+e%)2H<3Un6=|!Ef7;mTKWsft9*QSphnpNqXFG*Da_htT-IvY+J>WULBMnfm&@V>Q@SfnfK95`Is_l0FIZSu009CtYg`iFPst01=lw7nAslnJ z>c)|-;`{Xe^YmfPs@!+>PZv#ZR2&rxuDq2J%HnwTL|qkScfWF8ATU2}^2*XD>C8mm zafjz8ZS(JAT)T=EF2t&;%A^chlZ9G&Vh#*6mynfhF}qY>A7Y+ z)8Ix#3G4ND9Z%R%S7yS9miJrk!9w8cr9Ql%DoqSU@3(Kh+nlWEBAi!P9d*_YF3`;G zpW2)e5A@yB6|kfX<9Hh8du9oywkn+0XH_sw_R5VKSmJZW3i9`NJK2m#)#j!<=>=Fu zo0E;H(a1Nj9HL~i6X~)Lc)o!cz-4aRSXCTvXA~=JI>x?Xr=g(81((sIO^BX;7oeG! z;^!l^Czy?Tg%*%-dyz=p$XQvBf!N@?S5ibtMYT{<2iBV3^#CZ8{n12CAOe9U@wu3g z{;!(Qdo@V8L%|PvaEq$FBB?6Y1`I?Pkw3XKVHdGkG*h@wQ!F*EUIsSo&{B6 z{Hv%uYDF?&w&(Vwc`gDZV!P6YBofAmzr6j#V?tMX(E_V)tvGk{Qu^H6GtLiv{m)gh zp{lh&u5UV6ZoLNOa~6oophnE{*ee0)WZ0-iK^BDA*-Bj^Qd02N#Y>av)xiS5&Vcv$ zy}!TO@eEorfYb#t54YXY4XBL%`^M&fYY$r6IdjN6!=rE93Cq8NxXe*_rw1Db9l#dB z`h!rAI`9YWgpco2xYeK+m@Jw1#YEcT{1DG?B5)J#0mK$e|3kue{@F*^D4!t+ly~C8F}CT0FF*BnDef7d&glf z^-t>2_Tq83X7lzwq7zRN&+w_Qv7#d(AlX~=P1(vs$>CM}y9f+*KOYd790hW=d`&D^ z)4@GL{k%uI5KTrZvPF8~O^EUjGMQs4`oVOZff^=LCcczR#ML6@6i?nWQKvx8x#H7}Qv1H3-+JX%MLyc=A2 z)%>X`U$}x4m6qR|j;bnM$*<8cF?|6c(c-eN2D;{|X1A@NF9XMphWYY9M)Mdh6x*d2 zbjkWR)Ai;^kNSC{6NBKR9orq%PySj=RXj$U_<*DQEJzcw8-*+qd7Efu{1JsfC;KHup2!qL^G<(ZkP=L_e-fiFJdQ zv;WO&5kHW&Ged>eW4fqD}D?K{9FoHDdrTI7$ zN%D;eJkKY-udJxO>uM&cN)hyo*qB)?FgYsT**1v706S#I#hm~=(f8{Y0zCXn<*(b~ zoSW!@-)xNy{(!_ZW)=evu20Qt0W^8yZrkDUzgpDx-Diu{Wte*%E6`uciOL67Pr z&h)sCs*#0%?0|l;XUbAKaYeIqDOh;W-I9|9!QPR z)pm6MNp7vQv@NLyOU_TB*}N~vQ+WJDpSU+uT2AR1tZa6l`B{aE^r=+>91KDzEM%7M z!WU5)^Y7^K#2w9d`~JCq@2aSL-0^Q^E+_mt8`*9sy{$LRKdqP0kV7cFqhbBaRZ@cR zkZW2Cpk*sLcndxO$Jcj+Du@R+ zuhCkJ1~2EEh#lqzH%#zbYx>B4A~|B_vyoU38V3h;GBaWch0H_hq?q5|8rE)FPrAmQ zVIeD86vWkFtbw)}9}t>AQ#$xF4{VH#*6ZED0ICJW0XZJL&d$ziYiq&xlL&g$mzSeQ zt4_bn@0Cpf!$-C|fq;JO&(~JYKk!mLPkMUX*s(3O*BfD&Lic~-F+M%w(f{@jI|$F{ zNowmZB-enb_TO~Z;5qZX8@FlZ**x9k?04kw$M zm^cH!5DSYPU^s)~0F4ZqF6-@PxNAF~i^u&*{QsGFYquLgR#}f71 zX%A~bY!o1VMDYEIEZX}VjYKaNOAp+7^?IBf`?W~T$has0s1zs;iw;&ue_|~d0wguQ znnzph3NFW*C6WH7YarwlH1_)4;)JVe@&-`B7;RU7tgS2CQ4B!3&cfrij6SQ3cIqnb zo2S7*64`9QC=_u{^&9;cm*HP4$a9A0DMFEqjD*PEGh`*CLS&DGl#yMD zlIVV&@9+Kx?nn1|(gUaKoO4~D@qWM7=f@Kb#zyF zRauunDt(q~w)sv?C!J|x=VsdJw;wi_y~zGa|Ic57&pCYQe2|y6AK@;@x#S1WJ?S1e zzg!7(`F)7%&!!E>9lk=cp+N!!i?Jn5vG5X%~uS5`}Hd|r;G|(#sewaz=GvCdvafI{Eh@) zwK9w1D(NS_J5}UY*UF@NKLm3uFT5XlHP#~xjrMU1IR>vC>q)Ph6^q?=JSc1|mi!i? zHq`mm^=Qq3TRGQhRqVqA#p-|1t5`dy-3&Uti9@wEzP^&TJ*$tePl-sQJxR_#<8ZmH z^hkv4ni5my2C=8Z>uKAW=d*J1CA-#>g1Q6G6k1wtCvgU(DjFGH%U}+^ZtL(wDT2xm z6k`;RBd5e`x>7$kWr|y~;_D{Q?NY%~k z9`>HiNB5Xza`BLij2A>@=wZ=#AXP%;LVMJNgd4>bTSsQN#&Op3OF=YzN>Od(n{uq~ z4bF#?kI?#&S>j`JdH&Eqi_lO=OE1p-L&WkxdX?s*m>AYQdlX#9Pv!PLPDuERl@v~G zx8<2$Gt&!b5oq$>lay%)QPf8->1iC z%j0jw_^cv+qu+RnUL1J(p*uvC*J1nqeYjlcI8x(xNe)I0DLSoMjvxO5wy82VJ zb$vafoRMF0%3eIN*j@UsYVyk<%P@=DrFV}Fs%`xCgKJAjNC2RY1*{6l1{HZd3CK9e zFF?~P5YAfkO2XRPJ^ik^8C^lXdEu5%?y@(oUq{=pecv%tv^7ib@)Bx0?ew$ty=$Lj zKQhTb=n#G>7b(eeoQ%+XWo5h*rx5-pH1Rq+wFPx4-BF9IkilKSi;zYnF zOXWjO@cyqXEzS1k_HS4GtCaIG#9QLid7XJnQ5#BbjFuKt`ZMUX(4tot79OTTs|LQI z23@9Xq7&K%0M*A(_#%zTu9%GRhy0XYdmHh{M~U9GF901nRm7h@sK3mGlooj~1Ay>< zgG7*V& z)Y;XrsQgLTC92*)M2Pp4eVpw~N^@J4tWoxsf${k+lJ$JhNbubSDy8Yc0#=`wmld2~ z5)Db=hiDcc@OcP*0d+o1OjPjtVXdaiagjE0rmyszCAx2P-1ry-O?ZEO8uS7*bgj7} zfGTvx#;Kh;8WfED?%lhPmTDzPUjfABz!+Rw%4I+4DB4=>FAPH{1%>D1RYMuQX1?J&9;`1fL^gH{QbK8r=vq>esr~o?yU7{8er;r%YY>kRW3W0nE1y4q1~Pul%d5AFy;}_OWMj^}oBB1jJ>^$67>uaJTXuyz-IVI%s>tr% zCP1W(zBf~&%=zVm$3-Q9<18Ab;eXgZN@X!dZ?#FGt2`O;=jdN6Wtv;mcVu=s*R7W~ zS;ZZ7Hpf)h^z&l|)z8|$ql^I#D; za*dkDByJF>9{DM~YPl2G5_Mx!$+i>cvzDWMI$Iu)o7|GIturyLZ3sCF+v``3SG(J!jpkZr!?tUn3e|RT&edhqN=VrAc(4luVArnxzMW z4!}A?y%@V@V%ierDvF9aoGQ+0fCxbf)}j3s*3FThKU)Pg*2_0P_Ln?;&$;INYY=V_ zaMSw{+1bB-`LcPz{ED;(ef$m?ThWb0k+gNje6}o_*gdJNJT-E+9`CwO;D#Ij6M&bC z;F2%AW(aBe(YRd^gMvcBP}tfp59CI?ruLLy{K8=7mBmU5Y5J_2Wdby`mp1+XZIC7s*k{#j*eLXt* z540`0=Gu1*6E+gL$bA}nhqduSS9&W@LD;;%?*8ShpHRHlFyC=6+cb52yO;E@eCY)5 z+iE4$os$P&F$E_3xh#xuwenPfwhv<3V?rhqURsL<1O?SWV2e>h(!73g*Yy1p7ZB0K zaam@~en})*ES5*fGz|%Se$+IAX3L`&>-TEwG9Nf_Aa1WHikbGSU9VSA^GE%7CZTmhZ`Sj&>(%oY<}x-;hO-Fj+h!eghgJO` zH8SgNQPZcVD2W9NGEdZ%ns5cVrMuMUIP(Xj=-dv^tQ+?2_N%*CARB&ufhO7IWJqHr zyJ^u3XMo=A@K?`LmQT96YV1jJRF`?A>vxd-%qN$beIn##Mp}Zhw`D+^KS=Q=`T5;;dkCuQ29|GQDE=zNHxVtzHzG9dBEmrV zuj+c{aoy(%4VgK{F4*n*ygXE&m$y@HqE>}z$`2pS{-Y)FU_KID2;4W${Yerj+1F0u zt1)^zW=g~tr_YZ}6AK!$*O`^%xy9|cx$*k__y-fwGUUQ=Ib*K&$}vBKIvoP_$CA%3 zLN9FdwS=kd_EM7fx7;e^ zw)Y*$vR0)4*OD3Y>!o5ge4bEXUr&AHnWIir;g#;rk2|YFC_i)wKh)e(Mc>YCaJZyU zJ(op|$|>%|+HSc(uXRuUL$w`R0@_ZWT-q7g^1K7K>OO6o2)9;DjbYrXN3Y^?Mzc;Y z=-EI0t=z5Aj1Fp{qHx$A3xKxam#auG|Ft5 zVj)4n67G+ z=k{VRP#fF+(X09J)fq`YWwX_ZT}qp1UC!hsH3}~(7^qO)Chl$i>|%d~sa}s+jkyUM zp-;n|tq8=k=xWq31K{-r6;ve_M?m+S%0w~~uh3019i4AbIEA95!h7ST9Ig2Lf7=-e z5B!Qazwqp94~NHcs}di9D)8A>1Wq~2N1i3O`vl-&WC@c`+pH`MuXSl27KSPVTg>Sq z8s%%_5hu-WuG*m5mParMh={AQiBtq`lt^%eji#uDV7fXvEhJtYSp_=0t6>`{A-+Z| zNIkbJn3{^3T4}#at3-!pzd*wu-0ShbV&Cp{aJ3uvu#zUtvFl7j!3RK=&i}TTI@A`% z&+Ixu1jXPBU@3>~>3xEXxPZXDJAQ90Lycgsc6OfacR5&T%e;~|=I%_xWTG*Gk z*t0X?B=1l|zJ#(p{m*_r6j(`PIZK%q?Vs;o4Ag_0jP3k&DA|@_>IzQz>RBBZvsOM3k0*>7i1O+n&%Tjj zh+cBdY7}0JE8|$+J$j#?z|8*f;1Q9xHAob?8TXJficJ!9V|8LC&>$U3y6%ep1H6jl z<|)7}=)y{Q)$PkZ%zK_A#eDtx6>(v*Tn`XH_wL<0SRythM+pW;hKGMzT=a$H0O?uL zw50^@;FMF5Z%ChhMo#N6O9H!eX)9_=t z;H<#v#KytU6#j9m;Pc&8bQQ%SSu*8kGy5d_4;RVk3X>^bqUDcn?}6SgP_!h!4NsqM zX=%ZR3T8W`3>f_4B6hCBt*)>H!azkJK-joGfCdGxxVSixSk24}EYIo#cSv$D4&6>f zso3uyf%Z^ecYCbdJ|1qWAA2M!J9-akIZN3QaxP!rK^?lEn!Str`uEYyey)~9*7;mn zx2TnbBdPj=1{aEoMJ!l%s0=KUud-QPJ;1rC@V}@$je0As4zx}&B4$-yOST9oDjlSH zTS96T<33KwoSdyRqfzddT}B8Z-^J#Vxrn_h50Gm&;aW@;L&@End3k#?W#CMAX9D&_ znbrqj7u!cegGzKxd#<+ldl6ybd`su!^n_cr4U)C7M$eMOCHVqup84!m*5D@6==RTT z^x2gv2untXYtq;5QgM*tOxKT0vt2FPp~A)V1{WUOR`?*?X7J6MLqbBiH%C$vT9Zvk zbDnEpHKAcmM?xL-w_m>w-9b@~>PrHxkdN%W;FJLesakVwg5^DN#g~fED_%^J4Omt!GZF5dsCw~nRfk!Sz+3k+LT`MAIDN5Wb`!mZ zPO4gD%AMUmh5gguUXDLg#q@L}ScO(9;o4qwixZunr21&z@hB6K5c$Tka2srT+4>(F z?cc$o#61ob2iP3k!s@GwbZ~H?1B0!u$a{GP*fd4$bm-8VY4?&e9c7}cn;YI#pqCA% z8sbk|+YDZH(kpW^nGDC{-o5Q3L8LVa)bA8+qbv6LuG!_hDf0FcB}(Uzm!)7jo8oXP zR&l_?+U1w0vht>>p*J2Tt7E_KJ#g$%t@;}xr5V|C${}wXG&I!I)L353&cA*CK1{pU z?wS4;_s|nxD7@jsgiWEJ-i&J{o&$FpP!2d@j)quHyF)-R2eKVF1N5g4o0)g)CM_$=t1qU_6?;lB{BFI9DYzjgrq!r_;3kbBLc0cbeJhxfDv%MP;6G9 zzpWk?QSZtveDPn*>Vy}$?5&X7wdtP6AB)o)hLg%v_3Z%&Rvy)<%4P>M5=6K1J5ovAREM6pO(r(F$-<%Q>89y~r*d3FA_ zVe{F0!}E^PKIU4I)VI&+*8H4t>O8hsAm_VW-VZ6VP?X zW$_MSHn6cWbDIz$ncuWT`k%)&)3hfRx=YmMkE_+M-cFXIQrX|!lV;!%_CqGYz?HxB z&J9z=GZQWxV9;iwRpMK@1#V{KP@kWQ-9LGI*?EHPQ~I!HNyk_W?d`+EFINj2X>*@g zsNPYNs=&6!AxX{oQTpFTp3%Uuo-V$ws_& ztuB0NU*I;w8_EK=uE%TUvfk$?_ik=V3!=KER=CoYEw0JMA~LPV^x5UHD6Y3vidMev zqt}?1%ta+-!p)H+ul=dxkI9P8{*Uzpzun}XQbhUd%~#Q5*_T6pycRG;*Fw)i>nff5 z^NZp`xs%?bA7oDR5$LaRg)AlEQx)pnGqO}l*d-o^oY|JfOrP!<`}cds_}tDn4^>UJ z_{<8V^CT(0Ty>`06Cxo(0FN_CJ@*AUR>v^Qgt>2D^XjqhKZk2myvx5uuW~%%VnXe$ z{FF%0n0LxNw<4a~`POGlxW*$VP9142fMC&6!A6DijO@#}mB{xi?zAZJpvB4gb#xEE# zCui_?bu{~i$#2G4B59{e{e^ihrkAw2H!U`0QOCEA8D2kQqAUHYhD$?PK+yC@kS{M= zRCNa9J;w5{{OJz9OhNcr8~i1ei6wKF<(+L5STCP1Rh*sLy!+R$kOhwERGqyJQ!Y8E z_V?+xwO*;@ZR$^}ul&(#qd|LnJWBT1hB(UlxDKJNytA8#*YXk@v;DRi)+%kp8R!bOAab~rz3J5WY z5U5)VY$qBn&!5fhqLHJa;=aSCogZ-Ou1dD5o=R<5S=AkfNH?wQ3!RhW7S8Kt3I{?> zqE!U07D^|S$^=;?nia$mT{~5zP1D-9q!S6qDr#@Z>l6=oqNlun>FB{dZ6an8FV00J zMd+E2$2H0vEu#%#Q96U=|NVPsfI4I{J2x+M6p-gNH8nwOn$$Wpw1$NjS=&!ku>i(I zMI9G#M4Gv&sp;lNUF4_9)Z775v1cQ1;CqnwoQY*o6Q=h)#CCm6`*jf$H)yqDn^RsX z{6TJ7?c8KA4+v~lMLCXgQ4&@T$O56*9CE5gEG)eDDB|6}c8vYoSp4TMyGO|S-_mgcEU2CTR``GYF}wNL%I(CoYtk0KWX%_e-RpT^Pq6; zfGk=#-#GCs!bP{u0+FM%ep?My3u&qk| zFTxZa0fdWJR8$=5hqwL{TDAKMw=ZUJ1yuPetk*8usmfl9;E&xAOqk zjmBk@CWL_t3g{QIc5f354heQz{My}jl3zf$i6yOUmkRX8Dg2B!7t9(zu7XuA?Y>;V zQ$pfopaX;}ncJx+fD~d7CD8Lx!q?GJq|dEpdmEiRd9n_z7^PJE^=lLk1&q*>p&VuS zHprCN6wcdhCn5IT$|-8l0Y3)Oq;oFDF$RK2)$al;22F9E;bow~$c;x4iMukZT=Zz^ zQA9-N{_Wzl$5m8%R)VUGCw}-boZLa{z~tq7qWSlO$rVdhAN3dccO!+eKB-ZthN!N< zlHvkOI#$FIv$6FL8(14N5eWQ93BGLfz->@JIDpjp9;X*3f8EOy0!honRVhBJyJUAw)J>yw@IU}s(A%tU>G1=!H0d`++GE^}oO`3y#?#if*Z1h5FT^i%dx zTymZy66u|tMBj1%BwAM&NB)m$j*Y!sW&)+TzW%stCB^Bb%vswgi^O%cW*$3pg zv$8$p&E6|dn!IsjM)B2`NS09k=cet?sT6d1m7*gru6_NLYSwTjZ2MiYtgJj!U2{2c zjYwYO7|xd0vH`}&1w5*UJ!TY3sv~NhW)}n#gr4e=&;U~yRwNFnM-Ci{PJ3OShFm^~kpClw){}Or>Nwz&-jp+T7JMH+> z!D)2+TKAMiNTzl!`yS4rx$QS#CIJWaz2h0ze9XG0c@Wp{`BQw>&Om=dW51+Q>4WP2 z>`Tj@s;(mOE#~J?nZgmW9b*x6F7y%T)6unq+T&92?t#=A4+>a4Vo_oy5ZQo04@CWM z=a6`74H^r|xT|0s!H!j$icmoT*xcR@K54eh#Bs@I=-;`4nuMLzLjuhsbfHPQYg5HF z2(lXOJWz8k>Tr6^Px+vw!&yIz5LyAX`qWtv8t$^o-U=b23co-3+m=@1x6}ELVYVtl zPJ@36s~2RIiM;An6EWu~pMtgS4|W>X5E}pwS3h1kiNx2(HowM4RkvbO$yANp+*ak9 z`E%qCFY)wl;^odDC6g=OPyTAW0v_pv+Ahpf(8l6uRv!OrB zqsz>qwu<;wiXIiTgo$nxM1mH7eontzt$O+GNWQWe2YIwVCqN~eYCKj>C}DyBd}D*+ zgGKejl(;;?dHR79C`-!$u&DN1NmBxVMWVcSB7beMyw2E=w zRx!wkK6Eu)Cim}u z+1i?`& zjlm48o-wLO1e(Ye|MV36c3$3nq7{;HEWhv8+N>IXkQBE8iU(B-3?si*R;1V&u<~qx zLxe{EToA>E3eD=zONa1;BNV#cF{}bV63RtieyD^X z0;OQv=x9`b1OrVg_>RR_eCmVZ4?0P%l=ys{Ext`^&T{_ZzJPTyw|_}h+PL|SuQT2n&Twb z-CURKH%;xe$B8OfNN`BY)(>|b$4zC<7!(bxS3xt5>>%)DM@2=yBlao|9;^L?|4s$! z8FP6TC%)w+>Ka6QAzw(M%%m33gC}^~Rh*Lp91pT0sc`NOa=h5qoeMKowpGRhBRpkoDuKP9RQv@%rc@H4=Peh{f(ZzwNu zgOn)Bok3ZPS_@U6IlSSpMFL*q%nwb-RXNK-qC59J(9r7ythq;r-OmCuOP3H86(x}z zAoh27kMV@4m-5T~59Z?@J>n-c;2tjw;+UOyaD5#)L7Bz%CeiWnoSd9KU|n@I6xV;A z&F%ezvx18DARuNZ3(GPPrcz%@EZWG(2tYlHe;;eSN|TcIJ#_86;Uo_>BSsin83-^h zDJfy0Rdg;LIkhrL5r^OM9zIpB>6b@F{f5Z03y)G{x7dJpTRQvEz zNZX~G67$ztb(t@P-b^se4Snzcl`a*)s>HZBnd`q@R^-`3Un52+6FX)`1~sJ$x_{ye zWv>3zVs3)5iXupO7Qv`|WLC$ZBRwU>Pp@Ss8_x5XUR)flbh~J4fer}9RTMEGu36Lu zVGN;A!JhLiQ3X&7LT|o~Z{GPk<8AT1pHQl}U~?;|+whLL)Reb@J_hfE53-OyxN+<& z<`E9G!9hYgdU`4X!?ixRD&-KZfr=jF*Fkq%UL{&B%JD(0y*KmHHddkaaRJf9=;$&K zyN@2RQ=!1X`hb2-Cq2d6+vMES9BuuxLjEi957$G#!K@eJeEt#I#IDe|OC@bdB=IN%=| zgQ>4}@}v)|5dma3Jv~GZD2(Kro>q1}qYY6Oun{c9_e5=~u<`o~6$Ayn_8x6dMGcMp zSsDa|g>9xk&2_TS)LRw5Eiu*C@5x&5D0g^?Ify%DQtnU*D45bhAYmQugK2jT2D);W zW9d;uD+!KyPdQGvqCp3TP5UNu>?Alsnye~@j2UxJ@R1{VDKro0n}v?2{+X8VQsFg+ z)Ab>}CgJ$;{+h=c&&Rk@7uQzkxh;q{R%r0Xv zNT$abKQ+ufbMPUK_p+f^keon6TTyXzNtV+e3y4-XE6KCl8C=-M=T}lshMCt~E50b1 z1=#~O7G6HSr!!9#u6;x0i$|T#ABl1k|FQe{_ncWP=XoOn%E zNO6?+oC97#yDJYB6pmb?I8{HNW_0Ar)Us>vYx3R#!)+~~Sx9FppfoVK@Y>kj-5m>& zQ69OTmn0-K3r#uhzJiY(oXds$Ex{~81L{a_q!?BZ0zxM-l>jx8lnPdW6R84%f{1$4 zIeq%RR^}{pEXaI-S>#c}1}ICI+7`Prx1U=mgKYFhCmcQ03qh5XCo@coi{bIL^u$Dlp*G5NHxOg~&L*1R@FSG&2(uw8^+E zgv4?#pQxxbrs0!<4h#$1CW$%&2ASv{NfDY9cP+qv@xh7|=Wn(Z${4(BjL zgT@m*kYNy2C>fLJB!<1F5>XXF%eGCfCMD%FOjsCN7=_@2_d&}w2g2~jxcUdX$YJC1 z9+;Hh+~2(fCKGs!EgYG!&n>0ZeVAVX>fLBxb`$>#PYTco&~=F1_~qmk6mE1RD`Q7O zYQY!S_Mx@d!o>Bqgoopz9$&}{Fhdai;RuG9xWnpt@Ok60Q>23ixrSJL(D_i7+c~0P zTeW7a2+UxV4Yw_(Y}B5(pJBlQ-~DLlyon*+K+CN`hYcX&g$20I1H#-gGk?A|z= zDZUS9!~L1g%s0$6FGL1H&x;#t0|!^0XQZXw-={bNgSmqgjBe{lk$AR4v3YMj{no8< zq8I3P0pCG2uz)yEEMUdt1r$Xqt=<`va~LBKbD?xn`w+rO2E z2M6dF7@kLe802JSNqS9i*1ZuG-EJQguJ z`Cs{H!)o0Ka$cLMi6WiJ zBAxTG_ljC937*GmNMd$&#l5TFMg5v{a?Gu)w!HV7-2Zj|XW(}m?*48BV@K~I-N)r_72P3aH^AzBsrb;-v6A*Z!tuvl^}Y(Q}O2uLr8G2>+atw z@AJJ(kG&eZx%$%}T#;JK(VyT0%D*`C_oIRp;Q8ua0p0N*RWB|t^Tw@m z|Cn(QV^^)L%1_G5$+-%qgoK1#V~dE0WWv=|RZAbeqkq3!l$x5F313@XMf$~%_L0l; z=-<@T)Wec=MUmOJ+*Y?5md@-xF=Y;MZeP@E>qMgZ-ALM`Z=kIFp=QQaknAaA!<@cQ z{cjN-Vr;g=g8KUJV@k@(;*8_lrw}E&gsZFTZjqXrS~<&OR8+>Wa>tcUF#1BxGGwSy zyQp`SiJAE+O2%-+xOP3YiVP{0&TbmhO|50TsTIQX%}@8cXf3YsOCqJ38{liP3`jH z!lFuht&2?1S4p!LlA}c2kp4HuMU0%qGHj?c!AjC=HklC%+yR% zCXlM0>Hd%AP1Fkk_dQ+2kZsLeweRiK`GVhlSr<7eham(h$%07xTV+is^-a)qtKM}x zfklf8Y?7E5nC#}SfJfl1w-1xKF_Zyby<7~!ZEI`O40{Ek2ma~^AJtuSx5^6OR42&x zxjti7FZ4LDBDHT+*3)|e#f@xjZ5t%r-TmrLSp$>jCLg<*uJthwNr{<3ts45b1!={=RUF$uTFxC_?8SX}7JRkM}B5 zJd>!X-}3Lza*1rF=T=SnQOAmwFIxEM=vD(BlYiy4{m#<+B*w|MO554VDKjgJ{pl?g z0w(sgrz?tqW!|$|m9q8vErmEEkSJCMF`;+jkiK>Fv^pgLP zHW~Lu^b8I%AW%?Is~VMrE8s6*jt>qFTJTIP1QST%NjZYN6@o*S-%{XE9C94EnmXQk zM}U%19XD3&t7ZOFNL@Kj&bA3A6AN|#7>9k_^TZIC5pNO=HFa_A`ttp4BmMN7vtwOH z_h=F2RI|;SpHsxdLj^OP#sc0?kLMNhYLk9OZIAMD!1KvxZWRv>50wczCMRpkNL37S z$G6hcDcwEWu4n`WuQrCWPJIXmsvPx8IXd@Z>9M7hzn+w8=DHwr?VE zYe@NQ_(+nEl_-4N%Cstoy|C#shcqh9Qn?@5cW zHZnTvtK*Qry7>1+@oaBS=+&!_2aB!Nlf^|v>d&7)2l)XUARg-jDH?^Et>hT8d6{tH zm7vGCQ52%hY6a>|-skh>rgFP&{}Pd3^7_LvAma73{+k0o9fOOaxO{BfC)*tMsx~zo zisHXc_9IasOiB#?KDmaEMm2O_uGOg8r`Si${f;V@OJ61sCSRqeQV0%I(MUwn_J8Ak zOvPg}#UU!%^85F1tqL;Bz!)5yqS}x@Rb9pIF55H6pnx>k(kZ7D=6-kl|H>2r=K!E zoYO<@vx;;n7WMwnFqh`B@grb(zJOw*YFD*2e?d{S>?pA#I%*82Mi!|dPc zocqEP42;9mQ?-I|qHw8#aW=hrm(Gaiwlmc}_qXR26&3C~Q^R%6<~gI5RodX7J{8)l zrD0;iq~h_r`xw+(>asb4Lnf%IuDb#P$Ezof}HUm7!_V#dK>s3xx6@#^a(pM&dg;krb1b9kx=A4{6jh6F+be z@6~S?pU-=<)6r#v;cQP7kqUdc=<2@c)XW-wb@=-!$hT8f)*7m+sxmTv=9|3Je9or9 zSRnsDCf~uys^>lzpPa1A(A}Sq>BRpc*DSRD?7Qk|nD;nK!Ym|KZFg^cdsyCdc`@Hy zWM{W8S{lg?QO6+%%VDr&`*TY8mqG><16P+We_G={s-~W={TlkONxIb1=hU{Fj>K)C z9_?C$l(Ei4a%IfE1*Uqw$(Pf2MAjIKJmcNM^xqmz?YPXD^& z7~jW!`NGW1JgrVNxHXg!q+ak&MyBp^Ey+4$p0krFUN&0=$$!}5H*r?WdgcF@J8^KK;-RvTspOo%jUCgb||=C{`L zjbHmj_>)o!A@rI0Q!h(xb~2?t8Ge=8vCGrgo|>Bq-6tO)yqx*cxrdgJb+DFXf3`cr z$Hi4%TdS!|U~j+wm(!z2T}M^*2V7Q01|vHza<23pIXSskQ*&-^Xv!DVH7VuU2KW8# zl9tqj1OPo;0f^h!*tog50jJ{?Io%JaTn;VWQ|tL#$Ekd#+taq=M?N%-mGf6eaoj|~ zF>-ThTp85TOnBZFbOmyZHFzpkb=-ZHp%Z9H5dmgJDq1c-3lBQkR>c^z5s;D$fn5OT9lt}^&c*&M7Lc{PImUV^#lMxzP`TSzJ1$y(q$PqMu?Tz zOD8ijmiHc9=X-P3JR~4BL+J_%LdACrr7Px z)@c__jE=s~8XhY!RF*}elKJ%*heGStd?Y|c%_j6baHhd?lQuroG`QzkQu!OCuc6;6 zRqXO!Qk8t%oapOelH*|VG4g2m(B807sU3)tQ`jBm6f}PU$_H70CMFrWTo?3}3IR_~ zH8!t{$M+}p<7d>ho2JIIaHQ^FS0g-$;NW0HjK9Bs0+S|4Tmb78(z*y|z{AuFPS4KP z!ZBWI-O&>%aqp3{uZ^=>uRs9mf&cz)yKSG^L`{a_jJyF{`Rf`03RvKDJCaz(VIfY80j3wF6gG$@CqU<`b(K|B)dSPui>MJyak9v4{rxxld%ueqCm0@whzM}) zeQsT{I;3VyjZ={bP-4O$h6)ufYq;qQ$ooY8OJ&duHy|I+u-0_Z^iLcxtiP*H3IFdY zvTAGQZ|e8)MBd-zm_)8B1TIN^HaF2V;wd$@jqJyI(xeRHl6$ySa1Q8Vwg9mzNE0g~%}%e`+dVgK%Y(=~v) zYlCTnTz}nn|Eg(g3mX1{5K5Agh?bUnfc69}M`-DV0qQFlwup#`Xgn~g{dDD>3C}K< zpjH0mf7U_aci8psgy~i0YeQ?%cK=cb_b4@6f;N1z7-(bgM;qp2y)y28t&hBKcaz6D zKduic+XlXZ-XBLTmM^Qe?RmZcXy^{e;m}C zpyHdJK=U1cFUv?NLx71HK7VPq->my>>y?OasdKKn(yXM9|6!3i-Zdo;y7+;y zf;vnT)V_nF_sRX#ssyXy?9Ie4t;QBxgA!SFsyz;u2Su*sV}B^52!bE`YxgruaT z1O&gMx`?+=uRvWt=h#IC(iU0}6&qU=tN5&;l@weJ{cWIFzMROc*G0-)HaUHJ!xt~y z=)>b787Ljrqf%&5ghL6v5YoA8xoGTvQ_kEYN4{sYBid-KyA2!szDlh5b|X!_ky;W- zwv>_z1)4&N@nAy5Z?8q6FsPvkS{P%IkOEb+r*ZO9n5so=vfn2wK-xUfQy=4SgQrPPx zck+||3t7|P&`f{Ssp|a=(w5Z()#-gQe7-u30%E@uIC_;2ey~cWlFV=D#6kMc*6sA; z5!o?9^AN%tuJFWw~guax7U{*UO z+F#3e>^~pBo=b)&p5Bk-aImDzPxPdd>SvM5vRWHn!qP=-A*jwY4qpr%hCD4L6|a&& zb9d&_Gu#rlWH0UZe0ODq2CA$T7sXlsd#NK_*t_HI`P}N@IhCq9oTxOHALoTY-A9eH zeXX-4$0hb?JBsBzLQZ-Fbp#|v6^A^Yj}k#yS9%qh_66UW*6JSMr*#Cm z4PQjDjnq5oz(6>X;Q&FLxjI?R`^%>&Gt(KjEFDCUm@ z>EwKUiv&@M5&I)ksj4zcZ7!EM$3~I8mu3qmc1ZlWmbhfqu~cj6D;ETlK$pt&|6JtM zsv)F7R&)KevUiVSjJfZH#RLRpKEq?U*X-{aja?qa2hxE7uBypS^oPPOI0twWJvgM1z z!K?xtLi2c`uG8?Q8f(KrboOdOBp7DqFM27aoFiNIdxxGKCQ{O@ZF{B$KbwW9jCuKd zbX1fRE`2pyKg@6@$R<9cwnxol&G2oHpyZ36J1fnyRr6XlFZiFl(iZ=1ICQC!!Z&tu z0i#>L3y10Eio`*bn8f>Dqh22E-<*^dZv2WK&u6z4Qgnlm%#*9YW044z_>Wd>Y5L^U z`%ANYE>YFb5PLg!gEVy#nI8n2GM*ST*fH9gRl;TewrM=O)rpwYBX>xiuN8Ri-?>TS z+CzpPTqB00Dp255aVil|+4rnKbVz1%I$ppWQE{DlRGo`C8YzNghmz1{Z!fZqruIEZMm zyA)DAEmsb+=r}6h|7%p{6gR7q#y1T{7EDxC(>2vOdL#YO%+t$D+WO0@48I0tM`0c- zMs9|MjiqZ4lYzTSH}UN_dH2&~fBX%*?|g()lPy zfM^SB#Pt@!t&8W50ZI!ma7QO{h&q(qeE8;G}28|I~!+ zCHgm?B6l#`9U00b@Q2!uyF{}LJ*1E>*ME|QM2_OwyDM{A4PU}Xxw#s= zzI-$Oi)}@*MzJ`k(024Ao&L7X$4QnEhME?hjuj6vK0e=aavPp~igf8M_2zT29tFCM zy~QZ$GJQaLw#cx<{AI?=I|8%|2Ey+I&(N7%Tv8ks+XLTwhk1)o@OY)l?DF@ z?)5#_kP%ZEqLN}{@4Gq@Tibdqm6}RE7!g%hqm!ZSKlPZ`XuF71S zc)o}yt#kUuivp7Xg%DXxEC41(4AcF>EGhQi=k&lY3!`bNiYl%=^S7>=vu}g+o!LG_ zv@hv?rf1OHbHYOYm1_Li{^o0p5?kaB-u3UH19fuk6m1j;DQlK%#t(P>qaP1DJG*;K z3)g9N_3LG7aT6Sll}iFN#3lKppx@j=}ryOhHUysJc$=_{p|Nae7t)ZTu?kqB2JVrwT zo22x2LH!3;Kn1o1zQsU7u&C?wl%$2I-L8Id*U0UaQRnfC^FXZBOI?vLf!pkp~`YL}nrZ&`HTR$GId$ZIPo8L&ge-f}$ z-SnxaT-V`ah~lZGbDvmr!1?R9_L#0*_;5<>4YY9_4PDB&JokvwYg_*Ey&r>`yJY*p zQV1$a|ASScCLmWm8=^&#Q%0B4BuM9CcV12VlSbCZ?R_mGT7BCzhg`)}R{6IXWG)Bw zj?I$_604RLXG28Jekrj%`@I;%@|20vzc)cGJrFbg=l8)vC$|d>p`zxZzr;c=8J}PY z;!0oUWvthFX8A+010|0Xmu(g4=*>3k`%d?SXgF%s-t8f4FypMJ4R;4hF}nT$a4uUOS2TwWDh_l<#W6j0!={+adfk9-4-rB?0sR}U z_Nq7>`K_Fd_(ma%Y+(9(Pc)UE?`>@MlHblLU8WO+Vxhz*`>D)cb#MNYSQ?0aLKfnY z=Wnj<$UiA>j7gMDPzsnV&X>+BcfVb`dit7?u=b*wb95kNO+S9~?LUE{QM6KDhr;=! zPSB5SNT)F+pM1j(Y;@6bBqgg8GZc~c7Wms5vJjGK0Jec=|F@^tenJ}&mGn(|1$S0wp7N~DkrX)?FkMEc{x_QGX^Qf%g!WvJT=EuTdVVthohiO=t zzFPWtf^kv4`R@i>pPEG?V^+rBlsCNC(xsD1uWvdV*Ux;zs zlGl!q@wC&tIB>fgUJ~~oKLLPiS5e4OORDHO^zVObt06P~Sb@=M?J%lSKcgD-p6Po)<26%L*jDPmi3XTEmukVN-? zYfUYp!J_UeB`Hq%7K*PXe;I@iqg{4d7B%R-KCM{RXRmBtRbqzv_xj$NH}Fel zXo|hL3x8ij@ZxTo>ty#JiG0F{+-Tjwjsr}CwoEs?%&&@BoJHQN(mtt7xUKzl&=iZ2 zM5zB^K5@Q zllCkSWhfDJ=naa&P{jEYcZ=Y%yYC=>&IH;&w+uQz?q=&XiLnA5@*wVO0vhy@ZbfYD z&*NS$Tf|sz<1h><(KC7z6I#%6i*)}?g?mK=`^S*#5(K~@NYlS%0!2GSiJ-BO8J>;r*KyHb1rS_jM(Hzvr5${aHz5LqiWQ z>%930!cYr&AtG@uh>FkVC#M>OMF5fAmNZ`eF=I3RwnPrQVaidlM(fL7IF zK1d!f3u??<@gTHT(@D2yoYb)j>gdWQGO>2G8mBeZ7|2M5Z656kvV>tM-=9X0y8kM% zr+XYR5$VamGn9yr3R?p(ckJnUVtyK^!X+dEYierXVb|yT51LJ*=P@8!*~DRYH^+k- z`kvY5gFsPC4a*a$DcUaxdUHYC4C6Z=e!srmEt z(t}14V(O7o3yY6GXyE+bF~($!d$)O5sarsEzC9ZClVxQ%(3+>qJ5jr#{7+@r-;#+iygR%** zc!bFBFEmvG!e@`7s$Cbr_G)H&7BUKjDrJ$eHy#9DkAD676=-tUFZek)IXU_Hi6Ij$ z99-Nt=y|G4xsE+1TIzYKatSP(f2+2E`uzm$5!85pckSrt2n1+zd3kwTH6wAKpYDA^ z&Lz+EC_a@D3GU)({L!+H=QbEqmW7Y85IWjY%HxSm_%@z?9;J)rGSdnne+2o%P^okk zKk5GG-2317&5UM$uIMb$c#Z3+*J~#`bU#u$6CAwj{z7$Th{MyVP8Sg);JlVQZUqQh zpgW&zjblL^one{DKpr0u+Be~%?R5f^*52NZOD4$Ux}{pBy&GjxmM#+BPZ}v5;h3Uy z8yT#pnjMR>EOsUvp|%lN?|c6>mK%P~VdG6VXNAA7{dA`I=`}H*m12w*Q&?su{7Ey4 z`|DpUM(%P=+Fg6nGO@L0FSQ1+h$KQ?PjuN5X=MPZA@1PdATN(SGY0g@tT)m1y2Ze7 zpeS-_0w~p|^zty2jK;=UyPE6kYwId)1nkSJpw^hABpp3Hz&~dET>qM!d;@$6|5jJO z$^V>daIXQH4Un!H89Csh9&_%Sgtr^wV4;bF^5OUghd@H?kn7raa| zMDl+SKUoc$Z@PeX3Btaqu@N!^k_%t~LL(x^EO>Gh(}0EGtnVB5%JMRxr|io#38a(@ z#`iQRvQ-JBaz^vO{&@;H)akCSu4ZRvhh_4=z*!sO%t`l^&temk{h)0zF8-z z%;8%=uUv8vGDJuVA5vASZGQm`tpasYT-?+_1PRHKA|0(|=t*f)M{(KVPX`bTD_M9HML*TXeY;7QnVxMsXB zKrNJGd1?bY){ZIoFhfdrXmEAnTdkJcq8)FNIDx}m~3{y*>hkxczQGg6re9BpBEJr)L zx)`{*N9}5o`pv4efjDAVGc#`W5-R{$LjW7Nb$azz!)TwaS_iD4&UBn!C74JB%yNl5 z^EmEOp`uD|ihouHsd2~>aj=`ooS0h1_1|~pRQr|B1>U(5T9!SD@P-im(iW}c38R~1 zRwb|g$}x6`At7b6gq&NoJaOX#aY=NBT1`9f8Fjns_HsQ9#3nJH-E2=hvvm$l>CkoE zBS}t1#ypUWfF76$r$zwz6qo!}H?kTKe}#pGxw)NzE=CghbHIk2=&MGa>dwF1Pgh(x zR9ZvS9Z@FCltD8{jbSu{{fpw>3(mIQMMDi5o9V%vG&wSHH(8I1H9vvp_KBTf#BV~N zw~&y|EvJyEPP+;=;H{~UQ*rju?58A)P(Y+uov8aDU11YL?}vcz+B}g(>Y>Q|rl`5t zY}lco*K@PUX1bWd!VAZ*Un3V&3slk7m*I4#3hkfsPmQXi$#<& z2X6YM7~SJ^&{*9D;{3~Uhn1^vRY+U)oyw3zFww;=N$xf`8=ndl_%zJe>5SzWzmfV6 zHG|PJJXuZ*LtGQi$k=397IJl%(6;+{tptT5Kth$%b zE;LkT5hOrj3W#QQX&I(6f5_9tkSMr6-v=C-VC7hSnl`z00}RmtRexcS-56q9G9 zh!o!D}tBlOrG|ufAr$0(<4RSr#PoninSsmb_jHzUuVS|^Vo4g zzb?Jh2w=#W>3u01iR**pmrW)InK(gR#vL-~mb2yR$pr{xN~M_G9vR^kKdUOnMy%a4 zbQMeG-IvyQ$V@@9xWnyLX7){si^Xca>864N=*kFAPU-XmUr6bxW41p>txc()=eYfT zBA)ShF5&K{`FAD^L~1v_c5IaS-EZLo3TnK4=;~bKL5c5;VVNjH3-)FRJi7G5u}c(< z)#P$jjm=X*@=mM0N=aNS2!fMhKl94mJqia)XLnX>B zQPRp(e?);63WAC42Uj;Lqmvy8gbLPcpmJ!P=mRExHka&NhK&zZ1Bqo@eNDY{Mp~y7 zqeGRIbZI>&QHV-jt~P~FuMj+LzKZB$W=Zi48bn9=cE~KQ_$H3cmKjpe@iwj=Bb#Jwlgb;SgyOg2vd_t(yhDA1#sxuU4Vnx&} zMFygU1q*5Q#}lo7DC^NRYvOeqqw%v0qO}gN-*3pekzZXkrA~7molTEJ57gAxDiWxb zUnP_DF&1+Rq`j+P;zSQv{-Mo%v>%!sM1TdoGda~6s2Um}H%7ovm8eF{r-;ums3ZyK zyk1h_Dtrl034|5rR;S&$eF&ND-&*1}eGP*>9}*orl0rv9jSqR=)9Z{gBXl~3{!XHd zO}?Q-FF&zpY9jPdT|N3(kkp|)hluC1!Cq$|1bxVatNurN&akda6Gx3;&S%MK_RDde zU@~4{WMp#f5Q|JJkRK*r3pYfgvse8P15NN-)n z?m{w`=$gY=Tr9AgA?l?NJXAL4WW zVk?v!@F5btQh+&SWIh97QW4mFGhT-P&!Lvp_Tfqwz#4Pee@KaCHvvc<0H#V|2FE&G zpuF+{U5bcVGkFcr#o=$N3pZoyWEakTxi(N~^N=#EqhC>>h~Z`Dp0eHnN^*w?`o&i~ zhMgTZro<50d`6A2Cp_(^kormh_&*~eu-z!3f9vb#JJZJnCCx^D%~x9milVobz!mJg zD8=q_`R=|Oh5kQ<9A{t_{6hcEXi|+}RYJ$gAa@|~mm8?mPC!kenEFZvJ&(1&D#>d} zX7;`=m#X$`K2cD4cT~@6)U?`(UjvKkE$kQzD~szsdXi(Ux}YyFruD*N%{hoqDg=Ws^c z+WPvlXU~AwtgNtb2XG^q@V$kWmd3^x5CFul8D05bgk_el!)a(~Sk3G37X5Es;{zuCdd*-YRF2i~YB|JD0Ck0N~}t zg-5(BusPw$#L~(D`XWm@3kfodnzQ30iTv>4!`^;QZf-6xwZ0C)0kH@CvK-&!ZK~Gl zBh6IR)PTVoIGQP5c^piY8Ka`2p6vg~&IV@Y4e+4A6uXD}%|qx#6qpQPDt{sBJ8M)n zBxhVR!}(E; zV)pj-U;cn_cnLmyWMl+bw85?bUT3Q+^@7OANYjNr&dmOl) zW%EWillkn)p_}uT``wZ3@Q{!$;LH|duT2}2+Xs}K-y|>>f_(*?{dK1kI`_wE_b>Pz zASwc6Frhx)-c%jYwtP07V9_ThOmJp7Fbjue?W9_0^cDR z%}Tu~EnxP70t3H3{ypXZXqtyG0||5iJQ4VR4*c zZCl$@OW zKx(kCum}lxgM``@O>w^*&W?|dzt*2rW7hwD(!h@lLZq!K)au|0;fR+UhPfxH72f@(*{PkdkfaP_r#qS>Y10RezAdCdr+3mrvK#8kg zVHWwv1Rv$Y>DD+qpc_Gp$@NB7^d9hO0q@SRRTUNyOAPJjBjo7h0_ejQWvxYf1zAc+ zu#jj#bF_f#y1pIokc_AT>xBc`&dsmIxy5P*r58MFg z?T|zFygBT8@FG2U?a77zc6F`CYv@~!=Z}K}>4$m&(jq8ABch|hJPrb`cYl3-eSaTt z(B~jpCImz!LSaXTT@>El-oVs5Nkv5!mN^T`cAJ9srQEsyOjt`;^Y+%_6A}{Q^a-8wIME-dS2|4O{{IwUFnLiItU=g#{dXbv9*O&H_3Y{6K*2 zWR|nAYnB>k5=8m#DKYhlfQl9rYp9AeV14(>}Me2%QIhHOCSHMZ~o#TVVWU=1%EX=ND zubl7ExOn1{-aCxxFIS8b2R)1)cXo6zhAlhQNh+V5pO@t38a{sn z!eow;6VTwL79hzjs{1Ah^@piAxm1_o6ooQRMRr1vKjBCq)Qzjh2v zS){}D)kI)33_LuQ1}(l|`1n#~e)o5PNER0t2L@YWnlL$UZ3q^PyypOxVM~zJMp-!WVO+d6T_wE6ugVrxJvsS`ZTcRo@|cJwI{TH zdIGXJSbI^>#gqbkv0uI%&pHo+^9wXlSo{vf19m+HzypHWW3Pkm%xp4zjfRDBFm4qvI&(fS97;|<7$rxMe~>cFK$(x+S!DQM+k)yXOVN* zc>G{64ANvFLc|PPn9x`UQc@zoS?}t48XPj_sn+0ESil)Z)}87gr936OV|On{&;k5$ z58Ue>_qGeL!o$yUSbABA*v3dc7&27O?D8hP%NeapS|YD&i2GCZA>^z4&q;l6RvsRg zxq4T?5lf-Zf!3Vk^+9ts+Oc|WKzOqB0ucq|cvC!|i3`vJ1-zj(65smQdjA!MRk25N zinwmY^_%tf^*sP0kgR4wQj3knFBm7m!^;@9c%afjlHkNhG!>wsX*ViEgoIR>VFV84 zt1)K{e@#u@0KfX!H2OmHs@KpNSd6#oA{=W z7msVwSb9k!J8xO^s+S0;{;jOEclLfYMupT1ssO?DAWQ&Z2r3n!gxFO9PxB$Yqbwf->ARqB?rN*6VpN$>!zcUL@$){f`>X2HY>`WD1kcdT90{=&<0a9}iKG?FM>eC8eAk zvUob$yO@a$Wua9)Wdc9Hd*DlF?xFT>d;Px)Kow!5-{}AAfhz;8QCY)NB?h7pIwmGa z`G7WT55axx4{Ww%LT_d==OY5!>|P{ zqBJMkwrbi2Ks#^}(SP~l!{0fz>hv7@Q^2Fg#oAR?KrRDaXmPZE>}rHk6x`XqHaux< zZ7pZHKbLq@ zHO(5H1u^{4{s6=~fFZx31Izl>mequ4!%!dAWl{(#1X2{}q+?`c1p1ali|;Myi}*dD z)9`vg-`$P^|4xLmyFRkY^}Ec7Khh(>QSzPr0r}OOhXj-ZTAIbpWiz{*o10~2WltQ6 zI;q*&6_w*+Vq!Y&x1vlGevZVn$)d~^VfU*M6i0a|+K5G)S?aAhBKx&Rde zgh`4*jpwmhr1X1D&2F6N&!0Jy`T=hXBJG)!BR~N=<9h?>H8Z%w;Moqm;ux;m~}tUsArw@YxxZ* z6>mTv1G&%1Fu*-6fVDn6JOr+L@cPNgN#(T7-p65ZK)CG9UIN>8jA>nF<}#2UVN(B{ zegut-XFbd%zdJiY3xNU*0f1?(ZZX(}keH#Np@qc;5EnQ*V`=ByW^4hpf6xqb-X)!Z zCPHax>7MeBpv|_guMZsG8ea`lVBH?K2OT5D(7@5T~$laP$G91?{PD85K)Q z(6v;UIMB=vRMUvEoE!#dO#LJ*3=?#cuB^Pj&OwC|PWK)7f$3gILoQ(z?V!}k-1}wH z-iTUzgwfK7nGuZ?y3X!E+-`vvKjvo2J?cGwZKZKH(D!;zuc9S?YD#Jw6rL(2^Cq$w zr`P^Gfi;k7!OxCzKJ2y(yx~#`=q`RhF5%DE z0q`ra<<)unwtFR7bPtq&PIUlYXywGKkdTozfpK0QueY52wFV`Z$5vjBk&zJ>H#gD) zqyf9~258Da2g-%Zf^Nx)Vm%??y_dBF0P6vsfFoyjDTE>_G<0JmTTW8)H;COK0HNZU zHH!5bCMP(oE)%5;3gH> zWn0P*keSGfUcbO@#r%=3RH&3I#@qnlvJ0X4h~UGgWD zu<~TX%hf+@)&kZeRcW}!XN??R?bW;=C%hZrEz^(o{&FqGJO73ebTRKuVUf-`@Bf(% z{+r`!Z~7m-n-iK`MXt|IumI7Xu{B@plR4cJe0l5H>)IMF&wOV~_lx9dP~A-TLeP}h zx>S<(`gI+gdaQO9l&Sl(bVFEB>EUudO_=zVCp``){QsD6~MB zfHF3xy{&Dk?4juv^wV*BpX~sV3t%mKpqo?poZvkzq+j4$;(^Dh1P`_NYK{wE-Xqwa zZnD}_(drUQS^2y9PfY5jAe-~n8?DJsx*zsNw9+89BwtzeYNb4ymM1$;tHS+FJUOpw z&MXAF{KKOJ^gVV6Nj>xA#wo ztT_;?Tf6o=tGLpv866JK=#A_Am_daii6rx+EKAkzRwCXC66>d*K3l+H|F194y{Csc z%ICxZcU|9W=6cA}=)IP=)<^+%YH^rELnbAX0X<&CsLNttN1g^8mA~0XZ-1-E;`hvu zEvAITN(ojds-(&COl!fUX7a)5x0N?Y7>Oho>pYAk*Aq*X4oYT6o8A8uKj#ttj*uq! zK0 zpGD5)fBK|`U9HIi5M=js@nrbT+@I~pxneo+B^&SkD4~Otn`vd&$-uFdp5@|=oH~bP z9c>SiIMTY>wU@6Mkz`C62N-*0AN`7KuHQNp+f-}9OjgLLLQ^*?1XA}y834Y>p-_EW zG=Fd$4!)0LjQy@zU)a3pPs`;Oy;fYIXrF8wk5J!h*zKxmX?)w)UCF zV?^ZYp=QTx{kWj>9t;J1Gl4yC5=i&mYs5@pBOLKP_UQea&z5;KV91aR-KB^3mB)GD zUJ^4C)A{~|;7(td`Zj&~*O_0;$VPTSL;94ucHj3R(P*G8ygd6+to`X^*NqwlAA74` z1qSS(8w+Vr+t1|xdb{p_D*L#92pzMNkQELRWkj~DV^j9tyNqmE8R=w8*?Se@*s>|R z5X#8TD9Khrl02Vtzn;I~`Qh)(n^(Gyz})@z=Qm}- zuMK)zu4LPuV)S{0ahty-`PTqdNQ)GzMw zS79`nGUHs1j5h7l;O}RD4xRjZd)>(D)OF|J9In^>(Q zqv+Es_Si9{sYWFP_ha4IJ!?lEy=!E0NS#vs`>mi~sDsVCyw>rCSLu3(G_Pj2_jWuB z4YfK?yuZDZvgvxR#fF-ba@EN82W#R#?_ZEueZS7K7R-ogu2$dR<{gpNU8A?vowWGy z$_ew3UC!h(-D6#XywfMhB2%^Z*Xm3z#mIAfI{KOU*eNZNoUTOBW|WqNftE#L#MB}q zQP6CE@CJ*N>PE6@Z;@fj^UD{-XmUa{`G% zU;{P;2_I{#iC?)*kIvGd`Z>NnPB?pxV-p{#a2t-|e<#O)AUy~U&T^Md`L@pBWy&J? zs1yL$XLX`~hDO9^JpUDtS-mZuzN^DMvy0+9MGmjeXn4)jPbuI;!`xk5Le!O%2@%36 zrBBj`(H=aU;~E#Y?&zx#>Rl_A`%L0H;vo=+Dp(yIG(Ni6CB0TlySHC4ch zg_Sh{k3z#wS!HEqS()VhO=Bo63=C+64gBKZ5jdgC#%Z(@W=kSvs)cM8%PyVYi`9G5 z)k3PBNO&w89{z>KEx$P5+dJ26VR^#_sbO^v5ha@Nl|-ilJL+(FpJBW&l5j#jT)ig| z!K%4FgPx*5H1$PNE9vMY&$_kV15uBJgaj14P$8SN2Z~_00l^wb=7AD+9%?X9>dnB} zah^lDI;GG=qOF(&LJ~5WU2nIAb)ZheP(>rR`G0NJOx!4Ac3y~+T|8{Q`~4|$*1dEvM6=?b(^q1f ze60Vg@Z3Y3d5ZeBXZa_ww=>2=HzNKeIB6~q92qG9Q~7aS-_&BV^ZCd8XQWd9f(~2_ zCr2wDZfq-Ca6NRVP^2s>2sU0ISuA6CXG|lHkJ^n{}o$i6o>~^NA1^^36}f5O>F~ zS6TXDh6RXw+p~-W)~tw6ZN!IY>0*Bzkbe(Yb-l$ZmE{FCHP)i9SgI>r=|iSbmsEl@ zpXV;o=PNfXF3a;{!>Hxx8O{`lgFc{iykp6{BcRhZmZIfU5!t+VxZzq>N9$bS7rMkn zRbnZRNaQ4ps<3T+{3^OG`C^HqedgiowfYlji$9k2hG%lPKJuT+CnKu6wrEf-OL5cB#Hkq9BpXk-M7cFZ1R2?EQeh)m~KhWS{>}sZ1 zwJ5L(IdT|(sZ(KEFO+c$+DIGylO{zL7M2z zYvtHs?Vf@Cf*FaIs^eiVyJ#u}YGU;gvJb1FDF6=1?aj%3V2;Me$02)Q2Yj7bV(y~! z6jYHMu)J0VQlMD@pRq0@+|}d;0m9DQ(o)84P8{H4T{mklq|I0*ku|k$2zUEjyGE<50Or79NyApF*2QLP7tbK;bN1f9B1ApAb@m|0Y4KY8~ft z=cKN8n|SFjqsO*(aC;a3$Lo{M{?1Gj?Du@ke56025jsVLDObz9Ps4WUr%f}SHofsW zEPEo`?l@PE3h>LfDE>fYS2`TIe$x4A)3CBcZY|}4IR9eTt}yxqkBi~_D-y06z+d2~ zcY*d1ZjT_W;&cpd1sboN9a)EgFobCBUYoTu@x;80fbQu`cbwN7Cez&b?Psh9QkJXJiWH6lth+yd zkVU`RXGrq>Ub1;X%Isn`@^nEQy)HT)+Gf2QvCdVa+&6)tk^4O-DW^!nX|CRoKGva_ zM|&^}d-KngL6GVKK}dV)(#iW9BLF$kW$rdj!wMc?q@^{`)|TS|`e_iF?r&RLln8j# z_$m-Sp9td+pwFu#dH75k;A}p)il(Kd0k)*2rB$rB*$NP{gM));Ry--)h6F?!cz>J?+}&a; z=seDic(21`k2u2}7Xi4yjBl4nPYS2p2rqS&#)~C%lYmi9qvCi4h`rw^``v zzi)5Xtg7H9NY0+E)4IiVq0bma6t6snu!F>vXrTY%^%md4Ua^7Dn(yk)*5GrwGZ>yU*bQv#mWkekyz^;uOGC8nj} z!t}B1Mw9eJNS*iQ0zSy1Zo19BKN09GLOH;0=5k~X^xdHPfb}sVeVEN11Lc9u@*w!W zZGqeh>ST@cg#0<)K>`ATa5mLMP9)(NuUaBL$PRF4$i1o7F9$kmbEY1jg0}w@q8L(g za^@S|t>OgHFAloL!Z{YQ>CT|ly;Yfu5XhJjP#;CD?p=RL=q#Q5BK&#gmJ;$AXaAB% zwz#J)G|smwxQk3HQk!uQ)=^;yI4E%AC%|&13)+#G9pgUow(_pBuOJJ6hM-~)dI1|H zybWLblYr9zoD&GMaJD%J$b*7*Ypf)J4GB14;J>3)_+tj}>H}MR8iAkA=%mMt3^Vr|U^v1<5DcqPqhI8PS*E4f!w%0f^7K~|xqoSfX? zMwW;8ZDOpP=R+;w?Ctp%|a?CHr_p~J8lB7Kq)%57t+ia^4S z=J&h^;5nrM1cYKbSIixD(7pGLd+?AZ;V%HU1-SSWDuk0ar^m7lcg83zn&GepQA35c z@9x2YBdJLm`ug>!N9GW0iMAGmb|SrvV3;L5TrYn=tXgJql4^H>T|1GJCq~F~Sut&} z9)Lg~VHAsWkN*4#fiD^$##nIbM=L7~C3EQ6_h8{?%(L33}^el!Le`!+ON zycl$C`MxyQxa`45MA!c_a%z?>kly--u7+4GZ{b-M|3%Oo@bmEzBOY}EmxX&weo+SC zasITyC6DTUY6zEv1eMHnuY*urq;F|XrE*x4s;7875wRSb^YG~@;nWu%B*xg7evCsI zK&c|l8R5L|#Y`4oJj9L8w)C6|U~+OlDCx~+7V8T_ejy|8MADUFPsT(^F|)eX!%SPT z{RKqQ)i}Y&v2Rwu{qq?ph5WG5${lo3a>h!d%^jpM#RZV zrddS%-Zu8(zt=KY-S;W6-Oapn-OhJuFsSh05+N-*si1~)3t9I@a9oJf+_E<2;rec3 zoM*K-ZH}q)YDtk~Lh##>rcJ{K(P$=6UPO=^e#xh<9=d!;b@=_0r2S-n+~|O_+}vC6 z#v(43Lnflfz>9lf{e$`H{Jur2DTv+XW#(a8$hSjktCJGPX{T7cF2TKVrMQ`GsG5Dh z$0%>bgP;6jxiSL%;`}pixq7`d)Mlwj`f`%@Ra_Zks|B;BUL?8UBMcAi^~y@_gpqo~ z*6So>i08A%o7WWYsM`-jl1XF_b`j&`ZPbh}D-r+bRV|v>;G{qVvr9Xu-Z;G;=OzUTQ%dL%Gk?}vm55zuLM5f%5D|E^FMIG4<8OpKid!9B1HE3_>l$^#fF5Vdm9qD?r%%2+(3AlP@SVrqF37<_=phC#+J14Sh0EgtbP^vq)=tEC{o*AGN31ojm4ctUjV7JyF$y44ZcKHAgQJwyJ}QQBY6M( z=#?%#mjju^#CRGhj2t5lwtKyzN^8MGXJ`;WcnH~>k~vQT)L{QGsj=+^rnMFh4nTY3 zfW0hAvjo_}Rs|omBL%QUwRI;X_0+(B0Eg*o;DEuSh|rcI>$71)WazHAlk*c0?ut0& z(oRj;>Jh$;YL1rC%Ng%EPwBNES z6zUshs<&|MY|Sf}@BbT_gC)HHnu`7X95^#{bw@$UnO|DTIvZtPmKS%vkcOo3V4xZ| zHjv%+S}M{T9ZKGEEk;*I=Le+8@|o0fa<TXgOqLLO?S3pH$DQ`Mskzz(Sy{+PdF5 z;XE`nlp_-?S*@;x1@dlsa#9S9UaD-}w(aD_qR?QditO(EcTQw}ge1zlMnm{Tlz^9@!GEmP>vLSy)?Z+^54{J1*Ij)1k?ViWg&cJdcSwd9v?^zAvVp*dv1L z_tLCRzwin~cktzJ&Nb`ND8=?dF2z9jg`xgL@lFW&*BODfC3lP-E_ zCFnYIX_RPsFI>?CUiISi^t5B$QJPhV6P)budH@;8{pncO?tL97DqQE7o(1zcTvpPP z%4)wg9QR7NK8jSj$^=WOytq_-Q|3Bv4(;KBX)6s~P%MNeu?tDB{2)x*N}@2A_Yt zSAK2|XAgSN`%@cdOj4C}zOoqVeakjx!{TFvAjP)AFzENL4c-q3N=;b7cw!!ErmfXg zBW-O+8c+nYZUNAq;3=e00)weBZsOawZv(aOF`H1j0AmTrhwYAnJcwt7guK9Kw&?{5 z6(DlUSEmrlwQ^=qHk~owh_O#$`G?N=EHx+4ahy0DUg-HxpnpP;asT^z=>DBlhvw)h zV^%OaLVEDp{+~aupC%-n%Pae6FTu+GaRZ;zT-|S9J0XYX;OJtB(c_T026t3Vp9;c_ zkrC(}cP6Xy3~?g#6o7I-Yv5qPB98)frMao;OpTq2--AmCH140jpa6LG#0XskG14c(3q9saMO|CCJWu4Fp>q`4Co=r!?m@wt0DRegvo%9%t46= z^l=bK8z-x*-0P<8O)Q%{Y*bZ|Maio+6A`-Vl{749qU*|!W`6&zR#D|^=&L7LoL~}X zM!Zal>}9rVpbCcwTi7!rC>RR4$p(%5K`aSoaeQ2|JSqaD9R9o3hYx{A#aF^4l#D*V zzUzR{5!k?{rlttdB8f26XbkeXMhsoqQDa4(jO6&~AqUUN^WeX2?M|`eMc(3*9ScN* zTjw}HqcsocfQvg}7|0gl7;Z!aFNa`_FM|36+JJUIz}&Yg{xW!XXAdPV7xqx6DW&q? zs9~^sfnwY)iY48XZM#zXqA3|4<=$i-I+UZ@o1Z*T3lM#d=A9fH8ai{oW^>nT8uMjU zTw+?>Mf3%6@83Tnj*0AlX=L>?O9eqzO|( zULk6FUgzQ32@}ix1x;)Xr<$wF)^qXDGiV%zU2FZ%PgeW{x;^Q-lDvH?zjkA_1n4Xb z`A?atcB%U*;~;bWg+;y^_4Rg-sA>{JGp-K`lN>#}MwKGy1?A>Y2%_(FwoYF+zGU<) zP4%I6pm({IGqD=4Cp)%MyzSl6D}N|vxoN_5n{3zU8yGmoW!{aW$9J@CmDNlnzHQKY z{o98NXn$y~9X0xNDNep%T3QrZU$>?ql#D72`;XJ|<*>((4AgFU`H!|O* zz^IZ&0f`7tyn6hXRrC1cPZbp(5r2R5;*EX@W`1KzB%0W3vQ-k|5D=)uA~Bh=%k67o7CZKOzy>r{EX=w-b6g zc30RHeGJ0(A5hN@3=cy{0|1=(qQ2UuJAI@#PddU7r)$T^WDOiB8IqttE^Ow~&q1@K z!M(aPS)q=R!AH6=RfSth4`gUmxoHLe ztoYct*{tbxn>Lb@FD}qUdI$XDGN%6mfu1hl^#;7BBw3P~>OcbBv*z>X_!w9Oyt9H4 z@M#R>-N*d^>Ct61)7K9ITwPruRT!Fh&>rHWCorn_4r7$I8BQ^1J1fPZOo?RO7zEk1 zEthlOlnc5(-wTg=SEE3{z>vMQT0|B=b>~pTql+GxeLgB0-2cLhE z+l$Sb0)ZWMK1&csfZ)KQ3d1aaFa273RZbc_gN^)c=Mx{heEs>HLJObPPw>BceqEKc zSzYZ`fmqbQPGu4>V(Sv7osHT@dJDzukm*ZQ;@GIFxoIMWZrPa@jI-8X}Cl=9;@70 zy=YZpgvA5*$)kOBH6b=6pcaJ{I=Ns#qx55M4@MAFxEnq39?HHzuB4L-S=qqL%z^3? zVSSw*0g1aeL_pMT2bBvn>5{Hf)m5+mTm?lwK-PHO7;a*7cjk(3vw8iP%Cs8vn02ti z5BkB>;x5bxkQ)3jb*M&mKTA#hl-^I*BN958I)C*0a5Yf*_$7h$U};z5fj!khDa%Y_ zYvi=gi4mAUjA$;4i~s(kH6aYaCbv{oqbx&Lh$AbL;7bJ&?&P6?_++0%r~2*NCt&)p z1hF3|Z`rX>fsvx&AJX#j7C`(8VRcGsuA*k}nt)VrBwIr7zi1I(NedH`jIlLnaNgSq z@bK6?Jeo0L$G)p|#ph1=!dDd=+h03}V4>TSp{HbCE=Z=v=C=sdnATaF&mzw~LnWpg z9sLr!BI&IDIbEo$+m-!SON^!9^Z$T29oKUAbfsinKryQRakMf`Z#4X?>}qBij#h#x z1+MtG?O6LG^B)&XQr|#$4iu!04h{i9L9IFVIhw0Jl8~(0Z=VSK9eBW=rl;R+oW0F; zfxNw>xcCX9$iUdx1?PPbj$TcP!E31JPgInHnM|Y@=XVbwR)dI_-PV(v1|9dK_`=aa zSVEOA{Tb@`d0`mh1E;GlZenR^X;RMgb%y4+gy_;Oidy0GfrK>X9t6%IuPbIfVl@?R&c#-L-`5QI_lqT z_lqbHpyZl+kETwakfttwd}KT1$borDto%+QJMhbczwe~2-|I5B_^d5IiPFjxc7j(H zQXj0H49PF@Lj%dB$1aaTqVdyW@N5krG3PPRTZqC;kZ%tx9R1Tj70OV$es{6>I*O3v zK`WL}-!D#P)*3v0^K41%a7&R}rtwFM071O7U9jHUj=*;9*uRkXzDkU1XsUjH<}eSa zLp+DF)lH*hBj_KY{5$~abv&cpkU~5zuwzzZ9zaKoa|g&87@_1{A`J3O*k?B9Uj{M1 zdMn@OhFs4NQb8;!-)68^W}qMe|DioH!UV`=N)mUhFN3jggHlM+P);m90qC-^Ad!4iTR9t6QKv1Fh`5*ypE3g=&~T2_{21-V zIqcJ3+y3EUH|Xth*5WBiFjERw0@<|X`~!AQqcCpP*YMcU*KglIhXodkZ+GUa>%<7s zANKe6LykLFQmLgcVBxfMbbzt9f1o~VW`;P82`2*<^YmyW6zH;rDauk6*fI5Wb$5R+L5cAo&&|=ia(sJZKZdtlrwSfBQ~VxIcxt}G&8^<_o>0b=-CP%oV}yFq z=*GTVsk4o!E=-U~>9+^G4M+|GqS!Her=_a%bP>pN=R!ejoKNt$7Hy*(PcIlwOk|cD z@4CAUVj}B0`GC7?3%4|)Y$o`deLq&DHTTXdhJ)@XA5Z31eyn!byy1R?d=9v4SallK~53(U@h<9CI$5PFp?t-I2!e$b*P{K znpl*%rx#Yg2S*SvzPtPT4qr&X8gUGKFo1@$nc3MlAq5?XMnl~3ueCjp?AJ2NfG2oe z4u4cQ*E7aDf}Is?4+Y6B8Xts3K;byJ!YE{qM6~U8k;Cl-!%6%D)KE}G=4gt+L=8CV zY8(ir#Hyj7fbtb=q0mDE;F_FFGlRYN)m(PSpnB@01^zSO24S=Xw~Wj`5LIOYsMzNZ z*0yBb*7?`gorDPE8e1h>+hy2kIMqzwgh)%ZwY1>(T*o@tX@|g001z4+L)(!Bf|R(2 z4E~E95AkRQI1!{_S`*-vU~3dWc7fcT8xIAEEj;kHwq6AJuU59WAQ(yEI0XCgeScWQ z=H}+G*#IK*7ucsp_XQb#{>t+5IMM#q42D)9kl^W;>6Zb;Gvg|%?gYb|e0+T15P;Ki z^7rrGfDSY@i5IIUkHQ@hk&sYz*xJFX_GjD~vmEpbCwC;D~?|?GF zclKT*%)ipcC;33&kK;)0&_Q`wSqm&O__dJ(@E5+N4?UQ^vt0qQ9gt&}h@8{XdsJTr zsuUO!1KRqMWN^U1nTG$$9Hk(vO!DTovq77Gh_o~=Wn?jC#lHd0MuLq_Zp z5?${4tg-PBcrOqPSVFW>Y%hi<7@~B5p#}tfIu{-)z#jk&*~%^h$_&I<@VEC24ZcuL zb0tN$C#A;@IRyysJfM?D-K_}8Hmv{!fAzF0;%QD!PF9u_Y!3%FzwiHnYk@oJj=epi z1D@Qkz>}!+9O<7)!|_lG2(#lwYtTr?OXIxXffI*FZ_g!=1A%uOfP4p%zMh_6+w;fp z{6G$bss(%%Jg|N{pL2LDpcDZR>JY}JVaBr9-*S!O-JWo3txy)46w}uIfzx3PtU~~3 zqI=vL{lGl|#}NSW;33aXW|4W&1Xlw`=B61Vj9qJN6vMf_cZ=(5i1Ys9^f|mYHN;Cm zFefdo5h!Ck&(6FM<0AW zutPw}vF20mAyY(yhEw#OC=-)6OztZWJLhcxuJvixhG|zyFY&dTFy%z z-T80iXZn=kOSJ?pZ1u$Vw)Xa{@vICHm=h%cJvVf3rzbn1XDR5b9~^o8Cx5cCv~;U6 zo@+HQG+f^gY_}ZoVw>VRK+J9(fJw65vTAIN5!a`ADc#7}!s2Acr3!2l6DwX0_V(3O zL6FDFL`e7V87648#7=8?zOEUV!%Q!_*xv5$M*%svJC%niO9II0TG#NDJxFCi zz*Aw~JZeD+K@tPb^^hbcKctZL^lAR&2CP;-BnBi}I2;Z-%|T{ClT?t^g19AiN3=8O zlHL12NqGC=bM(@~q%wy)cfh)=Fyz__nmpK6z(Za)JqNqx=BBGjYDR*gscB|vD!i3M zA~N5{n2#@-NV@XQV@U?8X4xP*77LpgFu++z{;rn?mk zci?wnby>o$p9E{A4eCxfSsqHidPG9WjxD!(lbiFRsmULpY!Cznab$YyK)c6Oa0UBP zzpS>l7T$MofVh2-OW}JPfyiTX+bN3cj8+4m|>#0jeVo<+w1e zFM&-9*O)-a4q5~-8N$}n=(l4Dx<$1lt`i_H!NCUSqHN%=?`vZv)5e`p$Ac=-4Mwgd z^%EgLhmT*kP|_j7bX%a2i|ri+mo?&UfB}WX>dQuK^qDl3x^6Q4i~!US92@>r(V!+(iT`5bmt;-mEAb%}M=uTYF7+h2e&tmUPkB8fc{dL3;=RZ0~`5 zC@mI3X7t_3e%hT{shvHSjp zhM(ZGb8v8ggzOk-EbQaQlng>x2PNU57wUAu05X66{24Sq%r~r3SHP{OsHpe=&Lmhk zu;I=0UDP!&iMB z_$C8fu|EzECpY%tB?hI%$WnKtQ^n2EJGlXU|FKt}VO$2Z*>+h|UovxZWxzQPT%a%` zE9AmK{>ThA&%V(ba0Or%5=iOLoL8=_!i>4=kegT+F#1AmGtF0PNCG%((8&D?Y=;IP z9=nCHv1(RzeD=obf?35w(OHoTS?+@p*&8pW$v-L0S{(-zr}1+c98YmwBk-jt9~&Ob z`TzyynfCl9gTcCI-b2Dc_%W=fESW#J(UILpjh+AhgINF1b7H$s&$Lkyy{se~ypMn% NH6=~ON{n^*{{XHc@L~V} diff --git a/tests/_images/Shapes_outline_color_by_continuous_obs.png b/tests/_images/Shapes_outline_color_by_continuous_obs.png deleted file mode 100644 index b4291074da41382139bafe181d868e6c59ce0123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24998 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 GF8mK7UYbGx diff --git a/tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png b/tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png deleted file mode 100644 index f23f23bafb35262ce0ec872214f10b36f5da9673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25505 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≪-|Qiy=k50Iuj{uIL}b1U!IWw*w~$)B#?}kmluH9T!|Q1 z2*?rOr;~|g4pn94<^P#Gb@lcCMi!D8HUA=KS*}f%lmIi?pRe(YT!9c7h{(S{uMy+O z7Xe#|2WL7qT57*^^%GrX;4WExoJ5CkS`fY#*+G^Q3{tAHaLOU(D8{TZmIse8lfaHYkrG}Ij;!XeX?R4uW=fqngXG)Ru z`!gI~bXak-uPR3;lBtc~=9$nb4wFo%Po(7JT%4SKx%pEfjawqCXOJQc3=ba-rgB^# zk(ikLixDCqAgpOv^~RBd(Gr`PikMHIrpLzSfM!~>@B6>y-4u*t5dy+R2}{{mFG(uN zH3@XmVW#TN&SXzUF)_MUFx-OjE#} z3j(5QX0_-NN19z-LXXSRAPV=lpzb;Ty;)uz@+b{?cpw3O{EkfroVaWEWy*-_cV~Vp zd%NkP=$(epyn>Q;uX6XRwaSGR={6q`{T6pepuYhZ0p#}pTag2$V!+bi^C$ffvoi{xxOYS1K9GlGTEs(2FiJD5JEc60HH9)>QJv~iGOawZv z*G4avtgNiAuCCEW0VWv6avDyFJf^Hq;bn_Kc4=4O!oh_XMuK3da(RP?9d>z~aCe#i z4MzcF`FML_19U@2$CF4r#y#Yp-ddO*TZbuu&G0W@y!2U9;a18oA5^TKpc@?a?NXj7 zRPt@>Wmb$o5@AJ^m672EdjK4@{(*s)o}GNVes3|Q7CcfDuWn6t_#bHftD{Ob=+yD!G}7u4%qnG#ZR>B*r#fTjT;J2f){W{nQOjs&3g7L2seDt?>938H)*?tS{W zo|56FyI6Ll%J~F`Qa`S-y-g;DCR79W-~>|)FOff?c%&l^V5oraeNkyCpWQqsDQPC? zS#PM3(O!rx|71PbpKtH_w!^d;5q7Ib5e)aNicN!ad_NU}}-tuR{NCZORL5#Y%I1G}izdlp)J>7ue zx<9Ku7>aFh?lvg1D3p2SQD5#WX9l)04DR`JbU#V_2T;P_D{B*Olxjv7*=y#ZCDt>q z`O_(o2wB)R$NhCy{x@r%AZE2|HOuMMag_-u?>gCEwdCLBy9Qm00;p=Cy6|@$bWSWNeME zSxRN+Yy<%xRwu738ZQOqD@;N|Q#)r7;}OJkF6aLbc>s6%>KSx>ecj@5MgvBiAYko+ z)>-pmRb)}84i1z$Ppc{*w!EZa4h3gn(U@!U7mAi4!DaYVl-PF56Dr| zYz|G%d1)=4EjBDP5q)gd>iFi^WHJ5>~&XfiysTJeGc~ zny|3ZWRWsBJ}RoJ=|H>($^#y5+Msx~QD>;QFdf#(* z(p`_2^hRcTVlBYJ%TW~u3SW~8W*3|1oes-tG86LnS0}ijCT|S}OW!(+ja3 z9&GF>0jzOvF}CJ)h}34x3ffs!6)WTqJi(~$dBA}}(Oz0|>gZOWqP@to5zYs5w*<*V z-%S_xHRo_J^fEVYMiURE$dN78bbro1gCHa{;k^4PCFP>K?j4@UruEd}edXcJ+jpgz zeOV!3P^*Cb6ML%MSfDQi{WnS#D?tqdfv}Fq0o(S*eJ?DqI2H2V5&SSYZu~&qcX1 zYS^4b$F#N$wY6oHuR~#=*@NF#uG?E%K=)xJBl`nRAvn6-QGzS2Uib!qxc?3R+TKrb z^_s7CUh$2Wh-TuxUGi*CQQbqHMb=t!CAqTe*$*P43e=%02sQQ$q%r%)nE$M;C1hm0 z|2OdpEXMx=1WnvYoNR2nQ>7_YZKMzx4b5*LF!lB#L9C{|m_Qljb2~!v0*aDs?idjf zdxpP1WM;MrQ1RLn{E38@*B!`5%_Ih^iu|Kqpjny^5ugFYN0gwc=|paB6EbCmc=q~v z6QK-AD4oKgdorpT!*jt!CYJqfB~`mTUGO46ivg3PD@#l7=;*?`jX`{=sks@0fE7Ca z3aXQu8gAy31NJuH@$%pJJph9SU8o(fXkcA28?;5cfl1on&`@TrD#P7zpbl01+pS<~ z1P~HndcABt2H0>UgD1DVoC))ubrir-0}$Gw1-%FEl=Qrg>pUQIZgPnqMMM3;LwnKj zI6DQ=h99vgGs~MRzPdH&oQ#!|AZnI+Mi5_dpEU@?WxyoX{li0ROA8=(4GmX-S^p2m z&vN(jk`x!W0}vF5)4=uwQ=*sW_wmzHBO_oq^6%fjU_@bWch_#N2EGz;mhKw0Rev4a zC=t%JIXe+_H>Z}k(olPPJ24T}ikkIAq3w7ZcyN0qpevA&`5COG~phF*zGxX@{WT zT<%w(Mhc|`3z5-{S+)rPDB+Z%eORBmK-uW%sB*3Z8VUa_P-}(bKpX+krbTd8Pu6>Yk}yFGdxQK7S=RPC z!LalXv2y9BjghDAQpewtEc&|y(N{0lTf5<6#5C(~en-;aUYr$Pd9##S=4pN!ADEq+ z1M3tkkz20cO4L~e`aq3V85kW1Wy1u0JD?V}plR=u{C61Wigd2MOGfa%HNhNfRJEZ? z$rY9i16GX|&Z@!5I9!A@i!*bD1%|UeTl||-(=!P0Ab`E*Y(Hvi69#oy_P@gb>rR1A z8Kx8cvuZMJy@+>H^yG~3={>21YhB^3Y_QNXG10)aq|2uGL@NaynSO$qhzq`r0mD_L zVl|*ro5TIn3%cNh;{yIE(zf;0At%>SUKHq-$>%R0cHazPC;7ZoJ{6~mC{sn?jzcK;G*xTCT21ElC3s5~Ow5kKeD44Ws#1b%&0(x0_)2x>!2^VIL zgfXjFwoW+?3)vp*4Hr`&DC?C_mIB<AX(g@2H6L&DZzIigph>?1&IQt_~AoUW~KoL@-}%K zGdd_F%EgdB-uD8d*~vzIqYQe(wxOjq*Zt&P8$8YmBRE%7a%?2|+w4s%nOW9sFICP) zwSYq2&67Qrg6W{nRZt(?0D={Hw!6Nrs-Y2@GUP8rHWcKb#_!>wex9TrS}W+*GXLS& zr}7+iC8x4ecn&rC4h6>>^mLV=+Ds=-YFnO*uSY+GQzY;V1``RPt%&eE|F2p9 z*Rxwu1NqUxN*3BXgwl!%^vX(AUEKw1(iaNgD+2874go<2U&FxfxYh+GNWshnA%{5< zJizCLB_&OE3-w^*yeS))M+F`kxUNS)j{|8mCP7W7zwRvxInvuOZHW@Q*E1prKjX&q z{CaiZ{QU&fpZ#6o9IA1s0=4jj6wK12FOFE1+#L=8NRJFH6$b#-Jo*hP4nNK1H5AD;(>gb8f(8CxW8+8BzZnP00P_Un2( zl9W)>P+x%wTwzQqKE7sp7;hvCb8`urL=FxPTDdR&4R6Yf(12Wr6e99CQhm@o0t1N@ zs&f1%+*U~kh0H8ixs2oE;DA`BzHE?4Hb^x88w&><htF~Ls&529*KFr zVEclYTV3HjtJcSlAAtee!D3`<3-Um}e*P3%JOVzb2>^lsCliE%Z=-Mq&U(}fChTu- z|Myf4@&768y5p&S`~D#_Gb>qTmJzbbD8j+9vpQu&HiZfql__(XJ5$(#$N%6_5VvR!t4}K~obG(A?aWr&roR2juNu;HoW!Y_a??XJzlOFi+3d`y0fe%nLspcqCVfHqO!aq5aPtnc|oKxbN$H)T%1M>3n zff|l_dal6d!O?Uvf#Z49(h_A{w3kfQH#FQTQ*&g(oNni%^XuPs1~JjmUT2;rwXDG> zN(IwQ{xh=zFAx+Iw8!Mi&rf!6IEDt#AX;JHT`ef2P)@-eZIqBe=z|_$;;t?;8!2sV zZ50(86O;1AWxv<;wkl1gcn0u0S*|~do@JW!=c-6?DU$y=i#{}C{hP+ls;oSyH-bhx zJS+?rcW%P)@bD)96+tuo6lF4qA&di0+uOZY?t&Y_1O&Jd7!<~Yu-O1()Mp7MsqvC^ zTwGkp)6PcgZL7ty=GK( zPf3Ocyv$k9_IvdEP)%9E-objE!dSXvWCRuz#OE9RLoDubC1tpIPvPl1J)c_A!dH zO2@O&w0eJgxlg68(26vnsK9B z-R~NBU*u0Tl?o3H#e8+mNmGTa#GGkdEVGM12vR*jtS_jgL zXH0G9F+0jmaK28ard`=W1|C!RN8a6Xr9Y; zS1Du)l?EMF$bc#L%Jz~j??4O92pfw80q7yezcZRlpmvVH7P6Wu~XL*u3t z3RDN!j@fIpzECZr7UAAVrK<0Lz=WeH=9HXQwcDlB)<>l}52f7VOFGBkEf;Gen5iAH zg5`;D3nV3wex*jN1#6LjpSg@##03_hcRZdMBDA2%w zb9Wpc?CY~`G^Fwn9v9qm91Lh>g9flico6L&qQoO2tShgd1YmX=9LDFAt=k|>cm)|N{NaGdiIO8s zCXbw7Tqkl+f-a5`(*(61vP#9YDW(kkl;g!m6Igl;88}FoKReHLfnT0yJFCf{kyxr_ zt@X+}U5R*!TjNGxuM@HR`+c>7rfu{#ZpYRVk(quH{PY*m-uSRd^EmGmzqg5rWE{`r zg*ilABqcmd6Zp45@ZdCT|Xol|`+Z)70PJN9cD6HF#? zm|rhlaS%TOfP>m@6dDaqR_?Fj9eCy|(^jq%C-$|Cekm+xEp*j+ z-w{hWjL0xX{w$eO4hPRM{M=(@DRaOedNk$D2Jn#EUBF3-xwdZqZg^ zQz74YP&!-_L<#C*I{j9oMirVW_iw%#=y!;g5Uk(W1VaFnElr`u4Quj z`Pn52#cCA zi9=9);{BcO##ns1WI&O_Pa*3$!h->@y zU3=tWl3=GNkw%+Z|hMs@Xi7Mg46e z{8Q(+IXQx4 zOdup(ychyW0g$zxN0>1h8?}0FJjY*fQiKpM=kZm>1WFh>ou=5{c+s%+Mha81>}8I` zE)NCpA5eq?EGd{}>#$mtEYPpLc`uvy+9%DsZPF;U`dqC#M3Osw`H8SSaauj9hUDMz zt%LPJvYDpefBeXJkPG@7k575BGBUk=nnZaXk@GJ|DvQ#pyf^!9nd>mMS@1eV93eT{ zI(irs7buyX5p3_)oHEiF@V&2-(V6(G)fv#-?9d%$4UPKZVg|y=k_d!!RbIV%&(MO+ zmptlTnys*RvxFk`!TEd7zI|_>JTcZi{~WK@rx`D$J+?5|xAxZKYwBMcC<}R;9ISWE z+|Li5FEkEp6n4tji%E7k|BLe1%Q?(_5;eQzC@#q-HKT6+F=?GU;`@Y4{;*Y^_x18Z;JKB}XmgYMMQ zvb%toc>3<52Nv{TV)`7r1SgY?5dJSquyQ~Td(m|oxxoiKUHs&Q4a>!(-G)esc+_oT94Z;1}fqm z?lt@2!^+C?T=9E*a;<=vTIG^SpIZMHr}10vgMRU)tCH0ml~njWe3RBaFyZHJ8smyx zm1x~2>UiWdJzIKb_h54^&FIpdr-DZ|e%Z0!t~g2i0sE1RgW-7c%%{m~p1Xexc~PVT zV^YeBR}*yZtu-=`jIoHP^j@29ZA>wUiU#gLI$`gxP@*{LC2t&F|cY=`C|D=Vw4sED3$xyK6`ZxDjjzzMoZ&Qyk;5D*X$0)zms z01}x%K&$Rp>y@l%@uNFm4?%%AFYT%v1`MF=E;sokvBh>!MrUvx>B6G%|6*6ncl$~z zQc+RSFJH|sAb<@GVzp@2f{iUbN7=n7Hj7<(|I=OGvb5g*62q-eKr_7FWhj;m*`r_= zH>Ir53cZ=Ew6u3dQyBUg^>n>(85wJoL48^y=d`4U`&HA3W%&|bd#t2+h@Ty|fE(hR z+ewVvA-5P?roXvusowiZ728CHiTzrmWu4tp*9P1a-rQ*pndOqQTho;0;= zixc;14suT^&y=|ky%zK9QyPvRPYIdmo%)8YV$c8+Vym3hUrk=^hSKLa&Vi$bgLTC@ zo>+2l`|yS8@_RC6n`GTd_AExrkqOJ*SyT{RBmWPGZg=HwNxDRuM(~H1S*pJ9xKgO8 zW$2tvmL-&_#Ymajk7j-q`?1txKU>75KNxpMp=7aA9b*argBGp`xPvGZ3Pv6_$%rhQ zX=n@))f_3FB` z3`n|@kd$0pUPj-Hj@I9Q4)QVPaC*qfKDlPEy=3Eq`VLx84S6$WGHE$ENH#(olor7I z{GSzjYS1mcx+;oZ`&7&&fy{#L!J28Gm-~(+*r-g79Mxl@o1{q+m#BI5WN1ih%a-ds zRc&o;VSFW}g;pSb@ZjoZ7m!=0Tk+fS_TqA%UI)+ zUv`$`O+N32HqYKNT{R_#Owy_6wO{6xCu~2i5F?H)Ot_N2Fl=i~*{X=CGdIWXT=kA- z*<;I-zhYz~ZHRTMh9Z#+EWM@PU2i8QeniL8!u_?s_c4=QSF%ODTY@s~Vl3bJYD=EV zpLTn8+cu1i`)s!sCQZ{N3v^GhPn`j3zEs3|((X*Pl8F0e;dSp(>4*6R+oc(jl`y1g zh*Hv2XC56?p7E^6zxMrzH>`?|V?1S5&uW7w#l2r|=v}o+$*FaZ78)EjgD{RM7uP|q z_LrYRcAWPgd{#Zj$wKm_PnM!G$g8+4B&5r_({st2(14}T#i;7I3G)ztEC|ak*&P1- zYQ6Cj<6b*PF&E&(Z7LCd31(W!g~g9AOT$*qqW?u_J)eGX>4M#!tlw;{)!ggCogKn6 z2r~(h)S+TknmZ+V=Y*d@u_<|*-Apf{veZJCimpR7(A%e4VvBEc}pmis#Tr8a;8Op82IhoSW4iX4DS#L7Lhnbb~+{~P| z_XO7l#Zs?{Vg*ev^L<6RA3^u8w(D)Y7T|Al`Aay3H8py*TS|I9Lp)tXwj=X(HoF<_ z@*oj`J?8JeE+W>DDJn&zV`S0q(ua=|z4!O-EM!ecSWI>oSkw+h@oCY}F8DeBVqc3)e8@Ut4hkan zImh}PTG*1Bn&FrT(5j7$jBxexi%HD(muDsHkKMi}$|-CMP#?-LUhz2Dk;%J|pT$}xyEL$%&OBK6A5(8zUYTjqt&+gJ$Qo&n;~ zp`u?n65{b`R$QyOxVe$?$IHjpe-&7oYO;}vq9PeXj-#XS8?wE9c1Fg=y?J{f`@qp# z8>3qIIy7W{VC1AVWsKt4EEIES){&c4@8LgBe2*H)d8jT`Vd31NA%|U}_!F{Ab^(<* zQ>l$`9LB~{RfsUEQ>jdPf-^+gU;Ywlud1EP`V@N1?oghk;8?E-_-)WyiAn7Ljy z{xQd?n-GmFWgpE1 zPdh}*X=6{Jbiczsqg{n@GVK%0JZwBsev1*;WZa7){C{W$uN)QQ)p+eYm9nEEg3Zne zmaAM%#9U#-BM@*#6HcP*1c+*DO9`7W%~Wy+4E-!m`!;Z=$9CxT3TWl{OzJLe`tL1W z+3WQNtbet1XTK~RdUT69R;ZZWK3t99KXN$4^R`36n`7Q4?|giHeMv*Lsm0`Maw#srAQP3IGQM{_Lgr4NL?b5~&?|V$WS|9UL5h*G^NS;<~~n4o=tm znAd#xtj9y-P&nIo;(dR>+|KQc-;&CFIKBJQ4F7a@I4%0I-o5*Zu>j8sYu*}B-?C*3 zfq>MkpWP21j$y*as$I}^`Mcdqsr%@-%9d@6X0#$YcB_S?J*)D*;A1q7^u?1iz0QuI zr>P!%VXL~n*DWpkk)=x@;3h+XeE0ZrO8fi5!a~sg&?YkJt+%Tn!;>-#Eior&Qf{s= z4^OREkC?D9*|F>wv(U}tXJg7LX>iB|cCE2Xw0i)%A*z1~kbO)RRLp8m%{U^HTbvLo z2UfS5T*1sOMaRgfu;)f$={+VR`>Q{l=6{*2vyNSJ%sZ_%DAGvK)auZGf_Zh;4br%r zt}ZShuGvz?@1&dsx2sJ>FGff!d5^o6%}%diq&;> z3%x}qXIF!|4Mk%vYgZ8v9Bgi6ba9Jo4B|?&vjyKY92mHPehRs79i5$WkYQrbqNYl# zs2sQw6A;mSAnDWN+|G@Anm=A-xXq>;pve5dMHoxJwpK+|)z-v>g`jh#2U9yzm_2-b zUs;9#or6Lf*NKj>ZQHg+XkySA)={z6|0Ag4^v+(Tdkvlg&$#y?eb1S zk)Fw*y(~Dw?`3f8JK{9%*HDvge8m`@m*>u*T=lNA9n{ENs)&RdByr`{2mF&jC}^P? zNC*zw#KrZ1M0qWIdV}$ABz?#ANb8oT<{w`@Tju+9eP#d2v&XgT4sw23#Y{y6?O1LP zs1BvZmgKZV3pTOGxF93Kz}K43e~P~X1`_}-)RbFnB!IhvdsWzk2^s__WZu%BJ&={c zl=~~!h`F?xuSYKEI3wBP#Bs#fLOlBE)yDeY`cg^f?!ODzW_8D3@7w%5%j(sImBa~J zDqUf7Z48Z6N}U{#$hxj7!}A8;ZH7lnk$amz+xpmH;Zh?tt|89royF&q)~wV7V31~f z^JL_SgSj%eJuq^%pate%bc5hz90QFmCMUbNxjlchxZxxO{E%LN%kf+-U2B>Bb~w`L>jpCa_qbP;A@{0^3R5iq zhR%5Xf=Q9xJ=-V0MAp}9AoYJ+z-2g$M3!GXd>ik@?9%gnJdti|UKK%1^!;0B+y|ry zT)}4tX_;|LJ~s*|BxI{1>W3u|Z~%7{#+5+uGRl`Rzs}{|(q(z60{e2a*&R1^} zI){7`;B{!!ux&pZfN@mH9O{%m((TNlk!h-?syb^)(WFCzNVoGwO-;iW%{A$q9#Dfx z)!>#9PJ$Rith4GqiMqu=dQOt)th+Jk{>0bqT3VBVVXbDS5F8=$p@yYI?YcvV~J_9%87FMVh zVU6XEQH4V!TVD+Q;=5Q>pez;dluuSbt-$~Y|7LPreMglXa_1bhHjl-S763KjWREyk z{I}-czZBHfLm_Cz?!jc-!VPUPHW=pJ&6eEa3->7$_6W_&T+ELyC?c z8{egj5)n+tA^xBN(AeTqDk-78+1+#mFMa0BnKri@;EvIoYU~Y)zm7eFmZf(JUmNiT z?*sq+j!&q>_ik#~b7eAr3^i36eq$RMTYLL(SdT&!E0a8Wv65*z`|*7iZVaKp^?DmP l)mQz;*INABS5~ZWc$}*fE<6709lm;lKq8v!SLr%O{TG7zZ>s Date: Fri, 22 May 2026 00:44:27 +0200 Subject: [PATCH 12/14] Refresh outline-color reference images for new title behavior (#681) --- ..._outline_color_by_categorical_obs_labels.png | Bin 0 -> 60132 bytes ...Shapes_fill_and_outline_both_obs_columns.png | Bin 0 -> 29932 bytes .../Shapes_outline_color_by_categorical_obs.png | Bin 0 -> 29321 bytes ...line_color_by_categorical_obs_datashader.png | Bin 0 -> 30768 bytes .../Shapes_outline_color_by_continuous_obs.png | Bin 0 -> 23983 bytes ...tline_color_by_continuous_obs_datashader.png | Bin 0 -> 24467 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/_images/Labels_outline_color_by_categorical_obs_labels.png create mode 100644 tests/_images/Shapes_fill_and_outline_both_obs_columns.png create mode 100644 tests/_images/Shapes_outline_color_by_categorical_obs.png create mode 100644 tests/_images/Shapes_outline_color_by_categorical_obs_datashader.png create mode 100644 tests/_images/Shapes_outline_color_by_continuous_obs.png create mode 100644 tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png diff --git a/tests/_images/Labels_outline_color_by_categorical_obs_labels.png b/tests/_images/Labels_outline_color_by_categorical_obs_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..c3666607f4eb05721522a6e2859dc13f8669fc46 GIT binary patch literal 60132 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 literal 0 HcmV?d00001 diff --git a/tests/_images/Shapes_outline_color_by_continuous_obs.png b/tests/_images/Shapes_outline_color_by_continuous_obs.png new file mode 100644 index 0000000000000000000000000000000000000000..461569ab9230998c760589591c0225eedff59c41 GIT binary patch literal 23983 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

9~-GxYY-EN_1|R_ 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�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 IsXAQzA9&2KqW}N^ literal 0 HcmV?d00001 diff --git a/tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png b/tests/_images/Shapes_outline_color_by_continuous_obs_datashader.png new file mode 100644 index 0000000000000000000000000000000000000000..92d7a02301dee4d4aced864bb2db53d9afdb761c GIT binary patch literal 24467 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 Date: Fri, 22 May 2026 00:50:13 +0200 Subject: [PATCH 13/14] Stack fill+outline legends from the top of the right margin (#681) Scanpy's `_add_categorical_legend` anchors the fill legend at `bbox_to_anchor=(1, 0.5)` (vertically centered). With a second legend added below for outline-by-column, the two looked unbalanced: fill at the vertical center, outline below it, with a visible gap. Reposition the fill legend to `(1.02, 1.0) loc='upper left'` whenever an outline legend will be drawn alongside, so the two stack from the top with consistent spacing. Single-legend rendering is unchanged (no second legend, no reposition). The Shapes_fill_and_outline_both_obs_columns reference is regenerated on CI. --- src/spatialdata_plot/pl/render.py | 7 +++++++ ...Shapes_fill_and_outline_both_obs_columns.png | Bin 29932 -> 0 bytes 2 files changed, 7 insertions(+) delete mode 100644 tests/_images/Shapes_fill_and_outline_both_obs_columns.png diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index fb9325f3..b4db9ed5 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -513,6 +513,13 @@ def _add_outline_legend( if fill_has_legend: fill_legend = ax.get_legend() if fill_legend is not None: + # Reposition the fill legend to the top of the right margin so the two + # stack contiguously. Scanpy's default `bbox_to_anchor=(1, 0.5)` centers + # the fill legend vertically, which looks unbalanced once a second legend + # is added below. + fill_legend.set_bbox_to_anchor((1.02, 1.0)) + if hasattr(fill_legend, "set_loc"): + fill_legend.set_loc("upper left") ax.add_artist(fill_legend) # keep fill legend on the axes # Force layout so get_window_extent returns the real (not stale) bbox. fig_params.fig.canvas.draw() diff --git a/tests/_images/Shapes_fill_and_outline_both_obs_columns.png b/tests/_images/Shapes_fill_and_outline_both_obs_columns.png deleted file mode 100644 index 328204b0b1dde43be869b9472749af4da68034c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29932 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 VF6Mt1*GTv=*=w< Date: Fri, 22 May 2026 00:59:53 +0200 Subject: [PATCH 14/14] Refresh fill+outline both-columns reference for new legend stacking (#681) --- ...Shapes_fill_and_outline_both_obs_columns.png | Bin 0 -> 29924 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/_images/Shapes_fill_and_outline_both_obs_columns.png diff --git a/tests/_images/Shapes_fill_and_outline_both_obs_columns.png b/tests/_images/Shapes_fill_and_outline_both_obs_columns.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f81ac881a63e0a6dddecb0f8b0f9490964c6b GIT binary patch literal 29924 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 literal 0 HcmV?d00001