From 31341327bfa171845ec3e921151cee6f861c2da8 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 18 Aug 2005 15:50:36 +0000 Subject: [PATCH] Implement new equations for CLEAR and SOURCE CLEAR: (mask IN clip) ? 0 : dest SOURCE: (mask IN clip) ? src : dest That behave more like what people expect. CLEAR and SOURCE are now bounded. Assert that SOURCE and CLEAR aren't passed to these functions. Assert that SOURCE and CLEAR aren't passed to these functions when there is a mask. Do fixups for SOURCE and CLEAR as well as unbounded operators, since in the absence of a mask, we need SOURCE to work correctly (don't care about CLEAR) _cairo_ft_font_show_glyphs) Consistently use CLEAR/TRANSPARENT (source doesn't matter) rather than SOURCE/TRANSPARENT when clearing rectangles. src/cairo-xlib-surface.c src/cairo-surface.c: Use IN rather than SOURCE as an example of an unbounded operator in docs. Remove CLEAR/SOURCE columns since they are no longer unbounded. test/operator-clear.c test/operator-source Makefile.am: Add targetted tests of CLEAR/SOURCE. --- ChangeLog | 38 +++++ src/cairo-font.c | 5 + src/cairo-ft-font.c | 4 +- src/cairo-gstate.c | 219 ++++++++++++++++++++------- src/cairo-image-surface.c | 4 +- src/cairo-surface.c | 14 +- src/cairo-xlib-surface.c | 6 +- test/.cvsignore | 2 + test/Makefile.am | 6 + test/clip-operator-ref.png | Bin 38336 -> 37330 bytes test/operator-clear-ref.png | Bin 0 -> 4992 bytes test/operator-clear.c | 214 +++++++++++++++++++++++++++ test/operator-source-ref.png | Bin 0 -> 19957 bytes test/operator-source.c | 253 ++++++++++++++++++++++++++++++++ test/unbounded-operator-ref.png | Bin 14178 -> 11937 bytes test/unbounded-operator.c | 4 +- 16 files changed, 706 insertions(+), 63 deletions(-) create mode 100644 test/operator-clear-ref.png create mode 100644 test/operator-clear.c create mode 100644 test/operator-source-ref.png create mode 100644 test/operator-source.c diff --git a/ChangeLog b/ChangeLog index 66f680239..2f48d7f82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,41 @@ +2005-08-17 Owen Taylor + + * src/cairo-gstate.c: Implement new equations for CLEAR and SOURCE + CLEAR: (mask IN clip) ? 0 : dest + SOURCE: (mask IN clip) ? src : dest + That behave more like what people expect. + + * src/cairo-gstate.c (_cairo_operator_bounded): CLEAR and SOURCE are + now bounded. + + * src/cairo-font.c (_cairo_ft_scaled_font_show_glyphs) + * src/cairo-surface.c (_cairo_surface_composite_trapezoids): + Assert that SOURCE and CLEAR aren't passed to these functions. + + * src/cairo-surface.c (_cairo_surface_composite): + Assert that SOURCE and CLEAR aren't passed to these functions + when there is a mask. + + * src/cairo-xlib-surface.c (_cairo_xlib_surface_composite) + * src/cairo-image-surface.c (_cairo_image_surface_composite): + Do fixups for SOURCE and CLEAR as well as unbounded operators, + since in the absence of a mask, we need SOURCE to work + correctly (don't care about CLEAR) + + * src/cairo-ft-font.c (_transform_glyph_bitmap, _cairo_ft_font_show_glyphs) + Consistently use CLEAR/TRANSPARENT (source doesn't matter) + rather than SOURCE/TRANSPARENT when clearing rectangles. + + * src/cairo-xlib-surface.c src/cairo-surface.c: Use + IN rather than SOURCE as an example of an unbounded operator in + docs. + + * test/unbounded-operator.c: Remove CLEAR/SOURCE columns since + they are no longer unbounded. + + * test/operator-clear.c test/operator-source Makefile.am: Add + targetted tests of CLEAR/SOURCE. + 2005-08-18 Carl Worth * src/cairo-quartz-surface.c diff --git a/src/cairo-font.c b/src/cairo-font.c index 913eb95de..c3bc3c1fd 100644 --- a/src/cairo-font.c +++ b/src/cairo-font.c @@ -890,6 +890,11 @@ _cairo_scaled_font_show_glyphs (cairo_scaled_font_t *scaled_font, { cairo_status_t status; + /* These operators aren't interpreted the same way by the backends; + * they are implemented in terms of other operators in cairo-gstate.c + */ + assert (operator != CAIRO_OPERATOR_SOURCE && operator != CAIRO_OPERATOR_CLEAR); + if (scaled_font->status) return scaled_font->status; diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c index 15180c987..5605f8a05 100644 --- a/src/cairo-ft-font.c +++ b/src/cairo-ft-font.c @@ -1133,7 +1133,7 @@ _transform_glyph_bitmap (cairo_image_glyph_cache_entry_t *val) /* Initialize it to empty */ - _cairo_surface_fill_rectangle (image, CAIRO_OPERATOR_SOURCE, + _cairo_surface_fill_rectangle (image, CAIRO_OPERATOR_CLEAR, CAIRO_COLOR_TRANSPARENT, 0, 0, width, height); @@ -1960,7 +1960,7 @@ _cairo_ft_scaled_font_show_glyphs (void *abstract_font, if (!mask) goto CLEANUP_ENTRIES; - status = _cairo_surface_fill_rectangle (mask, CAIRO_OPERATOR_SOURCE, + status = _cairo_surface_fill_rectangle (mask, CAIRO_OPERATOR_CLEAR, CAIRO_COLOR_TRANSPARENT, 0, 0, width, height); if (status) diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c index 83b48d133..79962c3a3 100644 --- a/src/cairo-gstate.c +++ b/src/cairo-gstate.c @@ -258,8 +258,8 @@ _cairo_gstate_begin_group (cairo_gstate_t *gstate) _cairo_surface_set_drawableWH (gstate->target, pix, width, height); status = _cairo_surface_fill_rectangle (gstate->target, - CAIRO_OPERATOR_SOURCE, - &CAIRO_COLOR_TRANSPARENT, + CAIRO_OPERATOR_CLEAR, + CAIRO_COLOR_TRANSPARENT, 0, 0, _cairo_surface_get_width (gstate->target), _cairo_surface_get_height (gstate->target)); @@ -723,6 +723,8 @@ cairo_bool_t _cairo_operator_bounded (cairo_operator_t operator) { switch (operator) { + case CAIRO_OPERATOR_CLEAR: + case CAIRO_OPERATOR_SOURCE: case CAIRO_OPERATOR_OVER: case CAIRO_OPERATOR_ATOP: case CAIRO_OPERATOR_DEST: @@ -732,8 +734,6 @@ _cairo_operator_bounded (cairo_operator_t operator) case CAIRO_OPERATOR_ADD: case CAIRO_OPERATOR_SATURATE: return TRUE; - case CAIRO_OPERATOR_CLEAR: - case CAIRO_OPERATOR_SOURCE: case CAIRO_OPERATOR_OUT: case CAIRO_OPERATOR_IN: case CAIRO_OPERATOR_DEST_IN: @@ -753,6 +753,47 @@ typedef cairo_status_t (*cairo_draw_func_t) (void *closure, int dst_y, const cairo_rectangle_t *extents); +static cairo_status_t +_create_composite_mask_pattern (cairo_surface_pattern_t *mask_pattern, + cairo_clip_t *clip, + cairo_draw_func_t draw_func, + void *draw_closure, + cairo_surface_t *dst, + const cairo_rectangle_t *extents) +{ + cairo_surface_t *mask; + cairo_status_t status; + + mask = cairo_surface_create_similar (dst, + CAIRO_CONTENT_ALPHA, + extents->width, + extents->height); + if (mask->status) + return CAIRO_STATUS_NO_MEMORY; + + status = (*draw_func) (draw_closure, CAIRO_OPERATOR_ADD, + NULL, mask, + extents->x, extents->y, + extents); + if (status) + goto CLEANUP_SURFACE; + + if (clip->surface) + status = _cairo_clip_combine_to_surface (clip, CAIRO_OPERATOR_IN, + mask, + extents->x, extents->y, + extents); + if (status) + goto CLEANUP_SURFACE; + + _cairo_pattern_init_for_surface (mask_pattern, mask); + + CLEANUP_SURFACE: + cairo_surface_destroy (mask); + + return status; +} + /* Handles compositing with a clip surface when the operator allows * us to combine the clip with the mask */ @@ -765,50 +806,30 @@ _cairo_gstate_clip_and_composite_with_mask (cairo_clip_t *clip, cairo_surface_t *dst, const cairo_rectangle_t *extents) { - cairo_surface_t *intermediate; - cairo_surface_pattern_t intermediate_pattern; + cairo_surface_pattern_t mask_pattern; cairo_status_t status; - intermediate = cairo_surface_create_similar (clip->surface, - CAIRO_CONTENT_ALPHA, - extents->width, - extents->height); - if (intermediate->status) - return CAIRO_STATUS_NO_MEMORY; - - status = (*draw_func) (draw_closure, CAIRO_OPERATOR_SOURCE, - NULL, intermediate, - extents->x, extents->y, - extents); + status = _create_composite_mask_pattern (&mask_pattern, + clip, + draw_func, draw_closure, + dst, extents); if (status) - goto CLEANUP_SURFACE; - - status = _cairo_clip_combine_to_surface (clip, CAIRO_OPERATOR_IN, - intermediate, - extents->x, extents->y, - extents); - if (status) - goto CLEANUP_SURFACE; - - _cairo_pattern_init_for_surface (&intermediate_pattern, intermediate); - + return status; + status = _cairo_surface_composite (operator, - src, &intermediate_pattern.base, dst, + src, &mask_pattern.base, dst, extents->x, extents->y, 0, 0, extents->x, extents->y, extents->width, extents->height); - _cairo_pattern_fini (&intermediate_pattern.base); - - CLEANUP_SURFACE: - cairo_surface_destroy (intermediate); + _cairo_pattern_fini (&mask_pattern.base); return status; } -/* Handles compositing with a clip surface when the operator allows - * us to combine the clip with the mask +/* Handles compositing with a clip surface when we have to do the operation + * in two pieces and combine them together. */ static cairo_status_t _cairo_gstate_clip_and_composite_combine (cairo_clip_t *clip, @@ -827,6 +848,7 @@ _cairo_gstate_clip_and_composite_combine (cairo_clip_t *clip, /* We'd be better off here creating a surface identical in format * to dst, but we have no way of getting that information. * A CAIRO_CONTENT_CLONE or something might be useful. + * cairo_surface_create_similar() also unnecessarily clears the surface. */ intermediate = cairo_surface_create_similar (dst, CAIRO_CONTENT_COLOR_ALPHA, @@ -895,6 +917,55 @@ _cairo_gstate_clip_and_composite_combine (cairo_clip_t *clip, return status; } +/* Handles compositing for CAIRO_OPERATOR_SOURCE, which is special; it's + * defined as (src IN mask IN clip) ADD (dst OUT (mask IN clip)) + */ +static cairo_status_t +_cairo_gstate_clip_and_composite_source (cairo_clip_t *clip, + cairo_pattern_t *src, + cairo_draw_func_t draw_func, + void *draw_closure, + cairo_surface_t *dst, + const cairo_rectangle_t *extents) +{ + cairo_surface_pattern_t mask_pattern; + cairo_status_t status; + + /* Create a surface that is mask IN clip + */ + status = _create_composite_mask_pattern (&mask_pattern, + clip, + draw_func, draw_closure, + dst, extents); + if (status) + return status; + + /* Compute dest' = dest OUT (mask IN clip) + */ + status = _cairo_surface_composite (CAIRO_OPERATOR_DEST_OUT, + &mask_pattern.base, NULL, dst, + 0, 0, + 0, 0, + extents->x, extents->y, + extents->width, extents->height); + + if (status) + goto CLEANUP_MASK_PATTERN; + + /* Now compute (src IN (mask IN clip)) ADD dest' + */ + status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, + src, &mask_pattern.base, dst, + extents->x, extents->y, + 0, 0, + extents->x, extents->y, + extents->width, extents->height); + + CLEANUP_MASK_PATTERN: + _cairo_pattern_fini (&mask_pattern.base); + return status; +} + static int _cairo_rectangle_empty (const cairo_rectangle_t *rect) { @@ -931,30 +1002,49 @@ _cairo_gstate_clip_and_composite (cairo_clip_t *clip, cairo_surface_t *dst, const cairo_rectangle_t *extents) { + cairo_pattern_union_t solid_pattern; + cairo_status_t status; + if (_cairo_rectangle_empty (extents)) /* Nothing to do */ return CAIRO_STATUS_SUCCESS; - if (clip->surface) + if (operator == CAIRO_OPERATOR_CLEAR) { + _cairo_pattern_init_solid (&solid_pattern.solid, CAIRO_COLOR_WHITE); + src = &solid_pattern.base; + operator = CAIRO_OPERATOR_DEST_OUT; + } + + if (clip->surface || operator == CAIRO_OPERATOR_SOURCE) { - if (_cairo_operator_bounded (operator)) - return _cairo_gstate_clip_and_composite_with_mask (clip, operator, + if (operator == CAIRO_OPERATOR_SOURCE) + status = _cairo_gstate_clip_and_composite_source (clip, + src, + draw_func, draw_closure, + dst, extents); + else if (_cairo_operator_bounded (operator)) + status = _cairo_gstate_clip_and_composite_with_mask (clip, operator, + src, + draw_func, draw_closure, + dst, extents); + else + status = _cairo_gstate_clip_and_composite_combine (clip, operator, src, draw_func, draw_closure, dst, extents); - else - return _cairo_gstate_clip_and_composite_combine (clip, operator, - src, - draw_func, draw_closure, - dst, extents); } else { - return (*draw_func) (draw_closure, operator, - src, dst, - 0, 0, - extents); + status = (*draw_func) (draw_closure, operator, + src, dst, + 0, 0, + extents); } + + if (src == &solid_pattern.base) + _cairo_pattern_fini (&solid_pattern.base); + + return status; } @@ -1158,10 +1248,17 @@ _composite_trap_region (cairo_clip_t *clip, cairo_rectangle_t *extents) { cairo_status_t status; + cairo_pattern_union_t solid_pattern; cairo_pattern_union_t mask; int num_rects = pixman_region_num_rects (trap_region); unsigned int clip_serial; + if (clip->surface && operator == CAIRO_OPERATOR_CLEAR) { + _cairo_pattern_init_solid (&solid_pattern.solid, CAIRO_COLOR_WHITE); + src = &solid_pattern.base; + operator = CAIRO_OPERATOR_DEST_OUT; + } + if (num_rects == 0) return CAIRO_STATUS_SUCCESS; @@ -1193,6 +1290,9 @@ _composite_trap_region (cairo_clip_t *clip, if (clip->surface) _cairo_pattern_fini (&mask.base); + if (src == &solid_pattern.base) + _cairo_pattern_fini (&solid_pattern.base); + return status; } @@ -1308,21 +1408,28 @@ _cairo_surface_clip_and_composite_trapezoids (cairo_pattern_t *src, if (trap_region) { - if (src->type == CAIRO_PATTERN_SOLID && !clip->surface) + if ((src->type == CAIRO_PATTERN_SOLID || operator == CAIRO_OPERATOR_CLEAR) && + !clip->surface) { + const cairo_color_t *color; + + if (operator == CAIRO_OPERATOR_CLEAR) + color = CAIRO_COLOR_TRANSPARENT; + else + color = &((cairo_solid_pattern_t *)src)->color; + /* Solid rectangles special case */ - status = _cairo_surface_fill_region (dst, operator, - &((cairo_solid_pattern_t *)src)->color, - trap_region); + status = _cairo_surface_fill_region (dst, operator, color, trap_region); if (!status && clear_region) - status = _cairo_surface_fill_region (dst, operator, + status = _cairo_surface_fill_region (dst, CAIRO_OPERATOR_CLEAR, CAIRO_COLOR_TRANSPARENT, clear_region); goto out; } - if (_cairo_operator_bounded (operator) || !clip->surface) + if ((_cairo_operator_bounded (operator) && operator != CAIRO_OPERATOR_SOURCE) || + !clip->surface) { /* For a simple rectangle, we can just use composite(), for more * rectangles, we have to set a clip region. The cost of rasterizing @@ -1330,8 +1437,10 @@ _cairo_surface_clip_and_composite_trapezoids (cairo_pattern_t *src, * worthwhile even if a region is needed. * * If we have a clip surface, we set it as the mask; this only works - * for bounded operators; for unbounded operators, clip and mask - * cannot be interchanged. + * for bounded operators other than SOURCE; for unbounded operators, + * clip and mask cannot be interchanged. For SOURCE, the operator + * as implemented by the backends is different in it's handling + * of the mask then what we want. * * CAIRO_INT_STATUS_UNSUPPORTED will be returned if the region has * more than rectangle and the destination doesn't support clip diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c index 1de9402e5..3b59a8b37 100644 --- a/src/cairo-image-surface.c +++ b/src/cairo-image-surface.c @@ -616,7 +616,9 @@ _cairo_image_surface_composite (cairo_operator_t operator, width, height); } - if (!_cairo_operator_bounded (operator)) + if (!_cairo_operator_bounded (operator) || + operator == CAIRO_OPERATOR_SOURCE || + operator == CAIRO_OPERATOR_CLEAR) status = _cairo_surface_composite_fixup_unbounded (&dst->base, &src_attr, src->width, src->height, mask ? &mask_attr : NULL, diff --git a/src/cairo-surface.c b/src/cairo-surface.c index 6ba25a7d2..4621e812d 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -817,6 +817,13 @@ _cairo_surface_composite (cairo_operator_t operator, { cairo_int_status_t status; + if (mask) { + /* These operators aren't interpreted the same way by the backends; + * they are implemented in terms of other operators in cairo-gstate.c + */ + assert (operator != CAIRO_OPERATOR_SOURCE && operator != CAIRO_OPERATOR_CLEAR); + } + if (dst->status) return dst->status; @@ -1013,7 +1020,7 @@ _fallback_fill_rectangles (cairo_surface_t *surface, * * Applies an operator to a set of rectangles using a solid color * as the source. Note that even if the operator is an unbounded operator - * such as %CAIRO_OPERATOR_CLEAR, only the given set of rectangles + * such as %CAIRO_OPERATOR_IN, only the given set of rectangles * is affected. This differs from _cairo_surface_composite_trapezoids() * where the entire destination rectangle is cleared. * @@ -1152,6 +1159,11 @@ _cairo_surface_composite_trapezoids (cairo_operator_t operator, { cairo_int_status_t status; + /* These operators aren't interpreted the same way by the backends; + * they are implemented in terms of other operators in cairo-gstate.c + */ + assert (operator != CAIRO_OPERATOR_SOURCE && operator != CAIRO_OPERATOR_CLEAR); + if (dst->status) return dst->status; diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index e778857eb..eafa02a43 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -1140,7 +1140,9 @@ _cairo_xlib_surface_composite (cairo_operator_t operator, width, height); } - if (!_cairo_operator_bounded (operator)) + if (!_cairo_operator_bounded (operator) || + operator == CAIRO_OPERATOR_SOURCE || + operator == CAIRO_OPERATOR_CLEAR) status = _cairo_surface_composite_fixup_unbounded (&dst->base, &src_attr, src->width, src->height, mask ? &mask_attr : NULL, @@ -2517,7 +2519,7 @@ _cairo_xlib_surface_show_glyphs8 (cairo_scaled_font_t *scaled_font, /* Handles clearing the regions that are outside of the temporary * mask created by XRenderCompositeText[N] but should be affected - * by an unbounded operator like CAIRO_OPERATOR_SOURCE. + * by an unbounded operator like CAIRO_OPERATOR_IN */ static cairo_status_t _show_glyphs_fixup_unbounded (cairo_xlib_surface_t *self, diff --git a/test/.cvsignore b/test/.cvsignore index e015ea046..d7bea4c93 100644 --- a/test/.cvsignore +++ b/test/.cvsignore @@ -26,6 +26,8 @@ mask mask-ctm mask-surface-ctm move-to-show-surface +operator-clear +operator-source paint paint-with-alpha path-data diff --git a/test/Makefile.am b/test/Makefile.am index a730ee343..dc3c902c3 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -21,6 +21,8 @@ mask \ mask-ctm \ mask-surface-ctm \ move-to-show-surface \ +operator-clear \ +operator-source \ paint \ paint-with-alpha \ path-data \ @@ -87,6 +89,8 @@ mask-ref.png \ mask-ctm-ref.png \ mask-surface-ctm-ref.png \ move-to-show-surface-ref.png \ +operator-clear-ref.png \ +operator-source-ref.png \ paint-ref.png \ paint-with-alpha-ref.png \ path-data-ref.png \ @@ -188,6 +192,8 @@ mask_LDADD = $(LDADDS) mask_ctm_LDADD = $(LDADDS) mask_surface_ctm_LDADD = $(LDADDS) move_to_show_surface_LDADD = $(LDADDS) +operator_clear_LDADD = $(LDADDS) +operator_source_LDADD = $(LDADDS) paint_LDADD = $(LDADDS) paint_with_alpha_LDADD = $(LDADDS) path_data_LDADD = $(LDADDS) diff --git a/test/clip-operator-ref.png b/test/clip-operator-ref.png index 8a0e1812129be8a0e87c265f4d2a21078f6f83eb..1cd0e5be1397c5904f9631b4f355f1e584edc8e0 100644 GIT binary patch literal 37330 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 literal 38336 zcmc$lWmKEZx9D+Nv`BF+5*&&Ne0jiG+nF9dMq8*s zM49zWvlB%T_HcA`|CqXD;9&)aEQ#^?T3$VfkNE3ZdTwVt4Bxe!Lp+BwkfmRs{r@Sw zn7O0W&oHNnc?w?sCcRCF0!|aRqUH1jyf@iC2OF9woDtJu;+!@E31C`p?}60sVMO3b zNr33hiu`Q+bzaP@)^@l=5reZK?wAs;05}Ka$#Acy6<8FA<5c;*3h4ZFyZ#(mxM(%z z8ceb7DM>F{L@)YWKkk~*D`GZ5Egbkc9Ehc8M$i6BTBTRnShUM;Cw#_wEieD;zw)pC zk>^tMBW#jA=u?md2*?7^^U7BvaU3Rl4FF5*0jyX@dHJFLN;CW;jrSjEtN)S?M@a8{ z2bwvnv-t6_6LcO=zJOsPAru}{Qhd9fu*zhvhD`VOSysBxP@Hz5`id+}byRI++&5rk zNOLOWSS{~X1kng+n7@CWgUgvX z#rZLBGtEXeLWr!>oVjy7^}X{ef#0$c|kxao*vR5rX^|>&Rq>@^N9?=ggrp))OhHz zY0;B(dAEkiWE#iJ=KV`ta^Uov_vQp07MXmafvG<`;vmDhN17#> zB_xXk>$&TBPX}9?vX+xwBc*0IMSai74H^z>Uw}vp*ojyp zflwN|!rhMamZieO_ww&l6ZMip2_guXVw9*7$TU8%yyMrRvCZS1R{Zpi=;bNd*!PGH zQ`Ro$a^7`eGSMz)*ns z2H)tNRN+5`!j`J&s-3T2mxsrhz9X4p3g-wX0MjyvF0`g!a-zOt9yu7ApX$(SvZKo6 zT8N3&p&DL+QFaGojGqP19caTzhiR^*K;>P!IP(q+5&@GkZixd9QCu;O13ea?!M!2R zo{u;h@@AS7YuOm8N$LyDF~@hDtsf;dEG>Ak6K*a{HYyi#CX2X>g<=V6%w?5GhLym_ zY}P*y`e0czG z2i0&+(^XCQ+8-QddD?X}*Vi3>K8c!ZZf9O5l2R@|okTA``p33$Q1S-849V^MIT7{j zXW0+d*cq**MOirx>AanFVLeEXGY=M3kN;`oRI5QN2T#k;u9f@2g1RY+6P3qUcHzOU zHH2(hw(Gg`V1)DF+Rd#Im8(YdPPFi!xBI*A-MlRwrv(m%pExCBr9h8-#>Vd;-fey2 zJSXUQB5u^pcxo@mmE*fkUk}nc6Pw(dzGCiZEH9Qz9i;1jo61pO#VJ=fq1bXQ9bK4Y z%+Y&wd5f~o7>fSp7cYfhYn`d>D(@;;6WE9l6@pYMaM0iUIaYkK@0N*1)a>#{9gS1tozKNlQh zX!VTo(Lm3-%!%lw#rqX!zu&4RI{0w5HsxlAyvqFe{$#ZH(H`e=zt{~^VwM=+JWg{!4+@v}?X^OjuO-R90r+ z`+2&?`;%Kl4{usHVL$jlZae`i{jF#BU#OV6E5waG_|=jh(oAX$+b<*BFO-|9(|2Q& z{WA{O-q?6+9;oN7VHUi0L|mW z$39ib#SOuH4L`#1-zm#RIE%+RQN=n7S-FtURJI%@Z)e?eMc2tx1NcSXYnilAx`O!Q z9BU&jD2noW-?7<)|F%XhC5_~Xo|tgp%IA}v+c zkL*J&1(B0bO;QTcC+Z~5zPh*h6G2U0ZqbEXm)=}phe@3Rto=UKpdIb?P;^dAp*v*0 z3TW}2Dw;5*aDQ+Dj#pQ{E@)?x2~z^>i@DM%C$&G^%~mG5DgOn{%1LdG;C?8*H##{* zm~Qzt`48jFrZD-A>cW&KEF1-j@>Sm{47se~LRkSuiF5D`T;6jUAgIgqqUIpMIUH{Be0ARvk5V@tZ!j;m%f(&f~iIO|X`AvM3LFB|dMY>6?(k z>Sxuuut++^$76evfJGVgyPtkJ%>2MikZk`J6G^HAeom)bb%-i%-*(uV78Me=QkK5te&xEQc zS!LRV!vhX}GnqX0#*$-!O|`X5mK8shETP1H=ypCx^Fsf&VY-B;qJ)>H^)SvRX*P22 zL*PptYD$C}{oa%s%kY`uH=~T{aYzBLKxMqcOlLSL#|Xc5eRh2RfO{?U*>kS7+ix>G z-qeg7C{*kc{alv{bky-8S#0ciT!;P&D^@ClRtK_Hrq=S!gHX#%_kM4rnQtG? zGY?!(hMV?lMXQd<^bm%RnQ_Eqw!S^J?3b=$e04+CnOmXz9DjYUkrIX+_QB}`5E+HdwlFmj=;+OwX7+$AdVB_32&K48mPC+)mh2D28j@sR0>?u#(f#QH- z`y754_}+!5pfbf*0dsI(u0+zrpvleqj^~4RId3fTRIedEKaURj z(mzq|_;WulXbp=_sp~%K9@X#6qI923OJk=3%*IvHRzm(XxrxS#aj|VSlu}z#C6Hvg zv$eGc3y{}Wjy5aCbFeib9W2aQp|0y?d5Wky3Uz#>UFhqRZq%@S{7OqL7IxF|u&2&N zHI!h9Z5s1<4_oGKr~z-j+Il#ZI>6`EmG_=zj9V4u5HyC{%mZixlZKyV{;S4QB@;h64J-) zZfA*Dfw|TTl+uY`eo(qD(OMfh2r@T{d`Lv+{2so!`Um-fl?};BK=)uu_ft9r{UO-i$>x3#_B7e)q;O}ZG?8GoW-RihO{*2 z#p;1)7ev7b7_QD1W>90_I|wV_0e?LPADR$9R3!GlF7Kp))z!jKU70PKUrY{xrTxmY>!v;DCju7j3k zkIY#ol4i6?+?mK~H2~i#G!~8qFj34+kS|sRpsRio1s@~nVB{qj!{$j#&MQc1_Xg=u zuy08&+FQ_Nepm-Ekd`$@+uH8lxA2y^?M+H6oXK5&GW12s|D^?GoY^IdmG3L`|0J?c z$0HXf`W}_2Vgo`VC=lI61T$N;K_kr+t%-+}STO^rwFsfc-+xG0>70$r@yws_*D1A}%XtIEE#(L$$ z$is5YSmfHHFbuL6>IUF5Ur?P7p-{? zsudNhRCGNVSimu@pfBkpx=ixtH(!`=B;rjsw4nAzJ^2?_`IxHSZ-Wk$uqjW|-niYq z43Ml&zoq$Y*sTBVc*=H{(|OT1_^k0MaBNlDfF|1tl1AsE`p+a1bYD7Q;X(?dTKwUj z#FmMRVssv?wCFSyh$7BBhTB-k<42G_H^Jyo-(Nn{Hx?#`yr0*TwoF=56=*jRwR9q| zW59za+%Y2PvS!I;=>1vfBkCDckxQq%=GH-`E8I3D= znX<2`o4$hj4UwRE#NrdtQAVwfFau1#Wkmh5BjT>ifS9UqaQ1)?Gx|kiNzay5)8fO6 z#|jZ@Qb$g*h0{I)Y%+J8^euFS)5&@*o1f#W(&TS`7V>z|Ak5Pc7bp!bP&T^9Gc`tb zV;gS|zGPo@JCjnnBfsF5BRX#Sw&LeXAoPpz>CsINTGI1}u=J@RC|^$SgDF_lf*tEF z`dr5)we%<~QR_N!(p!m=Ty#lWJz*@9Mh-q&Yst3QBW&j&{a ztRr@K49w6`TW*qv7-Q~YGeJV6IGm9kqT6X({3aAVldncN%2z%~2u?J7mi;12KEH{+ zf%mqfX;l%@GCP?kY)AUC_UQ%g;V$B{u(a$CvPZKZH@5q^W!Dm|potxytdqqk4l)d? zjZ4t^n#b_d9*V<5SShK<*;L=lLJEyiD?P+BW9>QBgEU@};2spMMp(9bl}>Oq@tM9D@EkL%ZLhO~ zPwCoaf1<*C_e1!I9&~LaQO+^);1k{A{pXyDwuYJYNHi1+-O)n3C8WYKPM<$x6acf7tHkF4Qz_BM!F<4c@!Z zdb~^!Iry`+ZU?ztlC`vcZ6HnL%hvRwZKDYI_4I&7!`w2P=vUdCU!QrH5*0p8*@Hs_ zP1Vbb5kA#*^btOR(?$;OKgV_aO0re{%+EmmB@)}^3(GX{4lQuZdeL(YT$uzT?b&lx z{u*em*XLj^?EDseQ!o~dUsJ~|x)aJW=5y|l#|WAucJ9Z{IqZ>*7$z?h(BON(%*F-k zW1a5I?{RnjaaKxH){~_7_yxs{YxzK_{ML#iB;)xTcla{6y$4zn8Y+_;FY!_`fei<; z%m1Al9!cW0-ouN*ZP;4Kq)5e0Y<#<XpI>{r9J!3vnc~3LRnRva zhVSoZ?w#o$8vWfi`_ks{-#rd#4ik^=$EPB_zCKAKFJpwqNV)3*+gu zZFnJht$DhePWq0e-H%C)_MP>EtiO0keoN)rv*9j0Vn^ww zFrS+ZbhyX~456hhD8B2$XIZTfPwuG$K{6dfBv1P)XnoIpMjv(p!{B)Xr{mNLVEE>c zJ+}AM#k<;!tJe$4RQR+GpgPe}Wu ziIr&RI+egChaBXz69l|<^_@=;y5hLt$cEYEC6Iu7Y4@KUSWWD&XUwt8t~&>;rDP&P zq$}%%UqOs8O%(wL6{(woruEMR$|aV#C0pTVgWVp)J6@395Qfav)UlnHnN)X`e8(6| zu{!)U0B}s&u<#!Lm;4Q^8snZG;&(t9L@&iYqJ}6NIplz?g zT8kr7tYlJg@%861$`a`Eq=>piOpY}R9S~l)LBoIsum1b7_p*p)LIwJQl%ymRRZ4+- zd$4;}hTlgDdVj2Ye`9eWHXXCoj7VY$-4x!~f)`nOFZ5}TgRY|1i0M`#-6nNj;Y49M zCVnm#jla?;-K3Cy9V(T+Dqbtp;-1E3mCdp_H=yvu_Aymk4+ctU7#d>BCh2M za~1bkDx`k1>fL7aaJ->yM9aR<8zOvNifBBOhqM=STG^KD_xf6389lvnI3^q*3$Vcc zZK39k6a7_qZ7E{V3m^9zmr@wusDD9#`Sd597y$~Hw|t&N<2gsVjpQ>o#)j5USz6z? zSErW))(={CC^LDh3$tTr?4DH<(U$|L6Qrp7Ms0j0OIUOB*?Q48B`u0QpSslEzU*nk z5|8r?aZpyEF5ES~r7(z@MI-NMazPov9^Q{xM(8!6WLb0VtqKWH@IZv{yu9v`WCRByO= zd~xD|Kr*yVO#1rDjBi*dqAgmfmdm|eTRXIwytlgKs~j6I<`Ry2G)Q^f_IiF=t82a8 zehnWY6_#E1I$h0E2n-E9`IAOaqKr^1<4h%?^(=Tdp0Yt0XTMOm>$EcKw>{}guI88* z^IB3mN$B3}o$mCbtcaaWTQyU)c7r8+M%RFJ1}o};jVF26+;`vCB5K^QKL!=V?QVXN zLn4rp4S6G!{%n=ZWa#B-asBu!s#Deuhv4)|8eZRV34+N`9PnOY5%#OG^qyILHP^h( z)AbyLMo!yl&!gr4X{xz5?x;aq=(=x&5BgYRW-tgK1s0u9UUyOY8mQ>!&mkvb?6RVv zS>>jO7zgt8YORzH4y*cjzK1LjA21>(GEF=d^7*O`01#gLRsN1-@8EytmW!7e zd#-AzEtIya3aZ&I<2Rg1bIGY7fBIJa+6M&iEF}J?8>mS=;^4zgM>TbN7oO0QOMI^ikAi zS;^MQl(e1t;I(Nkdd+op;089;+1Z--IR$;;#~Ox>)Rx{LNb5$g4_p?vb8Fg^adl17~B@_o{pr$rGkpPjDV3W*)6YseK13&Iu zF#9@$#}&rTW9NAf8`grnF^JyM_OvMmZW&PFvjRb+HKf1!2_O0Osl5N___a6_7~CdX zg-ssw#_UoaG>*L*w~J%B%54)9c06PR!GhxUFR<=@6*C%O(t5-ot>^Z(41X9NgQT-Om45FwGZxaZ^KN4+saXoY zg8!~CC^UW@K`Hb4mlUo77^lR&0AFcr&J$~N9QZGghU zM(WERB5#Hy>?SS_M8649Agi$-(PxyFwx~CTQDQO;wxgSDy2i z6x^krzJcNO(kM=WnJuNMK_ts8 zAPtx5cxu?#>KJy|!#+Y#sjMSL6?^RC)3T6o`PF+$kzi+2o`?nyB;)s~fo~a8yb7uy z{1}DE7GAH_02E-pDPWO^G>CvE8eH3Mn-=CYS(NN>?2$Xo2m3KF9ncuMqD;jNsvOcg ziCZ7!V_>vYi11FfA_-a%p;@W9xGea1U?8 z)m8V^I^IK7#V2k2d)>!N%1ys@wfxqL2F&XlAMUK&Z}w%Ll|i2ujWId9jpENe{%Yem z&kK4r*7uEBTsbn*^hN475ihs<%=N+s*y`Gi@nP8;;rYShgMEEeIde5Rfz=ZN1u$af zuM^z1RijAlnFSz@Ga@$frIA8I*N6B9tWP;cI0*m7(b(CwrEHG)rYuCSOIlq>)me0X zu+LI4 z)L417EpiQ0INwwtE&}$PT?2eyoB9Xr%q2BTy;*sJ3^!*tqpXBA0@=yRAzXXazZKoa z^U6(ed+@%<=}H4Pq)k7xn1E8iwDaJ(SVEUv+m1OUq0x=g<&tK`m1dGmVCm#U=!(}% zU0$XDR~#ZWRMM@xE#0}R!?#{*5|Q1IjEAGLjBaTLI83qb4S?mxTP2T;=ZjZe-w)40KJT9TaZhI?92=Whu6W{Yg+8fo ziVA3YOYz?`uQW>zG9PEOKV-L{tPpsDfBw#zxRT3Dz(B+s7M{dczv!T+bUbO|Zcl;K zmIv)(_!hzs16^N2%yo#>wmh(Zo%rNpDF8uZi)N~d=43_wG zyQD>xpPxCiuLaRBmCtw(S!r+ zBOJ!CfoiDd-0rTw_m&~UNYg5kv3C^V=&nVrzbRc+K*9*V|98-nWYAZc1|&0&40lAU zZYT6u0CZob0nr}`rs+(vmFZ?t$;xMg0lm%yJ+X7}GO@EqoXD*2TPg~G2l6uiImIcy zm;5x~0pmy$Xbf3g`N8`xcGsI_H)hgZx>0h}pg?Ra97 zw{_eHo18cSeOW=i-`9gFsNF@Qtzd>qPgXgdE|DA95I*_@j%cz+NhHXU8Je1~29F7dUqbT&L_}=~2Wp04V!`ofF3b7>GaeKzi zVJHWKIm#TY8p6-09!w;{05Vd)RuHR(M}i>@Xp&r^7BXUTwQPN(T&5X7?Zgo&&mUWH z<3ogV@X4UjtUabtZY8ZXf#Niha+!+I~viGTlBs@IW{tZ64&?LE^T0vOYIssWyOq$XTvB;Spoba7ItTG>h<2~(%7JXT+2ft@oyN)~i-8!Sb zzj{A@T|C_K-UqSYHc%3}4lZ35!5FME#c=wJcqGwT?YI?lM3Waj`NxyCic`p$fYezF zy22*$k1h7158+RKP3bLHauMznJt@4Kr50W}j2rcXAA03~uM`b`U|ABc606Ca*7%iZ zl?+*_nVYEfySHJO!q**j(zIH+{riGW%n|iq(Zk+5+R}pKXvt1y5BM+r3*Xx}#)!Q7 z0i2LMF<2N3ERNKJqTJIJvGB3)w=eCGC%!imM>-uWXv1I==n8YFA;plIkA)N?Enk4fH& zHKUeNDxu^o{Y?=37)z_R{9^{ci)K@#GDA8*I2D%SMunM6UXt^Uw>djxCC!u^E-1t} zQd01ECi=PZPg?%Ir#<|_5uW+T2a%X9x9^TekM{aVDe0X-IKBIHeVW(o{m|<$I&?VU zSk=dXSgdNO?&~sW0V;Pc{NwkDPm~7to?qm27Ubt!w2EQ_F^oIS`Uhw1Knv>0_d%}& zeh*iGFVrCh&0&%-1Z%PV0xX(KQ0U^bLBVCkJArx>17dtQQaOOiek_k}yNcb6!erI= z{VXN|X@6+y4T{Mm{I|QD@5KZkJ_&uM-njO(^I2GK;&NW>7Kp*7zULa?B=~L>?B8O` z=)ue7U2qMySGzl{6F_V<10AO&|6CL?;ebr}O$PHi-Icpfi9Q$lPuoDA0(S3O9R^u{ z+dS;KO%_qsjI6GD7QcG~MZ(6`5jwz%Vf+|~%x&O=I=bd;$i5qJPM5r*OaP4S!(C9i zEB}+v%;vxbz41I;c?lN%-o%viywDofd{Izr)f1@8S&v(v^#DJfy@1ejJYX|9s@1ME zcOu^hxr(Gnxq0axu!a(oPL{jRCmtKmzlr^!vQE8zeP!oz&eg==-1L$GSx26VRI~aP z{5<)&d^)}|WDcU7ZtT$7+soH=tXcght&CsY*@|gsyEfoTOt9IC?A=rJPGaQ7)9jmA zgGQp`I4OVmGGC9?kerO^OiF6E-$N=BHbxOU#G|oQY!$^Pga=|S=saktNaYZS5RPfr z5V128yO15AIs6CnNUvM`&Sn_$>w(g^WK_cuCf;XmmTWv^cOHz>WBc%-Yq(mt z1XIPsk@yiJpo#>hAXPwB{sy046NrO=8&R&q7d>@rL=hY0WUqaH!l-*f-9(8=UwOR7 zU>tEP_}LY*&CRz!S&1BJf9j;k{-lyPIb<dbZ!g9>q0*WU>b32ms}BmAefgG zpPwtFFxMObNiYcUvWYic0k@TK5?Lt!2Y1m^S(*a_g(=^+dLJeyZqIXbfw)Ws2_vEC z>?pEvSe5J;{3{*1n3-)71d)C|DvxB-{B>2zi7Ona|N7v|JHiqUgnu}lHriFc zB>iHi=q!yJu_1z>&e#v5u)kYbc1W(MCW`a1|2o}uicp)gp0be|W2MY5PFRtelnM5S zBDQ#5E9ZSrlJY=*F{XrmDu&*9tQ{v^MUj(0LD=K^X59-KzEbpRTkIvHB!Z_a(nuG* zG1QC8Dhu1m`(KOv?k;ibWb`i-u9%kn8&#*>ap zPpdUmXUBL)jZ0Kt3yCP4`RTnsc*N7ipSn*gkcy}CN>uJ1hr*$kjG zQ&>+BHCF>O!1H1{o&S#5Nw>(`rEez|s>lT>ysdr8!=hae`%wV2)x2P_bq;M zx&z}!>3`wVf3euV@M%dk#%p?Z?_J{aYzE`p(1c`~f91pfk*}vaRXQQ80MHWr9W}&p z?ZNE4^%@M0V7IdSe3trzWRicSqyLc>{*QF#e@QbSq;ubihIUD3pR|?8zW9suav}XQ zYUptz)PhsOCC~%^anwL!65hDBZxlw;tTbG-(U#+^!lkaTR>c+@co(EziKPRf&LLl z5+}_39xmY>JgY?*vGLcX(FziXNj^H|hHs08)|{otd=KZM2SLNGjVPpVz<;gN9#`~J zetS^#E?gp?{vUGr+Z#8w)AnElCVV0XEf-@^B#a0A)07P_zN|$2ohX>1Isv4ekTaQs zKJ*>TqPL5r!Xt@YEtHY=-amGb%447{g^bqZQAdEce_SVbfQEiouF*$hqk)786{U zffa*MN8K4`hd1SZJOeqXdS=t=R*7Tgc3GIVyY|2G>nh?15NED~Rw^lS&K<$aeJS#d z0k~i7=a%2C)OH8@;NR9Vm7|v9+QTQQ3sLsU?LSLA&TIYT{!!O#_b}r!n|#=OVSkCi z?>kz@qK=VzCi{r@o0^)LnVPzL9l{|GV!Tq0W+yKV5P{z4 zXqAPe9Q(Ljf|fUt$*#L@Qe8o0i18uD{UY-Ez|#zJHcJCb2q$ahYO3-M4kz#7=fvTQ zAy;Y!zKGBx8{33gp1BgVszhB{x)`8^J7g(np}t2foHfkHT+#;^82c;yM^#?DUQd;$ zN)RsiWJU%)?4jf^L9BNWLZ+-e&ZfeWf6!+|!sm{-zr#iM%70ajT)lgQl%6r2(DUHy z;gxhs#?~T9l#fg`2NASBUo|m5Aq7%mj>?cD4JA&fc<;u zt|lUuZ_jjCh@KHc(l_>9ld7O}$ZIyA^)iVrB)p9|=RQO6c`iYPg{>9x zvV?%rvJ{?+g`|s>*(tmj^P4Oqo;jL?Y}q-S1PYb@h)U#yn$!}8c9~UrQ;;sDo4hX= zqry-9tVuqaWw*>i)?aER$=ZxQj=doBx_m?{5cBLN2OTx2syyUMG3i*v0?V<|N^+>^ z1*TW3iOQ8vPeR%we9EwbKl2#R%;rM;Xvbf8#ErIlo%gSBWSLwjLFUNC(fO zt(sSA+(mgLN4U$-AZW&D77^yYS|=5SNb2$f0B4n)&TxV*Mxe-0XSk+3wzG`&w;wnL_K6xabP-U-gg{q+8c8g ze$&cVc%uqF};afm(T3m>Pz}B|YR($+hDEmkkBo@)ZKZ}lEGJIyePFSm3NisES zOUE(P-!VoDMfVT1X(bOFe?z{?R;r>>(<2Dd&vcAv3`+WqRiYB0Bk#DmJ_Ks(@Xzf` zEcQm;NoXDwiQ)Im}3I+U;eEANLy7-^t{O@0FA^-rzIuO}Y~M@0U1#8R}Q(0*H3 z%kx+AY|i`9Xz|({91)04Fm`UDHoIudIDGD#+?^Q&ZS7r~MNhE0UGtRRmz8k$_yo+9 zXM=WGOESdhTV^NAps#usZ5(qEesvdtNPk3J-I&n}a#Of?Ji)RBC%_@-)$M#0DP$0kXjlD#Ss6UVvIEYre_RzBdM zzf5O!jIl^op~7S@6Fzz~d(Q>%MOj8K2&oXPvkV^KdpKz{oJ$h9V+tSSkGRt1WO-u> zN+Ik$Z=#b~e1+*t(JPcWvPl|ypD3hRm&S70H;kQ=@v!hoBaHP2*@ufOE@rJpv zS(~*5OCum8JM>V?`J=vXsHa%zpaqp1^lRG8YCW-4@uO8i(1wruVEZaj?HVrJTqHyf z0lH75jF1mm*==1U#Ge+icBIOg4Db0(svS>3AZsb^M{6CFQU;Wf4pGfl5grZBTbuQ>0Q&yc|m zMSU(EbADR!jV-HceI|$oZ%3As*sbE`60J{mrd&!S&=&hVwjsd8KnBtbL zS2in6FNDKQ-CW$W?5{VQE-zH_xE)YrIdF)==btDFrf%nrv-;Y3gy#48+~;R(8|-%S z4Y%u;JK1h)7TX`_rAMI3~v6!?Iqa0b z^Z2$houuD7V5+a3?mK_Q#i2(J;jc2vLe0Ha^u>P8`{~nWN3vdb!+r~@o-4bYYM2LF zjuydc0}vQ7on+{4Of3-c@jy_kLafG#p-(S;9@rR4iAX0J3JszD)Lp^ZA^L*jtYeV` z_WE+L_qMyuuSKp|=Y;W+HK|6LWN59aM%F#2PiN8NFDz!-Amhdg^UbA$El)ZSAXYCSSI9<~kN-1KBVRYmwBZ~6CpzB~1@&qB^qj6rh_66;A9s0Rylg4>k& z;;sS4zv<+~Z4q$!?d&W0oj5B?w6F9W{#FcA7=3bBV9U?LCj?DEjYQMzf{&W&+k$73)1m6_3Ftg>lUGnkiMnLE> zub09<^tBZ9_+WRGF3+K=c^8@ z1ls^+;=$t#^A8Ex8GhSeKb1jwNVbvNT~-Y`P9^;BOCg^rcF$hT=!>MnT=_^v-TF6` zOV>$23saJa%sGCw2nf8&D1}-*$p5~h=)tVAn?N8Vht)5p>g;O$L_&0!qh5YMT>SB? z6)K((#tXx97B>*Xu*Y7KpKo@673NLsCrTg`48ZqQ4dpL+<|OL$3NF)B(B6`9a@}ug zNt(`Db|(;UCNLtNXoVj^;5o>LTf*L`;d@RQJ;ORO*o!?q-ssJ+qy;DHf`_8ntA#1U zPE4!sqOzQ9hx8;3;1nC%d3Ch8{j=Zd@NT)K76CCDa%+cu?%zTY8Q6)$k37o{*MvRz zYoTu)T&`J*qz8UQKU72ZCVhxQqc=*o8?)RZEkuW9ky4=us^>rKDl7l4`>j;L4hp4BL0|Q{>(2{RR!Dz8#R^S!JS^5qu54kEj_L>1>lzyRO+S z!JnnoR_%D9ae~M*6z~bcj23-G*!hM|c!?f7shqkZK*1MG*t#7iVKB1$q&Dt+R$~SiXiKmT(A|3yo{-8VAah#u4xy>745;bhD^_M7H`7SE zPhDq?dc^rU9B@if73_t_!N0q$MErp0r`qw@fk`;gM}r0mTxJ9I)&^gT*u4t13M81^ z&xS@Zs_a_*tI6W4*Q`;U#7{UHhom!wk9=CNWuTi{hEy|Jsk!k$ImD6la61H^vLA%! z>b&OTlp!VF7Py@O)8qjgF7TDFZ`O?0P#{nfXNg&LNXrAq(d{NO&^V;7?_FwH77*!k zulT8|kZH`hF4mD}5GhIEVR_~y_s&mfb%z_6u zE|imVg7HA4)++CY_sD<+&7e=KJdw4q{QQ-hJ{`YqrNP13M=Q{lf(E_ZjvLzxqv^h_ zQ-hYS)5ns71`!i{RT#QCg7>@)3nJ_>s4(2{LR43Js^sllC4Nof#pha8LwmxIIe)p@ zZ(9DxjrYoNN=BRkaoYBH#*4X=VP)AF@)5F&je1l2$j0>)R^7I|d;e)rMjq!c9o78u zRZ#->hr?D(1Mp_~J`8E3;%Q)qw8v<~6SSXb$iZ)6zB@p%r~L)Nk87{;U!)onGs2jw zM)uo2B~`cYCw@|{4G0a5YH-%R<$Q6eU6;{qBGtC?uGXwE__t@}5d6cGMUNjQmV+8= zFr1vc=4u{pIJ56=xCs?(x9E(e%d&TUNj+GS*&(^pJIj92;Z0EVq;QY>-T2>0AZc z)GBluv)xuU5b>irO3tK0ZVm^y*frv@TL~<6UQCh998?ff7{?p(Sv7~JZt4C|x))u! z8Q(sIn^C_(|@qO!M%qljQL zuhP(YTD$bS+nLAh+eT<=#S6@3=h;W1McRQ~ChvuW1jNlxCEeTg{@q0_O9C z+dnJ9npfg{4BX*_5o>Q9ObP2iJ@&;D3r%5t9qFt>qZ1HA$Iuho!$4(<0ie_Dp^7PI z^GuEv)riM_rlV-Xkk06P=qol3Jy(K$TyQQ=r)nlyh%-S;15I0n4 zwN?GQ=dtQsA5o;{UFmUj)$7pu`zAMQ24g>4AbLI82DL)>nVOVf6tC3JZ@?h@R8K3x z=7~&Mti_I9X^*$QV19aTaBv2NXe4?F;$EK`%;y}Pfhoq5G1|H5g)N8Qb9sM%@2CIE z0yKBPC+%YCde8e!o&IPmZNwU|4D|ACq?+~ep*Fr;$Mn-)$#m3G`(eGMj|bl;c?LL} z>=TIbb+EoW+beCR@(>G&r_F5u>JNLi>?BHx;jdzUb7%XG$i1oHA80{x`b$yRzG8L; z4j)x|rj?-_{wDzXrC42z0!IVYmD{<4mSj`t=spPDJ@2irEzVs<#NlW^L=(-Ms?N!} zY&ozRy|sFr^@R0NYRiOtp~W2gPo?{)(bxyTw_bfH9W)HjY`66So?ck^1W{#-@$7t! zxNz=Db$p=nOv&$EGej&K&Wqa%VLU!{OzN-w`nMz$3r9>uYHNbHa zS|=21&!$tZFK|1rwOS{0(7FC=0)N0|71iS!&40sdb-U4wV_DQcIWE*}w?vBok;CQ& z<+3iZt00L9+uf=4Jbi{H*h;-(G{5Ev^|1W|N9E}OEEF9ue{y%dkRvibzOfD4Wrt$Q(> zMQ_aAuFY&9r-;~5DnC15?QNGy)RTwUn0;aT8~nd}7i=H&FL3T2Hg_9Kj4eP=U@y%v zF-5+2=QRVRm$BA(+56rg;6X&-jzNlflS!w;(k*J|TXvYAEb3m{9lY&N-FeosyC7-a z_#RZfg({5^uSzvx4XeYzfB>f0QqpcSn6e6PY^Kzc3?Jt<63O!vB|`VT8&-=6Xr zjb6HjK*Mh00L5Rcxxav=c=d_&+*?&0TR0zhQ$N*-HIp(~UVQYgyEq&mYr=b|c5W|< zZDb<-z+d4%w~GKRi*c@hXfY%kJ^$rweSEhGaH~N~B>GduIt#z4i+;M?+Cr~L$ep6J z7?i+1-_uejnWeIefu*37mbjdL91PSbk%MlUrmbtx7c|rxW{W$`Ft^{wD7lAINJCCw zid$lZW?}~A&jS0xmfeV&rbn&%UK$>f^)N6-f8J}%=jQ+Lu1>w@bWv2RsTUF=|gGhV)wy7R>QmufWKIcVv z{q1)SrIzs}2=7@i;usZc0HU$wbR@LyAkqPiE=JtbZ*lp|ArsujF`#F%Mk$DEPB2=! z>ciei7!$yn$$w6*0vZHwiwTf0k&y3G<$%~67Vll;Ak8frYtP719ub_F9~tX@xghMAY1m{leHjF5^I_lwVr zR3XoVnxi*O7Pk-$K3CWYtR0uqEo+d-cRH(Zng2huePviwU%xhubax1f4Bbc#AgQP@ z=#Y{EQX(BQbW4YWAT@vp1Jd0o-AD`4-2>8y@5bl+-*dg!b>8!wFXzL|wb`@Q`mOb= zwf4I2waFb-EpOELj5@iybg=uTmp<L z=7+IKlESo`@=i3eu!JZ3!H4EJZK5}n-7=JulE@s$R&0>ggPnn7JfXDt0ydn})nyO( zS~9KbBv|w*-vB%}h*JlCw56`Pp7Dl0W>)yK*ki|wq9(n^3G2ixJ9%nrwDrrLyvlU= z{4vrbX7CIVd@07fS4wwWx7+!j*hAQzCVIIA$BacC+EyeCDl*GFpGL?vj2CXI$TPI8{2hWAT-H~P^r zR_5rND~!8W%M8YsMj+Aguj$wOa8j~o$Sr+iO-qw==gMfthn53680Q}-Uep{|2ksP+ z&+pdUm(@2}`ZWpe@?AY;Q9r!)p7L$k0)it1v9MJP?EyB9^JrQ!R@c!_J(CMe9I+ne{RiI$~GjThI-2C6e(b*Z^9LeKBYPq(eeorfeze6mcH zLZqBc^>NteU8ar7WY=i;o~Q44y{WXYOYNdg6z$ouhea2Mm)qBBkPOlxYTq)KWO8R0 zT|^}}Mfd_%Tz+^yDjRdP$x4$aN&JEgU|IQsUc5o?jQ8K!}@Jk-Gmz>@7(5#Zk z`R}&l>cY;VlQh!m^_7t=j-AxC)H{cs?;2_DXcxk<0j9d?tz>ll(vOzk@MOzA;nFAk z7>OxJ1|uY!tq#2fYfb?n2Y{-4p&C zPun*@Kl%g!Anx0Cg{dxoikGyskd-xBfkj!nTotGs(_gI77`ZfG3`nA9uQqbC@Xu`UK9eM^lNfxbMbr9y^N0%v?$< zbQnH6@a$&6iq@K}A%l$h=No#m0Q_`Ni`Nt={kzp;LprQ<#g_o-UHM?E^J}9`Eu^VG z>2f?0CFML>2EK6+lc?t?4mc$&_B{}-j#z4b`P_=P$D%ZGz9^_8ZY!a^_w+5vfv&i{ zkA+4UUcjD{^vxgf?}U!5BhSD47OzK~Ya1r-ef^|Sd-;>EYb;F)^Xs!pLB8Mtq$>pH zuL+FOPUi20dNFqITnQCkxBVcwLbeJaIf6`CMtS0~U#GUzaMM>VywS19H}BOdK8_^T47lq~lhk&|G}QfZC6!zly^ z9!?@-sdr*!aZ^?cv&hu7fOGckT3Y^&96{2H(&A#vO3WtD4qjpNo-!B=dL|H1b{h#Z zw%K+q>8K6%u6yKn@-}g#c;D+D3KkkB-qs0wR_ptd|GL^nz@UXeq{Rhz>`At=Y)I#_ znjC4V3n}j@N;8p9-ii*^0HHdWR*>CjfYsF;E-3-k@q3`F4ziGzx=1&XPVOk8?PF~J zf>=+lbjNdNw`h}lLR^Ym+(gALg_GS;cu>Gn+&#{*eld}VLjg=u8xS)~`rHF4ice&~ z3p1i6gt(&^6&`g@V(fTw7BvU&m@8CmQ53s>IfC_ipR=@VkfrVPH~T0LN!bEfDEgAR zTi$YZ_X`D`WC};;oe9V_IW+K4xo_ zx`Xl7$?s)9Ti*76Vdms5xepRPc56pLBm99kjiB*l1cE0Hup(?GW0D?Cf57i~rFZzA zoR)?yI4BBh39tqnxBFP~hz$fhq*1?p+|F>jQn)Khi_t|PmyTi8QsEun^8nH3gd!SVm!ikis_Yx;R86)_|MP3)mZH zL+7&u%o9?Wt$L&ULjk%g)9%J{A7uQOk%}QrGA@uNo05jdY5`xCv0Td?{${-F86)GC+o?`+ctp*r#SCMY~U&4Gn8-; zn4t7b`JAirs3H_mb|JVXxzr)dcTczoy`C$(N9&0y`oV-SMa)i*Ku)HFENH zIf;4dK<%~tXkGk0<2FFjO1lPRW&?bhx8$X`opc@G+)CH&HoWAQtNvrALh=#wNPyo8 z*PN4vTR}QwsOhwxK&m-n8kRoF(s+0~XKMLcX-JYdA7yXuvV#gCgKnX|~UWQja3svE-5b&4Cpe{YPu75lv~ER zx&O;8jSirtekU-41Dw;nzS);*`@wTlx?K8ReNH|h-^Y6$>+4=RK8hgXq1U7A{@CLN z+>C;#Jw;1wDDOi~0j{P9KpbOpGQ^cyaN}46dPlVxqU9!?Rq4jq;moiKdulU_kj^Pa z5T{I#r)$MY?u%1qbR0B(soYarzGbE`eugq(0*g=kYdCCmwSofB1%ZM>Ndqn>XD=Yx-#1yC?w%abQTP_?fJP; zR0%l{hw9Sw*$!XM7p8{DzPN3{vIj~W6k<(aswPrB$D@1I^z%sTk|G)M{ZbR09Ipl6?qL<(YKwrh4y8RFO z3WneIRn6^x&{r^A1ZY*w?ceq_6imP#Os;t6fA=el5AneLX@c%UkGFv($37sURabtId^ z8yE2XKyRFPB(Uu-abMEM=*xx`45h#9EYRL~eauk5JJmBxv<)+n?HSWx%4YOo#JD#t z7&uV`PPWnuLoIJy!g0Rs+5rr0q{q9cZDtjNBB}U~jcgaX-AhqZJy)zJ2E6?6?XyZD z_DRdj!)KDP1zkO>5|hKJ{VuUhjy<_D8*^%^nR+COtMhAXGsW)RHpXhCm>ORfRQT;n z$4UpB0)3d=uyvjse-s+LmrhouzM*6{CLB?%#mvmVo*sR+SOkjXo68LtV7R$&zi_5` z(>T@D7#AVEAEq7P!~Wy$XRUFx3dq0m#im==>?ZeTMO$M{l%X(eVR z#GnQG&FgRyiY(@&`lL5Z#b>tkP<%9g)<3D)1q}Kv%#XCoGGM3u)+@3L4x!3(&lJ}^ zchGbtQGK<^7+3kdeY#7`?bpqFiswx3-1sCiA1W-7Z7*VthAcbPaF^Q^z%*kD!B5otAx#1sHMwFz4_>EX&MJ} z>Y~bN=HMB&{6>QT#0H03ylEC{z4$J^h}HDaoUok>^3#Q+0r>PD6RvJI%UE`dk{A{2 zj&s`tx}9M0v$TBxB|OOs`~2+``MOu@k3{2syj;K|Diw>H4*m8{k_RIb)&j1D)4sFD zzm<(P|M3p&*C-i{vh;re?#Tw9cgkPf{CQ<J|Qz8LJn@K-0Tj%ard`)HxqCkYXBCv+QU?i&PlxJqc6 zH@iq2TFA6#DQQWeI|Kf{@JF}D2g5W$1g2Pe-Z|r=ngNuvm5hgxcYGOWiobiseuMGk zo}t!?F|YXoWk0u1v_C3)nbFsE&h-iaPvT!fwp7uTK&j?Ft z;EPk5p<{Q#eQ{sbx6S0SL+dkzar7rH{ciTl2g<-DrEbEz7uAAX#Kz8a*mRgBu8mbgqD_a z2fu3#?cJ)mjYD1tXal66Ho5e1LSV!HXKwkvz?IX4Dfs#Km!OA>s}{+Gvl7ITl7UM1 z^!iUDf3SrD>X@54DkR-yXtSpvuKNAizDy_MYuDA}^Ibc0Ei0yM>7z<7xMLLifnCe{ z%7+w0HQBXoJU4JQ7oAz8m-}o6uRB98wcrkHK&xhN<#1tSM83{cD0YE6-18p39RGwsz{I6Rng{$x@0f-R z{FP0X>;;2$2L18SG~#^+yzMrGc>3@}tS0U{AAC(c958^CZ9$>>5@>1U$PVL#Qj znUVlndfznMQ_8ldVeV~fh>_B#y#P0scL;7DJ-cvEVf)JgTliz$3^@Hpwa52yPxh8~ zHBBT{h$mp}U83p@LITRDGxjuOZ?Bb9LTmSFg$562|rqK+T>{-lC9HO1i(`Fd9wA%pRWKWbpK&6MAy z=q2SVm6)|;`K?ygK-NB?{&dMzyt9uZ$hPjU8cCT=39ozE;sGlsULOj@e(&y6-RdLt zY27xckAg<-NnVIZhSu&h6tT1timlWjSFqg6+_-Z4qXH=#{)^Yi|2>g}jM$4!>@CM^c$)rxtq~P-8*s1$hz4E=E*kqdMnv9F0K3-MJfSi{jw>vPn3ye=3kpS|z;PQVBtPmLgDMzqj*NEC1tVw8Ye`H5Mir?p zMBdBv14>>2l#Ey6aL6PuXR4}*OkC`LAZ;D9EIt3myL7QrGwTyrn2i1_33cmM`AxlE zY|?wf!DgkK9vk5JYT2-H|8SZ_?(C82F+o~whYr~AbaD0Eg2C3K8t-uSjxqNBAWdSl z^n*YL?CzJ=%Bfs@-?m?zm>*h5>up+!n?Aw$gL#u4q)%F%kN+a;RN%#V{Lmd~mq>nn zmzNpaLk;_wN=(`G-JkUEh~MaNbx=UE$Y|M+ONvI(w5=HHq!)5z#20wO&BtO3-ly7= z&c@xqWM>>Gm=x9{?&i*KYDE60J*0kHQn>{4OmPU#@;=X&#X}hzo|H)*WiRR#-r#=oqLn}gO9W7;?5JCZ%b$!O~@ zg#G?3#9myb)|BnM0<1hgW2iFY4)5TeHOZR-14~T4U4Pe#fxff+} zz^9YyDe#%-40e2uc`^Z zK29q9RZFjtnB{Br7VEtm3H`pauxXg-vqiF29ct3WrkX0Uj`jTc`f8rir&In*40PC` zcM@?fUmTA5kQtsG=#48&7C=ZgjF=bhy{J^ono~0DhW6AbQm@oU=GoX-bK?nld^|wM zYBzTsS0Gn*hFiK)CU?$1c$ZnouM3X7$9?8bMja6juN~23Ibal;TeEB>XP9t$uLroi z*rHw7B&Kh0D&{xyR;f6z!lQ3Vvr6$(JiffN3_*{ZS`>Vq6OSr!-^WA;+va1zY4ru<|bQB zu5*`3D)!-2GH!XlSCk>Skt_~F2Pg`Mz?{XjFo?Qk{3kxuoeG}sygDfDV-f(9SWYf} z4rn*49cqXorEO&8p+W#9<-&rwa>WrSqRSkGf#kft18 zxxl@Yi%*`OIyn3ym@@N>r6H_y_PAUEA8Z=~eIK1WpRu<0zK}lETc_?KP95mMB(Z1e zKVqW_T>gg(fR2Q78vEeO$f}nBDo3BT_Y9l67>Iq3jeVyNzyAT36zRh= zOT%<7YoANM?UrGa2(Fo$&fwMYOZsT_P`TAn(-1{6voMqx@Z^mL zp=IR907B%D>j$1g&le99)0L!o3%x-%Z+$sqPnCHS8?|P=`X7%lO)-7ylbG;zyV+An z=Sb^P01JsvpzmSzHO%q0+K?9!T_;@P5koNj0s!g=S!~I0qV*OXmLLwtgAs?m^v( zKSWyeT&~A7&0yLZw8gv95p`hs`c_XymqaH0<9u`M-Er?Xa>HLp)bR;NnqFqb_Rm%q z-aYW2Gqog{O)Ah$9nAFDMpv>U9`ZG>WqoHWNyR0VePdTj&Z4x`+_oR~WE+~b^8gZ! z9r_BN5Ci0NO~+p;VETgHeW_P}r5RJO$Q#?M(3=_5;z8LBX%7E6UverT<2 z2ko!|!HVgH3Rfptm5?z16gREq$A^CXt$?$DL7H3ovMrB-zi`u<`vx?Hw4178Z|yU} z4yAL^bjx?gF~P-y>g8*?Wnz@_-Mx#(ea0F+d%4PYuzf)r{z`|-l?n>Zc~^=NBP(7m zR!NQhslgd}`f)>Ku}RHN63$tmU9{3KdQiZ7ygve1_>DRq@UFtrRl0OBT$AnwJmMOK zVq0MDSeG^qY&{Z?ppj(weBy5uKtgh}slO=FBWr#mjXq7TK8`7tJGL?$yR{CD0G!^Qmu7eiNp9UF^ORqIJU8!0yrQ!ZY-M|CilmpNS^2v4ib?Vz zkN0VNk<_QTD@+P+lIgqWoZ@1iY3!+-wt6QcLgtAvbs`8enuNIVT|DL40&l40h@BaT z0Z-sPx^a+yoxHHpEGISGfLypYs%Q{SskK8GVs93Os`TzsbV!4j!*EgffN8#az$|jk z^qo$h*$J)jhYIL);|taN`Fd@2((FCC0A%Dt1|RvWzz0z6Zgx-HS{mm_V2!%{b%o}R z(1Eic_6i##K@{FY9(3kLKmq%i_q$;hzl<%OgUxNxv&G9((i8&+OV_JqGV21H5Jd^$ zbtAN|<9E92G~Pc~F2&x#*AW<{=kxKXS+bGQw%kj%D#Y?{J1lV#Cx~tM+S!M94=%aq-V8 z{S*C5eTafKMTwvQg%?W|betQe8aTW!YtJqU#)UL7=-X#ouKj69^A9By)_;D+{KnPg z?$cu~%S&A!E`|JFYnH_XLK;4Nb!)XuhvO23yQS@E+)-(lv`QOA0}Z^zZ9Dfbh5bTa zF%?1dFA>9=sXwGiN3|B$+x^+UHpDQIThFiMVib`Vk?oS&5kJQ&em@skC2u0)le^QH zT`ZjwO%OdhM$+-S?mYz4UhJAv%l0n%IVIRdqiB|@J z7pDyWxxuy?$_x#_Y9+U1xyIzZPMN;KszE2`Wc^UM8%hlCCiE6^6r*y#DD4@e^saNo9~@8dz^E`kN(g9Ebfpg=d+?PO zH;a_cbkzSfUdTanak8l7_BUWEq55i7#SbZy*k?L!ZzYIgJ!j<|GzmYuoH%ACfbnn& zSnXi(Q#6tlDzZddhp%m~IWF~{m}aGZ3<#j`e!euzYRkxlQ8>hO)%1-ApYhtL6rO~N zcK`9I%`sFoyLjUX8}d6?4+9^$Y+ac-V)w3X1$$%6!Ivui_jaB0F-5=6xk+c5rua>#iAc<{|h&^?2=kmZBmu zB7Alx;-t}%W#Pl?S?HYGJN<1*#*%NmUPGqmavcU4l>H4|p@imdFA$lsonhJ#(tW9- zC%|&000j_;j}C^-;S)|*I7kmSG8)P~(Ul>Y?Ojo-zJ|~i`*P#zRg;XV~8G(|(awaKC%m?o6)J}S->91`b&0i`@l_zpM{ zc?bkt>@jR*R_iG6zQu*ZYB2XEa5fAjRQ{m@=s{HlV`4$lw?t40Qy-811mQ^UBUMx zkon0f2lVC{ay?a^qwaF`9Wl*{0vLCx_a2GYQ&XEf;R^cej6bDcw_)C2zz5e`q8~kI z)OK~kUL6()9!ekyl|lxQ9YL@osRIn;^ASW%xX#^C-&Wsgrn(>1U*5bSKG;p^o{R zl5WJ=iW~$?vyxMR2aGxU1;p4mc{&ll#y5)palD<+kw|C+ngiK*w(1`WzVO7|co#YV z3!2dGUIFF6H*{}x9(Kk{Tb=W+pnKYxsd0^MG2eXeO*zDFK;|98P=ND?$~Kl%o6PJOI=;*1ukFb9scxN zegVGt9?>XkEAsr0_S5hqI^UDNtm_NyIhyHLV0c4Jk0_)Qwl=WreBwO5 z(_2t~df)!frO&k~^g0h>+^H#y>_pTc%`ycb&HN>qEBXCv(5vYn2)cOGGg=%Z`;GJK z%IoDUrk1PcYep)KOnkfFs^0$WDBfAt1;ZuuxQJ;^YcV0G26Xc*2N?E;1JG6g<+C!i z^6tfg)CK;|kO_Nc($V6xHz9p5R+a`)EBgMdb(RC|17k}n@+9#h>u$MBfC2vO1ctBm znm4{;luob8@CqE%?*7&(Dsgl6SFvuq%2|TbZ{4mVK_$QoN&%S-gk-1sf{oJin1*Xv zppu7OY1a6rkFTF;l+>p9WXSpVXMD?6)1jE(l^F)4=7~Z|_>%68{)Tb+8E-k0>fy$k zHQsTk?mdPbbs;ujF1S{V_mRHA2YE5?qaWM1Z{9`_+Oo4fE9$PR6h3j=Fzm>(6L2QS zksKH+L~VnmH3#WQ=m=z4jB`x6s0r{oos!jiHXZ@Sm*nh@HEgV}NeM_q+YU zG*k^07{!2YPknwUz8zy=uHv|v0{zr54?VaVrK4;L6b*?dTj7{(c7INiVi?eC z2jM$YVA7h3U_NkcA(Qi&Wg(PCu%igpO(DtZxV%zzk<@wxD&~1vq0zw>Io`t za{@=%ZBCG6Z4X0r;1R9#xW&BLmBflf)gB8F_CPTJhka)H%vGqkXW;@Z@4mMF{*GA& z76HvHhAa(LY6X=P`xiv(d`Gpz@Ny5NTWH_Uso64!X0IPO*TFDGs_#B}V;j;nx0IF_^OqAsDet#<%-W)$_*}9IS zx4W{c;a-0LnmZ-K`eZ>vaV1AG4izqwB--tB<~EyY**I>1`z;Q{u6W8m+jM6XbsZ4C zf66O~(Ern1Fb#17r*kZF?*5%}rgiz!h7ZaTt$S4>eRoarz^Fb#jO8gOFTKd zH@Wij`jISLS}&{_&zpqBpZ5r3p~VM(znRG4%v{AxCJui;pB^=YWms%Xin_XZ>U*=! z9_2TCvLmSoSd(HmTy>zMTI|<@hqb>IeY2&J_GYe#n12n@KBP7+V;CHacBu1ZdEDX7 z+i}4sb9`rr)KcG1&`f6Dhq)9)CL#HQd^)T(vgs`_eHhfN+{_Z#eb83syOO{K*5T`X zi@g0gj@2b4<|SKKE}cvQCf|hX)4PaS{073-2!|{tTTYm7GPYrt;l1jfe*?u#zs!-v zOI<#W*VyBNF(&*?XFDu0)t7z)x2mv(u8jFWj&KfP1$YyO5T*JrUXl1BkX?UJ4Y~D* z+tRf^k`mG>>691AWrht; zVr%Ns96>ZTZSR2HW!2;BH@)2}}c74Dr=OvVcVIS*pfa*YifN`pu z^1HSc^&srr2Ww!zJh8~?RcdYSec!NQ*D*@(A*dX&J?8dl+xGSIKag*x@{oIT1xI{S zpU)9QiWv%JFZQ0&q~#ZS4UVQ2OCzNW*NmiZ=NNI?F2ux{%iRUP<;Qau4zt6l%s-L4 zU1L?mFf+g6JC}sskU8dq_1qo=KF|e8A!Zgk-Xr2v!zwArHHqM9vbuBppw+VyP^($Y z7mGSisY04{_aiF6{C@HEus#(o00Vbyi!vNn9{N$CZr-8&-lcdOW?42%_oZ&Q5*~<{ zZ|qmm+Xs-L-?4E|A*b8tICvU!sc!?XG1~j4W#zCUmJ zDGo4mR6s$TVn6Jfh8UA}`zP{CRw7WfJ*vQhO*A*FdC{iXX{rWxjZ{V6CuRijg#OG1 z-+={aSz!xh^!m@;1kb0|r2v@}FaA40Ie%`&>G?^rw{Um~A3C)V{`Jg4s0o;KUg}bz zDVgTV35Ks(I-x4%bP#CtVDoxEpGEa0~Bf^6kSz33zVHa zlGw_uUTR+vq3$fBi_wmE|-1;xog$EnXL>IZc02UQ-DKSGT+f<(&Ub<{T z&5bf)Qunknl2A*AVPM|*q+HAH-u#=j$oJ@VlNVraWYkD+Cc#8XQ5~_QmkYATn?)Bq zqv*rQbzqxmYf>uhVElAlR-0AedCs5C)WhdINhec^RgG6d_mO6vE~76WnTQzg7N9Bm z)0-&|($ynC`VZq!$OIV%aJ2k3M=9t5@bBZc{N_z9jkLBs^p*dmRjw&JpAKh~Ll4IU zI)n?!sN`cQ3^?r5Q{1~Ff3DjGE?x2$-XOkz3rXhly76pG`|;*?)k}c`xuG}|JusD1 zwtld1)lcC*-tu_rCkIX^#xc6z1GVwYAVzk^Gk?ohv;R=?%lh8>*ulVB@)-zVi~*Fe z&jVL!WRhU0C)q5VGkp88IM(58qZ9UTQbIM2bgAK${9% zSUop>S}`22!b-_cFfTI+oK>W)S!={Hkk9*)y2T>E+PPO2n*9?6AFxxTt>xf0awqGyM1co~u{#QnhxaY1)pCAdsTy+CULJT-103fLcy|4156 z@X&q%p76gM;Nd!mdSPN3yxbdHxSqb!7DyVSZ9UjF-JYq1l>$4m=v&FG(tf3f3| z<82_qKaT+(8s4wJ73hw}$&bc~I-yFp6~>9yjQ+X!rve-z?E6XC{fkc4^AWfE5THGp z)qJ8(;2YqjZ7ag9aBsOn^_sVgy}!&h<=u>z$t3wSd6cd{dl29mj$Lp#SHK6}sAOd<=Q-hUa*d%P@-KyrlBJTZj zH_8=$WC|2TY?J=mqQ78A7C_Mt+qD0#C^4M!f1A5@OO4a#O!|cvtT2vMr<46y(c)^t zh4d7Wx);^Oxx?*AY`uMH;({%IreB$U3gvi=vl@kz3{2#ieYL+)-qPPTNxPtN=FZ6i zF%Qtl%)X_(CH*!cWvxE5H+%{8aVCenxL>#aW}YVP$B6}cBLq43dfkSP{{=|h75FD7 z>Yr{5w>-!yKAuSL$8fB0TQ$WfSv199o2&02m_9!)V};~iHRbL_eHd&gVrc^HM5$K` z0&hEegQgy(oDqOX;k(VL2+`nd!K^})QI=Dw6mlFRb)FFn?j98IqTawZ?Uz z_?oZx6gNK-^mwh;3sOb&H^T6=E{Et6UK|q^5rlR%{ zp@f_;01A~b*X33F;g5Q5lw#cq?b6{JH_A{9zxBuPhZHfzi!g(3Cbk6F)BCIqB_%Od z-kpm4wVOoXL=y*-I3T|bYht=KimC*Ke6Y?l4YX3ibrf}fC#k^nYZa|fh)-laq8)?` zq~}u}0qHtU^i+twylwo+L!`(`J_VK@BjKaFw7>M@>`G{!g2fHHWjn_DuTG}Wns`J$ zdXL)S8&^f-{$xH1^lr?wzicYO6Ea#DEC) z&LeA%Fy7IGT$RP)3s_wGpYgCW@_brEYhr@yc`QbO*8p}b??-=4R)J&@)6!1P{Ybg< z_JlhDwyi#gPOybk-+5zWeZZ?uAZ7r_G;*7B0XE3&CT`Wnx@rU*Uxq61_n_FT$L}6KmIjlsg5t?enOlp%Y#~9uipF zY?}R{b@|(W!*1->$mUi{7P38^Ff+5E22)_? z?pkl>-!OTQU^yppD`XlFQZKSJ4W&=wB(ARbm?%do3+O0o*_}2e%$j(A8_I>&qUlB_ zFhV5348*|UkzRLc`)VL`5PQV$YUAR(JbWytRT>X;>MzvoxWS#!rr4QsMRVi9EY!8M^PUny6V8r& zxs-ngganlL)yU@6qm2EvF8x^0Sb^0x5zlhGsHULIA(Fc8!$fu@1p(c$`li%%wun;xgpJ*Xv9XN|(JfBe{TiGDFv$+<%pnYn ze9Dh8A0vhiY^uAsnXhK(yL{S~Lj-UjWi0Q^e^GZ0CcK%`tyS-+MrqpW_u`qU%>UT~ z@f~~3P2F~cL%0h%g5)usfcBWQ;Qj{?sohQYqQL6}S2heaO#EAv)@-1G4L~kZ&o2Xo zwqbQBK4Jh9ywi=QzC@EQX6u391m0qR-!HVEPD*|>my?P?Y(V7%yw9kgVN+C~gap(R zBt>ZWf&F@QNLHbq9-n3C;i;g!X^2u7>NcN6Qn-L|cX~12A{C7pFS(!j9WnT5cYD2r zY!o(QgjE0*>bzCOZV|cCC$~fV!owZH5-T95xHW3Qd5CH72024vgcmS;AsJ2x1CW~E zW4=cWL1e1C7?@9%%F>PqCWy+0k!i7LszYj3{L!~E&u*~;{@YaKX}7W6ShgTj=*)(m zxYY+fK?gJrY1aok^`%iSQO=P8He{imHM~TO( z?C+c>5;Gwc^WPAeTd^3=xZr&|W1qjIehTL2$bu0LL0QChxjS;Qj`ePS!}&_2jZ;+T ztjYzSd>$r7>x2a#3Dg>}f7rSW$WDkpJx}2UBVf!hfC)5Zc9!t!vy%VQ{>c8NowiW| zE0>PlY)Ny0s_wv8WSTfRfhXb0cjc-0UQ=Kj06>)bB0?z5Fc7Q^oUt4oEbOq_Bmd)Nc&U@MDU%> z!q>MQK~wjcX4ycIKbBM;UQ+aq-x?%w_HJK10faVh7W(9w(t>%8ho!KdTcgOsYEdd5 zg%3d12*M>h68L1mPUzEyC(j8$f>F|>=|)N+C9)7KH1&7DMK6NEIlzuI3kLHOMZ_8N zDx>$$&M>y}-)T~xvALP4nfM#sJR_>Vko&0{{oy@x$yqo#m%1lW953M`H7$GTH5;N*XeNZEVgUQw$K8t#c8a&;5#jHN2nU8I>lL+HqsP2YjAX z#wb;)guE-@MY4G){&vXTb(i~baveU7E`oJ3` zmFvri1*aQgz6`M!4FFttCl*}S`f9YS)Ub(J4py#n*RQ83Rkq{d!o7>jRkwNIB(JfT z^OI$yo$sT`=Q>_)jQ1@wrIFO(-3X)avsSrc2WA(xJ)YdZa4#GX-r&xoiMW%OwZE4d z{&0k#Ev~TH|7-=I5{PL(%lgYYd1R_LZq6;%mU8=!gB*^BDqu&GP-2el-btD?24cTAg!i?(5ugX~Bp?d_ znBH{(`_6;kJ^|@4AP2eErY3YD25E>qyq39ff!#MT&0$o5RRnO3qK`c)BSQXauKzax z$IyxGHU~g<$ihR3e(lfI-mvU8vfp$x2+odTldbeVgRm~IeIJ?9H}8wI`y$QCifl&x zI!oprltG!0=nFQ8zFq|?P~3DNl7QtzC}G3g(}29qar&NVDhnidOXx%z<#>)qsrcF$_>qnY;2(UETlEPg7=aY@(|c+ZWD!I0*Nj? zARWys)wDu*>bK7(;6w4}v`SY!9$*hhK~ef{>m))8_UK8D<)t#fN#CdD_zjGU_&w*l{tQVk8J!w z@A8?&p9L)_)wB$d$1gDi{77Rt^;KXM2jH{S!1_5a&o?s<+&aHyUBh$wrA%qS5$Jo3 zGn~UKy-X0~%Ha1An<&^NMRT?^>qFKil-xxvKs0*ze7m@sFB!Mc?TwM<^y;@FlA zNWV!(iEhWj<*Ld&E;+;)Mu;Jp7^?A~kQT>5`P8iwH`dZDpQTOxx#ug6;kVKo35;7Q zWWn%B=yLwN0lUDjX{adxNHny1pw|~yKoX_h*;j`(phK@eoW`cu=+(fKqwbZp?c)4= zYk^k&)f?AFF~!SPN*y|?Y{@L z>RP9LFmw}*%$S+@D<7t}y?D0l=kwI{3JU=G&$0zM>cw0M@84}kq-%ALDYYMPH{2Rj zVAO#975&r(am-~z_Fk#l=fBR|o%R%OC4aK5Js%TBXi-Z34%aS(Zp_ZFE+nIRZz!4y z4c@GOQaFOQ-ixaWryc>68@0Wn#=HQ(2T~4xam&DHUG6_g}u7rXG8cgK&yLN`Z?|ud zjG{vhmy)L%)6-dD!caP%N>Q4?Rb>Lpm-ex*bg0vx`)RPJ90yoYDDo5qU{1H$w3z(U zeX^S`jg+J8lezVw24%p9g6?m`zMk8#_yIkENryaG&u9%_=_v&v8m~lzAV>#`N`_J? z27yz~xn7O4-@&st3K)pOdu9u$06?tDS%8tgyIQBDRK~&}a5lx)aL)-z;WdxT2$5d@ zL~-?fq_@y-L3OEqs68 zR-b5?_1^s)FU04xQ{K~}nK%%RjM)U44I4I-ZW$-0%exGF zJ{Gd!s%JsfSsLJu16~&!AH3Gy^S`u<+?7B#{ul1zNXx3;2HaH_=o?%AFWlubgcbHY z%ErwsD;{-gbEG_!Ki*F&K3J{xl4p((-l_a1UgY9Uda1>_IN?CT{asIVXD@}t)W=xv zrXrQ~Y)*-tO79S-TTuP0Pc^b{^~)0<=|6OqPd^CpUtWBO@{uh=g%RTirN6=J7&Wt%QBsdBz@;oq~q%VgrqP@}t~Gnauo;E$ZQ)!Hm3w zSyQ|z|*0YYE+vkRUKQ z!-6(*bJ9|n;xT#G(F3U~C%G_YGp(sQoY3?Sx7 zwT|?JBp1mxBT3dqXwbg37G^P&BodceELS)jFKv1=qaZxEW2!Vg#Vkadit#Q`L8v%M zj&Lx70PyJhN|rjI8kHVLJi7lp^J;#l%I4B|2WRJ&lG4aGNlvxQtUpoWz#7l&Jz-te$^Tid!N-2O0}q_&zQzp@WYTp# zcRBuKY2+Z-w+ielRkKcM8{t9ZU$f}hp&+zw&BWld%$QVC@mn@pzg z`ay;IeT4YAa>?6^5+(B!bbkSMeE6a3vUk07H!U1@Uf-2lw_)FiHp4_oUt(eRD7#Tb zz3SOZU7=urM$8BhC%r=5r!@7xyX7JlgJGq-BY&C%>r8Cv=dx|TN>O+x-(D|jImrpL z)jJs^Ip`xO0zqK-d(W;Bb*uAAEwh)se$=+WU+1tUE84hBFTS_#_}uiU94XZo9M&~@ zD7$QW&fbD^#S4?oy&S7Y#_`B&j3v%*+F?V^YC`u5U zWdx@;SjnKU-Gc^*%W?iChxRMU=~g>7pcay>!8hob7BUkiDA^Oey=dgMum9qUkh?(7 zOp*s~j|Kp_N?PU}0dj?VqNK+yF4lkowB(cy7QY{hXPtn>Pbv#nI$WHac-oDe1 zYS((-%}7VNi?>tOm?jt6ntJ5RE37PDhhZ<=rY!co6Ujq?ja>(rEq<s4k)LO7(M|89 z^1>-QYR7gcat9QEMm|o2lMV!+1>ZKla#haa=3Wc+fs7!l3b;V@4rtvDr~!>Mz6cj+ zKnuQYtQJ_>Jo+2T-#$p8W389TTwfv*cL?wo{0%Z)7-UAd!z=BXvVUt(%O~w?1LUJ| zI*0l%BRLdj;9x@kRR{Y9V_$PkV3nkQ71=J+vziQF)WT>s#k2zsCLCLJuvHlQl8XbV z;6~}#iojZWR$(jL0bYAvu^A^1!KPq=Yw<`JfvGM0<3Dt&!QljOq^zfx%)XG@KB~&D zeSqAmwnKsbt&}+fMYtpp^G)0R2k=Rnho>JXUgWfa4}ZT*>0Vj)sjf zkk&=niJ3$RGqr%Qy+UfwYyy37$p1$l+-6}5OV3Tn8}%R~sy!SM5lggYFaRilwx0oQ se;*IpwjNqNFAh`x|M?t%iG^`KOO0(vQz00N(BFX%%GSlE+}bDpKh>jd6951J diff --git a/test/operator-clear-ref.png b/test/operator-clear-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..538024a268a71f7939b58342b6dc957aa2164c5b GIT binary patch literal 4992 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 + * Owen Taylor + */ + +#include +#include "cairo-test.h" +#include + +#define WIDTH 64 +#define HEIGHT 64 +#define PAD 10 + +const char png_filename[] = "romedalen.png"; + +static void +set_solid_pattern (cairo_t *cr, int x, int y) +{ + cairo_set_source_rgb (cr, 1.0, 0, 0.0); +} + +static void +set_gradient_pattern (cairo_t *cr, int x, int y) +{ + cairo_pattern_t *pattern; + + pattern = cairo_pattern_create_linear (x, y, x + WIDTH, y + HEIGHT); + cairo_pattern_add_color_stop_rgba (pattern, 0.2, 1, 0, 0, 1); + cairo_pattern_add_color_stop_rgba (pattern, 0.8, 1, 0, 0, 0.0); + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); +} + +static void +draw_mask (cairo_t *cr, int x, int y) +{ + cairo_surface_t *mask_surface; + cairo_t *cr2; + + double width = (int)(0.9 * WIDTH); + double height = (int)(0.9 * HEIGHT); + x += 0.05 * WIDTH; + y += 0.05 * HEIGHT; + + mask_surface = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask_surface); + + cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ + + cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); + cairo_fill (cr2); + + cairo_destroy (cr2); + + cairo_mask_surface (cr, mask_surface, x, y); + + cairo_surface_destroy (mask_surface); +} + +static void +draw_glyphs (cairo_t *cr, int x, int y) +{ + cairo_text_extents_t extents; + + cairo_set_font_size (cr, 0.8 * HEIGHT); + + cairo_text_extents (cr, "FG", &extents); + cairo_move_to (cr, + x + (WIDTH - extents.width) / 2 - extents.x_bearing, + y + (HEIGHT - extents.height) / 2 - extents.y_bearing); + cairo_show_text (cr, "FG"); +} + +static void +draw_polygon (cairo_t *cr, int x, int y) +{ + double width = (int)(0.9 * WIDTH); + double height = (int)(0.9 * HEIGHT); + x += 0.05 * WIDTH; + y += 0.05 * HEIGHT; + + cairo_new_path (cr); + cairo_move_to (cr, x, y); + cairo_line_to (cr, x, y + height); + cairo_line_to (cr, x + width / 2, y + 3 * height / 4); + cairo_line_to (cr, x + width, y + height); + cairo_line_to (cr, x + width, y); + cairo_line_to (cr, x + width / 2, y + height / 4); + cairo_close_path (cr); + cairo_fill (cr); +} + +static void +draw_rects (cairo_t *cr, int x, int y) +{ + double block_width = (int)(0.33 * WIDTH + 0.5); + double block_height = (int)(0.33 * HEIGHT + 0.5); + int i, j; + + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + if ((i + j) % 2 == 0) + cairo_rectangle (cr, + x + block_width * i, y + block_height * j, + block_width, block_height); + + cairo_fill (cr); +} + +static void (*pattern_funcs[])(cairo_t *cr, int x, int y) = { + set_solid_pattern, + set_gradient_pattern, +}; + +static void (*draw_funcs[])(cairo_t *cr, int x, int y) = { + draw_mask, + draw_glyphs, + draw_polygon, + draw_rects +}; + +#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) +#define IMAGE_WIDTH (ARRAY_SIZE (pattern_funcs) * (WIDTH + PAD) + PAD) +#define IMAGE_HEIGHT (ARRAY_SIZE (draw_funcs) * (HEIGHT + PAD) + PAD) + +static cairo_test_t test = { + "operator-clear", + "Test of CAIRO_OPERATOR_CLEAR", + IMAGE_WIDTH, IMAGE_HEIGHT +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + int i, j, x, y; + cairo_font_options_t *font_options; + cairo_pattern_t *pattern; + + cairo_select_font_face (cr, "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + + font_options = cairo_font_options_create (); + + cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); + + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + + for (j = 0; j < ARRAY_SIZE (draw_funcs); j++) { + for (i = 0; i < ARRAY_SIZE (pattern_funcs); i++) { + x = i * (WIDTH + PAD) + PAD; + y = j * (HEIGHT + PAD) + PAD; + + cairo_save (cr); + + pattern = cairo_pattern_create_linear (x + WIDTH, y, + x, y + HEIGHT); + cairo_pattern_add_color_stop_rgba (pattern, 0.2, + 0.0, 0.0, 1.0, 1.0); /* Solid blue */ + cairo_pattern_add_color_stop_rgba (pattern, 0.8, + 0.0, 0.0, 1.0, 0.0); /* Transparent blue */ + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); + + cairo_rectangle (cr, x, y, WIDTH, HEIGHT); + cairo_fill_preserve (cr); + cairo_clip (cr); + + cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); + pattern_funcs[i] (cr, x, y); + draw_funcs[j] (cr, x, y); + if (cairo_status (cr)) + cairo_test_log ("%d %d HERE!\n", i, j); + + cairo_restore (cr); + } + } + + if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) + cairo_test_log ("%d %d .HERE!\n", i, j); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test, draw); +} diff --git a/test/operator-source-ref.png b/test/operator-source-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..77b6abab8a62ced2c59031a5c2aae5db54d54e3b GIT binary patch literal 19957 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

L`l8b-r48AU{knvt zcY3Gd$aO1;l?dEhqjfW14=&t|?1>0$Q)EcBT?^Qy@v(|9a2?b=@qOk^U=Q z8wQK0FffKvUla#Nv3$~dFr2qNCzvX*J~`&;{=lTx7T9iK@VGJGG2&xq#2 z(0)ACKI7S*`w!NW!PKAad%v#;4!HO`W8|0RC31hN0Nk;cMqxjp{?mj$a@*2K{jOzQavuV8F4$jwI1+9cQ$xI@M zzKvJsFu+g4-Ysg~n(Kx|Fdv+NKAD*)E=!AAyxr^(M-`B|W-P41zyHiT-PcY4V17wB z8_GU{w1Sykky?>&ByaP%+-Pyb#eBF6rkF7fERgoD%MnKCX)d{ z)zuO_M-h878xg4cq0DlK$T!2b-3fsllM?3q|McNC43levo6AqPXeDJpVD{Y@quupSW9Rl$v*Mkb?)}vNng;+$1;5fHRY|1%7b+xl5fr+oZvuPA0 z@EX&s_5C9rd;rVY8BTT+Q#nIFul1WUD|O45rkn2T`YA7=`q*IPH|T^&zpa24B&` z+J1^@3b$rprgdLl2{?0*+0M;10|^FvL2Vj)A0>zTHc-!=hw(%Tv1K<+O)DyG5bzi>T z%BK>+5j;U@K^J%PoxH#H-WTdHQD%}e8AqoYgRim@Y!}z5R~Fsfyp)>xc3GC6`+h?> z*QuQgG>*c&cFCrc@SJ6&Xc00H5Qt)l9NfiYZucyB0n%XQrgg6VB}f7h15( zU!@hpU0?l9#}{uOIQpZ^Yx|U>4Y2seL1Nwy+|SlMH1cokx%#^TbcIkZpE@@#01o zS98^|a2>Ial9X?pEl8783Ry0z!HS90_8#Mo>t9+ORt8@w-X6S(qz{yr7ZZ2M)7)o_ zxtS?*k}zFqi`i|d1jvz}B`N)y0Jx2OG#0UBRjbL^cat53)njIU3E^- zx`P`l@t4$~SO=Lq(iAq(r+{Ki?GhXhdoS+eL8{$}WMO_Q-APSx)!wrck4q9qadtH_ zy(Wm#j!k=O)+0BWK38xaq7dtKbqvysv4@p8VL^>xC_FpJ3AET0DQhvx*5$%~UZ3`h z+F8>k9#|7aptzGul51`IP3D|DQ_gNQiGpLPR;5ieZn2j_h}ZlecxA?#(z;h!o5&c=n$U- zJP?csW{#cegCJs0zUo*bf`DURw2WX2`rW=br@u$2in+=t=FS11%(k<7+PW1f&z4;< zMEJa!%=3DJ)CzZkV5%85m%9{y5(u5fQSJa7RO_x;%j(Q!D|bL|top>)mCbJao9{M=$QP2@#guK8~dgkp?s_uBTsR^wBA)6o5*ea^zr(~FfPFTsq{=`n$}5Ahe}@b;{_ z34HaX9Z1n%*t28-D)v;7>^DmH6-D7h%mwxNw4Els-QB0gF%beIOF<5*eZy{L60a9| zeoe6xI*#>O?S>vGh7*yb1tVc{B%}W8^+W8|2@{d84u~jyLbJ57>G5$ zNMtFynvQ{(Tpf=|*=|ukz)X{HUGBGHR+}t3`1(AU;yH*yXwr_)Bh+iWX@PRdMaNxe zip-11nkIF|X6$&fQ=r!L9USfe;zoVhrqXq?src8mFT@Wq+~80H(D8#f;l%*wi@hw zYj-|7XG?S6T zZSdT+VBprf(tdc&wmnrW&hojaK|g?Qx&AI{ODT_&>sXm>a8W#>`m2k<@Ra#97AK#5 zMu0D}leLJzIe!R8*_BS~vKMXHagjit!j#`@P{i~^^IBs-wO;$1tO5qmMEH5VJUi$$ z#`88-nW=5&!-?fszY6j=)_&9*5Yft8(ORYFS0Ie^@ZNhGIQo}rO=Px^j)oNea*c%d zsVe*g-01_j)C8M6-Sbn5s$1>R`KmNCJsTGW;&%~{FM}C<=i0jyPjQO?pDS-$h>OuJ z=WB^dZ0Qlb`hp^JADtloOAf?})JMnEB$vV#obLX;_v9xXLBa=dGX(Thu#h7KQ}`Nq6Yo*kY6xM+%Ksar$pS%E8_Jr(tZz#@m_y32C)KNRUY>u#|e< z{HKJpqgN#j5Yo#1`QHSKsO@VLUoo<=_z@sR#xO(n z-#&e213BQB#9Awr{7(hv1oVKwyBV$j3dDl{|AxfkeoOWFu+D^rFL|wPaGWi={Q2(u zUc|yH{VM0!VKP2R28fq%t&a8m^jA^%pLmU88*RNw6u2;jTKKDa+!e=M2r{U-*KHymW<6@1?lCcfetz@ExEeX5NzVDRO=5 zHk`<8EO#9u*Wv4t#PzrFB-a4pdBW}bo%=)h`i1?P@DGV-3!SfQAc(Y3W=5r6brAx~>a{lz5>uN0Bu=eUThLjTPjtH@ShAALI z_?=k}R@^~81tJTaX;XvITXk}nWgV`de{XUQKr0$8K6vUrwW+q$KoJibuw6nq_~Qb~ z;9)y+yVidsQLs3~LXwg;sK$e9Y}R&DBj(1hp8$Gt0Dpp|q2GP@K>^+PV4JzdInJ&s zUMQFagF{Rf82Kv8zNW~O+Mg$x(HkqxD5fM*5~PFDU-b}Q`m#SpFoQG*41RoJW$l^( zYNd0SK`es0u6|#&Ql$7CCGK}Wab&?zB@6(V+d_)$WW!Hro9)UNaKoTaw-BnQnoALB z-+N*aQR)#d?GM6p41#7ZgKJsM2+c6X;p2H4Aqy1$dI1CzHueWoXHU7zwwW4Z>VMs) z83j(q-wz0d#!r(V{H9(3hn%-~QAynR4v~5xbGQA6B>vnx*RYWRyv_^)pviluM}pGd z=ky|NK=HZ*_ttM1LD`kC3B>-W?S&l26@tS*5ELr~+n-Q$wL<=q7iqWj?K{2x>040e z=vjkhP4r|EV*n<0FeZIdFfP+2y~BX43k+a!2Oby;w>;*A7)JhL<1E+HDK2Si>y3W`T7gO@6o@|*Nz<;no8szvH&XsVTC5-)) zEa7kF^7|PB1KyN@L5$qJC8XTMf;9T1*is17y&uHoJ zgZ5v4@T{sCYcy74$N=ylXE5{VQ#`l}PV}2XxNyd)(w?LB)+y=izQ%4|s?A^2AP>Qa zGG<~f`&;$&7GszQIo$OE@*=k{n}sPwP~I)e)dj=aC_0XV0r`wMAXN!dY?peG2T~7#`N@Z;#e@xWR?j{QbUBfv$Xb%HB+k#i+d&8aeNc z(UzRmq0FvE$v(494>|hFPL-+~Jp`ahEc6*y^8M`-lGSHM#L+J}8`6Fss>L^br5GS;nNd+V~{+ zqo(2z7ryStub$(&$HD59-zT&Y((G!yk74qPnxo(7^}6XXQE4u8T8Hm5j2p++({153 z5{y-~zZf(?oPIkPa6Z?04>Y7bRJ_~H68gClOzkl6hww_zos^nLYlaAa|2#*a8?Fu* zYGb-C?NM|4sj2%>(gRN5aNoJbU{3FgT>%U?WmVAGnp{f9_h1^8h%IO@GgLYX>!neh zJ=Nz57s8@H8cwV$x$oe{CeZe(cuUH?&uakF>M)ldS5_R1?qj+X#`@U*XCjSI0kEO? zq=~&d^!sYqb%D&WL-t&|HFo~f{U0m^b}r;!aJWIVzx7^(`nG`_8Q)t|=#O@%555FG zgTc&66Xy3l-a00LRMt#>`Zmk>}x{{Vh?K>+4aTrU$pHd2glS`|qzgyXYH;o@i@UECz%t%1u>; zOi3xrxN&FpI_`sK(@1tZjijOrOKZ|lr`Hd)z=qg5(izSBNO$ck^8TrxA z(hzO%Sa#@;(n`1I0QqgkP&Cf78BU8|Wuqkc$?`)8GMp}Vi6+&>{<-=lhm zo2$X(U+OOAg#3^@Fd|owT9S(#+I|96yA4#u6~%m9!2PZHuZpz1&la1K43UA_DMUmMi+`{s zz*oclD6yXW2F{FrS2>AVfgctmSX`eAstI~y=G21;BdJfVB1BpAwPv#r*7(>3I2#G_ z#Q}cSA3QNwV;9PbLlAolf_&0`nKXfX(%oVfwFDRgVZku4Be&f!^q*#tlr9<(OPK09 z*|+(goCyhc2d?Cc3fBGc7?o$gHP9&3!p;alu=qtbhnh{ZZpjWH46#rVD*X(rIWkrn zHTj_~q8$T+mWlUFUMD};q#m_!c58*YDI5n3G@92Y&2llO7?0xqs|aREw~ z2C`)4F@tx(UR8`OuEN;D)$v5WJ>?HUnp&lK+UF#zx>E^HV(eR8QOx_gL|q3Z8d_R- zOc5mZ>nyEo7Ja+$z?R3IHpS9{sr&I?Q|T$(03Sr7@xy_{<)!BN)zorY#z@Up-{tsd zh9s4neDcE}SU_1)9@9f9ayn=BM_`ch=f7eA)OZVosuJ%M|2ob-)l=k}?fQvGnE^zB3qC zm6vd|b3@s5g~wL>Be$qYh2hk8X5U{a_x&334Dbk($=O5ZG%I zNUBRxmN8j54)v&>b7^+?#$4-G^@kPhV0zJoY43owtMJXzm!?kQdY>+YlVuPAi1@-{ z)aOY*zLjO99FVhAANG16LH}gUs{1o@bM;A9M^%;p19T`jfPh?ENBO7fmUD<#5Z_nf{;Q3a=THTBX;NP#_=vw({gAP76>*)6X_jyf1|WrDhjg zqqhdYK&tEKZ~l2%t=dgkJ4P+0VQ7^iA69u%zA>MebW(ls6pUf7q&Dz||0me-pQf@Bqbg;2J#+tlZNim$Zhf-_p!0 zqq`>Q3{GPLn0CPD<1h*%m;-GykrWvPSVun$1TQ!=KhvzE4-3)~!0I%y)oHWMK31l@ z_Y&Qd4Ec4?oMzs*HatYTSkX`wSId-dH_fI@np=nQS6of}VYcT=-yW{*sM`qCm6CD~ zvvr7RVp#Z3tOS@3R*ax|SgzWaUWXyzj0xccUQnVa_K$rNaFN?k? z&>HJ3AI>RD<^L(o` z2xtHm7eo{T!4?->ItwCQK!XAg77!4SqGTiQ27JCB@13(hl5_IiJNM4qJ2T(RWM+_1 zrAN9TkEzV>c@T$TI~k+3j%Ewoywdx%m+*2bZZV-yrX`v4Bnt5JpS2U^Wd`5Wd0U(O z#7`FV*C6ZY{jfHHiG7b{Ccr%p`&WrK*e{t%D{mBpH8H%evAY(cTcS8#rixM5O-aM zU${vDX(YRw&vwAzE@&*ih@nwrKv~O6*#W!M@sYvDN)G4zaZ69%aG&U-4~O zUopWVJVUPOR-J@wBY_BPN@C#HAhPwdjWg{vl9T}1Dd!lS{jR^JB{&|i4&yVquJg*@ z7jcYKLRS+;8A?Dbj7-H|c8Pnl|4l%<{Y7fCBZxJ=D5-X1vi{zcd-v7Eq(jyYhp*6S z%c8k06N!!{7lK1hosUKBB8PP<`Xn}FIRp8Q&(Oa}g-F{$+(RQnArbPUrluq;dQaDg=JB;2bJhn%%Q2o_ zAD0zV35@`?P;OshoLz#RQwoDL7ZvOxDm?OS`Sx2Ky%Q$&-s-NZXM82P1y@+EAm^w9 z%+Jd*1-MiK=2j6SoToXMBsO}a4ANlnmxEyWyy~Hb(UIRXQ;mfi=MYt-d`2c#c1K$_ z?$vgOI~Llzhufn3laI|vptQ{3OT(IIN$VF5$1=c1ldz1`Rn+bw#C5V*B^ei!e#IrS zS5}F%Fz?l5u`7iXNmJuUzf~?SY58iQEsMujA!T=bK8;~v_fmx1x-X&#DNEA3}2gJGr0EXxz%E$1_|!H)40ua)j~+{ zWUokng`8KpE19MSO|8-}Mdk?O@v*~gBlRQoJCNvI_@T$)njRE*`z_6v{yGCnWE+#l zYHEESeHfOpdhebow*_<%h#X$f(Yi=IYe6x#y$LYvK4ZVfP5zAkm3)ibYlj-ech6%qUOdP}S9P zyxfPGQVR8Cz^+^N-V7eMeyBRf#Yv70Y*HB1SGTB~xLI9CpGT-1G!+qN=FgIs z$dD&7zceAFIQGATa)a1up#`LGquIl#dHz7R6gjQ3uqoZd>#8#_zFlYE>{KGPPPT48 zvwS_%0LA_g1)eg!hzgv5!pws5SFR4N@?^@>p1HMZQY8A+bCx0Z^;XX3^{9Yq5vAi%f*xH9PT0h;pccL9++B9qN<)zh&| zAz<2DW*&KKi5RF**-@Z0z}S)_$h1aj3GCW{qL?(-o&+a z{`nw|=j5bs4^+0Uex3yg&|ct+x{np`;bgvP~P_G+v`)${A>iJdy%Rg;&z6&>*^EVNIS2uQdb3& z4qFC=_}>wckv+FxTUuqS6zgG8$C28SUh6l?&GM?PR4a<$ikTJ{AG1DHSE)5Coys8Y{5*8k_RTfPLQ-(QYiy|-A>DMb1V+- z5|&^lpC-N;s;*&Y#(zJk{~W8A&^-3Qsohk^DE1omH}TD@?CP=CGH>T=uy$|XGr49; zk6vsaj&6>uz-xVqWRFZgupB<^5r&?XK(YM}5t(S~Yh831r0*q-F64xs0mZgJ%+hjx zB$dVxca7SobE!=?InTf{Cx1WIH}Z%-(33V+4z4K#4-l13$*pZ4K!vF<&5AmeY`fSP zJN-@$Xa~opE5(-^Ns_)dQ9)Rr#{ibwymx)pJ&-jwI;!;8o)#;~0kkHD*0czPvVmptNaqx)>*Zu^vMN855F>cn2QQeAUS%$O% zAsKex^?j$H(%YveJ|3^CK>i|r2P0B@JFR97?zduuyN~TexCp5XJ1JgDT~htW4ro7K e`wiObJ8l#~JF0?@6oRg8TWl=tagWS>lKu_RgD+_S literal 0 HcmV?d00001 diff --git a/test/operator-source.c b/test/operator-source.c new file mode 100644 index 000000000..26b41f6ad --- /dev/null +++ b/test/operator-source.c @@ -0,0 +1,253 @@ +/* + * Copyright © 2005 Red Hat, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Red Hat, Inc. not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Red Hat, Inc. makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Authors: Kristian Høgsberg + * Owen Taylor + */ + +#include +#include "cairo-test.h" +#include + +#define WIDTH 64 +#define HEIGHT 64 +#define PAD 10 + +const char png_filename[] = "romedalen.png"; + +static void +set_solid_pattern (cairo_t *cr, int x, int y) +{ + cairo_set_source_rgb (cr, 1.0, 0, 0.0); +} + +static void +set_translucent_pattern (cairo_t *cr, int x, int y) +{ + cairo_set_source_rgba (cr, 1, 0, 0, 0.5); +} + +static void +set_gradient_pattern (cairo_t *cr, int x, int y) +{ + cairo_pattern_t *pattern; + + pattern = cairo_pattern_create_linear (x, y, x + WIDTH, y + HEIGHT); + cairo_pattern_add_color_stop_rgba (pattern, 0.2, 1, 0, 0, 1); + cairo_pattern_add_color_stop_rgba (pattern, 0.8, 1, 0, 0, 0.0); + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); +} + +static void +set_surface_pattern (cairo_t *cr, int x, int y) +{ + cairo_surface_t *source_surface; + cairo_t *cr2; + + double width = (int)(0.6 * WIDTH); + double height = (int)(0.6 * HEIGHT); + x += 0.2 * WIDTH; + y += 0.2 * HEIGHT; + + source_surface = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_COLOR_ALPHA, + width, height); + cr2 = cairo_create (source_surface); + + cairo_set_source_rgb (cr2, 1, 0, 0); /* red */ + cairo_paint (cr2); + + cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ + + cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.5 * height, 0, 2 * M_PI); + cairo_fill (cr2); + + cairo_destroy (cr2); + + cairo_set_source_surface (cr, source_surface, x, y); + + cairo_surface_destroy (source_surface); +} + +static void +draw_mask (cairo_t *cr, int x, int y) +{ + cairo_surface_t *mask_surface; + cairo_t *cr2; + + double width = (int)(0.9 * WIDTH); + double height = (int)(0.9 * HEIGHT); + x += 0.05 * WIDTH; + y += 0.05 * HEIGHT; + + mask_surface = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + cr2 = cairo_create (mask_surface); + + cairo_set_source_rgb (cr2, 1, 1, 1); /* white */ + + cairo_arc (cr2, 0.5 * width, 0.5 * height, 0.45 * height, 0, 2 * M_PI); + cairo_fill (cr2); + + cairo_destroy (cr2); + + cairo_mask_surface (cr, mask_surface, x, y); + + cairo_surface_destroy (mask_surface); +} + +static void +draw_glyphs (cairo_t *cr, int x, int y) +{ + cairo_text_extents_t extents; + + cairo_set_font_size (cr, 0.8 * HEIGHT); + + cairo_text_extents (cr, "FG", &extents); + cairo_move_to (cr, + x + (WIDTH - extents.width) / 2 - extents.x_bearing, + y + (HEIGHT - extents.height) / 2 - extents.y_bearing); + cairo_show_text (cr, "FG"); +} + +static void +draw_polygon (cairo_t *cr, int x, int y) +{ + double width = (int)(0.9 * WIDTH); + double height = (int)(0.9 * HEIGHT); + x += 0.05 * WIDTH; + y += 0.05 * HEIGHT; + + cairo_new_path (cr); + cairo_move_to (cr, x, y); + cairo_line_to (cr, x, y + height); + cairo_line_to (cr, x + width / 2, y + 3 * height / 4); + cairo_line_to (cr, x + width, y + height); + cairo_line_to (cr, x + width, y); + cairo_line_to (cr, x + width / 2, y + height / 4); + cairo_close_path (cr); + cairo_fill (cr); +} + +static void +draw_rects (cairo_t *cr, int x, int y) +{ + double block_width = (int)(0.33 * WIDTH + 0.5); + double block_height = (int)(0.33 * HEIGHT + 0.5); + int i, j; + + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + if ((i + j) % 2 == 0) + cairo_rectangle (cr, + x + block_width * i, y + block_height * j, + block_width, block_height); + + cairo_fill (cr); +} + +static void (*pattern_funcs[])(cairo_t *cr, int x, int y) = { + set_solid_pattern, + set_translucent_pattern, + set_gradient_pattern, + set_surface_pattern, +}; + +static void (*draw_funcs[])(cairo_t *cr, int x, int y) = { + draw_mask, + draw_glyphs, + draw_polygon, + draw_rects +}; + +#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) +#define IMAGE_WIDTH (ARRAY_SIZE (pattern_funcs) * (WIDTH + PAD) + PAD) +#define IMAGE_HEIGHT (ARRAY_SIZE (draw_funcs) * (HEIGHT + PAD) + PAD) + +static cairo_test_t test = { + "operator-source", + "Test of CAIRO_OPERATOR_SOURCE", + IMAGE_WIDTH, IMAGE_HEIGHT +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + int i, j, x, y; + cairo_font_options_t *font_options; + cairo_pattern_t *pattern; + + cairo_select_font_face (cr, "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + + font_options = cairo_font_options_create (); + + cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); + + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + + for (j = 0; j < ARRAY_SIZE (draw_funcs); j++) { + for (i = 0; i < ARRAY_SIZE (pattern_funcs); i++) { + x = i * (WIDTH + PAD) + PAD; + y = j * (HEIGHT + PAD) + PAD; + + cairo_save (cr); + + pattern = cairo_pattern_create_linear (x + WIDTH, y, + x, y + HEIGHT); + cairo_pattern_add_color_stop_rgba (pattern, 0.2, + 0.0, 0.0, 1.0, 1.0); /* Solid blue */ + cairo_pattern_add_color_stop_rgba (pattern, 0.8, + 0.0, 0.0, 1.0, 0.0); /* Transparent blue */ + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); + + cairo_rectangle (cr, x, y, WIDTH, HEIGHT); + cairo_fill_preserve (cr); + cairo_clip (cr); + + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + pattern_funcs[i] (cr, x, y); + draw_funcs[j] (cr, x, y); + if (cairo_status (cr)) + cairo_test_log ("%d %d HERE!\n", i, j); + + cairo_restore (cr); + } + } + + if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) + cairo_test_log ("%d %d .HERE!\n", i, j); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test, draw); +} diff --git a/test/unbounded-operator-ref.png b/test/unbounded-operator-ref.png index 7e3b3a07c008240dff4f260071dc8da508c263c8..b197c00cebe53a8348e4292b188898bc521819a4 100644 GIT binary patch literal 11937 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 YW)GZRK4k-5kt5Pl*LzTT-!Arl0g_3S-~a#s diff --git a/test/unbounded-operator.c b/test/unbounded-operator.c index 45535b976..a053ca3f7 100644 --- a/test/unbounded-operator.c +++ b/test/unbounded-operator.c @@ -124,8 +124,8 @@ static void (*draw_funcs[])(cairo_t *cr, int x, int y) = { }; static cairo_operator_t operators[] = { - CAIRO_OPERATOR_CLEAR, CAIRO_OPERATOR_SOURCE, CAIRO_OPERATOR_IN, - CAIRO_OPERATOR_OUT, CAIRO_OPERATOR_DEST_IN, CAIRO_OPERATOR_DEST_ATOP + CAIRO_OPERATOR_IN, CAIRO_OPERATOR_OUT, + CAIRO_OPERATOR_DEST_IN, CAIRO_OPERATOR_DEST_ATOP }; #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))