From 4769d5a6a8fd34a98effd84c1cfc5db37f3fb689 Mon Sep 17 00:00:00 2001 From: TheNumbat Date: Thu, 25 Jan 2024 13:27:09 -0500 Subject: [PATCH 1/2] squash for review --- backend/cmm_helpers.ml | 11 +- .../from_lambda/closure_conversion.ml | 65 +++++----- .../flambda2/from_lambda/lambda_to_flambda.ml | 74 +++++++----- .../lambda_to_flambda_primitives.ml | 94 +++++++++------ middle_end/flambda2/kinds/flambda_arity.ml | 2 +- middle_end/flambda2/kinds/flambda_kind.ml | 8 +- .../flambda2/term_basics/empty_array_kind.ml | 3 +- ocaml/asmcomp/cmm_helpers.ml | 23 ++-- ocaml/asmcomp/cmmgen.ml | 105 +++++++++------- ocaml/boot/ocamlc | Bin 3994232 -> 3995384 bytes ocaml/bytecomp/bytegen.ml | 47 ++++---- ocaml/lambda/lambda.ml | 112 ++++++++++------- ocaml/lambda/lambda.mli | 48 +++++--- ocaml/lambda/matching.ml | 8 +- ocaml/lambda/printlambda.ml | 114 +++++++++++------- ocaml/lambda/printlambda.mli | 2 +- ocaml/lambda/tmc.ml | 13 +- ocaml/lambda/transl_array_comprehension.ml | 8 +- ocaml/lambda/translcore.ml | 4 +- ocaml/lambda/translprim.ml | 84 +++++++------ ocaml/middle_end/clambda_primitives.ml | 61 ++++++---- ocaml/middle_end/clambda_primitives.mli | 43 ++++--- ocaml/middle_end/closure/closure.ml | 24 ++-- ocaml/middle_end/convert_primitives.ml | 26 ++-- ocaml/middle_end/flambda/closure_offsets.ml | 2 +- .../middle_end/flambda/flambda_to_clambda.ml | 2 +- .../middle_end/flambda/inline_and_simplify.ml | 2 +- .../middle_end/flambda/simple_value_approx.ml | 6 +- .../middle_end/flambda/simplify_primitives.ml | 21 ++-- ocaml/middle_end/internal_variable_names.ml | 52 ++++---- ocaml/middle_end/printclambda.ml | 6 +- ocaml/middle_end/printclambda_primitives.ml | 66 +++++++--- ocaml/middle_end/semantics_of_primitives.ml | 66 +++++----- .../comparison_table.heap.reference | 47 ++++++-- .../comparison_table.stack.reference | 33 ++--- .../module_coercion.compilers.flat.reference | 15 +-- ...odule_coercion.compilers.no-flat.reference | 21 ++-- ocaml/typing/primitive.ml | 43 ++++--- ocaml/typing/primitive.mli | 5 +- ocaml/typing/rec_check.ml | 2 +- ocaml/typing/typedecl.ml | 2 +- ocaml/typing/typeopt.ml | 14 ++- 42 files changed, 819 insertions(+), 565 deletions(-) diff --git a/backend/cmm_helpers.ml b/backend/cmm_helpers.ml index c2af0f82f98..a70e206abd7 100644 --- a/backend/cmm_helpers.ml +++ b/backend/cmm_helpers.ml @@ -1241,7 +1241,7 @@ module Extended_machtype = struct | Ptop -> Misc.fatal_error "No Extended_machtype for layout [Ptop]" | Pbottom -> Misc.fatal_error "No unique Extended_machtype for layout [Pbottom]" - | Punboxed_float -> typ_float + | Punboxed_float Pfloat64 -> typ_float | Punboxed_vector (Pvec128 _) -> typ_vec128 | Punboxed_int _ -> (* Only 64-bit architectures, so this is always [typ_int] *) @@ -2817,7 +2817,7 @@ let arraylength kind arg dbg = Cop (Cor, [len; Cconst_int (1, dbg)], dbg) | Paddrarray | Pintarray -> Cop (Cor, [addr_array_length_shifted hdr dbg; Cconst_int (1, dbg)], dbg) - | Pfloatarray | Punboxedfloatarray -> + | Pfloatarray | Punboxedfloatarray Pfloat64 -> (* Note: we only support 64 bit targets now, so this is ok for Punboxedfloatarray *) Cop (Cor, [float_array_length_shifted hdr dbg; Cconst_int (1, dbg)], dbg) @@ -3602,12 +3602,13 @@ let transl_attrib : Lambda.check_attribute -> Cmm.codegen_option list = function let kind_of_layout (layout : Lambda.layout) = match layout with - | Pvalue Pfloatval -> Boxed_float + | Pvalue (Pboxedfloatval Pfloat64) -> Boxed_float | Pvalue (Pboxedintval bi) -> Boxed_integer bi | Pvalue (Pboxedvectorval vi) -> Boxed_vector vi | Pvalue (Pgenval | Pintval | Pvariant _ | Parrayval _) - | Ptop | Pbottom | Punboxed_float | Punboxed_int _ | Punboxed_vector _ - | Punboxed_product _ -> + | Ptop | Pbottom + | Punboxed_float Pfloat64 + | Punboxed_int _ | Punboxed_vector _ | Punboxed_product _ -> Any (* Atomics *) diff --git a/middle_end/flambda2/from_lambda/closure_conversion.ml b/middle_end/flambda2/from_lambda/closure_conversion.ml index 1148a91b8ca..74e3f334f29 100644 --- a/middle_end/flambda2/from_lambda/closure_conversion.ml +++ b/middle_end/flambda2/from_lambda/closure_conversion.ml @@ -503,7 +503,7 @@ let close_c_call acc env ~loc ~let_bound_ids_with_kinds let box_return_value = match prim_native_repr_res with | _, Same_as_ocaml_repr _ -> None - | _, Unboxed_float -> Some (P.Box_number (Naked_float, alloc_mode)) + | _, Unboxed_float Pfloat64 -> Some (P.Box_number (Naked_float, alloc_mode)) | _, Unboxed_integer Pnativeint -> Some (P.Box_number (Naked_nativeint, alloc_mode)) | _, Unboxed_integer Pint32 -> Some (P.Box_number (Naked_int32, alloc_mode)) @@ -531,7 +531,7 @@ let close_c_call acc env ~loc ~let_bound_ids_with_kinds kind (from_lambda_values_and_unboxed_numbers_only (Typeopt.layout_of_const_sort sort))) - | Unboxed_float -> K.naked_float + | Unboxed_float Pfloat64 -> K.naked_float | Unboxed_integer Pnativeint -> K.naked_nativeint | Unboxed_integer Pint32 -> K.naked_int32 | Unboxed_integer Pint64 -> K.naked_int64 @@ -577,7 +577,7 @@ let close_c_call acc env ~loc ~let_bound_ids_with_kinds then Misc.fatal_errorf "Expected arity one for %s" prim_native_name else match prim_native_repr_args, prim_native_repr_res with - | [(_, Unboxed_integer Pint64)], (_, Unboxed_float) -> ( + | [(_, Unboxed_integer Pint64)], (_, Unboxed_float Pfloat64) -> ( match args with | [arg] -> let result = Variable.create "reinterpreted_int64" in @@ -620,7 +620,7 @@ let close_c_call acc env ~loc ~let_bound_ids_with_kinds let unbox_arg : P.unary_primitive option = match arg_repr with | _, Same_as_ocaml_repr _ -> None - | _, Unboxed_float -> Some (P.Unbox_number Naked_float) + | _, Unboxed_float Pfloat64 -> Some (P.Unbox_number Naked_float) | _, Unboxed_integer Pnativeint -> Some (P.Unbox_number Naked_nativeint) | _, Unboxed_integer Pint32 -> Some (P.Unbox_number Naked_int32) @@ -808,29 +808,40 @@ let close_primitive acc env ~let_bound_ids_with_kinds named | Pufloatfield _ | Psetufloatfield _ | Psequand | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pdivint _ | Pmodint _ | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp _ | Pcompare_ints - | Pcompare_floats | Pcompare_bints _ | Poffsetint _ | Poffsetref _ - | Pintoffloat | Pfloatofint _ | Pnegfloat _ | Pabsfloat _ | Paddfloat _ - | Psubfloat _ | Pmulfloat _ | Pdivfloat _ | Pfloatcomp _ - | Punboxed_float_comp _ | Pstringlength | Pstringrefu | Pstringrefs - | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets - | Pduparray _ | Parraylength _ | Parrayrefu _ | Parraysetu _ - | Parrayrefs _ | Parraysets _ | Pisint _ | Pisout | Pbintofint _ - | Pintofbint _ | Pcvtbint _ | Pnegbint _ | Paddbint _ | Psubbint _ - | Pmulbint _ | Pdivbint _ | Pmodbint _ | Pandbint _ | Porbint _ - | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _ | Pbintcomp _ - | Punboxed_int_comp _ | Pbigarrayref _ | Pbigarrayset _ | Pbigarraydim _ - | Pstring_load_16 _ | Pstring_load_32 _ | Pstring_load_64 _ - | Pstring_load_128 _ | Pbytes_load_16 _ | Pbytes_load_32 _ - | Pbytes_load_64 _ | Pbytes_load_128 _ | Pbytes_set_16 _ | Pbytes_set_32 _ - | Pbytes_set_64 _ | Pbytes_set_128 _ | Pbigstring_load_16 _ - | Pbigstring_load_32 _ | Pbigstring_load_64 _ | Pbigstring_load_128 _ - | Pbigstring_set_16 _ | Pbigstring_set_32 _ | Pbigstring_set_64 _ - | Pbigstring_set_128 _ | Pctconst _ | Pbswap16 | Pbbswap _ - | Pint_as_pointer _ | Popaque _ | Pprobe_is_enabled _ | Pobj_dup - | Pobj_magic _ | Punbox_float | Pbox_float _ | Punbox_int _ | Pbox_int _ - | Pmake_unboxed_product _ | Punboxed_product_field _ | Pget_header _ - | Prunstack | Pperform | Presume | Preperform | Patomic_exchange - | Patomic_cas | Patomic_fetch_add | Pdls_get | Patomic_load _ -> + | Pcompare_floats Pfloat64 + | Pcompare_bints _ | Poffsetint _ | Poffsetref _ + | Pintoffloat Pfloat64 + | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) + | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) + | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) + | Pdivfloat (Pfloat64, _) + | Pfloatcomp (Pfloat64, _) + | Punboxed_float_comp (Pfloat64, _) + | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu + | Pbytessetu | Pbytesrefs | Pbytessets | Pduparray _ | Parraylength _ + | Parrayrefu _ | Parraysetu _ | Parrayrefs _ | Parraysets _ | Pisint _ + | Pisout | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _ + | Paddbint _ | Psubbint _ | Pmulbint _ | Pdivbint _ | Pmodbint _ + | Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ | Plsrbint _ + | Pasrbint _ | Pbintcomp _ | Punboxed_int_comp _ | Pbigarrayref _ + | Pbigarrayset _ | Pbigarraydim _ | Pstring_load_16 _ | Pstring_load_32 _ + | Pstring_load_64 _ | Pstring_load_128 _ | Pbytes_load_16 _ + | Pbytes_load_32 _ | Pbytes_load_64 _ | Pbytes_load_128 _ + | Pbytes_set_16 _ | Pbytes_set_32 _ | Pbytes_set_64 _ | Pbytes_set_128 _ + | Pbigstring_load_16 _ | Pbigstring_load_32 _ | Pbigstring_load_64 _ + | Pbigstring_load_128 _ | Pbigstring_set_16 _ | Pbigstring_set_32 _ + | Pbigstring_set_64 _ | Pbigstring_set_128 _ | Pctconst _ | Pbswap16 + | Pbbswap _ | Pint_as_pointer _ | Popaque _ | Pprobe_is_enabled _ + | Pobj_dup | Pobj_magic _ + | Punbox_float Pfloat64 + | Pbox_float (Pfloat64, _) + | Punbox_int _ | Pbox_int _ | Pmake_unboxed_product _ + | Punboxed_product_field _ | Pget_header _ | Prunstack | Pperform + | Presume | Preperform | Patomic_exchange | Patomic_cas + | Patomic_fetch_add | Pdls_get | Patomic_load _ -> (* Inconsistent with outer match *) assert false in diff --git a/middle_end/flambda2/from_lambda/lambda_to_flambda.ml b/middle_end/flambda2/from_lambda/lambda_to_flambda.ml index 664d3f972b0..443c14802e2 100644 --- a/middle_end/flambda2/from_lambda/lambda_to_flambda.ml +++ b/middle_end/flambda2/from_lambda/lambda_to_flambda.ml @@ -272,22 +272,26 @@ let transform_primitive env (prim : L.primitive) args loc = Misc.fatal_errorf "Pmakeblock with wrong or non-scannable block tag %d" tag | Pmakefloatblock (_mut, _mode), args when List.length args < 1 -> Misc.fatal_errorf "Pmakefloatblock must have at least one argument" - | Pfloatcomp CFnlt, args -> - Primitive (L.Pnot, [L.Lprim (Pfloatcomp CFlt, args, loc)], loc) - | Pfloatcomp CFngt, args -> - Primitive (L.Pnot, [L.Lprim (Pfloatcomp CFgt, args, loc)], loc) - | Pfloatcomp CFnle, args -> - Primitive (L.Pnot, [L.Lprim (Pfloatcomp CFle, args, loc)], loc) - | Pfloatcomp CFnge, args -> - Primitive (L.Pnot, [L.Lprim (Pfloatcomp CFge, args, loc)], loc) - | Punboxed_float_comp CFnlt, args -> - Primitive (L.Pnot, [L.Lprim (Punboxed_float_comp CFlt, args, loc)], loc) - | Punboxed_float_comp CFngt, args -> - Primitive (L.Pnot, [L.Lprim (Punboxed_float_comp CFgt, args, loc)], loc) - | Punboxed_float_comp CFnle, args -> - Primitive (L.Pnot, [L.Lprim (Punboxed_float_comp CFle, args, loc)], loc) - | Punboxed_float_comp CFnge, args -> - Primitive (L.Pnot, [L.Lprim (Punboxed_float_comp CFge, args, loc)], loc) + | Pfloatcomp (bf, CFnlt), args -> + Primitive (L.Pnot, [L.Lprim (Pfloatcomp (bf, CFlt), args, loc)], loc) + | Pfloatcomp (bf, CFngt), args -> + Primitive (L.Pnot, [L.Lprim (Pfloatcomp (bf, CFgt), args, loc)], loc) + | Pfloatcomp (bf, CFnle), args -> + Primitive (L.Pnot, [L.Lprim (Pfloatcomp (bf, CFle), args, loc)], loc) + | Pfloatcomp (bf, CFnge), args -> + Primitive (L.Pnot, [L.Lprim (Pfloatcomp (bf, CFge), args, loc)], loc) + | Punboxed_float_comp (bf, CFnlt), args -> + Primitive + (L.Pnot, [L.Lprim (Punboxed_float_comp (bf, CFlt), args, loc)], loc) + | Punboxed_float_comp (bf, CFngt), args -> + Primitive + (L.Pnot, [L.Lprim (Punboxed_float_comp (bf, CFgt), args, loc)], loc) + | Punboxed_float_comp (bf, CFnle), args -> + Primitive + (L.Pnot, [L.Lprim (Punboxed_float_comp (bf, CFle), args, loc)], loc) + | Punboxed_float_comp (bf, CFnge), args -> + Primitive + (L.Pnot, [L.Lprim (Punboxed_float_comp (bf, CFge), args, loc)], loc) | Pbigarrayref (_unsafe, num_dimensions, kind, layout), args -> ( match P.Bigarray_kind.from_lambda kind, P.Bigarray_layout.from_lambda layout @@ -605,14 +609,23 @@ let primitive_can_raise (prim : Lambda.primitive) = | Psetfield_computed _ | Pfloatfield _ | Psetfloatfield _ | Pduprecord _ | Pmakeufloatblock _ | Pufloatfield _ | Psetufloatfield _ | Psequand | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint - | Plslint | Plsrint | Pasrint | Pintcomp _ | Pcompare_ints | Pcompare_floats - | Pcompare_bints _ | Poffsetint _ | Poffsetref _ | Pintoffloat | Pfloatofint _ - | Pnegfloat _ | Pabsfloat _ | Paddfloat _ | Psubfloat _ | Pmulfloat _ - | Pdivfloat _ | Pfloatcomp _ | Punboxed_float_comp _ | Pstringlength - | Pstringrefu | Pbyteslength | Pbytesrefu | Pbytessetu | Pmakearray _ - | Pduparray _ | Parraylength _ | Parrayrefu _ | Parraysetu _ | Pisint _ - | Pisout | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _ | Paddbint _ - | Psubbint _ | Pmulbint _ + | Plslint | Plsrint | Pasrint | Pintcomp _ | Pcompare_ints + | Pcompare_floats Pfloat64 + | Pcompare_bints _ | Poffsetint _ | Poffsetref _ + | Pintoffloat Pfloat64 + | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) + | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) + | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) + | Pdivfloat (Pfloat64, _) + | Pfloatcomp (Pfloat64, _) + | Punboxed_float_comp (Pfloat64, _) + | Pstringlength | Pstringrefu | Pbyteslength | Pbytesrefu | Pbytessetu + | Pmakearray _ | Pduparray _ | Parraylength _ | Parrayrefu _ | Parraysetu _ + | Pisint _ | Pisout | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _ + | Paddbint _ | Psubbint _ | Pmulbint _ | Pdivbint { is_safe = Unsafe; _ } | Pmodbint { is_safe = Unsafe; _ } | Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _ @@ -654,7 +667,9 @@ let primitive_can_raise (prim : Lambda.primitive) = | Pbigstring_set_64 true | Pbigstring_set_128 { unsafe = true; _ } | Pctconst _ | Pbswap16 | Pbbswap _ | Pint_as_pointer _ | Popaque _ - | Pprobe_is_enabled _ | Pobj_dup | Pobj_magic _ | Pbox_float _ | Punbox_float + | Pprobe_is_enabled _ | Pobj_dup | Pobj_magic _ + | Pbox_float (Pfloat64, _) + | Punbox_float Pfloat64 | Punbox_int _ | Pbox_int _ | Pmake_unboxed_product _ | Punboxed_product_field _ | Pget_header _ -> false @@ -848,7 +863,9 @@ let rec cps acc env ccenv (lam : L.lambda) (k : cps_continuation) match layout with | Ptop | Pbottom -> Misc.fatal_error "Cannot bind layout [Ptop] or [Pbottom]" - | Pvalue _ | Punboxed_int _ | Punboxed_float | Punboxed_vector _ -> + | Pvalue _ | Punboxed_int _ + | Punboxed_float Pfloat64 + | Punboxed_vector _ -> ( env, [ ( id, Flambda_kind.With_subkind @@ -971,8 +988,9 @@ let rec cps acc env ccenv (lam : L.lambda) (k : cps_continuation) let id = Ident.create_local name in let result_layout = L.primitive_result_layout prim in (match result_layout with - | Pvalue _ | Punboxed_float | Punboxed_int _ | Punboxed_vector _ - | Punboxed_product _ -> + | Pvalue _ + | Punboxed_float Pfloat64 + | Punboxed_int _ | Punboxed_vector _ | Punboxed_product _ -> () | Ptop | Pbottom -> Misc.fatal_errorf "Invalid result layout %a for primitive %a" diff --git a/middle_end/flambda2/from_lambda/lambda_to_flambda_primitives.ml b/middle_end/flambda2/from_lambda/lambda_to_flambda_primitives.ml index 430253a1b35..3e31b24d5a0 100644 --- a/middle_end/flambda2/from_lambda/lambda_to_flambda_primitives.ml +++ b/middle_end/flambda2/from_lambda/lambda_to_flambda_primitives.ml @@ -128,7 +128,7 @@ let convert_array_kind (kind : L.array_kind) : converted_array_kind = Float_array_opt_dynamic | Paddrarray -> Array_kind Values | Pintarray -> Array_kind Immediates - | Pfloatarray | Punboxedfloatarray -> Array_kind Naked_floats + | Pfloatarray | Punboxedfloatarray Pfloat64 -> Array_kind Naked_floats | Punboxedintarray Pint32 -> Array_kind Naked_int32s | Punboxedintarray Pint64 -> Array_kind Naked_int64s | Punboxedintarray Pnativeint -> Array_kind Naked_nativeints @@ -168,7 +168,7 @@ let convert_array_ref_kind (kind : L.array_ref_kind) : converted_array_ref_kind | Paddrarray_ref -> Array_ref_kind Values | Pintarray_ref -> Array_ref_kind Immediates | Pfloatarray_ref mode -> Array_ref_kind (Naked_floats_to_be_boxed mode) - | Punboxedfloatarray_ref -> Array_ref_kind Naked_floats + | Punboxedfloatarray_ref Pfloat64 -> Array_ref_kind Naked_floats | Punboxedintarray_ref Pint32 -> Array_ref_kind Naked_int32s | Punboxedintarray_ref Pint64 -> Array_ref_kind Naked_int64s | Punboxedintarray_ref Pnativeint -> Array_ref_kind Naked_nativeints @@ -223,7 +223,7 @@ let convert_array_set_kind (kind : L.array_set_kind) : converted_array_set_kind (Values (Assignment (Alloc_mode.For_assignments.from_lambda mode))) | Pintarray_set -> Array_set_kind Immediates | Pfloatarray_set -> Array_set_kind Naked_floats_to_be_unboxed - | Punboxedfloatarray_set -> Array_set_kind Naked_floats + | Punboxedfloatarray_set Pfloat64 -> Array_set_kind Naked_floats | Punboxedintarray_set Pint32 -> Array_set_kind Naked_int32s | Punboxedintarray_set Pint64 -> Array_set_kind Naked_int64s | Punboxedintarray_set Pnativeint -> Array_set_kind Naked_nativeints @@ -252,7 +252,7 @@ let convert_array_kind_to_duplicate_array_kind (kind : L.array_kind) : Float_array_opt_dynamic | Paddrarray -> Duplicate_array_kind Values | Pintarray -> Duplicate_array_kind Immediates - | Pfloatarray | Punboxedfloatarray -> + | Pfloatarray | Punboxedfloatarray Pfloat64 -> Duplicate_array_kind (Naked_floats { length = None }) | Punboxedintarray Pint32 -> Duplicate_array_kind (Naked_int32s { length = None }) @@ -846,7 +846,8 @@ let convert_lprim ~big_endian (prim : L.primitive) (args : Simple.t list list) | Array_kind array_kind -> let args = match lambda_array_kind with - | Pgenarray | Paddrarray | Pintarray | Punboxedfloatarray + | Pgenarray | Paddrarray | Pintarray + | Punboxedfloatarray Pfloat64 | Punboxedintarray (Pint32 | Pint64 | Pnativeint) -> args | Pfloatarray -> List.map unbox_float args @@ -932,48 +933,48 @@ let convert_lprim ~big_endian (prim : L.primitive) (args : Simple.t list list) [ tag_int (Binary (convert_boxed_integer_comparison_prim kind comp, arg1, arg2)) ] - | Pintoffloat, [[arg]] -> + | Pintoffloat Pfloat64, [[arg]] -> let src = K.Standard_int_or_float.Naked_float in let dst = K.Standard_int_or_float.Tagged_immediate in [Unary (Num_conv { src; dst }, unbox_float arg)] - | Pfloatofint mode, [[arg]] -> + | Pfloatofint (Pfloat64, mode), [[arg]] -> let src = K.Standard_int_or_float.Tagged_immediate in let dst = K.Standard_int_or_float.Naked_float in [box_float mode (Unary (Num_conv { src; dst }, arg)) ~current_region] - | Pnegfloat mode, [[arg]] -> + | Pnegfloat (Pfloat64, mode), [[arg]] -> [box_float mode (Unary (Float_arith Neg, unbox_float arg)) ~current_region] - | Pabsfloat mode, [[arg]] -> + | Pabsfloat (Pfloat64, mode), [[arg]] -> [box_float mode (Unary (Float_arith Abs, unbox_float arg)) ~current_region] - | Paddfloat mode, [[arg1]; [arg2]] -> + | Paddfloat (Pfloat64, mode), [[arg1]; [arg2]] -> [ box_float mode (Binary (Float_arith Add, unbox_float arg1, unbox_float arg2)) ~current_region ] - | Psubfloat mode, [[arg1]; [arg2]] -> + | Psubfloat (Pfloat64, mode), [[arg1]; [arg2]] -> [ box_float mode (Binary (Float_arith Sub, unbox_float arg1, unbox_float arg2)) ~current_region ] - | Pmulfloat mode, [[arg1]; [arg2]] -> + | Pmulfloat (Pfloat64, mode), [[arg1]; [arg2]] -> [ box_float mode (Binary (Float_arith Mul, unbox_float arg1, unbox_float arg2)) ~current_region ] - | Pdivfloat mode, [[arg1]; [arg2]] -> + | Pdivfloat (Pfloat64, mode), [[arg1]; [arg2]] -> [ box_float mode (Binary (Float_arith Div, unbox_float arg1, unbox_float arg2)) ~current_region ] - | Pfloatcomp comp, [[arg1]; [arg2]] -> + | Pfloatcomp (Pfloat64, comp), [[arg1]; [arg2]] -> [ tag_int (Binary ( Float_comp (Yielding_bool (convert_float_comparison comp)), unbox_float arg1, unbox_float arg2 )) ] - | Punboxed_float_comp comp, [[arg1]; [arg2]] -> + | Punboxed_float_comp (Pfloat64, comp), [[arg1]; [arg2]] -> [ tag_int (Binary ( Float_comp (Yielding_bool (convert_float_comparison comp)), arg1, arg2 )) ] - | Punbox_float, [[arg]] -> [Unary (Unbox_number Naked_float, arg)] - | Pbox_float mode, [[arg]] -> + | Punbox_float Pfloat64, [[arg]] -> [Unary (Unbox_number Naked_float, arg)] + | Pbox_float (Pfloat64, mode), [[arg]] -> [ Unary ( Box_number ( Naked_float, @@ -1485,7 +1486,7 @@ let convert_lprim ~big_endian (prim : L.primitive) (args : Simple.t list list) (Tagged_immediate, Yielding_int_like_compare_functions Signed), i1, i2 )) ] - | Pcompare_floats, [[f1]; [f2]] -> + | Pcompare_floats Pfloat64, [[f1]; [f2]] -> [ tag_int (Binary ( Float_comp (Yielding_int_like_compare_functions ()), @@ -1530,14 +1531,19 @@ let convert_lprim ~big_endian (prim : L.primitive) (args : Simple.t list list) %a (%a)" Printlambda.primitive prim H.print_list_of_simple_or_prim (List.flatten args) - | ( ( Pfield _ | Pnegint | Pnot | Poffsetint _ | Pintoffloat | Pfloatofint _ - | Pnegfloat _ | Pabsfloat _ | Pstringlength | Pbyteslength | Pbintofint _ - | Pintofbint _ | Pnegbint _ | Popaque _ | Pduprecord _ | Parraylength _ - | Pduparray _ | Pfloatfield _ | Pcvtbint _ | Poffsetref _ | Pbswap16 - | Pbbswap _ | Pisint _ | Pint_as_pointer _ | Pbigarraydim _ | Pobj_dup - | Pobj_magic _ | Punbox_float | Pbox_float _ | Punbox_int _ | Pbox_int _ - | Punboxed_product_field _ | Pget_header _ | Pufloatfield _ - | Patomic_load _ ), + | ( ( Pfield _ | Pnegint | Pnot | Poffsetint _ + | Pintoffloat Pfloat64 + | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) + | Pabsfloat (Pfloat64, _) + | Pstringlength | Pbyteslength | Pbintofint _ | Pintofbint _ | Pnegbint _ + | Popaque _ | Pduprecord _ | Parraylength _ | Pduparray _ | Pfloatfield _ + | Pcvtbint _ | Poffsetref _ | Pbswap16 | Pbbswap _ | Pisint _ + | Pint_as_pointer _ | Pbigarraydim _ | Pobj_dup | Pobj_magic _ + | Punbox_float Pfloat64 + | Pbox_float (Pfloat64, _) + | Punbox_int _ | Pbox_int _ | Punboxed_product_field _ | Pget_header _ + | Pufloatfield _ | Patomic_load _ ), ([] | _ :: _ :: _ | [([] | _ :: _ :: _)]) ) -> Misc.fatal_errorf "Closure_conversion.convert_primitive: Wrong arity for unary primitive \ @@ -1545,24 +1551,32 @@ let convert_lprim ~big_endian (prim : L.primitive) (args : Simple.t list list) Printlambda.primitive prim H.print_list_of_lists_of_simple_or_prim args | ( ( Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pdivint _ | Pmodint _ | Psetfield _ | Pintcomp _ - | Paddfloat _ | Psubfloat _ | Pmulfloat _ | Pdivfloat _ | Pfloatcomp _ - | Punboxed_float_comp _ | Pstringrefu | Pbytesrefu | Pstringrefs - | Pbytesrefs | Pstring_load_16 _ | Pstring_load_32 _ | Pstring_load_64 _ - | Pstring_load_128 _ | Pbytes_load_16 _ | Pbytes_load_32 _ - | Pbytes_load_64 _ | Pbytes_load_128 _ | Pisout | Paddbint _ | Psubbint _ - | Pmulbint _ | Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ - | Plsrbint _ | Pasrbint _ | Pfield_computed _ | Pdivbint _ | Pmodbint _ + | Paddfloat (Pfloat64, _) + | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) + | Pdivfloat (Pfloat64, _) + | Pfloatcomp (Pfloat64, _) + | Punboxed_float_comp (Pfloat64, _) + | Pstringrefu | Pbytesrefu | Pstringrefs | Pbytesrefs | Pstring_load_16 _ + | Pstring_load_32 _ | Pstring_load_64 _ | Pstring_load_128 _ + | Pbytes_load_16 _ | Pbytes_load_32 _ | Pbytes_load_64 _ + | Pbytes_load_128 _ | Pisout | Paddbint _ | Psubbint _ | Pmulbint _ + | Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ | Plsrbint _ + | Pasrbint _ | Pfield_computed _ | Pdivbint _ | Pmodbint _ | Psetfloatfield _ | Psetufloatfield _ | Pbintcomp _ | Punboxed_int_comp _ | Pbigstring_load_16 _ | Pbigstring_load_32 _ | Pbigstring_load_64 _ | Pbigstring_load_128 _ | Parrayrefu ( Pgenarray_ref _ | Paddrarray_ref | Pintarray_ref | Pfloatarray_ref _ - | Punboxedfloatarray_ref | Punboxedintarray_ref _ ) + | Punboxedfloatarray_ref Pfloat64 + | Punboxedintarray_ref _ ) | Parrayrefs ( Pgenarray_ref _ | Paddrarray_ref | Pintarray_ref | Pfloatarray_ref _ - | Punboxedfloatarray_ref | Punboxedintarray_ref _ ) - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ | Patomic_exchange - | Patomic_fetch_add ), + | Punboxedfloatarray_ref Pfloat64 + | Punboxedintarray_ref _ ) + | Pcompare_ints + | Pcompare_floats Pfloat64 + | Pcompare_bints _ | Patomic_exchange | Patomic_fetch_add ), ( [] | [_] | _ :: _ :: _ :: _ @@ -1575,10 +1589,12 @@ let convert_lprim ~big_endian (prim : L.primitive) (args : Simple.t list list) | ( ( Psetfield_computed _ | Pbytessetu | Pbytessets | Parraysetu ( Pgenarray_set _ | Paddrarray_set _ | Pintarray_set | Pfloatarray_set - | Punboxedfloatarray_set | Punboxedintarray_set _ ) + | Punboxedfloatarray_set Pfloat64 + | Punboxedintarray_set _ ) | Parraysets ( Pgenarray_set _ | Paddrarray_set _ | Pintarray_set | Pfloatarray_set - | Punboxedfloatarray_set | Punboxedintarray_set _ ) + | Punboxedfloatarray_set Pfloat64 + | Punboxedintarray_set _ ) | Pbytes_set_16 _ | Pbytes_set_32 _ | Pbytes_set_64 _ | Pbytes_set_128 _ | Pbigstring_set_16 _ | Pbigstring_set_32 _ | Pbigstring_set_64 _ | Pbigstring_set_128 _ | Patomic_cas ), diff --git a/middle_end/flambda2/kinds/flambda_arity.ml b/middle_end/flambda2/kinds/flambda_arity.ml index a9ce63c95d9..0aa2ea6ce7f 100644 --- a/middle_end/flambda2/kinds/flambda_arity.ml +++ b/middle_end/flambda2/kinds/flambda_arity.ml @@ -73,7 +73,7 @@ module Component_for_creation = struct let rec from_lambda (layout : Lambda.layout) = match layout with | Pvalue vk -> Singleton (KS.from_lambda_value_kind vk) - | Punboxed_float -> Singleton KS.naked_float + | Punboxed_float Pfloat64 -> Singleton KS.naked_float | Punboxed_int Pint32 -> Singleton KS.naked_int32 | Punboxed_int Pint64 -> Singleton KS.naked_int64 | Punboxed_int Pnativeint -> Singleton KS.naked_nativeint diff --git a/middle_end/flambda2/kinds/flambda_kind.ml b/middle_end/flambda2/kinds/flambda_kind.ml index 244a922498b..d53ccab2ba5 100644 --- a/middle_end/flambda2/kinds/flambda_kind.ml +++ b/middle_end/flambda2/kinds/flambda_kind.ml @@ -68,7 +68,7 @@ let to_lambda (t : t) : Lambda.layout = | Value -> Pvalue Pgenval | Naked_number Naked_immediate -> Misc.fatal_error "Can't convert kind [Naked_immediate] to lambda layout" - | Naked_number Naked_float -> Punboxed_float + | Naked_number Naked_float -> Punboxed_float Pfloat64 | Naked_number Naked_int32 -> Punboxed_int Pint32 | Naked_number Naked_int64 -> Punboxed_int Pint64 | Naked_number Naked_nativeint -> Punboxed_int Pnativeint @@ -551,7 +551,7 @@ module With_subkind = struct let rec from_lambda_value_kind (vk : Lambda.value_kind) = match vk with | Pgenval -> any_value - | Pfloatval -> boxed_float + | Pboxedfloatval Pfloat64 -> boxed_float | Pboxedintval Pint32 -> boxed_int32 | Pboxedintval Pint64 -> boxed_int64 | Pboxedintval Pnativeint -> boxed_nativeint @@ -586,7 +586,7 @@ module With_subkind = struct | Parrayval Pintarray -> immediate_array | Parrayval Paddrarray -> value_array | Parrayval Pgenarray -> generic_array - | Parrayval Punboxedfloatarray -> float_array + | Parrayval (Punboxedfloatarray Pfloat64) -> float_array | Parrayval (Punboxedintarray Pint32) -> unboxed_int32_array | Parrayval (Punboxedintarray Pint64) -> unboxed_int64_array | Parrayval (Punboxedintarray Pnativeint) -> unboxed_nativeint_array @@ -594,7 +594,7 @@ module With_subkind = struct let from_lambda_values_and_unboxed_numbers_only (layout : Lambda.layout) = match layout with | Pvalue vk -> from_lambda_value_kind vk - | Punboxed_float -> naked_float + | Punboxed_float Pfloat64 -> naked_float | Punboxed_int Pint32 -> naked_int32 | Punboxed_int Pint64 -> naked_int64 | Punboxed_int Pnativeint -> naked_nativeint diff --git a/middle_end/flambda2/term_basics/empty_array_kind.ml b/middle_end/flambda2/term_basics/empty_array_kind.ml index 26606c162d6..a95a05875ee 100644 --- a/middle_end/flambda2/term_basics/empty_array_kind.ml +++ b/middle_end/flambda2/term_basics/empty_array_kind.ml @@ -46,7 +46,8 @@ let of_element_kind t = let of_lambda array_kind = match (array_kind : Lambda.array_kind) with - | Pgenarray | Paddrarray | Pintarray | Pfloatarray | Punboxedfloatarray -> + | Pgenarray | Paddrarray | Pintarray | Pfloatarray + | Punboxedfloatarray Pfloat64 -> Values_or_immediates_or_naked_floats | Punboxedintarray Pint32 -> Naked_int32s | Punboxedintarray Pint64 -> Naked_int64s diff --git a/ocaml/asmcomp/cmm_helpers.ml b/ocaml/asmcomp/cmm_helpers.ml index 97183c33c56..b80ba800985 100644 --- a/ocaml/asmcomp/cmm_helpers.ml +++ b/ocaml/asmcomp/cmm_helpers.ml @@ -928,13 +928,14 @@ module Extended_machtype = struct | Ptop -> Misc.fatal_error "No Extended_machtype for layout [Ptop]" | Pbottom -> Misc.fatal_error "No unique Extended_machtype for layout [Pbottom]" - | Punboxed_float -> typ_float + | Punboxed_float Pfloat64 -> typ_float | Punboxed_int _ -> (* Only 64-bit architectures, so this is always [typ_int] *) typ_any_int | Pvalue Pintval -> typ_tagged_int | Punboxed_vector _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." | Pvalue _ -> typ_val | Punboxed_product _ -> failwith "TODO" end @@ -2509,7 +2510,7 @@ let arraylength kind arg dbg = Cop(Cor, [addr_array_length_shifted hdr dbg; Cconst_int (1, dbg)], dbg) | Pfloatarray -> Cop(Cor, [float_array_length_shifted hdr dbg; Cconst_int (1, dbg)], dbg) - | Punboxedfloatarray | Punboxedintarray _ -> + | Punboxedfloatarray Pfloat64 | Punboxedintarray _ -> Misc.fatal_errorf "Unboxed arrays not supported" let bbswap bi arg dbg = @@ -2701,7 +2702,7 @@ let arrayref_unsafe rkind arg1 arg2 dbg = int_array_ref arg1 arg2 dbg | Pfloatarray_ref mode -> float_array_ref mode arg1 arg2 dbg - | Punboxedfloatarray_ref | Punboxedintarray_ref _ -> + | Punboxedfloatarray_ref Pfloat64 | Punboxedintarray_ref _ -> Misc.fatal_errorf "Unboxed arrays not supported" let arrayref_safe rkind arg1 arg2 dbg = @@ -2756,7 +2757,7 @@ let arrayref_safe rkind arg1 arg2 dbg = (get_header_masked arr dbg) dbg; idx], unboxed_float_array_ref arr idx dbg)))) - | Punboxedfloatarray_ref | Punboxedintarray_ref _ -> + | Punboxedfloatarray_ref Pfloat64 | Punboxedintarray_ref _ -> Misc.fatal_errorf "Unboxed arrays not supported" type ternary_primitive = @@ -2808,7 +2809,7 @@ let arrayset_unsafe skind arg1 arg2 arg3 dbg = int_array_set arg1 arg2 arg3 dbg | Pfloatarray_set -> float_array_set arg1 arg2 arg3 dbg - | Punboxedfloatarray_set | Punboxedintarray_set _ -> + | Punboxedfloatarray_set Pfloat64 | Punboxedintarray_set _ -> Misc.fatal_errorf "Unboxed arrays not supported" ) @@ -2873,7 +2874,7 @@ let arrayset_safe skind arg1 arg2 arg3 dbg = (get_header_masked arr dbg) dbg; idx], float_array_set arr idx newval dbg)))) - | Punboxedfloatarray_set | Punboxedintarray_set _ -> + | Punboxedfloatarray_set Pfloat64 | Punboxedintarray_set _ -> Misc.fatal_errorf "Unboxed arrays not supported" ) @@ -3205,12 +3206,14 @@ let emit_preallocated_blocks preallocated_blocks cont = let kind_of_layout (layout : Lambda.layout) = match layout with - | Pvalue Pfloatval -> Boxed_float + | Pvalue (Pboxedfloatval Pfloat64) -> Boxed_float | Pvalue (Pboxedintval bi) -> Boxed_integer bi | Pvalue (Pgenval | Pintval | Pvariant _ | Parrayval _) - | Ptop | Pbottom | Punboxed_float | Punboxed_int _ | Punboxed_product _ -> Any + | Ptop | Pbottom | Punboxed_float Pfloat64 + | Punboxed_int _ | Punboxed_product _ -> Any | Pvalue (Pboxedvectorval _) | Punboxed_vector _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." let make_tuple l = match l with [e] -> e | _ -> Ctuple l diff --git a/ocaml/asmcomp/cmmgen.ml b/ocaml/asmcomp/cmmgen.ml index 7a24fcce15e..08ceefd3956 100644 --- a/ocaml/asmcomp/cmmgen.ml +++ b/ocaml/asmcomp/cmmgen.ml @@ -136,9 +136,10 @@ let get_field env mut layout ptr n dbg = match layout with | Pvalue Pintval | Punboxed_int _ -> Word_int | Pvalue _ -> Word_val - | Punboxed_float -> Double + | Punboxed_float Pfloat64 -> Double | Punboxed_vector _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." | Punboxed_product _ -> Misc.fatal_error "TODO" | Ptop -> Misc.fatal_errorf "get_field with Ptop: %a" Debuginfo.print_compact dbg @@ -656,9 +657,11 @@ let rec transl env e = | Patomic_cas | Patomic_fetch_add | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint - | Plsrint | Pasrint | Pintoffloat | Pfloatofint _ - | Pnegfloat _ | Pabsfloat _ | Paddfloat _ | Psubfloat _ - | Pmulfloat _ | Pdivfloat _ | Pstringlength | Pstringrefu + | Plsrint | Pasrint | Pintoffloat Pfloat64 | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) | Pdivfloat (Pfloat64, _) + | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets | Pisint | Pisout | Pbswap16 | Pint_as_pointer _ | Popaque | Pfield _ @@ -666,15 +669,15 @@ let rec transl env e = | Pfloatfield _ | Psetfloatfield (_, _) | Pduprecord (_, _) | Pufloatfield _ | Psetufloatfield (_, _) | Praise _ | Pdivint _ | Pmodint _ | Pintcomp _ | Poffsetint _ - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ - | Poffsetref _ | Pfloatcomp _ | Punboxed_float_comp _ | Parraylength _ - | Parrayrefu _ | Parraysetu _ | Parrayrefs _ | Parraysets _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ + | Poffsetref _ | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) + | Parraylength _ | Parrayrefu _ | Parraysetu _ | Parrayrefs _ | Parraysets _ | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _ | Paddbint _ | Psubbint _ | Pmulbint _ | Pdivbint _ | Pmodbint _ | Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _ | Pbintcomp (_, _) | Punboxed_int_comp (_, _) | Pstring_load _ | Pbytes_load _ | Pbytes_set _ | Pbigstring_load _ | Pbigstring_set _ - | Punbox_float | Pbox_float _ | Punbox_int _ | Pbox_int _ + | Punbox_float Pfloat64 | Pbox_float (Pfloat64, _) | Punbox_int _ | Pbox_int _ | Pbbswap _ | Pget_header _), _) -> fatal_error "Cmmgen.transl:prim" @@ -873,14 +876,14 @@ and transl_make_array dbg env kind mode args = | Pfloatarray -> make_float_alloc ~mode dbg Obj.double_array_tag (List.map (transl_unbox_float dbg env) args) - | Punboxedfloatarray | Punboxedintarray _ -> + | Punboxedfloatarray Pfloat64 | Punboxedintarray _ -> Misc.fatal_errorf "Unboxed arrays not supported" and transl_ccall env prim args dbg = let transl_arg native_repr arg = match native_repr with | Same_as_ocaml_repr sort -> (exttype_of_sort sort, transl env arg) - | Unboxed_float -> + | Unboxed_float Pfloat64 -> (XFloat, transl_unbox_float dbg env arg) | Unboxed_integer bi -> let xty = @@ -890,7 +893,8 @@ and transl_ccall env prim args dbg = | Pint64 -> XInt64 in (xty, transl_unbox_int dbg env bi arg) | Unboxed_vector _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." | Untagged_int -> (XInt, untag_int (transl env arg) dbg) in @@ -911,11 +915,12 @@ and transl_ccall env prim args dbg = match prim.prim_native_repr_res with | _, Same_as_ocaml_repr sort -> (machtype_of_sort sort, fun x -> x) (* TODO: Allow Alloc_local on suitably typed C stubs *) - | _, Unboxed_float -> (typ_float, box_float dbg alloc_heap) + | _, Unboxed_float Pfloat64 -> (typ_float, box_float dbg alloc_heap) | _, Unboxed_integer bi -> (typ_int, box_int dbg bi alloc_heap) | _, Untagged_int -> (typ_int, (fun i -> tag_int i dbg)) | _, Unboxed_vector _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." in let typ_args, args = transl_args prim.prim_native_repr_args args in wrap_result @@ -934,7 +939,7 @@ and transl_prim_1 env p arg dbg = let ptr = transl env arg in box_float dbg mode (floatfield n ptr dbg) | Pufloatfield n -> - get_field env Mutable Punboxed_float (transl env arg) n dbg + get_field env Mutable (Punboxed_float Pfloat64) (transl env arg) n dbg | Pint_as_pointer _ -> int_as_pointer (transl env arg) dbg (* Exceptions *) @@ -952,17 +957,17 @@ and transl_prim_1 env p arg dbg = | Pbox_int (bi, m) -> box_int dbg bi m (transl env arg) (* Floating-point operations *) - | Punbox_float -> + | Punbox_float Pfloat64 -> transl_unbox_float dbg env arg - | Pbox_float m -> + | Pbox_float (Pfloat64, m) -> box_float dbg m (transl env arg) - | Pfloatofint m -> + | Pfloatofint (Pfloat64, m) -> box_float dbg m (Cop(Cfloatofint, [untag_int(transl env arg) dbg], dbg)) - | Pintoffloat -> + | Pintoffloat Pfloat64 -> tag_int(Cop(Cintoffloat, [transl_unbox_float dbg env arg], dbg)) dbg - | Pnegfloat m -> + | Pnegfloat (Pfloat64, m) -> box_float dbg m (Cop(Cnegf, [transl_unbox_float dbg env arg], dbg)) - | Pabsfloat m -> + | Pabsfloat (Pfloat64, m) -> box_float dbg m (Cop(Cabsf, [transl_unbox_float dbg env arg], dbg)) (* String operations *) | Pstringlength | Pbyteslength -> @@ -1020,15 +1025,16 @@ and transl_prim_1 env p arg dbg = | Patomic_exchange | Patomic_cas | Patomic_fetch_add | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint - | Paddfloat _ | Psubfloat _ | Pmulfloat _ | Pdivfloat _ + | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) | Pdivfloat (Pfloat64, _) | Pstringrefu | Pstringrefs | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets | Pisout | Pread_symbol _ | Pmakeblock (_, _, _, _) | Psetfield (_, _, _) | Psetfield_computed (_, _) | Pmakeufloatblock (_, _) | Psetfloatfield (_, _) | Pduprecord (_, _) | Pccall _ | Pdivint _ | Psetufloatfield (_, _) - | Pmodint _ | Pintcomp _ | Pfloatcomp _ | Punboxed_float_comp _ | Pmakearray (_, _, _) - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ + | Pmodint _ | Pintcomp _ | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) + | Pmakearray (_, _, _) | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ | Pduparray (_, _) | Parrayrefu _ | Parraysetu _ | Parrayrefs _ | Parraysets _ | Paddbint _ | Psubbint _ | Pmulbint _ | Pdivbint _ | Pmodbint _ | Pandbint _ | Porbint _ | Pxorbint _ @@ -1105,39 +1111,39 @@ and transl_prim_2 env p arg1 arg2 dbg = let a1 = transl_unbox_int dbg env bi arg1 in let a2 = transl_unbox_int dbg env bi arg2 in mk_compare_ints dbg a1 a2 - | Pcompare_floats -> + | Pcompare_floats Pfloat64 -> let a1 = transl_unbox_float dbg env arg1 in let a2 = transl_unbox_float dbg env arg2 in mk_compare_floats dbg a1 a2 | Pisout -> transl_isout (transl env arg1) (transl env arg2) dbg (* Float operations *) - | Paddfloat m -> + | Paddfloat (Pfloat64, m) -> box_float dbg m (Cop(Caddf, [transl_unbox_float dbg env arg1; transl_unbox_float dbg env arg2], dbg)) - | Psubfloat m -> + | Psubfloat (Pfloat64, m) -> box_float dbg m (Cop(Csubf, [transl_unbox_float dbg env arg1; transl_unbox_float dbg env arg2], dbg)) - | Pmulfloat m -> + | Pmulfloat (Pfloat64, m) -> box_float dbg m (Cop(Cmulf, [transl_unbox_float dbg env arg1; transl_unbox_float dbg env arg2], dbg)) - | Pdivfloat m -> + | Pdivfloat (Pfloat64, m) -> box_float dbg m (Cop(Cdivf, [transl_unbox_float dbg env arg1; transl_unbox_float dbg env arg2], dbg)) - | Pfloatcomp cmp -> + | Pfloatcomp (Pfloat64, cmp) -> tag_int(Cop(Ccmpf cmp, [transl_unbox_float dbg env arg1; transl_unbox_float dbg env arg2], dbg)) dbg - | Punboxed_float_comp cmp -> + | Punboxed_float_comp (Pfloat64, cmp) -> tag_int(Cop(Ccmpf cmp, [transl env arg1; transl env arg2], @@ -1223,8 +1229,9 @@ and transl_prim_2 env p arg1 arg2 dbg = [transl env arg1; transl env arg2], dbg) | Prunstack | Pperform | Presume | Preperform | Pdls_get | Patomic_cas | Patomic_load _ - | Pnot | Pnegint | Pintoffloat | Pfloatofint _ | Pnegfloat _ - | Pabsfloat _ | Pstringlength | Pbyteslength | Pbytessetu | Pbytessets + | Pnot | Pnegint | Pintoffloat Pfloat64 | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) | Pabsfloat (Pfloat64, _) + | Pstringlength | Pbyteslength | Pbytessetu | Pbytessets | Pisint | Pbswap16 | Pint_as_pointer _ | Popaque | Pread_symbol _ | Pmakeblock (_, _, _, _) | Pfield _ | Psetfield_computed (_, _) | Pmakeufloatblock (_, _) | Pfloatfield _ | Pufloatfield _ @@ -1234,7 +1241,8 @@ and transl_prim_2 env p arg1 arg2 dbg = | Pnegbint _ | Pbigarrayref (_, _, _, _) | Pbigarrayset (_, _, _, _) | Pbigarraydim _ | Pbytes_set _ | Pbigstring_set _ | Pbbswap _ | Pprobe_is_enabled _ - | Punbox_float | Pbox_float _ | Punbox_int _ | Pbox_int _ | Pget_header _ + | Punbox_float Pfloat64 | Pbox_float (Pfloat64, _) + | Punbox_int _ | Pbox_int _ | Pget_header _ -> fatal_errorf "Cmmgen.transl_prim_2: %a" Printclambda_primitives.primitive p @@ -1317,16 +1325,18 @@ and transl_prim_3 env p arg1 arg2 arg3 dbg = | Patomic_exchange | Patomic_fetch_add | Patomic_load _ | Pfield_computed | Psequand | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint - | Pintoffloat | Pfloatofint _ | Pnegfloat _ | Pabsfloat _ | Paddfloat _ | Psubfloat _ - | Pmulfloat _ | Pdivfloat _ | Pstringlength | Pstringrefu | Pstringrefs - | Pbyteslength | Pbytesrefu | Pbytesrefs | Pisint | Pisout - | Pbswap16 | Pint_as_pointer _ | Popaque | Pread_symbol _ + | Pintoffloat Pfloat64 | Pfloatofint (Pfloat64, _) | Pnegfloat (Pfloat64, _) + | Pabsfloat (Pfloat64, _) | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) | Pdivfloat (Pfloat64, _) | Pstringlength + | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytesrefs | Pisint + | Pisout | Pbswap16 | Pint_as_pointer _ | Popaque | Pread_symbol _ | Pmakeblock (_, _, _, _) | Pfield _ | Psetfield (_, _, _) | Pfloatfield _ | Psetfloatfield (_, _) | Pmakeufloatblock (_, _) | Pufloatfield _ | Psetufloatfield (_, _) | Pduprecord (_, _) | Pccall _ | Praise _ | Pdivint _ | Pmodint _ | Pintcomp _ - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ - | Poffsetint _ | Poffsetref _ | Pfloatcomp _ | Punboxed_float_comp _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ + | Poffsetint _ | Poffsetref _ + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pmakearray (_, _, _) | Pduparray (_, _) | Parraylength _ | Parrayrefu _ | Parrayrefs _ | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _ | Paddbint _ @@ -1336,7 +1346,8 @@ and transl_prim_3 env p arg1 arg2 arg3 dbg = | Pbigarrayref (_, _, _, _) | Pbigarrayset (_, _, _, _) | Pbigarraydim _ | Pstring_load _ | Pbytes_load _ | Pbigstring_load _ | Pbbswap _ | Pprobe_is_enabled _ - | Punbox_float | Pbox_float _ | Punbox_int _ | Pbox_int _ | Pget_header _ + | Punbox_float Pfloat64 | Pbox_float (Pfloat64, _) + | Punbox_int _ | Pbox_int _ | Pget_header _ -> fatal_errorf "Cmmgen.transl_prim_3: %a" Printclambda_primitives.primitive p @@ -1372,13 +1383,14 @@ and transl_let_value env str (kind : Lambda.value_kind) id exp transl_body = We conservatively mark these as Alloc_heap, although with more tracking of allocation mode it may be possible to mark some Alloc_local *) match str, kind with - | Mutable, Pfloatval -> + | Mutable, Pboxedfloatval Pfloat64 -> Boxed (Boxed_float (alloc_heap, dbg), false) | Mutable, Pboxedintval bi -> Boxed (Boxed_integer (bi, alloc_heap, dbg), false) | _, Pboxedvectorval _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." - | _, (Pfloatval | Pboxedintval _) -> + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." + | _, (Pboxedfloatval Pfloat64 | Pboxedintval _) -> (* It would be safe to always unbox in this case, but we do it only if this indeed allows us to get rid of some allocations in the bound expression. *) @@ -1425,8 +1437,9 @@ and transl_let env str (layout : Lambda.layout) id exp transl_body = let _cbody : expression = transl_body env in cexp | Punboxed_vector _ -> - Misc.fatal_error "SIMD vectors are not yet suppored in the upstream compiler build." - | Punboxed_float | Punboxed_int _ -> begin + Misc.fatal_error + "SIMD vectors are not supported in the upstream compiler build." + | Punboxed_float Pfloat64 | Punboxed_int _ -> begin let cexp = transl env exp in let cbody = transl_body env in match str with diff --git a/ocaml/boot/ocamlc b/ocaml/boot/ocamlc index d08a0b33b7d640ea98625d61ebc1ad8299480757..aadfb0859d585f55b015a88c51393847c4550e5f 100755 GIT binary patch delta 200660 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
Ai(AivgAh-=7XDxDAv1uD39T`SJ3fpkLm0 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 j{|PJJ$DXZ7Hq8Va{;qB!1FW9Z=UpHU908y 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 delta 198552 zcma&P3tUuH_cz`iW?-0e24BHy^qfA7uqT#$_=84nwJD? zDSMnwPgm9%GTCuTS#L-tS6;A*3f3D$axd0fsqyU?Jx$zz@~>#y219ptg1+5gm`bG~ zHZARp7Q$%E5kn9azF|maC#mWULp1epSw*T34bW3kgH=zZ0c}JwZ8TV^IV@aDVjmQ^ z-Z0>w9v!uG@(n`-$x8#RR602rm2>qba__eSu#E;2`bd7#9epY<-|{m z-#z%9rhOX?%h(xZ@FoQ8ES=qKc$1w|7Hu(Sh%kTZAJ*6!c zL+IQVLmTq+NJy>RX6V7bA!avNsJ_r(QgXK$rZILwY1nR<%h*NAsWv#+x84fH)rM5| zU)on~h-KeVQ?+3+yF^oJ4DswTRn!=Uu^EBa4yOA%FCN1F@PhuQ7xaQXhBS7SYW5f& zW!K33j$tO zO@+{`TFf|Ze;0Qeg}FvQX71BTp4$#Br+3aVe9jIk{mhWW+S0zy3@yh)6de+IC-B_QZXUPi29>~ltU#BU)urrPR!tfyt`obVnk9xySa@HfJZ7|HF zD~Ks85YuQ<4HQC}Hmo;wIEJ;nm-2YfM_F~u5X4xTQgz&Li?MX7I$;>AyANHPDDQfB zEY-fEHBstG!!VYil$`|guuRIkXpkuFzaZ`UuMO3#FO{4!{L1e4;pQ~xp&u2VF?_+Y zl=QQPKN;&!JrL2yx|8nkTy3O*0Dh}xCvA-m}+=;$C?a#*aKv~43et;#xQ~n zq2LP!hbG%V+xtbdp|lGIH_M@_3t+wnc}qZW5wtawLoNrQ7Yttn;I?~CbK;1{XH1xFX ze<|5Yp3CSsn|FMsG6b-77qnFUJpdfbn|Gn+?+scuj(-0hh<=<;DV9=yFbt!;-+KWn zW)mp<3gpg2j!H>!Ujgl~NmTfw;WWutFbnrj=wULSe>9nrA+8tx1ks;QM}9J#W>aYM z&%n}?WNbG4%%;-KW)M_?(!a$pfw4lW`2~FN6k(a8sks~@I)4R*pH|X;#fWSg75)a? zPN%ciP`>Fm!#MT~8GnZ)n85?A$L|IYo9V4Ji?01{h}Ar6ps2hqQIz@z7-lw2`UAKr z;x#OE=?`%E9J=|3LDD>Dpr8IUw51zI1ND^lr@=+XP^#lBRLqBSP~&)PYSpG-Ei0jS z{sb*OPra`iK4kNVT{Dagp6}y@7ih{gLvrOcz`p((c83ML^>wz8zWxhDvWPldNAMEO zx^8%yEv6r@gZ`G#=o=8sOKBGmUMAyB$b@Ay=_YoFQu_TSD7B1w-vT)~|27l^f8diL z%X!{hR!;kF8UEC)Fwp*&gWFT%4TGuTiV(*t$jpRZtda&ZVS=3i-ksauN)UF1p)(af zD}+#|PQig>(g-uzDq5rwHnLYJB>=&zJdmh4K=82DRHhZyu{G4xPH?c-C`TtaY-`bT z7(mkF7vlrXLnS&PkyR<%bixD{{JO7-Ksig}EaVCjuCR3!sTaOr>*+_mu!C)&s$hZG z8$6IG+aQ#(jnrfiF0f7Xks!=vo2joTjAC1qDp3ev>`j8ijHcq$KrPj7(u=gUuOPCm z)MOOO**2OUB22Yy|6iv37RPup6<7o(R0#o`5GwRw)wC#7c$L*qx><;&q>-XXo;g}A zT^S^Zlr$jHM9%vntmUb>P%cb@i@i;CCcw0V*PqOGQdt;)K8a0`>dit|wyRY?^&+;Q zL198B+s&&bGllBHgn4Wa^|c6#**i*u1&hSqC8JFk!rr6NHlY{QTfmg7ZNfCRkIZ%< znR0CaHOr30d7tX+!f;kg;SyG&j`m5yK=uLE$U;21WFd)t*eZU2$Dd{&skJCq#-vNb zg+}%X6}Az^vV%N`C(}Ti-pE(bzj}wr>=1@iK^q~0O8W_K(f)dWwQ$g`?~=Z#!9Y#sFQ;PVP7%6-wWlIMC=h zULn5n80g8>PN;_Rr_y*M-2|!Inta2wrtxp6V|%RU1!Z)5LE^ezRR_UB3*&`hQ1}p! zrs}x15Y!6D!jvFHK=tdGfEiDVhvL=D|H-}xy`~^R$bufI3hT@Cb%M}K_dP~4Q&T*; zOX>jf{DB_t03x}4I;d6HXm7DP?SXiHgfZpqF( zjp-q5*W7{@&{KE{T3<;|;a6yV)Bghk7kdhNXizQP0aWdOg!Rz-9`A)wwY-*8naVe* zUYLSTx!g-Q&lSM*Qo&I<6^gMd*QQmPdkY7dIY{_7#pvl!A5cXwUG5_&&;hH`AhrbB zmj*nE)RZPzpacG%2AqVTC2-PKBPnU=!VLy(uy+Pn+@$Qw0QoR8MfQdG38Ptkg+9ze z=9l>Tj%bI&O%`NC>Hr~*(u|T;ao#V;8fK-kL0pby3C);QdVh>(r<5_6+|2%92#L=2 z2SdoD8z3Cjg{xzye{XO=AG|gIa?_!-8z^*Pnh1f$T#K<&!60BdlK1&1l)^=Wu`1DY zb}*REN&O!HhsV&q2e4voscHxoJL>_+oPq~|v&JF9B~6?_e@6-JSvzXUhLmehOLH)I zJnhN>SP8skEEUIMRU;k*KXjmx4+>M+-E`N}Bf7#1p7 z={*dXVJ@2UkTASM3TpDbv$HSkf{>HPSp1y$`E}^7bn_udqHdJ;un=v&2en#re0M5) zSon`sP72jL)Oc?nyJ)oB&N~ZyPEgX=#fBNA1WIOo=oF&i>?qw zJ+#V(k=SPL^De^5M}(yC3=GEAaYrkVxSF0xXCDF4^re~?v0kQ8!lm&0ebA3?Rh7@K zADMF@jI(G`t}q)arrM%-vt3I!a>4KesA()nY#^r=i5l1HwUjj)gmN)gFj3KH!41tb zeF0~~(Lx$DPY}pJD4lc0V6xdt-56m8)8%j|spjnziMBEg#7QLfxd*+?>LbyQ=NFxp zO5Nb&p{OcS83kise6)?0&bWoW&`MY336Gi|LK%nnVP81h3)%=3w8~d;PRxExuySRT z6L#qat)7-VCgie5=<;KruTeC5EH!N>>Mr<5lF2nC5ogoAQ8>%3!NFk+FN&tL zM{PJa~#;3_Fr&_bTVSUvR8obkf@Y&@AK07ny)MH8@hLaGo&jN-hxiL zt57%%b+qg$C?&Hv^+Nxbv7Z)y9F4R5(}L6dESk2a_}NtQw9rLYgluDZ)r%H#M`A~+ ze_GIL<_Pptb7wnUc^d2T9QB_jbZ2v^WEz;Ym|CWR-b*NWI(YDT>OUQ#YaSh%4tAeU zk3S=1P}X#ash!WD>5F8ZfyxV%4l}q|Uq~Zo0$q#fg_%M>D5fAthh{NEMnq5)Rd-1e z%MU&yD$ZFDiZp*FW}Y+~q`j2-&lc7~SG_zNo98mhDH2B6N&z)z@@V{G@#6$nMs-DC z@a100Dd+TMq3R?}oEHQK)y{+Bw~kuo2@5pq1=_wo z@ori_Ul;+^6?u+e=7anVig^Ke-N;*wh4u=WkPPkBD@=|AYS|VZk0;Ly!U#%R4bF4E z2vXXnR-_&;g8WS-(1WUrg0wX8MIbzX0o1x`bzz{Qj$VLW{cWC-sCofbWe06rC=Ar> z6ey%ates4YARu;8Sm?{@%H*Z4XBkz|RjQT>^E6OJu_I&i z9u}ZyA1H`F8US6isvM|`D;2C2*+F_JqUjnjmg<{3X?L#x6@`5ah!Ow=M;?df6MRIXEkIC1m7Rl(Pz8T34a+2_7E~Gb92~QJ)~KQoBl+seu_$ zl|Rlu^;#u+wGbCzK80~OiJ$g`XOtJ#LdS$gIkF08nb(z;Dj>$zaqq2L58$^Ezc=>Z zx@D-nb<3?RS}*j{!qoWDCc*I#*EVlLIyHK6=s6asXH81V-`LV&T~zVvc~h?^>)(Q@ zB265@E>^4(Cx?HFfjQ%}#Sc*xnExU&k!ps-;+Vxm+58>S9K(Ji)Fm3p#AUk6Jey)J zX)Ki*F%6bSEKH*L2VZ5b=JMsZLUS}?mzW=Y*+IVSpYG`MXQe?ShB9-rFJI%U*Fr5I zmBLe{AnuDiWWMc6`izFD<*|=5U%+P5$As#;eS!O4i#&A1ZmlI9{(9O z$CN-(VmH0WYMkCl51XTkxaP5l-}1(@=XSy|Dp0gibs(%|;{vh&WQRkQJsc>mU>eE` z5_>`OToWWNfaaMeh+T9X2AwimkItcVP7f9*!|K??13lFkL`N`R01i|z6&l1oP%@Dl z3ndeEU|}$bGofjsr)AJITLf_(3sL(e(|r-x2Oa^B*Nb9TsGC!aVi)RRMBK#VGc;zA z{t(6XB!-9)&^XgW{8P3nhzGD3oA__$vEPxFs3efL;T$PbNvP;x;ohw3P(J%m%-$U* z%G8KtJI5WZBU+^~J#~(e|3IOM66y17T^l9MByQ3`9aYD=5e8k$sm6o9Mk9{B7>coA z=(gS(*%l0~wO|RH8oi#y{gVs*v2)zjWKI#H>P0))Er zpemT1Pnp5u(V~f+SDK>5$pNgB7aY!PESYlR#C}vAD-NQCQ2?Yg5R_tqnU$re*rbWE z{#>;|7v5kp>+0=8wa0di!$gyKlY6|m#S5%@)}74l#34{?^V*3Ubv=P-k!tQ`j`HHK zaGYr`YN6wTWFWqV2U)3jXpo)?uD1`Q?Ont`rJ%j&VXT*8PT+=+R4PdX&Uz$@anONz zJlO7Atb2JXd32jDsNXCcf-SWI#wBTCoa&i0m?g>;?G)W!|4M6v2$=&Jss{ZCcp@bjAZhpK=nG)UzE90JV0DP zoBE3pWLg@it?UmjxiSFD@Efu!--o_CVxX8yX#-H9exTTc4)Pf9QArvkHZthPRnsxi zgaDqiruZ){5rfQ%?SIrT31W&?(a?zGSDRY3M zg6G6k7Wss4wI}<+d|x;Pp+G73!RxTFZ>}eiNh9+IMSj=G4mE(&=M<6ulmNM}>XwWT_f$;2U9kj~T<)TLm zWm;XoYT~2J;_H_|CzpG%pr_nK+?JVwWW926l_&?$NT)iGqT7oq1`iyq6J=p!6ssNIuah281kYRah$0xsb5R-O0vjv9KxEJQq?9LxE8X z{T%Ur)cA8~4;YmB#MlbOILwH}s-UXxLoHOgHFTy@|B!J$(^NtV&k2p9?4rq~ol=_+6Pbzgd&FTLKE-r!5W;Y)Ay zr8oJ~n|34n*FslljGwov`-NJU)kBRAP1KRKD%45US>|C>8xopDwY^PxrEz1Z zD})^-^X|~u?3kBqkCRae9i^CdgObU!Co~tD`#*GkN{v@IjX36G0*dS1&|`5h3$qKM z4t9p~VIuVRn#NFxOta&)Z+sKVNP9liP3{Y!$7o_BV*Y$se0eL{(*zFZ#g!LYl~UJ> z-d1V2&9GEc<6dm*KPo@|H#9zg+it%PU5p!hHE31?#rl2dl0eFivZN}-zl7?|#+$8> z@i!L%4y8K4bc`8qwJNwvDbtzeMj4s$A9Zk1>7RqkZc1{j4_1)`FkVk!@1MkW10(?G^Tl$iTW6Ex6k5$>SI z{h@=%bsaY0w3T77@qd@BRaW;ktrwMJX{IC{Wq*ndGh1hYQF&e<#N=?(RwH!Yyz61J zVM}eWhs}i<6+u5ToeFbN<9X4^4XP7N1Y0VCUgSyxy3ZhI6NpNluY!zZA8VhX8bTcXKYe zJ~E5DyPHb`jE+`wj-bN%<{gwhGGq`nHiX0}wY|)nm@%?dl_*|?s36_!;!Hh`JolQj zf}>G`D@{(N&>t@&k?lbG@V468WNxRQHjRm*& z)sH8%cTn}GNm}JhhIu9nPVkj<_@{)5`kGh3oNK<{JcNezH76-c?l)^S#*V1!-(WiN zW$j0y3!O&wL1EaUmYSVPJ(*W(jD1?cmqy?d zn5nYNdZqLgbFS8y-m3IIZz-D1r_#0Ni@_NvE>yayB_oPtOe>^4;nLd{ZPYDUY9J9#{l(DUFxmtu++J)V;WfMnN<7&^t2J{%`Q#w z0AGItp`(~LYJvy((t{QBAFm01z?UAP6uxObsxf9G?O)#DWn-5(q7cQe&cUZGIdKF!6VB7`b0HuT*MJn@6zVF}~K1DlupI zjNHC-p3-oh&*(8uT(=c}!i=8!NqV^b6~iViS7*{Z@+ zWsW6mXaFq3s#GfU22ZJhQg06{f}wvOjwD%aL1Wp;#$jYCq$_+px@fTWA10WUP4eQDLEXL z9KzmEYEFfnXKbTVb|%asuua~yQhh4S#K^q`+oWr2Se6p^Ls(Zm?2Ztp8D0VE{1rA9 zbpvevHB29HQwNDHK1uX!?G%h zEm^o0KXNO~VcvzVxpmHrA2$c=_GT-->_A`k9*Tj$r`lU#B74VM<=s14zUR%}dq>NC z3R*4>H10>fp9tPp1zM%vGM}8x0)1oe~t#NjhtUl%cB;Ht^SVe2Bgj9b)y~SwS%?P!)-}3 ze~GL#jK=@ClsZa_+?K^{k0F~I2K`pK<9DRLGSW}uSsNug&vJvAPoT8*@F#I0WQm1p zg?+OZZrAsXwIudE?W=@9UFtKwG&~a3^jTk8=S!dSr8x+=K31VSPaVerV~xs`ahCIe ztch5@CAQr2InH%A0z}mx=Np=mZ;3B&><(i|z9orVlY#XMyy9dUG}&TOit;U~443dR zGcD1T*R)!-)qj6 zdffo%ad%M*NftUY)6zrtJ7B^&=QEwe{!mh8Swc0qgHNB0X<27kT*{f*mV6DR&9?NQ z;^!>+xO)HbIm>x1Y@Z-9Tn2DEKz4L{t#W0aWt^53D>(}->q0x+M6Z07e&e|miR?*&~^#Th}VvN>-0Zgk*Fv z6J-(BWXfz~m06H7x{Y-mgJl$X{c!D$WV})kVI9GkK{*s@P1L|JihjJRmtt~Six|wK zOJl6b&>Z*0Sm$Y>Ii|O_I&{z+M<-f)!5F$K(VDC?14tvK|0f7nY>8HDa2V1)Eg_M2 zmt@Ui7G-3TwGY31XD+LxRClsMlG)(Bz%%VidS~mS8d}-ODl2=sT17!4!|Cbe;5JHQ zA8Tn4bi%@Z)(mKZYT)1jj^tU^On7BhjYr%y#Go}sV%&*97DreVt;w=Zh3T_yfVH3T z^;@@Y`3cHNdHt10u6W)0PtZ}f5Vt`~yI|AcI>3*FSH~7dHiW_`y_jd=IU?0sHXm#N7e#$`WSZI3< z1FhXDd!RLovIkjvz)EIKpz1+DQm23LPq~APxDFd^b+Ke+@L=oD0l2;IonxKN?VCe^ z)x$Z~E37lU^Pu$;)+C$bJ4A=G?)6}SkUAF#VYXq#E>gpD+&{dKn*VP2amOO*Y!fR04ih-FwO<1N!dEq zI*plAeON-E;=DI*`mB@TJK8iJi`9pk9=CRfT@$$N#m(P$^}z2Omcj0;pB_R_{u$qv zoZrK%w{*PK1cN6k_hA{{9x~M)$TJ@JSv@e;L@Op(od9Xq1nUe09Vc2Rz^l|a$r?+0 zCR&HVs}%9iaN~~v4j}izGI?W?)q|>Qp0K{!K?68Be{n*H!Ho5)xw5Flh zj;rTbp$|SpB_)8@`7(^P1qry}tu3*xr_y4O>BF2ipv^xI)BA9>VP%Q6n2k`-!olcZ zu{BLO^Sl*Kx5Xt^Cl#G)1GDmjHgWe0T!7>%IWM9bd~MZUR0BR7Zu#(~r!mgf1=b~S zy+vQq6j2lf8^yD@Y41^FbCSNMV+7SM1bMhAZ;>??KDkwktd`(sfd;M$J;sv`INtJH zs$YbM4)YgTt#pOQJUn)z7?)RYb9f1(okWI`_LB85qu+R$a|z}%$=f!S$Di=VJ#Mst z`|T36Nmzo4r6{CK#43N#nW+AaSfF+ZR`E#=w4^jIvEnvqs+z!i4xE7HQtLPQ6>!s>#)XCZLOk$PVakV z>E^4X+;SeS2kw>Dy)gMkuEHw6Na?Gr{WJ?g=(QaIZKyaOKyO`Ttp<`XdC&9+xc@!x zgiq;a+@aTRwrUm6E7q;gvqj3_NZSt@_+a#O+TMe6aLPtoBAkO`Vr+}yOSCPO=+Ky@7450@ev$v%)Q`$_!Nrr8-MN`3(aEQuYV{@@>3O2C0I<{S5 z>ujNny+!8rwpZa_v2DGryQU_D{=OXCmOQf|d&CX41kKy(4uS_IQ2nXsHw_N6zrcIN zxfgQFbT|+j^#=GlZC#Jed18M~>lZ-bO5t8z{bNdb6A;yIvAL-D1Xkj=Ew-*y|0d>j z$XhkLJWfmF-b8NNR^)!>&2_yB*>>zrv?^VPR<)Zj)w71Kas@8;$LkjO#s|J*`8~OiZMT5wE*p{qLF#n`2)i@7`S&kpyx%A$KTX$nX zJ~Z4Oc!!Exv8Cdg?G(_gYN|G>`xt2U>;SNyIf;50ZP6*nafz3jz>ujr8 zER{IzaNGUBW`bt|@}p^C9Tsh2rxY0OK0uB3-rCt8+7ih90g4cV?D^29*Cd2er%7LN zeS+CG&W5+=jf2<>dU8}bDzia$hqK^2kaoys)%+)v_M5|_puopyY33nYfu@%)XZ2nQ zOZ!CtPB33VusA;jhEpl!Q`>i%-l6o|Hpxz|&mcAKrJRpB-on9>rJq4+^zl+^8Wry1 z{K`otox?qxdoFwoZpiXTuO*}B4C z6_bQNuTN6ML22X540SE1-Y+Desc~k8lE#ClsO~R6*Q@g3>T#cZ;J50>pghcIB^TT$ zfMa;50&r^n3ZQT}*|Xl6%=XS?J?fD2BvA4kN8@dgkOlWsJ|u};n)5k8mEsx7&XcxW zRSYkr7DXTE(>%(@c{S2;p8;Xu$+^iRCxv~ z1(#8+9SYVNQ0xk7>4dl`8A|^AGl0B;YR=eVHI<FQYR#)V;-7P1!dH~4^AH`-O=dOO z;M5M^m2Yg0AiRYF@^Rknj0Z;r3vo@{sJb*9~UbsuJ0l2;f8wTN8ox5 z4`P+1pU^A(P1O~Gt0`Y74__#l6=LlWYR$IwtZfxX23VONmAI6B{f_jyP`bAW4*(h) zB@>xeLwj`3g@QNe7cj+oFM>^f$7|t{iUDBg`~=E|`&|?1mz%D~2QE7{xyx0LBoz0Ku zeyYfKz_zOvr)jbG{1#w`>&O>)9B9%ab_Fr$A|F+7YW9S-|O z^t(eIxg-6#KTSupfaqXH9bnhl)0p)*O1Mn_$`_tMNLvE|aR}8YA$TwlXm{IA`%2IF z!m~W2!9jM38On2}MMLF-xy}=0j|&cOLK)vF_>Pf=AOGVce50H-+3}w4g3@HR&lTB4 zB`?Yzt%30rY;zh-XHR>(7SH56Bw*2N+uPG3`M8{8 z{4?Tl{tL$s_v$w#iQ;zHp;4a>vg&xIj#73w@DSpSwm6o@+gGyR74#-)Sdx-{xBU|h zG(%OwMRWui{OKjXf{ym9PzqI2M4Vr_+TG9$Q86BxVR*9rEqK8mO12Nw+<*#l1S&|9 z%kCa|6Eon(mzSaVaEa0uKaRTl@#9PX_y1DP+1+1$>whWd%ciFim)!!1e$8cHMq6EW zJ>q34_U~YBn$_7p1j^;1&h{=4wKqH4j~aCtlMfe&FpLWK3Kpfg3n)1_$XB4pDb#KW z4n}ek>ODbub@6x`(j1HPYgfCryc!CPyBp@6J*>S*dndwZ)LaSKmozRJQg|asr1=qi z@S%WPerg}HX@mKy@D&M$ABPjVL|>PlnjKK+vdsYMc0H9m-fVP+du!Bw+zv;(bUb8< zyT_hHS90(OH1#wyLA9N7k3F7J>w-+|_40;^7TR+U)->xmmr3_HjJ_f@h#JZK$jw`~ zxHL?}kN^EaC0DyxBAc(>y2Zth;G3=J3ynOa$nID}&aAztc}6UB-EeCwx9I7d2P@YE>QS5AI06fiz!dUZ2y&%XgGNdq=u6 z(o{T)Sz)^`>jAMCMK!M)GsyE9SR%U?Cb{Zr*cz z$JZDXcTf8Wg9fMI*SZJUmHG_(!f>4p74a_br}h%n|B(a)T)P`5>e2QB80=d{gNkrK zXsQAqWq$?z$zz5oCHuzRFakYl_rR&SWg=FlbZT1&jWrS2*4=h1js|R*6icS!L|7Qw z<2+pCMt5!KN4I?_b5MGoeKT~2FVrW ztyS=t-NYT7AG0SiCvAJoJ{D&O^H}=?oE-o_w6b!n{gS3bET+<0qQu>iZs$+atnu~? zx-#CL4@3RP3HEg?k#6FJwkF9$W3EV1RJsdVMfPcIkfoK85QXp($GHGQC9_US%p`lC zAQO*k^!I-NcbZvr2KU7RaL(&OYi6QpS2{A&o~Y{v zFiceUBG;p4*+nS*K!u~SLN?LX*|>Vno@GC&ZP(ogtbq2Me0$uH?#a{eERMl(bR8Hp z|2camyq0U8vmdqf^3~-$$lIo>bsIJY;!b9+eMF$9cPl6<>qUEn?p{<0rK*|sXzp#K zLX9_kFM>JJ=p7!UD_E9{plaYs7Sm*z~t$L`D1RCe5%2wx9-0@Y?l={N3t z+0Llz%XT@&-%ZvX&HDS&aOy9z!w|914tJMvI0_Yy)8hF@seL6Jn!SWs`W6(^fofcF zmfPbPP6aB(@&dZF+#aD6udq8A-uG2i*a^pjy7jp5b5F)GD7(@=f@M?sMk!V~Txs_N z;PVnwUa=oFKj<5uKa=Fs7^>vFYX6mW8-{$&SAMnYAz#{$>W6)4&et3TeEEkHNCr-{ zJ8>+k4%Fyr(;9mZ_%b)Gu`kAhzuU0ltsjr`Nyu!u3Fecv5bdKl)EOjt>_vF~2hM`G ziU&LSXdZV^vj-$JhEg_TgyQ*7H6yC*)*#r!Q#RQ*(lL)+rshr9%kp@Y+4vd-s2Hz< zi{KODc|96Dx7n`Oj5X2A%L4J*Y@SY}>{qmSZnnkV%-A?GZ?$K@)#IV9&_%{m$~OCO zGHtcXif5aB34id%e#N-;k&qcK+uc~0x9oad*rYp<_k@W$#kFfsr8}`YlR1sz8Qwh* zS?<*-a6jE?U%_a^PWW^$*^OnMh?ufxw|!h7ds2zqXMa-zH|9g{+lP068*|KMyAXtv zR>x*+x=-=0po=x5+o#oddD>xZxpOSs3R|Elz^R#6@Mlu?FZOD9I0NPx0qhxN)*tpC z0(Aud_AV;Rh;ryIV#B?Q)_j4Nk&W%(@Lhe=4yUCVe4!+Q$2y(@1W0>vTJvVi3Wtz* z(xp}0TFDg*RjAA;UH1mjv^7LJspD2iJhR>|B~o((?DNHk1-xbol@{uPXJJ@Q9M4jY zO^Rl-l|q{|l;Oh|DmmOCY;V}5IGEUDB&i>cfVT;T4%i{0RP#@Z zq-Quol-y|JD0i-gO{u4}9_c)L2ZxgVA897bpizTUd^RdU&-aon2n(0{Za;k!uzFIb-HoX zab7Iky}IGuF0gRFqe5fQez=;khGOISRI3l>p?088%|++a_z%S zLuoa>pHcc?D2@}iG}iL$W?*r!REzpC4@gfVC`pfqrZXL(3haGAnh%;yA0qwCrvcJQ zMiNwmC!QF!PZV_j-Jl-NBhmq;QnL;4;Hykq@L;Dn7mZ)`l5q8naG23YOGRi_riqNE z!=t4oh>sj2bvN@#s_oF$J9p5~5LiW8#;7!BepFh9x>b)#ixG5mtC@q{d;yg*w}kH{ zmEvKyx?-I8s5ujsZ`Wf|E^4=wfyg`(4B&f^q2kC!h3<}y%DGI-I~{|S8#Y$zO4`w& zKhIdHhc_49j8!K;eH=I)c};IeVzyZz;>O1%Co`)r!O-<+}thhmx{ zCGjcw>5*4z84?9eZyFqq=RYZJ;-wu6RH9W|uP%@xS~b8`U4e?IlIc=x<>*)^)lZAX zmQyIXFbFQhrNvqm*Ldun2zo3k!`*b!vr?KCFDa%xCw&;8E;=V(E|%3rSJI!CmIc9z z)vyTCw~}iHu@o^Cc2`e}#-xmUNlMkikOc+pQMOXShC7x~+)FV2q%MIuwYXG@)4c+G zm?>omR-%@tU%j2KER$Bk47I9EO4hAGE*xshz>AG#l2!NGztXrlSPo)dOUIW>V|AX} zJ@6i7CBIyX)8J;WtO9HQx~lQQ{ty6sR7iu&>rk6(B>uHnPaP}4#2b(uL3vLFJ5&k( z2HzhNahHIZRZ94_kCH;5WwyzutABhq4sfCIkR>a@FPpitVA+_qN@C_MzWx!Yn$Vk+ z^NJK3zV(h_w;|2xU;*Fa*n@M_XAp-sUV&Js=88PL0aX3#RjDiN zPe40}<;56N@m)>)`jnijrA)lL=5wOb)u3K{ z0_b(zQly>1CDWDFk{b`O%iaRzI^Tfc%U=W1+sy$39BUv?6?J}8dlrgw;~FVJv&TeH z7u&RO(TD zj_OB_kgpVcB43xvadQW<#*T9Wh;l{6$>i<`E9}H|QiSd>TH><`+#T)+Rjrd^gFiPWO zu+v2^bGm~9w3=^CbS^HgJ!Nl!q^R92#qk@^xQ^f50sSSU`F_kl+t3C-e){T+AII`# z1z66|Xudbm1MleZ6`H3&1{0fbN0+t@jP%28&XD0I$+mNHJrNI;ej7G~A9=<=cuV4( zjKj`$5aZ9@$(8cEz&&qCBh1ZrzydGIYRM7)%N^OjBF(}1jkDBTn)w!ZEUsFT!~eXa z;#FV8YrJAS6;%UOe{qz=(#dKm4Ms8m19#gRQ1%TDJRC+A;QqI`2HWP%R%_v&8l~Sr%6e+pA@zc5CHoAlmb4S7Hc-qNOqYM; zf{J%a(=-AaZnj6!)i^Gyc0u5Xyh=2w1e3c9>ZXxOc41Emp{89@ceq-jQwODPk+HP9 zfgKa?-a+$sOHQ2`(1mhIjtyovgmW0>e1zdVS7A%@exqVHw)s*IE->BigVxfP;~N_u zMH&P@Obi0M&il|^6;rlh6fo+IreV68hRgvEHp4&nhaAy#) zdn4Dyk3!^+;Itk~@-eUxj5sRA@NK&27&Q1th#kkUqp0I?9G`M&>2W^#8Tf}6Kg<6) z4k8}SbK}ipFn4YR8-pK%9200Tn&QEZqz!l9S>~Hnp4v40vHwf)SY_~6U?-SwQoaUd z_$9CYy%wyFY(IgPAB znspjP@|3qNTr6L4_}J7LklZtzJus95UoyRVMsn+B zVBVpWehzb+c2+vb4Kk>#KCMX!tqb}3QOc?qiI$`~^h)mc(nZD=QTi1i z=_ML{MViYN^LhCEF|yC#KH1a_9xXotQ%jVXAEg}(A5J{}lk^D={%d~5K?8^1BfsIq zyq#DV88_vR>YUW|cUWzfQC(LV--Eq*H;#jU;g+SjvuyHK!{;mhkcx4jMGbxpfMW}M z0a6ez{!=|Mt0&y*$J=Wu;i{CatH3U7q?99iJW9U`N-m)_S21Uv%{dse@*SyF(@=E< zUZFQ$m3r8C1%3&~nUiaE{0LS-9j^f~6_j&LvOs}){F*dSJ*RQ&DX-|QRCf(?s-PBL z*K6*fg1;hg4*N^G%AFNBu(hjjbRBVB^7v=fd?GeNaoymjrxJSTZ`ID=J0Ghvim>3r zqRkH(@JTHT%>3CFY@x1OP+BTz(k==D`Ro?uB5m-ed@d z2#q{KJ;R1mUI?zvmT2SysGJj^R?drtHDG>#%nd?o0_1)wp42gJ1NeJ@JeO4{)3x$Y z4ZJl}EkboyYwiPe!4m=(&4S*rv=(g<@Ii|p*{VVJ+Y%xrB{f)<`AL{HMOc)HCfUjj zf1n`;tu)J}C;)N5kaRNEqznp^Hw9pn-)-`T!62S;^J zyu7DXlM(7tBvRqwws7Kp9hdl5669PxYV=Q$`>{#|3lqR1`GO?+2?}ves$4Jdu53+b znR`oM!r$S*ug;|^t z-|oFfcEDc+0n~4N;~SO$HLia6$aN2z;uAaY1|N=(Uu?ZchIh(EYC0R^P-gakXEYLX zddgBb-_HQ6dUrgj6~Gs1TTj{Xuj0ul_Hz}wLNPkI=?%jFBlElZo(NPcw+SD>(Msj+ zX?S$;ANdTXHLI7r4nbt9T#le7RelRWUT-<0_iNziH1vHHzlpvd2ZiH}8@M?RGyZRB zYU(Y2!Cq2o?v*V;s!F|~Mn0g7>?w1vRR^$D^ zdWrJm{qh1mTdPbTBHsdXl<7HgD2s7%)ZmZbm~&ad!Q;EW2O#sXiZ(nb@6fz%rhEG) z;rujI9tJFYG*nJR&@xoEs3M7fRjVz2eqwM@_%Jyh^qoFTPUe(Y_^{j^LC29`h64}F zPBc!>l^vDC<%PC&7>b{+`{2j_I9AkRSU85uNvK*f5)`1iyRWC;hs&?B4OBKl=CTf* z;H}L9Y@W3v3> zLlbiGBt*s=(-F9Uoi<9gs`W*0iHDceKY|;HgQH}VT4MB;G>?+Ay^zi0ppTK~fsM+> z$KfG-4Q`~|qvZnRH;k4?d4n$G9-|_pb=A_&o$)l`QF*7oj^6!0>eRaBOx+eBFO=$j zfFkV7gT%q2d=h8DBPj0zP+^`tFZi}fM=4L@o8hL%nzk z&V3U@aP^9l2PcWGNOO7aPj5q-FT6j!9cgYJ^rzoKnsb#uU5zxSI)AzbY5aFP{WcP+ zrt8h4pU26%-aCAmep$@{+3Cyk?{hqFmoKk1!0g)?mI% zCA`&pz9KW_@m3r#Kj8a(MV3~1`>BDqdf!)MqZ;1I-l|5OuSjZ@_W{L>N2?EgMY#S) zGKL#7{9}FOE8^xSf8NJR;dmJr6&1Ak37PNh{|~_nllbm-N6p8dkTd>A=Kn)y|9@4& z`G&!-NBj_f;+w@o`1q-8F+SX?=n%zB0SZ3#)fhnx$(WI?Y8>_zJ<=-g2o>^HpZkh( zDTlY>-?;S;S???2hXa2e%xk>Wm%bu5#WZ50Y@Q-t>TuMTH=$MaW4=5t8~t4zCpHyb zeB~>8f|{Phzvae z%4aCrzz$+`8v#Vk#psKYHw}GoDl`P z{am@W-JQ5U3wZp-OU^M|%vMldu{>05icdVhgnJJcd!L66rjAcBCjz+U)^Q%>u}|xC&yzEe zm6L#HlB?&#UUTJ!-BeZzrDR*MR^3jV0F7@a{Lc$!%RD*yf4OjqnGdz;pRVLqcUe`d zxGFOr07JIThY|zz>$?aC9bOGnQuYhb0FmDi0R{a9d0`3%mTNP7vEUDNi;I$TKo}pL zU)ON?=ERRXGw?hYG!-t<&pC0Tdr@{_NlISCj(46mzX(=rBpfWbJzky(`{$$uPz=7g zePXjx+CoU`3qE_vn|K>jyby3+RLU00?**8@#kj4nBmS$5UIJYLufDl@%)jqO`Fn8e za=k1!;=;qc4ESG5CA*_6%7|qE1&Kwa@-p38^n-U}ALDM>RVGhF_Np@A;Sx2KVVC2x z>PYFYcDCv7^^=5wNEE<9ZS+WWD(cAmDP~hYz9}Wpg08L8{utm-+cm>f+ep5gF#Bw>+)g^yR3BFAa@C2ddk}&F9X0WJ8(=; z1H35R9&0MkF2opH17SMZ2}pyLvYj%VunhRW5y|I+;1^f(A=p`jp#TC3FZd5&q11O< z1qT2*zODacn^^w(ERZ_&vIQ!e4#@ZbqxX2Dbo~V6W#+16>uonw*>+IwqJ<^4>9Bkh zb$1<+lU0WfJvIH7U{P)y!KsLuy>sNJK4sGv@?nimz$P0)te0I>=;C-R@)dNz0_ygaOej0@l^lzpg=bcf?u7ibt_kbKz;^*SWuK7egB5Kj z<;7@ObyDr1?j!`+T3YipS~gJ~0v(@(hHickBUPTlyus%up$A5sk{4nEDQ6+$)>73? z$k_T*ICX{bm4u&OQ3sr(Ps`ah{y79c4*ZOR;ZF16lsX(9&Vee|QsFs(>Y|pF;TF33HP%rD5I!B}(bpyr+DO%!z21v?0zgN06hBWH)J^1(MIuO5q^R}Q3Kko*0A6jxn<4q>C1iz+U+ zUBs;HbmSs*2p5^Z1v_GejBUKPrjoMsTiKyezZ0RMn58hp)P5&V!#SkeCHXzZ{U0ww zLslC?jC>F7Z`C?n`SE)&8T{0){UAGnId(OGGKSa{tnvU#xdL`_DTA-bpD?&bqAQ7# zegeXL{nh^T@BSQ0fN-`~dqesPko0zETe@sj?K4M9v5%En4({0uA zl;=2jc4pXE|Bfg2365P=ABXBRVbGzoSE+|iFv`|T-HF6S?B*EpQ{vMeJ*|Ya{t%5z z;v~A#8a41FtFlIwbTDGw{U@oCFJn%#HfvN~IB_M@PA8r`YcxfZ30sXU??PbGFNude zS8bnfjE!X9Swp1pkFY>Jf?QOW=H^BlCnZfT6bFU;JVR_>v(Gd9F`~ml-ZkI}ZA?;C z=NY}bpZ!>-NaQC0u(O{_@nm)CJR_xJ7iKcF2+ydNj;a2r6dp;5R3Sg?fZfE_t;%CW zg%o;?a9kFeO0lsBm+Pk(XKKAhHQU=}#~35YERlD<5pEYy_x0-kB~NhBqdMp`9%;T%lSF1Gm0G$C6BA z93Fjit%XRB%37WQC$(v((&E1f=MzAr&He@JdPJ5xMrQY`X(XLB z_3$Tl-7&wq&kfzH?v8PT+UXdns@O3y)PBcEax;9!@o?M$uoSkG_30jo6X4A6Kk474 znN9SYJTFk0iWK8b%y91XuEyg5&eFa#`KDOcPB)ge3F3sivxjjw_)^V&w;kxcEge&d zMk00iVFDVOFEp}wkk!i=AAIhv?qy7i;s*H(_Hur2;zs)$NJeYa#n}ed5qC_T2VzMa+XLrepOU{Nn&VBc1l{}hRtsG@wAsYdNHjgxx;)>wu z4OFkuc;#rLQhhj*xhY6W&S10#5=RT$yDP6YR;ziVjDG5lF~$lVo7qm4{D`4BDVLR; z>gMDcw~`{)t@(q|E6!8kHvL8J3sl~8L%3#YD+X&=0ic&c{i2&F;8yI*- zb-az?>Dv6I1+pXmHY1(Kb8j;&U1PBH=G%1XBfl!0dArfaIhz0q=N03d5J(}8y5_Wq z>0kl7GJZKfA^v853U){GCrBd%afb42VKj$t2m8;iP2SCPJKkX|5~&H+OvvM%Mk>D> z?lejR{DuR3?lOeUX2GOY{aug)WU2d%scPPQBQf~9H2aOn(&D~Eg64(cd)S^DjJji2 z%VkzZ`MofVf=k$DT6|r2B%UlSrWVXK`tkXcdkoG+eV-`p#-g4$ahVrgOZp~fFM%3zgK-_P;t4_|>qhuJ5qekz# z&qxuwNYnjBtQLzxW+Rav0y0ihm*m)Z{Sy`~|3U^?u)GjVSfhp(8iSFGA1X8kaoJPI z{E=>CA$+x<$oNpyEVv@h<^`<(ty&Od!x#Yt3yf`mJm?jx4~&@Y^38H_1;qT-NaND~ zuaJk^L|B1~{uMrUyZ-GK|J9f&0oS3qBx}fGV+FLUX0dT^82-GT4;w1x&LDXd6cX}z z7wM*r?;@f^g5(v+u9M5?m3LDH+C&Ob_?3qjHzk`a1~t&!O2vs zN{xwHjr>0qb0kXUq~i)^VU0_nG*3`g&MEDQy`an}locz-bd{-2lpD`-*`$o8xm>f7 zHPJFF7kAkz(1+VCj~QvLJsP5_`jY#q`7z_h2wiOlHTyIvNoH0W3+2;Fx1gDtpq{$|dJWQmi{^gHa1zbe*S+pFLU{W_I-y3owNQ6`*A^@PTB$ z8IWsL5w>hL2LA>zN&LNqRuRd!P!{mva!$o!NEDEiwfsMoHLy3iO1B`=c;>q389$0V z_Rw?iGkqDPMkS&KS8g?md62cuc$Z7Wc0GU>wx20Aa|5)k{&`?4Xe7vW4ZDq}gFEZ* z#)b$WJHFQVl6Ua21Ql0jtV8*Kq0ShS9MTU&W)-8>*~k*Wq3-`QENybpDvv7q7A}+j zPh%ssRUP%ExtTA6$Dm=(E3l6;ck(N+7TK6B+Hdiz(4A-8Ew384%Az^1!*7t}Ux&qU zTeI637Pw%SD`r<&bCblzZ6N+5X^#=fA(*<7l~W_wc)Z6L-j?-W^$vJ-w$4|WMNC6; zy{2_N8;suguE8x!-SH|sRqv+uzMANDw>209^{!E`zGvLdrT_cJz0|h-ePg^RxE(*# z%RBl*`W{&9AVy@>fGCwy;Q+NC!sJjuKV&{dca2jm8?yXr_%2g5eZ+Lk+|0HQz4mgS7JA%xKAL}aWmb6bUDn4&Z{0@6QV;o-l7{q* z)VDF`-g?RK7mhpkW2Oqy^|9`Ov!A)`po;bzWA!(YYIbgWfB6$^1kXJH26a$T2jF2c zf<#VVF;mJ9zyRg8b7{*Bq~rOSeTsz#jGZw88S?K8$sGM3Ryb2l{|{4`sSf-H;dPBN zJ~2KCyYKu`-^HC>ZzFk8coqLS3wwV+WSjRn-75?VJKe&C!^rv&44@ac_Bp~OYG35P zq$3doB=*D0+B`u+?FCHsNc74VvEow+~Av3DEq8 zsabl~?`47CmBpRCZth_t8;_=2a@<&>mFtsm(Y@aw=~e!c9O>4cG)A=(7z#IMsH3fq zE5ptG;lv8ek22GY66ROLVG)Idot!l=DnN*B@8dmx!>BHSdTLK}C!rgH>Ml%vd)m z&fH5fMfXT&v$UNg%J-Si3Jl=Kd>rTzW2Ad9#pK+gk2s&w>>W!cf|CBcdqOo`YT`D# zl%YaJFEz(_D&^4_m2s(=C?{U91@JPnID$}b%w>MhTGx|f_6_r_bNdfAG5j4=v&NX> zz~qurelPNU_E9$H*3RKPo7`{NVAMFqyipv;L-WjDTCw>*RkIU&Z}aG65@+R^JLTo* zvF237{Ox0zM6REYGhsjL-6PkSZ?@H<>Df}Qpmu@#)+AGfk;LGp>&?$1AdDk!VjVWP zIe#%phQCp@OgC>Qa$KO_Exg%W=^;CmG1DBxQL(?W$8By^h~pHgk-TABIDr1PD4+5! zZA);<<02__B(Fl!EE6iLN({8Wf?4Kp&$C*ED_`$K2Xaf1%HS4rZCK6u>JdAQ<3!`T zVb{3ToDlY0@JS&zo~>%%t>)T@ZNL-pmbXSF5FFlekBKT+VCE7R?wQS0xN5pwcBqEg z4C4j4q^N1Pnezzz=J!aIdApe!@gjAcr|VEdZZq+&-cE+AT`Fe|g%3xe$!FhT7L%~4 z;STdw5;pPt9S;ec?gVb@)Z{zO9%27vsC8|8s(uNSt8fKsNbQ|wpRkwDSGRoAv$G^Y zxD!Ws(p}~#g1l$lWnNDbgtzW8H;~|V&fVrPV!Y{1f=Zl6x}L_n&2i*F@XRxbTAOQT zljgQ+E}-$IDw&7D;qY8DSM`}|rm~lxUcDuQ9;^1wm43&g1W&t{;lCrF6PtDqtf28; zGdf;xf@8fyRwWV2>!r|GHRN7Ct)9oC{7YK6%=4~XdY8{Py(IsSnQy*H5~c(5%|UAK zJWj|?z0aJ+ab7L=$%FgMRL=C`w<2flL-&ISAE{-9v^*&fdwOo6nf|*ie=LQ*QH$@# zZcy-mnXamf%yfde_Z69ohc78JBj=hwWX=rx{(SY) zGPAR4e#lJy-N`;0_%?e9sCG=XETOZNOMnq_A}lc<>$4iS=w$vOzu($r5zKr!ELGChhM%XFcfxqHt(4XW#Vpht*U@|G*5@=uM za=!aNl~Zn}sTIpj;(}DwZeH$uls1b?rQ!AfOXa0e;pN3t8>T!fK$iMtOk8#`z}Duh z2mf=F;Y6OBWOMaLCE=nNQDQzG);3msI{^Z6vc%lT>0+TqN8yl|U1|XJ`6~9d#1HyTvO=vq$pWau!u%-i{R@E>42wRFqj} z4hiFUmnBO~5+IEOFISf_&ns4ha4kkPt)#!TU_2&!DjB49mx0vHf1vEfa;81*++jmk zHbNc3m3cRY?oe+tFms>jVbXHxzLZE%$!{>ng)7ZI*t55<1S$<_aRw&otZlrxah3Us z#|r$;e#~5`8dn0$#9yvq?i(Lt$sFZ8Zl?V%NRg_bo?^M(VNL~)!+QLIiiWJ_JI*Ov z4f`WPZZ#9j`DCkUF1x}ULfCiHQ+&3vg85AiJg=>Qt94afpMWKHQ$wFHWtA-OQA**> zG9|KPU=@6Th|7=B=kU16195^I-z8 zM?Xm`m#bHwguD$x5;rGu09aJ2Dx8LOEOUeD?I^iRMS>M-mMtY_kdJHfMlM&VJsYWh zu!`Tr2uQ3eBPia)_=l=0d32?UdWzW_CU;EqQ}D*&YSmM4l@U@nMWsK*G^~CaM6;g; z!$+!FPg8!BTJ|*6k5(t1rrYeI7o3dT42ack2582pW1DG~UG!VvoOx>d7IQfP*LrZ1 zo-uc@Sq0qAcor5kuJtKfrk(`?u2DucQ$YCCLm);dvHes>*WB8`$E$&xIT{d!uY}z4H5d(!BQH zL8CLIxF!T_>-U0-AG&6y`f3MgIxEn0FE3+VANq+}E3Ig+3 z@OK6^TV7&we*p&9JS@sMt8C`*s0>y7A{a+xv>!4e{)SBUPL^=xi@aRD%N(wfu8JbWb*Es)8~jHNtnw}-m$_2SSd?0tCw;(6(EWSm zH=`N}*P=cfwNpPh9DId-%#^u=oStAOd!m(4^XpPOE#?ahOu?D9Oi zoOBFFf!8$?qr^rk0KX&v3CI7*XtQ4daUNECUI{JFQu#fGglD>z=6Q^A)ThndgjwaVugdC&CIN_l#GcSz>izlTmgCM&rJ?ScziaNl5wcI+YNapjvb ztT!o9As^!@e-l`JLbbdJ#II4;?xit~#@%Z!3ag4$&s><;S>?WEZbMP1c^AmA-)69D zRnFTKTPK$uYSbhWTvneB=Xjd8K{rAV&yeHHdY(Kf4|=Gjmq&S{E(}ic26^@mB>LG6 zw7W^|YXE+qQj`A$&_68~m{tbcGwc5apZc(YS&DwwT<75c-FHDIVo2YE4m_($-eWPU zRnvP6wMI>UpDH<_LO4qHzag|+RmH!}VPV^X13CF`hPqvi{=j@1k^IC5Pz82rO6k=f znybThKyhD$L+9=@XR6~L(B|HKX8murdl2^4#JuhPhy`Gi=11m>o}H@VW7cXH`wCDL z$)zfnf5=52O`xiu%_0?s!Y${02lb(FKQLd5mz!!1f68B(!aEP1W`AbQ0gyQR z?$~g)X7c+61a>aO* zRpD^qX;EG>sxtN-2=sai3c7>9xi4|@XuUenL}waQ%%>=0|5ACMntdbQdlCXmgBub&(*ktzVhR-j;r&b`-P5*&uhsov>bwWP*{o2emK}o! zv;E*0s$`KmbPU)Ij;-f=$$izdAIwZ0Q75`iYwPG{1652?JBgE_?lFPE5U#C~&m$(U za2wXP;)h8I6b#s#_apNV8biok$8;VCOuzckOlp01W{&i`jN@jX)^}&Vn|<6I)cW|G zPttz>G5&}XDDxHS+7sr_Mg{7cgjC3%gj9rvMJ&>Pd;rS z4GSZbesmX?RUWG^%{6$ei4^Y{W~J!{vvsegTo*wn!mJ@0W%hPJZ=5sKPbQ+0$R`!WBG6}8@HlTSC&x+7koM{JN1BXuSUc2%VH z4_!W8&3>jW4!$Uhz?m|4eS52oOeYyskTN>xSs{%|FLiQGJLIZpE0fvHiMAGTX|ajH zZ;ZB*`0eRv-4z(GB>f@l!oS(3k#xm{*t64#GuhnH%B9vbsY#ML=?AkrSyO)p$q#kX zs|a%9MNtFKW8%ux{PXn0#Y|^-JI~V{IYNQ3)3F?Q-&rMjS*0@7)oTT|t3)VI49l3k zt|MCz#zlr368|YU*)2E`H*%GkX4j0@N{})ClbWmFZx>nGSPB>W1?a8yvfO}^*Ls#X z(4rV?m`u+9b3a(DrT2ryT4P%AJA|~rL9Dek?3Y;OTTc+>$~bEXHR`QpN9A{!>L1Uj zNr2Lr+E?WdM8+tNw=#IJE8g15Wp-yPR%hhtOy5I@J(S;KeUkAYVRk+ve z0fZ=0vl6WDX<|yE)mP&{cU4mi0jy4B^@%DzYs(n9;c$5GX3t;Y6N%bLZCG!jfSfX{ z6fVi8z6>=1$pSUo1PBRwAmh_-R+EufG?CjPk}k(A6JKL3r7L>KskSvPLPMyk+t8+$ zs+{J7gR)->P~2lvw~F*yoORAwHKpF&1ReRToqVek`W*FH0~lGBpGDCZtK(FLFYG9= ztW|z`RiO^}tuYknnPl|}mQ!~pfsqFl1+ZdHi3CXRKvk~20YbKSEeKbe1mNpB0q{Us z*>_W(Y>f(5QI4${TT=2#2vNZhD9F-etDiQUcO~dHj4iCmmQ7ht7b`{YxJsp4Ap#zX zlSJF;Lf?XOG4par_~tI)MTI)m#TpiNkUZn(IbD?fIP9_@#R?DBpF?bl%6we(ocmEB zD^siw^&7UrPmExL_LQh_TCPa7ZVgs_PL``lyxY~xJW#JWqUd{sJ2 zP^J!~Yv^lg2SOISjw?HRB!?wcKgGVhN!>MZ)GZfwx5jCo33CM#X-cDe&D}Mj$hp9B znU@n6Sl`fb?uZ8MVP#Wy{|xKaVA8ahqeQ^hW>}+i!XdGK3VxiyyyTuxZOE5g^yp;^ z37ko&YABbKaNX_~TK|w%{%*@G#q_d7a+#e)4%h*`tmBY5;uC1-Nmd{?(^|~Ss%qe% z`SPBmtI4$Ds5K_b>dmF+0Zmy-K9nk4su(Zc;XM}#U2{Lb$XXB;g#N5{U1HtB0oF#5 z#kvo&u2(l&0Dk2l>nIOu8W?YV343BUXM@hc2hG{mG(A#b>F18L;dMH@FvpS&Vl6qk z|5zu zu*1n4tXS=$tx!e7;DY4L9%cnHvT>}{o&MP8hg&llj63Tp2CM7pt!7_k&2W#8v^KZX z4pa_r_X%#Qz-iM-8}h|ESqz-2`@UZv3O>x;f8T3FYIhKDrA%RnM=wCb+rd znGm{GG$B;H7mc<|u-b$L+t9l_g6o$$(W<72_a|D*_1h>_vV^6aH%SkVw#XAZ3B)aO z-=Adt==mRT)buB-w`M28PtTb+SWJ60n}BRL`+A5u{UQO~7?o{6#;YYw+|hi!ex3_b zEH`_KwatUpeeBQ7A7FWdH3O*Fas%_lhvdA1_}r+mTs%Vq{FE71nx2CpDtS_x2|ABrvGO4w||w(j_CSc7K~#&X(E&E zu-54ovPHN@^738?$r@=zKR?GR7Cb1q)0)bNPuywgOoJ8o2vu@ly~kS9Msv6jT+1|H z!(UJSw05D2?y~~BV?@k91GY8yS!1a;;(kWRjNA{Nhr49TLnEBq9w+ zu-{-Zzi72LsV!L)mjGA1TlO$>qen~Z#KXbSgr@xr;e?#{Rpe46J;>p1erI+k5_i;6 zjg^y^GR^G*tdJcZB-xYaQtL9k3q-Qc>j z`Q2L;ABhX!Fkl6+ipX1LCFo(q5Qj{tdqJ5McMd4E>R+-s`IMJ!UP)Lp{pWL*>>xo=EpvWj!vdBVeMUSLu&J`Sq~MTtzk@0TB-4hEyWtuhPs? zi@ZqJk6He%vX&v{swoTiB3Pfj3j?r|j@0gK|$j*SxWFhHrRHfdS4VG~nuP@Rwqp!Sq5n)8&_` zcpH&w_0wpaEbG%COOYz6VYG*B66bq2BPOFfZno~{qDk4o&02DTJ|fXr8qjI2n+smu=B(_N^_<3wydZu?WYv0M7?i$7ig|^ti)SPHH6Ecp@Xhqi$#&QqeQk z4O-vTkfQ3kYr5rm*1A3TQOw`jw6yeD-C0e}^4GIRtnpc3f?-w%32mACt!y=KtHxb~Hk{RCS((PIT46(I zV>jS7zJ;tL*$L;+_A}IwCM~sM8#;NEir)^$K``2`F^vW}SmgoCpS9c3r~t+1co6qI zLR^`OasiMsx2tP$R6~0;^aT*$88!a}O9e%$n#0|(g05@J28{^>dCt5@5_|vM`YM8o zioT?x+UnFuK#bYBD}vCTeXjx#ygTul^|J2j?-K4olz?VSU~gUv20Q}r0g9Q>vBKTf zYF>JpWhq?bLqe#DgnZLdT=Mn`QFQC}(rIoFyoG+RVV#(>x2;IMlsT*}Q2ssBvHxgl zlybgH@1P35x8mH|x2@EG{6%HaUfAWMD1Jkre%^*4$Fo#&CVAkq8v+Dc1n6n`mrz2k9|Qk-=`X$2uCwq#xSaP0PxNG5Q8)?O;H&i zX*&38q;h9|1Oqq=Zx#nWz_zrXnb#@~4CH_||D2=eh^j=)=>ZU=lX|NOwIljJ)@E6& z7e0|ia^L?1*_vno-t|38-{~X<>p`rw)9hL37SwtCwbu z;i_bE*Vxj`o1m?SwFEB<`1}#j?SJC~9Hc9XTgG?jtRdi60ROG3;5eFa<`0Okd*37f zZS5YbkNaV>RVm$>`-7fQ4Cg5hj}M7)XqPF3?RS|ud420LJKbli*{>I zSlV1KiKjU=2m8YyK~J4_I>xO!g*{A0mE)i<{-RAwSn^`Gr`zv|+Ltv1o*x%(Z{~Mh zxSgW0SUgP0s_Mq@*zyRwk8UwZWz8iqa%FBfhr29er(T4eNF0e+JM`gU177Gw9E`E$5UZH;?G*Lic{YKE`VjB)?K>#(>iPB!#Kd@dkalVHgl+_D z$Jzxl9!9&sQ{fJcXY5iF<8m3-@Bo<%SF;ylZ>cl_&B&ln8n&QWvS}~UixQ_wY=}p# zX|Le>Yb-k@Fr&fVuC(lQX~wdDAsDC5wuLY0#R;5u<=6q&&N(zmt#a%@Uh8unyG@S$ zvh)%b2}}Abw&e6ryLeS0XRJoal*tOS*~D*)VOCfrWzVvcxHl%*nSty{;tvpUUi3G~ zVO7yAAZFZso&Z%jzV6j1sQR%UEVrl&)f%tcl+vM0Y zcs2P7JMA0`wuoo)FF$6&uVmU;lPhiEreGU!1y|bp<@Z%0Mh~-XkFBb@lOVnDA7EPj zFgu!;8ugA2(=%Q(Tz{*3_W5vngI#Nc9S{)*sGO&>&|`NI%9=ZfeGbJV>_|ewR*m=_ zXr#X*?1`Gf{#MVXJH4qHE=>sGzq%x;+N*34YVu~=mOhmvFh4~j?aKg`T_bIRFM~Ac z;3#{Pz|m;>7VrURUK_IM1VFrEG-!s?aI`iB%J|B!w)26vDOcO?{0?u<83X!pm|d>@ z3GF232~3N>1Z^P?YNBh3Rg3fNaiQPMd3L}B8q1MH5MA#dn2IuG`~gyVcFMQD+Q=EM znjYwduHLPi(B7!AHYs~m)mTQSyVP5G$JrbCF2@fCs6G#?cH#Uk;pKO8K=l4`Kzx}x zHck&k=Y`V>LiROwF0fc~4f8;qS>t>?%E#Nn?H?L%kKv+MwRyZfM6(Oc<%n7HgNYL~ zA)G(KP7B(Er%d(tj<^J{^r@x^c7oxjvb>0|kOVMfFlGO0)>`6g`Z$nmCZ22lO!q#3VV^A>@ zS*?_SoU79-Hn4J@X{oL7^1HSj`W($6)g!fr`x|*m;(jPjehYkPi>gA9Ph!pAslq(A9}7 ze<=k#NsJFKpM;&?JB37qg~^H0Zu1n_v8StBaf5xAr(-uJOq}n6-bw1M8~e0VtJ`8z z$-K#)DH2r0U+hHya@VOa6P;{GWd0%i35}HmO98O0n+Ea$Y+r(`&C_i0(BU^5rm>wu zt-JEY_0mSo-qryp_;fqqiV578UxiLtupYKvT}5K$o1y2x#?2abuD#j5RqHHmR8w&j za%F7WaCP`*CMi%~-nwu>n!FjBh|HeBY``VPcf&+JL&KoXgk#SH(1Xx5V5Z%#)m3)J zV)@`qjeWZKPKr>?v6=Rdd{y!?zQ^!e?87{2xy4S=f;sUit-MB{PUa?n|5>*}MVY-@ zp%%FFZUtXjscv$CeJ^));{;<0G#%6Agfl2O!>&9H??`h}c=>EQV1Wq`@~*$9GKY*H zX9fTnO3|iFc_ofVA+ho=L~1!0Vm5q?P93_9Zs16Li6y)Hc6$i&(5~B|0qfMjJM3q< zn>`>c0aq}RP|~F_xWeYJBn7IaYg$nJ(og5jv4?BOGgb2IlD1*A84e#fGDnliksT|&nhP6-AKasvZPh*YKRg_h zJ7u0-%9QETPr~n_3U7miADpzj%6`M*)QI`uF9oz%+C${VUi!uJ_aol$T+64E3L%1E zU?CK{zCS1@-1>LKeO%z;;wplis93v97j9a&&+ zrRJ)IKx+o4W+C)8F4Te*J;rsm$j(p&58Cf(#@vnY7BLit;ig8?$tTK}FUAIXZ@CmE z29C-WQ_I4|@IC!oGo1z96V&0rBTjN5Y05+PVcmJC^m~M7CoQpe)15<0>>2toI%j`B zn&`v!jk;-~v`65vD(=}#%1=n zurf{`h>tT>?j!cf2(b@i3!cy(CTJ0W?pJU~gh~P^W|{z`UiY>~tz2 z6@+xLcW`aEv=W#ywW|a*AkYZ{90sn1u~@6z-OWtz0TU#3aJi86a6SWxsbt3RO}sAD&NIepU?Y<%T*WYmSw)N%C5 zql(fvJ-D&l-bOu$#=KW{Jyp+Nsp~xV(y-DN$Ka`znr39J0xv*>Ra$hKyGoNbe23%= zlH8~nw{&IC=_*ZWTUO~Wx;}>Ng_F50fK&X(ZV>;+v}mG%zwmJlNjhI?_2UToL8K_y zh2`h);{ZLczh|``{*l%8S{X})ou&mOVH>Tag(VrRJU7XK z$rXs3q>+6>^Yex$m^0ejjH1(T4d4yztwHj9Wex0H|9+Fpu1e9r+?*^DE7W&NmUQ8ehwvv#bmy1mL$LtL=0>k0EX7 zOz#d@<#DiJ5t9C%i;*_ zni1?N_S1ULHVsQz+nDx`)V14~n~&7|Z5js3w%LQuvZdyH z0{v>Hq^hUHBVeBoP)Dd=z}|XCv65v;gr}Iq}si5 z!bS?=3bng5ZGz7UQfqcM;Uz5<%zlZv#IgAjV`YcLsejma>2h;smMJF<1NvKccKBu1*?TE-s!p>z0(v%Zx9^_-4Z`xvy2a5i^RB>! zVvq=}ubT536I`KYZ%vMMt6#IR&G%C=djPKrmAA+KQjdY@NC;y(-mvpkc%7_qOc$>l zocM;FQrg&;c*tWMvx4XPO-2oSeN&VTHUG^ZQc6UMta~UjMQp4r!ewgUUVEaJWFxfC zSXJ+}-*ZHSx{1;vE{h;Bg1;O13kY^qZ)pok^4l=r3bp-h$dG0k#3jCMALY@3ciML07i@tiYZ-&4$5#D2t;eqdS8(=@G{v!6( zSH7?NT=PEb9+WEsWn5pxF~ zVlG-aD)>NGup_C)pJ z8v!`RK)z4+FL|G4NhM!G{E`;1#WjB)A6-uH3Sw&EiikM2`c&)#VOZo_wDKBjIM?I5By zD?f%aL1_o2`#I(ToT@#Aba3=zZHy|q60tjTzgGM7?>qL}eL9NxA)1|l=sH!?;v|$5 z!tSJ)zD4fu+CH)TWj5DK(GIHR3beHR1IXIz)T{$w=Q>q!z)sVCZt><1A<8@=O&4yf z>N>EKtdIk?Rr-JIuYO18PX0vbhN>w^v(&mz>>;g+gb3XMmT=+|d!!blF5nRfL$;7= zBfk+#NtsLTa`ax5f`iQTq)+LS{>^@cV~o3ae+LNir!qb6tDo8(B+`PC0y<5Hk&sCW z`Z?V641kG>jewO<-Wyn}p4dHL#|gp-am8$6`rMutz);Ri{{pF7e~c{B4_|5Ymsp{Q zjQCQE8R&1=xTHZC&R6z2`TZ4CMWikHCp<3{{Qxcfj^pq$4r%f_>yXVBaAL*n@yh!( z-M>P9izwgnwFazE7-b*_17?tKG|`&%jTUV3ic^8zZ-6A-l$tUl33Bog@DF5sqopz~ zes%X@EmqeZ=BvPrXwXYn$!ifIy+=eo2%t#*5zL^PF1;&t3`O>+{Wib}zO#pE;v?8E zoLu;1XZ`{dZ_0OC@S000)}W3t!g$=KX3?6cTl_}j{)=)95B{&ly9574>OJV@eQ);? z!G)li-oa569mm94e+(Ugprs!$g;l7YKiUts!b^zs087W2@%=xdnN#w?)Ii=GnF{G! zYcZE%W2F~3vtvu^uL&=$zZk3YPiIEWc>}VX$A0=9yA}lJXM2%ORjut>}+de#DT>?bT4i%+qp$R?*W51n-yv?$m`{8G|sxU_!mR})SHQiPM9){<`3X^jF$ zP6KmDWs@DN{O@v{&1Mpr7DR`;^}pD62f|*ua?E@nc#$xQIKnLpZ|_R*_*W<=g&t>z z7CzEcOLX^Gwj}0-IfH0~V;G<2GO&#!FgCf3Bl^GY?#yr}pJ{q4+!?RIu7^5uu@7J4 ztwN?Lp;I^E(kbX-yTuVsA3<|%LjJI=Bf3p;J4XZq4j>iHyQw|rkRI;f3}_7kA=Pgr zB`Vxykxt(;A4df~ZtuiuxazN_#ACfm>fSc`oXSM&8Q8%QQ6QPJT$Xik)_8`foR5+8 zDql6C>HFkpr`5#vO0+Xhj{{ZCtC>qyN7_X$>*&D4++`gdpshkRb#f9AGfs4J1_cRy z$tc1RYM;V1(Aa_~RB)cNldkmiIy2bDnKzN%?eIE6nHs!K-=LAEY6wzeQjD`ODB>JB zALOWwaaQR2%SxLv$fCOvk8Q#Ej>L=>y+Y(s^DXYe_)f5>h@7`UygCx~8p zt7mkQfdewbaqf@@4v-U+G9cQHlkhua%J6|9I{pV7^*I@|SmAR50Z{E#&Yfr%^*$#+ z#5ubv;8I4!@H?VRVIvld!V>%e6t#bnqXYT^M`#S;l*7GU99sj}S+-HtIMfJtqf?w| zGVOCxsiDj*OLdgo_Uz`|z->u42QQ>PB1HHyv5uFqncL~7cixG^TqI0U$T6h}=7hxe z#lSYQOqwdVz?sSS;$UMxF|IV^Ew^hAXF=;yuRg_@@#rlX&aG@UMkeaTR^!<{ogQp8 z<^r$k>A>7o-i1!@7?G$K1e+DoN7gRM_+8tX+?v%FG8JP~(}j+>OGFD$^&8rd?BXZ# z7S8PDB(X<%SudbBPaW#ze5YaM0@d&cK_<x~1O1-yvmG@Gr3<3iN_f(bn6c+s4-cF)k2hM0HPD;>GxA2@Z z!PIv_wX4U27`5}U^Jgw4h_IG#s9Ad+ntMCZ{MI}-v5zB?9v-*7i&tk?_#E!Se8rl-Ox)MS>Y|0=o<81s>7E!hEOy4tn)`5|WsGsir=8mpX&> z>T_mHRz#Yry)^hq4>~I1SU}L!+oHUe$>h7;FLT}z>EOfw!ID>Dr(o^ZjD&{a@ zXZ2Gq@T#u{IoqhUDMzICu?ZnruP$3NR%|#HZ?zon-LFN8fjN#CQ{_?l?T~=V94B0l zy01!(kApwt=x$QsF#R}{IKSmH&8JQI>qbVcx!i=`&3w3%Ez zhp%vsYdeNW<;kjOP(p0^5P>`#mas+X$k5Kj9#j+31OshgKew&k=Q!tjc}rW2Ow6B zaK6*fDHKc;^pKE6Ywv+K)mJ%zU2ySwKzUa|i5joc_;cziP(@4n9H_R9%~8c8HCAfh zM)gPyV|61TGzXP4isdO#lTov|%$2)?>ILp}(;+EYrZx}^jh2w`{Ag!~z#4Waa${fZ z4AEw+Y|4ZrYKd|ftCDl+5{DE;>r|J)y@E0$g;vsnxl_1FZ%R*k;Rku5+-BJQ)WdongXm<~6J<52pMP7IBT15>(?Koe4s8 zcVBRCR7h2;aCeP&Zg0a(Wg)hB{^%mT+^PpQ3CTqW!FekA@d(_`LkX*_kJc`vo|EAa zTJW42EK+k_n?N!*`J$7mS`ZOi{->aO9-K*TN4#uzf+I8kgrtOfsZNHQIL#T-hIF-)XE=ky)M0r^ zh3i!0G$-1fbPIx-Mt^aoicLsxy~1s|-T62S3H7ZzMf|$iopZOdJVH|tfseter3HIK z(tXZMRXNM?x~uPV(9Cmhq3-kr&JdDLWIYINShxV^>eBmox^98fN7)Pbb#Q^RP|cKI zcPw=7Rx9P#@r6!5^`ZP?SVPpbg;ZJmptB8BUdTfkzdLD(L!SIH_pPPQ<01u2Umg@l z5U~bf5ia<)O{BYSIjo0ndrDYUGE?*~cW&p*zAfdj;k#5zIUrx5vXrwNIk!$ZTQ#a) z8Q3ERs)EulW67xhcS@xD%1T|8N`8zr6pX%7Wwl&DW`o|GS5!TMEk=b?X|eb*XR#;Z zZd?HusfK%!fZt=`SR^MVhsV#Ahs>4`Egqpp7HrbC_;8&`W`R0YNqY;+iYQm` z5rlctQ}GgXoA)Gu`Jl{OirQc04A9{Je_DZx`74c$V<>I-6ZBm~9vUYlYB7%mcJPq= z&GAP)boMPqh`-VAC93Xk2=x!EmW=}Go8y^-wa$>RrE$u)JHDG*z1A5($_(A=$+ga? zut#`d8YZVy;6s~&JEZvo1d+-UbadW2M4IJ+nkv^h!^4X8;JT=!6HJqrv}~l+(C&Zl zblGuOsDsM11J=98pQHx7K#a(awLn+pdMEPYN9nH63h_0`I+b!SR#N%Bg5RvaP8-~Z z>ru|~kmu|_TkrIWDd)A^s$j8rRT7SGKJ!UPSa2p+s##AWu&k1G^{d8pEXe*R(e@sb z2b|XX1mS)YHaHn!kH@LgxAyRbt!ChI26*iTcv3}R9QlvKN=|NI9-oj0Z$)U(Bnf5AB~5N8*yW)JR(KW;O6UUVCBI*)tNIS7&Izth>um&w^aUhX%;-N;?e zM);0f^HM+(@zgpmN&!ieP`?DD#{ODoo7k6#L>L<}hp`a}eI0XM@L$Y^>C1rSq*t8% zo@WD2pvvjdkvcG@S|z^<1k?mLF-Ie!DZlC*rlPu(u7p6p23dGcRlJ7H18?K&sQ6-b ziXu#j-QXFw$X-o$(W~m$5zM63>r~A5NU(cfcf`*o!JeveH?Rk*<+r`>z~I&tFJ1FeNB1`_|Qv+h3+jUuH)8o)~)F+J;ncj z)`@M}Z_~my)%6``dDM2Q5!uC5Q~n-LhL86-l%{Y7PK3knU`Kdf&8>&mVoq%ki;EiA zKr^now!wKeY6o8ixLwS@SOgL+zV$BC^LKadd(PG{fFQX8u$=vYa~zJ+|3jyZ$Md2) zaG%pIoJ1~f{Q`xabif%!HkaAIfOI<#0Fo~WLZeOm$LSOC52_EGtn7L}adxyJlS|Lf zK>x2kg+bQI?=+IQU_T&<%WLGA&TZ-n`Xwfk7xOa*f6>dT<#V)*SLA{kZV-t&{0qq1 zt19Lv+L-nQ#PT(@{tKtCO8tWEw3!_KuBua5c<+}8Z2^P1YWxztDfm14lXe`CJCwGj zeT7M5oeU7_ur(=CMILe*3H?8G$XPBC(fUR4w^XxRjrb0@s!+4OV{Y~Yd{f>%xFVaK z&6I3urjKu^t}V{Pfo8>X@14G_ z8EJ&%TFSxF&nX=gf1Uw}Z~xF+6P{;%#}*2c)_^5a@f z)>3Ecac7(EmZ%#;`Ab#gpKz^b@|ce1oM2^!|45ND z<>sBB*=@mRnVx@3|3_*cgh!1&5f~|1lz(!(!H0WJIBD9^@srb!1eKmsFyX>_sCEAR zG@Jc1qQkVGoOI=V5>PMx8TsL388o3VR}(0c`!hT(@@E<4NvQY%m3IdEZA6=H| z%kX@qWr6b9?cn~W)51N6;EsOJ*N8xV&o^*9EV5-SKCz+6)*jdP_-@piV3;orL9xQq z1uZnp=jC@pm`{wWM7e0YxY#@Dy5Y5&(8iYkhC=|R zxAT1`({gQ;FJQp51AEfyM-iI1GRikEsUx7a}xPHz$(j z;B%U*f->vo^s8WVM_Zf2)6v1#YEZ8IBaxix(Y_%dsGMp`dKo``8JrqdJ{4%Gj%L*l zx^>Y${B?6wL?_?FOmj&mpQYz36dT-XG;-@Y`4&m==LoOwE?F0^@A~9ptY|v@5F8Pq z_=jKJ|EO|ed}BPvRY{C*7|E9Q#rSR|MX3m=rH#Ae%IhJ@h3EUCNmbf#z7I3Y&<@_x z%2VNbkP7?x=0>tHu9$MSRx2Y!i$o`S( z^GTdM9zOkG2!*PAK8}I=B~Cr#_x&Y8fT^9T=}nf-%&*(os(KMZM1GR5kJd$k@>b?5 z!YIAhrec^}jnK9FnKn?wL9!bu0%K+7ZEd0ONxp3~RF>>}F)(Q_N5lg5ZB)&r?Xg~^ z_;#N!O^IDFG{@|Wx#c}LRQ_qwWqIdOUBR8PP~KEuoJ>NhFQv44ILt}kyWC?y_OMUE z7h67+D7nmTEX6bKz;3?JWYUt;At%A*%AXt&U0Qhqd_LW0OI-$Q=z-7L`W`IBk%U=UH1`P0>vBRDrd^M}Wk;(`7W_sqh zrv|_WjEML%gjukTsnflC#2t7!)K>##8#N^zu_?1lPw~qkEQq3lfIp1rpXu39wh)=A z%%SFk3c_Nk=w(1=V-d#x&GW-ByYF<9dhOvQ4K4))aw zN!mV?z6Dezw|S_qGK@?ECBp@=WH%vZ^$|XCQ0d?GBYYG1-Tf+PYneOxDxno<8zbo@ z_c5cnSG!q5Rq#B!P?lZ|)elxJd-?Gaxa>v3^NAU}DGwGjM>YLHvmoAx z5l$AhwD=FGi(`G`w3#-E=@Pr3IAg;23(-s*1LHKLvI#)s!&&2eGq~&*z8N=BQsnF+~p?Qt3hqh9(KCLo`*x;f|J>zk$T;uBpLFT}8bk9Em1{G@VAAKJn zw&#uawQCa=8L$5Id>ankzRtIla;L6im7XLofb_5K7ml7 z2qD+nGb(SAZ@m7XgR1+Cj03fkfOvdMlYGnBcspgXZ)C6&ZtY~)j}E~i)$$u{6Uwjm z4WQ(}>wV*+gxG42xhhHTBdyk4?;ESDZClzgKI$7afoA0|mEUZJkdgR_V z7pUrY+JuKiGa8+?JrajweqkGYmM=v}QfJRR^p)yYdqjtIidViaSb8e2=`6UcLoyq^ z?V>L|j|mh$C95NR%KNMPn6vJAt)&!^NY0N}S3`7EZVJvHCc7W8wHD808*YIU9_?oS#n&fH&rCqnj`?Rw zZ%Nw3c~I`2X}RRQ3rIqUs^OhGpD+S%o{-mzVH^2t{OUe6 zUUgDoCK;n4u54>Ki5OpaH9G-w@6)il!>Yxav8@&V#y@#rK1s$L*X-|G8)t6M=>WX!JoNyo&dPwZi#FG0T^#_exk z7x9`dtSW@tWU8nl-|OVJZYTEQ}BMCg}cP1iDJFU@*E@@dJog6$-PlUCr7E>F=%@S}zdyCQ+R?5o6j< z)ocO=`v)#WpmL`sZ1Rm#jR%vXOY2KuwAW$x7^rfdBK7Bfc~id$F(+G!;`Hd09$lJ` zyZGo+;B1a^o(Avds64qmqaJ)3%6OG(c-q%j+m@!Qh6|!BB3z@RrUfTsjvBZb(dG(w z&t_Od$H9z4bRwCjXWX1;MBpxR_dJU#0~b3`ji9K3r>&~#Y~UH6jjW8kjhA3itKp}fr(#=0}>e3fk> zyd8J@o~2$k^#O>xgAi`0s@LouDtj;UH%E=$%i<-i<8aHyMXBlT(mhcBsG*Es#$Msp zyaACty9!#3*$X+q*D`F)fbZ zvwGiZeSfcN>IixiH~29A0T+MKKHM$% zmoHbg{nY&%;RD|Ef$vB0w&d;e;gWeq9r@UopqXAL&PGWv)HA)K+p6^aK5y`0&KK#x zcQTfYf>rT}d{6^+leJeu&-RPV-1;Dr-!JS(VG1(!>@P0Bv#AirvtR9LtKkRe^qDlJ z946?JvUGU_T`T#F87F1+LEm`hUmK#T5BdiDjt~FTLBLUm0F)*_PNMwJebE}Gx~ZnC ziApT^9A$=}lh0+PiADK>`DCo8zU10^01t`nA7)Yu53y)vZp9&iPd$pX;E;=UcM%p3 z85;{h8u|@l6qmzVQYbm>`%FV($AANB|2v#Qme~)TrG6Z{_iK;%hHIIpEr1||D?~l# zDCb*WUoGp0UWH^7u}kt*gm#);aKp78ST zMD%iVz5`E~x)++E1p3@D;*^`UgcH@mY_3sLT7bpCiDZv@(Xm<(a?W|GlKzXxOI+K3 z!Fz^X_dT4Gb>av!3d%u&YQRxJAeDDiH*%&%X)<`%aui{eBFA)VbB+l%%Mou-U=Acw zwZ{OJVE-DA`4Z1LSI>?4!S}c)Ug%&?1}scRm|p;w>VEXS9>&Q75B;QT-tv<#L7!B5BalfHg> zDX&#^@odT+cM<@l=t&SlSocKLGB=Vlr~;3ZPl;%!2A)EU4xEwKN(cGo6jl%UCZ8T9 zsfJ5A3eJ04&-BHoq5NyqHK%=pb*+EKz(gQN^=aP#Jr0SEka2_n1zF-3aEPfSJBa?` zMpbkvvD@>0L8@P)w*0~}K_Gwe5h%XXXO~Uzf5_u3k6)U}^Z3Vf93CP>(jnDku`jE6 zJW@yQ9e50uj^{u9%O1rZiV^CF$A3NRJvz)kOgA?{CEtmkxHbtLF)_?f5JZ??q7x5< z`Nwj}YU2+GzH?R9ZP*X;CnsThXydQ$DC;MVX5rOW35x+A!~H^)9t!vO(9=`MtFEf( za7qHPTtBAG#i$$W)$SXol45Lz0rOg)97WL{KEo$5vwEJz^!sgD%PmU zy(87UE`E}Bbn@TvdnIZI;96=-A@i*_1$)-&^Zau30)zTr70vVdH)~X1p^CCOQ9C!r z&t|wXw;_({AU3UkXMYMcOz!MYh(Ft^8S;rSALN^1@*3Cuh#UZ z2U-FBEV0r(nC=Y*-gdYA!q{H0{EMWBtq0!J#ot#|+DtAgyiKRhc}2*d&tE`Wfm}qA zj>U4le*eZc=M)nKp3IdJFk8ar3T^g-Vzw%pGCSQ>UC%Io`9F!G&b(Ly1p6=&H2>%v z++d#yX#Ig`NPhyI>7VL<-QyXnJl*_v(OB}7P$mW)UpByyIt5pSun*y{)mo!GX;i@J zBx%4#qe+NBW|}{c4iIqC<$qQ78Y!E=!6gr+G3Vn|T^egN!99}ZAMXjfHeNl}-EXS= z?*0{F*Tt*1UvH1tdx8JPHlB&@?4EvtV6JkTE@W!YnGyogGMTwaDvLb0p2_a$EdO~P z4mFv4k$>y23g-9r&*Pkv1HEZA-;L@6Mp5Pbi~XN@JX6$^zChcb<$~{|uYX9y4H_wG z%F+ z&nwN!<&5JTDBJDoz*W%BJJhMG&^zsH(7FEo%<%Fn{E|60;tGG?tT}uk3V6s+eCMz3 z@A}pK-D=hqeibp7$6l3}$p&kCuzy0tJ=~-4@6W{JISDqkdN7M{uQG=C2N6Y*brrDV z?S)^eUkjHv%I5(DH*5;x9 ze9!_t`hNX|cv?fkMt9YOdd;CKr>=ykE#UY`2Aw~QHC{+10oSLh9mZTfs64}=6n~Wq zv~oCgE|U4)8nKv?ouE(jck>AU0FGTbG=j>O$Pk_;Qbf<^QkhRbksWec~mR^<(D8%Z5{6dw~q2%O~=mZ5U!1?b^&;&$yjV&?lSBeHw| z5LukdEO3HjE?i+XRZa`!vdhf#N5V{aOuGF;B=6dr>(7i5apYqDkOlJmmzkB6AIELT zx=_Wv@WsEytJBwGBv!qx^A#&rRO5py#B&Oi7wWwrm{PY7Edc&`%wz{mzn!g1Iv zZ#SsqvCz?tYQ$K`6f|zEpC|~GGY&rbl)k9pV?okU;{fICasE+i_c;F$PEzT3jlVa+ z207RG(;}XuLmgGof7>AlU*pg4Y*kyX@&63eXbO+_<&NL+nqfB`t5%Npr|JV9#T+FT z3E}x7g>icN`2UZ!Zvl&{>i+HwGcq9L-~a=na;^gi$dH^anwQdq)XKDk zH%lumd{LIACZu^uO{nZ-X<=7OElBOE2}!A?1!ZNW`Tf?O83d~T|NEZj<9Rk`_Bs2$ z*IsMwwbxoZHm2dz0KD>(CETGt7AQq*C!uRFHg<*}asw!1M543!7AEg-0usxj8smo-R$qn9k@7mzZU*LXcg# zBFQQaC4#AZB344uBz#^LjNL%lGa&VKh>FiGy`LvcLOJUk&@!*&&z{M#y7U^2njG6( zqza-ZCu1QVofHelCVanh<>c6TzAras$BwY<^KEcn$&L-NydFVM4^RO`)7ro%m(5yK zaWJGf2P^Rnvu6(2GpWK{IW6|1e$q)ZXM1d5u(aQtxjQ!HCTX+z0ZBbo`8TLAbkSs1VVJ4O3x%*Eit6ue8B3Wf+|c&dewgX5IM*aj7 zpq;SOEyr0tK>y<8NIK`1b+jZb4h=d;v*YB!(ji)r2pv672E=96adKx|M7cg*UPy)U zatIU*@SBv6P-;?0cMgyHDtXh)xk3KT zV)+yUvd( zzA|qd4afuZ7mSxrw%}E9D-UrshPag-LwuW@Ym;isn%iY9KnzYR_y_}L%zXmfiF~I# zuh~lg{3IFv_wJMjSuI~f0(o;wx9OQHAGKIcK}b0e=cjvL4S6af)6nN-=mC{ z6y{N}C;kBI`J5SaPnUWy1h)G~y1g3L8;T^7YbMij;nA}#N5xBKGigjFh31%#1Yl5R_)-f!J z3tSlrJSLB{`~o@cPDoA*qgmAd3BDFkyH8{smzq64ks;E7jObJOHN3t2sSN!lQ~6AG zv4E%B=Q4O&yriFQcQ|81O{VoLR0=y-fFS&b@NaIw}-%P z+8!KU{1pa7NTbo?uVkzE&TH5bOEbQbLxMOxGoTtt@4Dk?(^v92q+fYb-i}AlYWYvJ zBd-QiQ&T5{tCa5JGWz7kmdv6*WQ7d9&+%Q zN~c9-cqHQ5D%p+;s6Ia}ck2HeCXtaUAF6gixY#WId$af-jpBhw?;UFNnPou*XE1Ra zsOMQs9E`5c%1*xwC>j=!6`i4~QgT+l2wjRNzmsFUW8w_*%ab=y)pwX;h?~9__~-s} zGIl%P%kgMFexu_-&nFw(-WHgWu_pnhW<;~yUKHd zE@M2H_l}~1-H@U!uaoo9_0W0{01ut7mp7pB6+g*S@TmVuv;z-#J^fjZVqoreLA)Dv zLEZ&tE4E)`Z00;>#IG{MB_2xnO@51u`3?O5xPA%1moLhD@%zL@F~rjEC>gh${|>om z{vEKaUG%%W%<`AOR_$rRO}gDo`a^!3%c}oVzJj9bFY#)^5z=4sbjuZ-e@zQ%V=n(o zzGMOC_K2kP7ND0x1pxsplwsRsNqGt1)>{-7KJBw88*u&Z!~mrTsulGCN?*LpvMSC7 z=X)YL8C8^96`terPzBdaTa_VVl{snupW!YaSXAwEK!MVx91XHW`oNHssX$BFEtHGM zS`dh=xo7QSh60sNc*Wwz2ICPxOrY{7rueX3S?Vi3<1bvsl6if5tFI2_FAH?4gOqj1 z+%s6&D8YwWu)kcXIEgO2`v?S1TTG-*DjuN_Mh;a9`6MJ%!F*e3|Fue2U!JfI zp)NDLm2xjb#|nos*kFMKMn~`iVzqIt_~TuY|Hx_sT*5050h>ygvY2z0wpQN2Bgd(9 z53(V*fMR;qsdTap0K{I4yOKa)%eDcFUUVwwyh-^a4UWc2W@Cr6#HmCDweaUOjR@s8 zUNb`4>xojL@EgkJ<(W`qmpkfGX8?WucHDgRdsEY ze*Q`uilEFG1*_Pc9itrK$}p&>g1EU}R9y1}WUA@03at6f`dC1N7sddl)o8FIAK>7aB+($yW57ulidjUAO(AuVS1i0kxktbo=!DlWknvJMA-;-U3w zGS;NT#S}jVU9$9!3LnlKLn(qLa&CVqSJ}wW6eUKK#AMP>DzBCVaVL~iGi#aUstB

%+efw3Cz(HV3Dqs!c%v&CZHfjvr1n<5F-)hg|S!akjHEMhc^hE(+6| zye>*#TLl0lfRsTH{vYb141wF?jILOWp6iu(aiH!&lbDxgYUQVk$a=kU2Nb_gT(3;Q zQ8{vG;JtbSyFF*||H>#D@ z%uZ7>1AuJHyDMuYXkvtgt1-A`duC4s(sgrRPvyq|Dbn1Tp>(%ME~>f-5O=AsQrJYg z9z{>~Q+}4B%@zFtN_3{Lf-8FmDtnUXVCdEPF0~IKq4+6}l-wD<{H`bbL6?*QAF zKdjJKzZt7Al7`-_+#`6p5UP3?V^r1_2hJX-*PXjrStgo_jtfRG)+`vN^p+%<_GcT>TvY5`X*rB9-{yvag_Q1 z9Jp7`!zR5)R0vd2Mk#tgJLX?`BAIt(U>J?S{46V9;Ou>@()C(S;y>DmkEG}SXm=e| zJOz(QjuhOll|a&?70eR2)#Bp0I%Xmm?yg5j z{J%)g>5`~m9AMZnPHB5%a-%$n_~u{#Tn8gYe;u5!#|N(eD2#Q!ig#y%|8@ zJY%vFj^^ApSs7zV$FiHOL;|TDo2F)Z`JpucG*g7n}1J6ucNf4T@Mki2oh*T zHb`Y3+J*vzz_v@{dg$|PMHAIGdEID5aPJ3rJK)K|0#BfsIZCYPJDd6WTg*-4HOoRq zUO@iSl|EFSqd1MmQ|bq##_zb6fep1-i*E%S4KfRE1*XS|=(AIlIkuZHn%7d^R36Fc zm|f3Qpv1xE?5WCj3tDw}I_BOp9dvbw7vbbj<+U>%)LeYz>+S{e_P(D1G<-Adn}JN( zvlJ^%@=9l5oHF^<99l91c&f)tB?(7SRWp$$f2NX&b13{S!l_c~w`jz@w=3B+Vk?=o!%TaLiUhq;aIoMZKQcN?V#b3wb8YR%AMWU*_`J ziakJ@=pDeVxymeooI6r#e^6&no-#BLP>o2Tm{O6e8V0X?2qFi{yW_fx10}(2WL80>DPoN zPVtUh_B>^tG}YVmGxL;u8ao%5Y|(s0mZs7A`O0`YIuEt&n2%m1LCKU#e#Ri>mRs$` z?;4rC2tw{p;Odn8@^Mnt4pc#qN}0H;%j@58QV7M;Hj zNoJGOS#cK0k3uK$S$H=bQXdh;8i|%WBZX3Du@qtrngfs$6oCpBDqd3vKaysEgp)?! zfWv}#Avlygq-XTVK+k{7{Bgp&=<-4(&NdgH;RPft1TvMWopE|0?jT$QxR__oUZlK* z^EML%?+pn+QNI|B!T?hGB)ZJPd?h~s2G(Iqlo6JDBIz$!4v@S7oOj7u^t^D1;t6Yx zb?>FBB@A6=*hA>87Hl_L!?!dXbgirfje+FITD%mL zdJ*OoR5O2Sd#mOCNInVbKy^Psxio(%R@wu^oF%3I2gIm)sj`gprGUP&T7W*6K!wXN zqxoC}D*-V5Exu&67C)k-hy4fR5|4)YdCmtZ>k(yR6JS}wITHDZ%a;+`0A*E^Bslj% zlHx~EYwlTG&z<=gmgh1r2gP2)Y0YCm_m6mA$70q~NfbGA1U#`$H$}_zDT@BA4n3`!k%}uTf6nA+F~r{1AGR zxle+XWSu8CN-u``PvJPL9j9zwUhYX?E|{=Ab+yRM8*!4A{}gsOxs>r4oR-KRE8)d! zu{DBH##(>_s#vF-5+$~S_dV?8bJqip;a-#V${b`W=%&N4{C4c!*5zR(W|qLxPJSB1 z1QsK{3k>mMg&Q}hzhsXpHXw*S@U)Wo59dWnmKH<(Hel1s_6$zS+SAU3QtCH=dBv5N zB??4(LeBsf$~^JClKqTw6de?fbBAmMI>2P}wLbG{q$kvhY@)g-L!E zkK?i4OOSG@W-C^ucwi8=VI<-3Ya1jO^I>0$atrrj*_8ARahQv?DRq*x+?>5#InAQK zyeinp$(v*B=AxYn)Ur{=^Vo>Yr!Kp&-T9l7I}8J}t_p>jDNdwXxeJ5JEy<#=PvMcL zI=)1Wq2K3uCP+)%5oqt7Nr$ZY6mD64w`|J&FXUHsBMK8 zqg6qV%MptOQ~d%U|8cwwp{zWZ%jACvWkUJVwIE$1g4vTm>Wf%o>rJ?78slp_B-$^b zBUoO$m0h8Q$jjr+O&my7QWUGkguM*7fI7^}%3!z~;ALc1zN{Rz07%4bAg}BJ6ydgo zJs8vZbaoHM5nomSxZSm>YcRk{b@=(-?Gbr#oOXEl>5lr=)xVIu6q ztM@Bg#aN7|{m;Q(v8+#gh*|a~s0)gzc}rQ^L?@6%t$tpnmfftyiM%5ywG+HlR=kZ> zT_h@^x&xr#V?TkDn#^|q#kI8Z9pxa3ocOL-4+ZZcD;sczQ2kS^Gx#oW3{+a)Q#M*w zVT+a0GLnwJhgQH?=YYtOdZ1~J+ylxi3a2ZR-8X1)*31d-AYu*=4>`vBX1 zSc)|Af9g1>ED;M07kh-j33+ZCsGjXT2pJ#aFyG7k4+C%<`U19^>4zXN7-G|Bqz-j|}qwHu*y%;1O^y zD)iy`hSb6_I1=7^3`B9hdH5KRFzV^~DL~tY5DPzLglLw2%7P;wlzLV`5R?A7z?u_3 zhok}s?{i>8m^FQ&um;^NxCR9=(SVX05_P!j6upKmDt`|8Qkjd-Y+}l(z61fmom^i6 z6o9vuKmb_T5)$>?8L2QfJCN`aRUB7B1X~AE9o&jFT_zElaX1W5 z=HB9nw!LJ5d zDzJNhk_}3}iwh^u8AVRr?`sgZl^gV?FV4i7<8S%mY(B&Bw{iTYc<-KP*4)p+_(%F3 z+IL179QLj+m%p3uQS@2hkXm~7jMAGfeV7nV*_*+8*FB4~io&ysJ(5jy8W(sy3V&a; zwu69RAzQ<{Cej^_bHWdpdv}?R@089K;L!f(6xQLXKZiXpFzV|7i<0xoNTGDe{ohXK+4S@tKa}z8@hSW`dtaIbrZUQxXH_rz{iLa`}%y2)VTL zN98e8w6X?#d7%alcS0SI_-e{K?*>m}hSe*9Ub~P^q$C8!Qjed&b{=e?x;RMtNm<2c z_-944-GniO;Z9r!oMCQ=KkCcK%E${h^Gv9Yg&NN_E1IX!f6ACO*MwonWMtDll<{;{srwIuRy~ zuyMJBmHjDy21j_b1qS|-azIQ;A{E?Yg@c*1F#TP08EngDbKhl9YslAyJmhmKxS||k zDA)zna>wR)-#!2iExwVgt4q|aXmj3j_+aJMH z90#kr{Q31zbyEjw{@*|)hw!%(~>(|~Rj#J`c zsf9d*)ta)y)fpDcHxQ|;4s2uAMyi!IsJ!fMs}7V-Ln&OHBEdOGPJ6XGRHh($z!qQKfytv{)e!0Xh9o#-YY`M8oujN+9IKqC*|F*t=(7MVL%Ll6xls>U zwM#$Jc@=Ikcg%|gElqY~yDY0#sJ1*Ls~ar!sACU2{O8^U($-H=v!j0km+x`nP{6=OR<7$#5{SUj4(0g)s4Xx1Cu6)GwgDYC4GdhORLZuzB=pEUSA@FYjAz_>fW&VRepJ|4A z$O1tD`v5ZI-D*FaOq;Xgc$REb6|a(|1wOLsPGuAXHiZd*ia-kOfPUDy&|R?H&Pr4V z!{T~j@0BSiV{D45vsnX0c~n_y z@BNaE-?WuKJ4OUrEjV6#;5*nMR(RA4l49;oRXbV#K`@ecZA@3Hdk#+T(tF|l*d3$c zF%B-n4g)9`U61vznN`=Tb6ZL}w&NIv>^^E*1E=QS&%(^8GlV6M%6Nx)sE<0!f}^i) z{naO6{9Ae&Oiy)xbuabnqq6gCY`_MnQ>A!Q83+hR!u>a@i}A>~3784@(v3vL^KQcE z80H?l;uIN!l4FbNf~;HWh5+9gR6kVhjnAn!1GP5Gxons^2%oBkspI+by5ubN9+3nk zP}!q6_&hLNeFYy1MyM^D=6%gq5$=zL*6yKOTG`FzqttU23p|qjur#F&<NUTS2#Q^$Mm7Ovwdoku$dg74@c^9e|p>+tmrQW-DOMvqSYz{C2f1E!v?bH2{lu zsa4vsJuN!}cJa&(wFIYSUXYt%;Gkr>#co#Y1cITc9VjRF`4(^>`8?wNNSUTVX1Gh; z0b0+#2l-A~s?Kh2EiO}6dFPm_?u~?1Mwz;VmhDudifeGBlUa`CGk{88Ljy0BgM}LC z{XO9!Fr0^8Km!JOUo3x7-Ac#Hfy+j|gkPIpz^}Hu@oUzL_*J`GEu+pap+{veqenyO z#LMc7^!9G=i*Twi)hL{6;q7Ev_d9x@`?3n3Ilu79(kq}YnY@HBvRQVkx#JZE7_6XI z)feGSJ+)jNLv`(OhLQQ2nkfx8(bhl)C|m~&Cw+U>LCGvHOM6lYy^Nl9Z~*cQjCMN8qI0u?o-pH)KSeoj&2qo(=0xgYF<|#gx}xW-oTO@ zM|<8-he_ips6rh^Q{MocoKb;dC(<^4VXwdo`+hZ@#`3SR{A(-!+PWVQ1;Nvs>SJI` z_q~ZloI}6A$=JkP{gygcg4Gp}w?<_J(99^jPPLlp@2LGO!WcLceNd@p2wYZfdJixM z&kgSZCr@F#7=tq}fgZCD0E29%s%+q12yeg-9Z=&1iNAV`pjYLIHF zpLt7lndu*ZvqY=b9|VO!f#rwP4bp8)qNWQg>1&AZTc!9Dskpi{I>d_8HB7Hoe4`UC z>%1ODl@HZ1+}VE6f5Jh=OVacP974GtsY599u-b$2=R+Ig(5VEdq*Q`tLNHZ@-auH^ z8M}%eRRDZQ{HM7ZUKLgW6XMm!;E!3L$lLa-{PArcV_LwJ`>p_9gYsq`0b5ZEBWehL z;ky0^@PY3P0hdD_L0$7H=&1T0pt0&GM!xniR$XBcu>bLUS~zIUQB2#RRFIp>MJ#YT z2J~r|6OXAM0p**?pQ*TT+D{31aRVc+!kNvCFVzG14lMf?JTX()*Q%>Hk#Dq3gx6Td zfB6#EuP`DwMFb*&fTA)9#T_agK6)za7LK>3{XzptLR1TNgj(6y7ixU`|s7nzx$f+DmEt`DyW1EU%pF? zGV{-=om+{SYJ(;*7U!lFP|ZphsOG;2KC=2xwc4H~NR;oZzeA!E=$ys({{IaLgxNG_ z^c-a8V%X$?DG5_1Mh3Y88BnH8J1*s!$t|>DlJZZ*bK1L52J`+Z44hQl3>T<@7SA=6 zAnjlaX&&L}EOuxYg61O~i;2Fcj9Ypt!X*8uqdqU`xlh)WOCtO4TOV?33%$91fA zn?rCi9j=9k-tB873lmyX`T78Ccfz%iLHGCye3dd5N={Rb(8gM%duf478!z2M$6VT6 z8z;Gjvex2rc9gcs>)19PzMm{O_>0kc0M=7gpxs0F1Gow+42VTzGzU+AjCKcG7Kg@a zT7WlIUul7ts28f*y+{(IX;A;V&r6+zPFb~~4MAG5QSIl}21)bH6>e>zBrOzhY|8N( zU>3`(gEmG$g7D`Brmcfkh{Y!*YMt=tlBjJ*qMAgF{h{Gz58eW3@xsj*AKbEphsTj+ zl3fuBa7Tyc5*EJvnWa|(hOqi!sokd&pD8NIppCC2Y5f4vmyY2y_Oy7|Ua?`?1L zTOij%k~O{nL%7=Cnye)WZw)J8E8c`{E)7B=f_g&-&bR z(G4z-jm=YvDxQNRzayGaK<7JZ-y`?uDcT4;&`rpqs(|b=JzCWN(pRxwn)H>nd9=P< zs7HGO4`KCQl8UaNUUtVdUz(W8TfZ!fTQF`2N8H~BYcV;cZw09wGZA~Cyk{sxUt zNrrY8kDc8Cl7PkT0v2(PnTuxp7f906gI5V<^w6f`v8{);7L*YeDZ)!_Pi-n*?eD4G zL-SNPv(4-!lIHY6w;-XxqoHPoWX3wantK86F?zkV-oAEcj0UrPp|>Vm?sq{h0uw|} zx~4Z|?~AN=__M=Loi^P9#fYjt0=&HkI~{ea>FA5qMQOdzmXc*KaC2Phz=!oBL0vy> z6@Fhmp!3~>RncEtBN`D-S?Lm1=l~!!jKcu!MS)W!Na})IX4yb39}C({y-|x}EP+dQ zMo?iYC}G(U%`OUPS+sJT)2tk#y(9@)?J6{w(flj~#+uysT3UZI#<|w4x>*~>j)8d}6GU#NDE=WMOo1IS~#IKZkNa`grXXV+n9?IvQ{hLCi1^QUZQA zMo>^7eFeAQ^|;e!|L-#J;-lbJb;tzF7vOh-Hc;UscF_r68GnnL{U>U>EKpVXWwO@E z_Asi9q56Y%7xl~5(rimbJZnKBTrW(3er{zv&O!HPYlAGyAc;64!@pIO1%_xjT2ug( zRm2!)PsQg)v9U~V)80HVRU0con*@7{Inr`kIZYc8x&nprwu))r<5WLQi?cl8qFxW% zBB`XXyVyas5DR4E(F+CB3FEoG#3U=VJ)Bya|aL-PQ_6$=={Sr zdy(T&K+SBY-B!dYsdO}i-er9-splTYQE&AutxQ@)D`#uY(A7wQaS;tDrt;aq<3wj? zYY$3m%-MHpBP{UBzdslA`V@ubf&8qc6?s~Ww2rprVd~&8?JmTgrrCFCy`c%d^DYph z5?|{;73XTuwL+FLD450*p8Lt9_(Fi+zao*;_68ivDAF}V$>|q;y@0a+VFkfi+w#N5vDV_`n zuyqe{DUds~Dp1;yW1&FtVHVg!W*X3;%RK@4TKYoG+KwA`H!?I1+)xpR)qysL>P`Vv zk1oW@?o0g_X(<87L%qKWilFLv$es!pfhCm3K+$K@BF!T{E>>D9v||;!){8}oOFwD& z^#J}=SL5zWj}{r6=pBx5)btDjYqlgI3`DpUq497mhokWbr;SJIfkr)E>`Ue!jXdwS z!ux%lVr!~-2>j#@@oy2t$k?n5oAgnT5l!p*Lozt;4Vfe#Q)j)~7@BuB##$(fx z3MOGMocRD~SV&6)uGrRqmCwH`1XSg9cw{+npB8^LA=Kg@0KLga!r~vmqh~JGW`uGv zk*J-6lfvo&6WK>04qdYi40Z1DK)YGHSi8sGdng!Djdh?SPFkw?)_? zL0l2sCdS5?5TeHjXaH0`7YUJH5%5X%mB5gqS@(uedSDoxE=N)By-=NKoQu-e2B4teK&vUQ($-m|XT7WaXfar_&E{^> zAbZ=wTkY7z3D-=#rY&ZQgN%^XEObHq|99YexJ*13Hxxb=FZ>}6zpq0W>I?i{YZUmq zKXkxv4qPaQjtHFBALn!rW5ib=tVP&@aJ54KK!3!anG5)*;7{kTnB&*@D)K-1ogIOn z+wqxyHx8{3=g{zOapMSn`zv_?nYlq+8Ncg^&n&=f9=RUjRB;coNi+Gk_ngUut(1Z^q9@seCJ-zv5Zck5oVl zo3(t(P7j9+I~?RGb52AEWFe&kapIOe0cVgsx?PJ6))V$iM&|Jc1+pKs~8`4sGO%PL4|4=&~*l-fZE13CyIQRSnd%yKG^b@VC zZ7+&;6qP>g!X-1MpJ;dBedwpy{IKr=aPTZ-Y71>y&FjXx9aTLR1m7wnaZFbEsWv2x zk4u>AQ4y|3c%2J@Be>7B<$=;0UJ-WPNnk}dd4W88dP^JwJ$X)hiw-@5eR|{%*7QdmN_%C)9mCKY)p;$hHF{7ogr5 zKVWlqz{_^*{Q;tr_xX1WUHCzpfa_+me#9Uh^nNbfmH;`)kD5n1r)l^ELri?KuBpCqg$~^#VYB-v z>1l@;S=6tc{p` z@Xw|NAGz2x{${iIc*Gk|*;l_djqgF6o533{9!36p858!|*H^Ag!L3vQuAogw!Yw*a z8GmWc#h>5{r)B`)zb>bm#$QLA-}`}NTC*BQAzmst*LYkV4xaxaXS7h!Ry97y|b=qJ-rccJm5XgH%))#T+{D+n#HME{O)sC+BYdM zqgjFwT5v^+op|8;rsclWEMEK_x`X!fS%$yQ593|qw&pd9-{#AcLj{Md&TgF%<*suv zQ+>toWM-dfT1*_`jfW_7b(TKDYMuscrnj~vtv;%UON&;Y)#pNSX`-ZeO8wxQrUm@B zwrTvfW^r7hDe0OeqLzBi*E*2HqR*gZqi|fo{~(_V>t=%h(4yB#RAGg>MAQS%x1KQ*fPTW0A-ds&Qyes9QzYbav$~1kl+ww9_YVUuM&}U?G?+v*{C< zG`7&^K=4}=kRa?yTIijGTy8SeABI%>cnh7)nyuGbj$MbK)m(4aW7)oH zUy$y-XYwxaWnhrK)4yq?m|E^pWYkUqhYOSv~6@;i$D^9O!qbZWrdlz|KOo zAplQ*rst_X6b=4~!mib|CR)Bfa}gVN^jppDfyCUxwumFGWQQ! zAH(59>rgA5PYKSq(z^?3Y75GH9DW5#VBrQ^P#0UfXE}7ID2lNP55iww#j%QQxahFZ zp@&7^p!x^hNLpljDIUS7A72K!Q##dSih?AszwVht>PAc^@sjk3dpd>uXV) z;zUdA*on2}J34V^&TI&t#WZ+71zr8r_M`alqRe|C*>dVTplgOoQ132CVOr9}a6JYJ zXOfN+j?6HO7rY-fe1qftwjedt;{Y`trb+`lg0(`Ex=>r#P z#Orb1-!A?Q<@q~<;I|=Chld8ri3Dsz`94w~e{&Ri#KRixd$z$d4e^Qy?}Z35ep?Y3 z@$&n|@EGIE)7JOI9fLQocX@APUFOn5ghn>QCs)wkmnhcvl&Rc>m8M`9j8Q5%4io#_ zC_NqRDv#2glIndgH0U$e!i=Rl3TqpJd>z9qe+Z7w5v{Yywn(je#~ODa4&jb{4IR$P zXgw3Zl{UJDNB=f@iZBuPpeZUs8p7kWvyJX`bo%$#t(!B)MigCpYowblwZVkCxx!dV ziqV%zakM)ID>|N(w)zOvC8k|m$LLuIAm^K9g}-qgMjnX{z7a@-Ghsc>;8#g_)e=u` z6_2n#X|gYAN0QpPKRo+eBvZlL|2y1;C=*X41|i|gVm=6XE&plOD$!Ohck#dl_;(-62b z{KuV4^X2a*1`-~JA7X3H_PRs40bd$--=CwqFGmmVzD8|h^+gdqeeZhtp1tuD8nHN+ zjMe*zk!JQ>LEs&28bSg^%X(i-%|uy`6=+*c-k1o5 zZFX2Pme+$OPVb;q`6YVYL&pNTg@)=Nt>ZX3sHD$OrY+Q*au_=b+ocKK-*vA8LenP% z+M_3;-p2H5lCK?;y*MuSU0nKdr~?fBvJE|4SZ+xeyZ)5*Zl_pUXXtG~-}e~$J*nBg zf*7lHLCEpNnYH5ht-d(R?KnP#a@_jA+q6t&Tn0PRrHN1%-3ayk<8D1l82X6%Q2@gc zuNj`p+nT2y5~sIKo#v~OA&sk??u#=A%<&n%IExWEK9i)IFi>T2pmepgFHUzgA@sLX zO`JXqIzOrLp!c(QfD#+7FKzv*4UwecEViq}IT{>k*_PA{JG z#Nmdx+y|gz=t+jQ`yB7v?3Y}^B>^}eLG0?*CPo!i+=G+1`QRxk67(q17KZM|ZSg~U z9vBw`>wONqIq?0F|6}62I5C)~pbRlNB8 zlR6h8%A>%?pe-nD4OGlnuNso2f@IKdn06%VUE#YxX@zmlAAyoR`B>C-7jRSfJtTER zntQ2TN1%Qmn_1FP?5vY^lf$K)j6uncs z`_PoeY<&#&*M5o%8}<}^jKEqvKK$B`nHZWD@(Q{~R68D*zQJpH=0KdXUG(Tfd_0v> z4emDoC5Xt@b%rmaS*cil33Pudn4$z)&yPj4FBOCJJSAVJUx8^vawmPf@8Zz?&wz<7 zTo`N>@o>s}9mm}jo%CFcPikjz$xf%y%jY`(oa!Fl}IMIUaLwKcy}p#L$>1 zfVpRnE}-T2Q&tz9tyilK0|PilLX=(I1?04;K@RR(1$S`0K8xRP1YMWAqWQvLe<7et zS(u=q!Bt&RxG?16SacfN^{qKSO~)}5Ah4UBh_^X!>z$~&8+HOPc)dYqrO5Yh&`l^g z6m-{*v||`&F$d2Kx1Q+{KY5H7Q(h0fuaLz(h^T+^JoHWv-D|n-?=x?-c$OOaj0X4A z3sGfxPkk}!O6{c&v^@ZB*+yY6+Ay@e(47aUw3ogR=kD!#qaP2M8NK!Q*kV2?L!TpN zHi*inDV?Y+L-+6|BSY_v4k>+f7nXjvJ_1-_G2Mxh-i(B&sXk!Yp=PnVFLp-xw6Cwe z0Rum=pMJ+b^dM^=2LD_?-K+Jw%GbNmcruv!2`CE^oAx}XzrIn(7w@F7vmIb&#oqLi z1^~s*ryB=gbm!Bt0RS!E(g+!-4?>5a)Pjqt2O|o`W&BC#fbjWT{yJ$Ox-EI zCj9NI@eo#VJYF-xnt9$ za2X<(IKR{EWdW;_aug&wyB@!v?)s{FQ9IN+3OLvb2 zp+S>w(Om*1z++Q5?gk%u3uFpj9lfITiP&w7)0g9f;qo}_t)LN8IswTU-9U$WQ6w%H zngDS`5lIvE5u%hxTG<5%p!x|Y8|6;K_6t|vOw>>Le92%9&TnI9J0!us*-7~{z{yCw z;p*2_QU4EDznbOQdTaorfhhuIou48`Id!Ut4aGyWsXZ06z_D)0hPFC+`r;UA$5cH^ zXr(hnfmV9F5=R%Niiv^`7vYiR9Q@lA+0LbqH6iI%Z(Nq++T!!AED$gs6jIsyAir zgZwpnI`*ND;nTm?~${dQ2bHMH_}{mXwrz-Hkc`X!i3nk!~w zXO3A0v2Yg8(Wm04aNQ&P>{N!eaQrtHhfZ_!C~1?qXO8}wMHuzArsM(Pa9Y2Cua)1Y z<4F51Z08tfd#GkrptE?cK2k(ODK*`27GKY1dvn1dbCO~)rsd^0@+g@L3D}dSGEXm( z{-LEx4eVqu{h7jC9I*LQlyEl&f3rFCZXMoZ1v>!UzIy~~P;-y|ptRP!?OxEHXof#V zBpL#0Y}nv{-ra|(cz|;50}XhHK=y{0Qh@8ZpqY#{liz~^B91xIdm~|h3jcwzW$N)w7H@{hr&CQKKr+g zp|>BzzB55m1t0NhyF?!eqLjA;d>mYuOlLf?MCW^m&MtxE0oPnU1S*87+6`|8 z`4ezqgJTnpH9va@Tn=0gJp`zmZz>OCRD(A7(3lV~#=`R$SXI=xOrIN6((no8K+1P5 zil|!#-T|txk6<->Wt>IX$; zSY|aP7Xoz9gF+!?Eic6QVG>v)ws0jd`=vr;zWO2?wbri$hXhYL|JA49OVxj|qM=wk z#vMcUB7G~qlots!a=1u8C>Y=NRP#7=vdUKJ_aZ~a6ut*}HD(00uGTeyPaZ>eHOl!Q z#_NI?*mX0DY#(R=g^<Fui!Cs4X+y-Nr|CC+{AV54ok~T6fz&Y%lI6-b(8HcmebwDzk zXy-cchRlb;V015tNXU8s*|St*H*g8`oe|+YiR;1o!9r%eKE<*nih6yfL5=rmAfQ?^ z=V|ocTPLP!1L~`#+e$EKwNz6AiP~2Br9>ZQ*%n1lzuPX7CY0*4XyiHwAgW9CRX%P% zt1{AQE`LV97$9C4lyQ5sMmsj^FQMR^E&5Uvc6JN6cJO0c!HCu3q+Tx)0|Z(#Jkn)m zZ`0QaWN;&hY}9s)H@pUPPjQ+3w(Bs%!X>sld?NH7l=of-uW|ivJR)wYzXzo+*$Du{ybGzmzDv&*D2%s6Dk=BCEqTcQ{8HgQr9a>w?P(`}_;L8^tEA2kXs4<@J+-+DJ(4lTf$0UgKueH zCAK)<((jcRkZ&oY3jD3`+Xot41>Q#tC_G?(3`8URi~&b{toHyM!i6Qe`LW)w9fO77 zna~2iIDy~Yj5yR1T7^1=+b)=+9)a+q#}TnNE}t6*tIi|3tTcftjIGYu5d3=^fY=e> zoNr;%hArA^>ULCrL*Rm7%Bpe46=ma2iuhxooweru$8f#^V2S=zKPUj|2nMk57I?<_ z94O*jiufFO)VHo332GA50rjc>z=J&dh1d)p`vN#fxWZ~&ig`c8i_E&NJPro#EwLa? zn3Q$qckg_q&lQauOnLtW1^2+1SbCc=F)Sb_S=lO};G~deoHz+m$U>nY+PMkJ?~ZDq z3ecKry>G-jzPV*E;E;wO99!YkZyK0EcD*l5Dth1pkClI;1!7i>y=Z(QF%%^Jfhb6I7eZrT|TX5?6#K;^M=VxUWZV$f?q&zG5tJP-2H%x_A!_|>KMyy*N0ENQN2RX&! zhY5%d?xwCPCS-LXybT|p50P5+xB65uH_=p;@5I>+`+3Yh4WSQQ7yCCew*yh$#(8mFYHmyKWnG@LV(AP$i%x$_d1o1e(f+gg zh#*dgJZNh{Kr-Lom-?MP7+OX5f2YS-Kfsrw%3OF;`3~&RL9^;RJvK1(5Z;bNmQbv% zXv!In9f4y_hmhhvxT;frGCrhuDD=Pcf6_q^e!>|c!23^}%7y=|FDu&gAko_&7&ZCh{^yZKX}%@fullZkkdY#nr%R zg2h?ny%M1ykTpdfnfX9uY~iUH}3vnTy?Gi9c;qF$y=0X8nfc zZY{Goiho3@b^er{o0p1%$v<>ibf0nd)#;e{2hKYgpCmVVo!1H!V-2!M7VufP-Qv(6 zdXjI)STMzwLP>vOpCUl@d+APEaS4n?23@`c)}EoSkP6CiSYDRO_YSm&hkv~|ASK@Muo?yh82JF6l|j+)#ui|dQ2yE=d(n;$!QX_owF)f(_-L{k z8-xP5(DX)gM+UncL%DI>n578Nj5rkmGL0Q&#iUMrWsI>3M*=58jKR{Ee2@bt zLlw}vtQ?EO`9rt3?EiQWbesx8jkqRYwhST7G(SP8>ydVD! zMBsPK|9!=0IfF$th&B0ik`J#3HmRnX&$xugJ(v~^h8v>Xtsq^Ot~J_9H9qx$_9_lM z-i8+!aSH!WRetR~u*_{`$QaC(t&A&Sr?4a$ZSbCeF=VY->M-7uEZ>L?7cP`&ZA<{! z$a3N^eVq$*Ha8Z$x!fB1(d^utJWiB#n!mF%fIO$+gny}roW^v-qzEI?)|CsTcHu@M zJWc^J;Ud_Gw&N>yN={l9Zrtll*-21PB!-)M{nTv2bRDRap{g=x|N5|4SS@9OvKPljJfwL4gntXi~cj+{$Lo zbQzGWi=8Hf3sD9f!FLLTA%7*@A+=4mg^1<(gSXZBFGa%WKHBIfS$@O;_*bs>v|NQu z_R_a7?YGAmZ%cLN;TU77)PRb30rQG`o*Gb*f#}uOE7}@=eQ9()Vi z8zX%*jV`q}(nSs#1zkmTB1d+t;T1V2Hu;8|V>IFXg_+}qERCejqwt>bFHaPsOI87B zNJl4d@r=mc1i3cL&RP7~o6?|U+3+IarnIhMK$;Raf6ryGc;&LO1vlZbV3Ou3#tuxA zq8c%H^yJ5Uxg4<$&Jr~*OLp+D;2tt<{xy2Ve~+KLk+`wH~0|rmf2lCTj2Ti z@*7lW7-PjXKRm(wU3>%cn@D*x+NV(Fc$gVhJ_TLpA?IN_m+r>Wg^M}2F#^hKiz3<=-{G{Hdpj5*2IQ;n4+8;h&0H?ipP2|eiV3)|H!HY3 z)y)nJr_UUL;p#3h$m@%u}NGjMa@p}vgx45~Wi zaTX6ZGA(~a(eUBM@USb*vRy;Fha0_Z66iC$-N>pF%tPo1qqh`b4jo~<#`lQ@jWV`d zY|-?knB z`*|WL>qZ&yI20NLnd6XD_@X)@nduXZGZIwn!m@!#>v~!3!pD-6N~x{O%$;PENbvNA zj~_{`%$jUtL!jg^3uYJ#E%4!nCmfq(L4mU@5hfs>JB+cd;nNMNaR70@QHW#I)CY_Q zTZf~UyownRc+4WA>4%%`Zt@IJU{v-13^^AAp+s1_%wwsO>#uA5(0qt5UJ&_z^zO>#L5(?qB zwB5k&8=I-^D5b)VhAdyx+HThEFa`zrTym9v7v(fFUpBI>q5yc@yMTpN`J3Aw&72U! z5(i$-92nN%s52QPWzYpydjf^v3n{{ja(m)NsKpT>X8LPJp#@-Ewa*yS655^08<3Bd zM8SME{RW=O_l<0+t%;8H4Y19^iVZHxnm4|9l^e3rbQE^zGLU}ebAYDY!$!!^1yI&5 zyl~~pp9pp+cDF^)5XK=qix3K|FaqImgayD3?;)sIl2Z^)A}qkFtwWHpns1`_4`WzA zrt^m}KQEB&LkxX8O8wCA9z>-T)g-~z{jrd1>Anw*j=)R>g>F_I-uEH0&8M0VkqvIM z_dsA0@)3X#M-!HIk5PUlU;*bLZ6FA%s5Fk_J=}2*rZZJWZKL-X_>YZjc8imB4A?uD zW*-9=3!%y}gM}NnePR$|mp?H+^?r+?x=%s=F@2u_6Z*UiL3q_Ap3mg?rUJo@yJ%&P zRyaq=?SO-z&x~B8WG|*d;0Ot7)bp2(scXf`ar0?u7AORpGjNYHf6 zk=)E03a?S~=>(KZh2*XqMp{8&qQj%_m$%F}S6bYCr63Jc!wd}WC7TZ3ur9#;3hLWt zbXzhs{*a5cdZ3G~@P!M5>zzFI;Uy-7m2SDirN9DDPIc_jJQd zyVl*q7UV`l8F^ZZY94~PbA!!pi{n=$9ks#5k<+~T<&|(P%(RTMSKe8 zawp+Mc{DWc7kv+^;fVpCZ$AfqJO2Qty-gWR_3v0&Aq92?xU2C$ zDUge~-SJ+yb`{6D#j#yH&XktLxn-ZUux5XZ)2xVd3v`#&!M)Z3N0I{FWgmxLc%l#W z9c^L9=8WGLe{X}Yret@&0Mzu5$9;tt(V0<=9{-Q6(`zwkGtOmjOESjO24 z85ziUcg-BEpJh$Q?}iF#VjAY%i$}yvMU!-k2SVmFx1(uALiWi-l8Hlugo=W?3E1n| z%{|yR(;2q**d9*{!p`C?(4kklxx<5!eX}R73IV0u4e{BfZWwiM&1ikM8{9b8F&Et6 z#xWY^tGgQ)WHo&4*~|SPY}fYpLL#ig-e~h@l-CnroZj1Q7wZ`wH~I3D?B4D)_|_D2 zllyXj-I5YbuXYXYSX4M2mItxWicZINysoz!vTOgkyd~YeOSpo@G8RLI(G%m2om__d zMI@}saJzicI^|bKB2}El0bgM>NSEBl&D*=IiS4j3TDFCq>JxkrFaW4#Q6DT%=o3~-O- z>;nOs^C@{Ca8)i0c~QMM&v4Rb14V+=L8A5bLqS?6405kQ;$H?~MGv5i8{Oj#ZcrpQ z62T9p%pgDLd&fP5M&gY?Q|l?`Cij;pzNQ9CKXb7AC>BG_pIEtRLx2HR)6gNJ^Lazu z8@ zC|rv3u~aG;3w*NL>%Z*KSd3Ov6rcbe9KV3Wg(Lf0+}pXSHG7~VQaR2CGjNF-0y3E! zDA|k03ml$29+jX(JVe{!3@90*!@}`m5tNTdgRqXq3+OmM-aSwx!g2WP5Kv}zk;BdG z34jk@J5b-@iGZN%C}R@CnR)*tw{SBUmg7DG7qtc3P~3Vd-R5=`-x6ytjt156OooPj z$snjZrQHe~0F#JY-DBW!_G((EdFfX7Sc_nO2K$DNw?)@u9QoOmX5R)F_w8`YZUd(F zp2%dZfbhmK%^lU?!H^NESZtKM*&P#Nhf>aZ6$^HnyH*G;7=int*h`?zd#AfS z3~1YCx{L7WdAoZdJj?F69RqU%9lPEAv!#19J^fdUHbE~SGw(=n+086alvx1Bp5iAJ zerL18d#reU4nKSI&loA4{ts<$9#>Vh27ceeAfTWSDk31Dc=m8q@M>wP30ck+rlt+v zARF|i37J!7LRwjBLIg`o6DuuC3!1i-CNvM4;E+~Y&}?Nv*-cC9{XT1-gE;j2y??wf zpU-CRz0TTeeAY9sXZ4)MEz8Xmo!c_nSviG8t>qDvk{azubELBusQ0FNe9 zVY7lSI#Do-l7dzE6mQ#7j72Jq2PbEm7q!r^cy)hVi}tE!mKP;so;NLNcmT;W5+Z@h zfQW`vQ!vMq?}a5Ap{j53_KO%9$f`WE;k&<4{EC~?Y>MhT-J78sEW(HgP;!?d^3=TP zwDe+U#dPlz9?n6`nn6jI{&Pv2W_U9+#+AklZYt&I3`)sXl;U$TXR@3L9jlAF?4OEC zJ3}e+CL{6X^&=d}gR{M|1+j6qcVbh%i%za>v?`nfrW)f4k$Ttq?AsVbWWw9L<3fch zgsIx++QyPne*?z*%(>pp9?w|+M9yR8FZVyor1qcZ-6p~(9}}ngPVXe1HJ={+Tq{Yh zywm%%US61g2g9%xEbwjv)HHvXv(USeEXNmu89s3a+~s{(7I#)}uVUb3ie(A8Z$os8lyfd%Z zJH$OPq_2v(7*C{}V_0v-ACBwb9D9J_Webc}GgLh2J?tNMXH%*0>iDpgd7;`)gz{eV z4^=z!mV=u$`Vdy(Wb~o-t?(xL0j6?mD*+fbqjG-i!APPFKIAQr5}s0)jI8l1RrNF8 zWarpJ-u@o_gA^z~T%|5r>D?M}H4xvMR|x9z?gXM<<$a;65Zk$=HK!|*HjgwJB6lfP zul6RCPKu(=N4y~?)j5GMJKkPeH5m9LpxEL>yGK~E|7of<=4G!hJ|KEZ!%yyT%xdrA zu97T&((G&aQskoBxTJjnHWZF{wRezi2B|u0j*2N4QY*hCtD)uIG-h*Zxp&AvwCufd zT9(_?vc^!ps>3N%WvubKisqBsHfoLc9i}t>QE!6(^p?goVeHU&REVK7?@=!S3SrLP zmxEgfDHtFs(QCb#CqZ^eZAq-UeJx5D&5F@_8D#0$iHTpe7VcAi9#vBPG`8{>lq)rB zy+gH!jLfxQT3Mue!D@=+xmFEZ2N~b;(7*C8ierpls7Ko zhQO=S_>>@>8{IYX_y&Y5>Dzs(_-ALCoHuw!O4A<_HOu^#xPt$Mr(MoQ?}MRY znfJJ8En@|aR4LDRA3O>ECJD^{%4w@w1gMIQj8^-eg~8E7fa-5_%aC>fQRw6;O{##Y z^dq8DRa@bW)&ApcRL_;^ab=aPp;c-?CG)M9h-&;3c|WhxdmTmVAzOKumw~NBtcFW| z&O7%E0kXAbBjkDS5@4kGd2cJh2&-PuOj>Td(TlK9T0qv%n_q-<|5uCLWfw^hjr&@P zGnuzYKFa+LwM@C={YUl5HiwL*YQiRO`Wf0$ohsgto1iNvLl2vz zuA?t|@8OriSJ)E^sK3ezk(m-Q&>2Q2ezB@)!``EYSLrg$_-5AIDm7;_q8bEdGgMa7 z860x9co(u!P2?_%47?fctm7aY3KNsGBRj?N#J^-rlE!x-;rM@7^GtE^F}Q`qap6-YJNxFK=Ts zW;g@3GlUwSvA!nG8qKFxL(#$$1X@$+>v>6e+xq z3KH5zmOY5~N!<>(4Y-77kae?bkj$8$8h3@)KvEDyYQ1q9m&n=^B-xw|gVNVB;;ebh5#re&FwxoCTG+#d_~dY{%ZQ951j$|bC~tn)lM z-%&PI748!`+&Qq%yF*sc#!rw63G(?VsdVhiw9#ezfiU{j3ICd$HJn(OvEPe7k~3hx zsK`Kq2egVf=89xQ-UHtLCvmBQN@T?0#14S1wV+oQl@4phj$4C2H@2vQ_AY_3J(dWorj6~7{ml=2VeJh;I z?P|tBExDoKNGQp^6sNOC86_0u2lb@sIq7zOvdr)a`Es7fmxhz`z4u)=l(O%~tMc52Ri^w9OM@*vKY5q2fuQ&&it<5BR;0{6Diz1`*B?sjkYxVJ@e!<}+GDxT=JMzos!hj*xo{26TY?jLBB?o&yB zGAxVL6@Ri8m#CNj^p1#F$~X(t!pQ*HEfY!#M&jRbjD>r@ns5vlSf+}PA^SxBK_SbJ zvC4`ifyHr*0v}L4kJGdg_l6x(-f+Q_8>gMhO}V$_?rnv>sSU>{t?zM4d)Q6LIPNW1 zMRSOmRM6I!)u_L{*QjoP@!_Vwfjdrrkn|^1quib>jWO70 z&99|>jSiltN=F&Vcw@)NZyVeaHkMWz(^)@R9wR}#qvcj1HxP}7Zz|Qj9%Bf`m|Bmq zAmVxds6@;0?&JtE55Ve*bK5>>&| z@CmmE8PPcIP7X1qsWCjO??MbyEeSG?loqrIQIRc-k+_f+x1fD^iOTIQ_x85jP$IW5 zOgtpJM;LKsVMdyY4#knbcLYz_VMYdygN0$nRjNQz7lj#PwhoY<0&sd7u ze|35^=jq`dS0fE7ilP{rV5$mEuTVuXd|^iMML`GyRo;et4KWOAK@^$0on=f?ZCmrS z?eP{Y`4B37QeNvKDMk9G`nPdkd#j;JE(qtd!;)p&tWI>ctVy3V1xmEugpR+m6hMXSsDiuG$$P623>w z&~;zKz%E(C*(XH@>1@HP=&n|_Gx9vYI#KNnyyOq786Aw(xJICR1uh5kd$)L_H`opi zQTTEUC!*kMbZ=-gC9$xh;T}N9!Dwm7A2l7BhbEh5{$N8C!ys-^7N2CIA}>{0rXK0B^7fUQV;a9=m6~dSZ}1yPga2A-8Df{Mof0pCYNKU*8T5O+ z`p7oEU?|uejpzAAfL3%jBl8Rn^SRyV(JJM61o3}=H)9GIySh8*>+0^tb?&o6Bj)s= zK6tEL+TvGiR`oEh)4hryW-J@Ga{8b+t(%(4DPrkh9Lk)WVYtDt`m5UdBouQ)*&4VZ z1H@3u(GiA27TN5>TXj#PB%r@q)*Ex`zsUpu{M!(jLQi}_FGEafzx6VbyNg{)m}TKP z^bqqNm_8BeCH({=jaDl8^zn8$A6t2Xj>M~$=NOj-#xn05)|IP0ixK6ls0)sQ4FxD# zW6$*BD{&6%An1>H^?o0tN6??~>W@Cg_v*TKEL>5^m7QyRr=hN!YE*HtW#@6s^znH0 zpXYkESBd9=CndOmwtbv1fh4QP&ok2WSGXFB!&ZTrwA;a{h}VwcMb3z6}^&M}Eyc zbyumsqIHXWkflIB3M#S>o~RQ zJe+pQ2OF-jY@*74A=H4Bb;MWKL_BL~#lIg18&!M-KdMdhY-ftR$^(R&9C^TiHP7qY#^c@KnBPV9FflR$9OEoeL zD~TBl19S;P;8BIwK)=fe;tu%cB}S(Hy@k8qu&M&GRTK*SFfTRo{0p}JQKoX!rN+CI zTbONpsrx$s`Na>$YC|WEnJ5|sYVk`Q(U-v)`ImLxW$;31xGrOcaO@kcNzca7hN1a+ z8Qs*9)QjLlMjMC8(4>GB_8czsLn2jm8_Rki-tAcU#voNa*3kR>|LB^ambYcY^QJLS zPEI{$oA~7h;q}D-g1zA5j34=E<9K5}#df~}&Si$W>k0_c4CmY{jUl0)U>OLZCOWD} z=271W@RNbfT;v*k%5LUvk4_ zW1&uLql!1;<)8Oi7|hdujTb0LBjN0?+sk1ZFrG4YQw&$1$kEhd&CdQecKRbzfY^XA zsfJB8?%~_osjN8Y{msS#Zrg7*h6IIlRIOVDaj*n&|-&vj$FudD>t|D=Y~66NbV>%caG#} z?LKp2cR1(o%9qaag~ql}J*-Mq9uD%UZWjTwEAKP<>cnoUdRb^}s372IcDwtTSKQfG zf(eQSBggk&tjX_$#V(RrY}`aI;+GgZxE)+#jFvtvHJ*=(VQOR)+^u2NGgDw)-bjMv z9UBf}EQb>H*^&-AAAD6r$bEDADsUpu~8VIu4Z>Te)p~ zP_Og@4}!|RQ4`w0&y6fK#LYlAqN)oLQpT3ZL?^n;*eqw~j<3fihQtBhT|&3FXNv`!s(#P~g_UGo8>Fo9oLoB|2$ zRpV-~RGdmGH>O8)2;_8DlpCvqg5o=>4?Qi~JK2v3>FMaw9$}-LipPyKPeei>zdEoM zZimI}x~t?j^IFkLGHN>68^+I<=Z7b_h_9IwOjjY?tmY;|RKV{=)|}uO7nKit!bsMm z9`I~=0=8C*Jm_wkd$v3QG1eKur8~n|%j=D{%~ag^FLs%z%GYbsj$5Jd(es`%;sQlQ z-<>9EFTy{#2g^HkPZ_3IeIU~5Dsu;}$C(>ZYvid38{wyg*TF41EgYNe?||Zy8$oQJ zs4W`-9G9Z&v#7*Q-??PXNPy)Tso80K#!xcr_f{Io|6r^n@&hMEei5IcIZw#TbDGsF z?u3?q=yPZua9@26$faq|8GSTMJ&J0&aLG(3s{EH&>?5Do!=%-C4Ld_oaZOHx{y)$6 zNp6mcx4|V1&$G%qok(z^UjVJq(9{=Mo}Og+=#fD$myEKxZY!IfKT%)5Y%J!M|B4ZtB;zK0=@hOGTpGXr7_0SB-&sI@_qm+ldymtpia5^Bmj?%U?AfB!gH2oS~bI4X!m*BoV`}`5-+Yo6wgzKs=%S0ov3O9pU^_*`0GX+iCmISMxsI+`4(e|y!9?c=oPbdB5%k?F5e zcf*JdkXy2vO_I8`mX4P1HkMQ6xqJALz&CpgL&qPKITWTw7TO?x4Fgr>9wb-`w{>HP zj=m~&Yu3k~BU5r99)6_DJpK`+JBwzq6TlaV%)1w;x)CHDd z%|5~Jya@>L{FUd-cR{|{(QG9u|JVo#9Z7?ul$?F1_rG1N>rf3+-X#ug$5eeOe)UXi zwtE}p-Y#=*qutvW_cqqOUGCn-xwrA|?FxN!-u=|r?1>WCx}KWleuGN=(!fpNGB};Q z&p|vPpRvSL_RBUp!8&lzRJF0rxauU>xfvy|(Mx4qf}3qcqxhjN%Rv2BZ;t1t@WAu%`RYsdk0_lNDWDKAX-@sGNR9Qy> z*Q!=*T+Ix^Q8)WrBm5-Tm<8Xl)xJO#tnUQ+v0G~3# zi=@};q|Enn)&#?s@?B~NmDy;d<=*G7Tog)zL>K$t+xg#@_}_)qlHZs5-(^PS{eJ&@ zK#jD_|1N}9elJpQH5${fZ~@PTD*r{a^ci?kPx^(`_CQl=hon>}k05wycnO8b{Xze| zRJw>B;Ct*F$9@3~l&P3s(TXTF>Q@+$ubF^w05EkNjSgrZZh>KY1uVro`;!B7?n!z|g#)ivIw&zUbawa^;AcvY-%;Blwand@qx~@1I6={H9YX zdzp7B_!XJz(P!Mj{;D7apQ<^A99Q*eQ1}DU1noP9er2=Te$40>w56lE;}@f&YFG~x zRt#;6MQluXbc9Ta?t&V196jJ`RMbZ0Z)}T;|BnPNUVa?rj!<34VK5GJ}Q5lj^yN^LlU2b<-k-OMyqG_prX=@_${ zs=JasJ>3Sf<*X*ej4oZmZ_yq$OJ?2&&^1hhz9oj5eM>i+DXQY0&f#Ty0MP7f2zXIt zaG2%FP%}Jq7j^mhhpJF>l4rLX)q-7cd)(Vc?rpDo+vnbh4k1}Sac`fxxBc$zfW9fS zh1pk`VP?0p>QCw07eD}eSfjoqU4ZE;?yc0C`ZgWZnlLln^Nmv*X8tN$E2~2~B{%J} zMlspa4EKC1BLP%Yg1$3bnj&arlFySlvJK9;Iq8ZyQ%qp2wtJ1=4I#2ck@at?R%%9$3@Z2~sf< z3$VGga|hM%9IBJ-*5(pqodc~IO}$YDiRd|G_|IvN{lF$y3nA2 zer~w4rJcDf=I;Zt{E*)>oqGF7EFGZMg@$Z?i?i<0D`~dk%rlU zXW0UvW*g={o=2Jb=c%UIr@ho8^K{aDMXO8Zb9PCc2{8Po8ckC+2qsykn3UO;o*p5a zgM?Q9Pycvkr!{AzW&R*)3~kG<=w?cMuB7f}f;LIQjA@xIfOY)YuIsL|)sl_ehq{~3 z1`2qghyEos-Hg?9DBO@h=H*;nxn!`U_iPtR*B?)HZ}+A%m4#}(zB%uun?7;w-}nG# z{K(#{Qgr9N&3;t2rMKxCsAE;*Wu4Z276E{wxE0c2Yd^1^B+g4SM z$D+0Isf<<-NmF*HrGA_!V^_bB(D_sPamY`>KvV1xYX+JFC4C^kT&f~6^{`am1(5d7 zG!wODFI~k{60(^ZGtJRjb0}d=QdMIFJMkNObwTs>3f83PzAZw^vH*L5x?VU9CB-=@ zS?1Meava96-a&QWof@V#Tx9M(U0LK54>qp}Iz3%^hM8{Ib-{B1T;LB^ShbGhoR0k$ zcf^&$%)S~K_@tp+LRa)600RWl0(gk+@x#o~XQ(T8xH(ayBjkWgLUz~mLfzId+#D~X z{+~FEp(D)em``nX&#{vrG}q(b@Z$&uoYaw~!=YE&Qd%>T)rJ9Kq?xRhz8BLRlxL^L zPQ2K>S~o*lD*bbp?fQ$&L417ZV$-KvGf2))K--m${GNG;rTb4mgmw%)2CT2&#zZ$$YOagW1m<#_Qy}v5Io;V!aIIcv;6}Z+M0re;DD1OWn^~%-ZOsBk` z5b4)qYejVCUl^?`CTbQ!s0n&zwB65#pz=taOfNESz*9U_o)d^eqLZ}Iii5x8XYEu@ zbaVYIPUUQglB_M=ByF*3t-L}g zZ#AcZqI=F@sQm67DnY(Gnp4$L_v7=}tjZHZyStZT| zZ@OH`gUKjI=d!v$N>6aQ9*BOfxtH6pC#`hn@a^!t1Y617${6TfXRR1!K1``Ddk z+&>sTKE9LDYpXm9;5ORHjlI7MG<9ZgJo{=EP#uFS&)E)uv~q!&NS|L`py9iI0eBUh zu#gU&=xy{}n!lNP7xWBrayOV5`|a0evUB_0CILrLRoz2%`i6P>9(RKB?=|0{sx8wK z(@Ppggp_1I9pdEOXPRMryrP)unDJsh!yQI=jU&b8kD3u+J!=&cu-3MdYw%jEdQKoP zdfxq=!=2tGATtJU#e?uEr7FJETo&3MmGdOkxC;W8A=_QIm6}U5O1V$<{GGUPd1Z8x z!&}N|IX3Gu^D2yZmVzu|8C2$%(uM0+n9E{1P>|@F0v10aU2ZiwZ)X$2OZ0^RaNQ;t z-;9UMkyJhJA(=&|@*z4A(UC6&4`N1qn04%;It^!{ItpM(Mt-#zrryWwlR2Bs3%9PM zWeHC4N22uM3kHhSDSt5!IsrBNIz7;-v+I2vSo_qKAT*>7S+9tkNUq@Xi$4SkJB^7n4Iv*uCr z2N|xVkDE{H<&9CjhlOf?C+3j6wPaqWwyf3Te0;42iqv(cFY0k@G65dvadpKyrvGtR zd2_lh!ymsW`UxP1SP3FiHQo}=ew-)G!wkpT^$fI*2*x&%_2ziZi$AJHb;i(@^OSj= ze#gh<1y)E!E!(!fd&+!)SSPEVHiJE$6lcu_^TrUoGb1X^dxD8YQv3qx5uK?=EJYD| zhq6=gqFED6roxxa&qGznLuQIou$5vwX{Ghx@$uDWg|4T!@~n+u3e!8FO4^M+vG40< zkydAbbFHwrvVQ3yL73@#91U+@_6EEQ=kmS5bb8gAH$bxn9?NiAHE)1VOm+MXhKLMr znm(=26hA$Yh(zwToC$BzZ+I(5SxF`aQ__jGon66P_Nh5F! zO6q`(D7Uwjtjc#HR5sMXL{+?Rwsm)Imw4`@_RaXd)V&WXID;3ZJ|(ASN=S$ky^Z3vl4l7?=O><4icOgtCtkh+z^D+Ezt= zM0CEqA{?GFpX(g%=Reo%2H#YSGfb6oLt?nvywe=2U0p@&3iPPEYPZY0$G-@H_sU%w zGuH0XGP~O-r`>K@w*KzaeZgp#?>WI=vlREhNE2=DBi4hT>4rP~$aH-;&-GX5Hh;}W znvXy5k>;XO_d@afpUhAf??q|_9}k7q?!P=WvW0x|O?!3!e72ic?bWNl{*BZwWv^QV z4ZIxoGGm|Sxkcv?LUvW)x$8s}Q7wS$;Y(J5RVxTM|4 zz@H#?NPNl!m3yRzP|#JM&|T=xAy8WOQUg5u21hp5e4_bQ9g-sZQ!`ETq*4TDj@=Lu z>lA%zKIpndr>n{$c+Dx(!cm`n2EB!2`^+>nZ=KEuGOHdg`8eR}C~5Mi)6~Y#Se!G| zdwkV&blj=7AA$6A74^A!W3!f2&LbXC(dT9Xv?QjEdD6&rfQq@OCFb2#xC!Ugo0}-w z`oerTB7;E}0uzK+5~|O-M*InLE)D?$f8p0Duz~s(Hc)5&#zvi-FHP4WC|%WlO#jM5 z*aMaM43^89FZKL#^oUPw+Q8e*`Ww@YUD1zNu4snRzJ*+^Qd!@c zuhJs{Icz1SdD8AWk%^lSfNaa0M%LQz%n@hcx;!?4V>5GM__GhvynhS1C9d5N+FN%J z@wS&FBsh8B!)^tZL#cD%2NNeY5#L(qP|=J$kP{Z7N8ZPlyd(^KJAx7!Szn@>(g+fs z;Vf-L?@JlNGV6@-s{YDIxM$V%S52oh>wZGkKo|Y1N#H04HP|jsXm2KtQ%^r=4S@a~ z2lo68+TbTVwK;(Orr&AfDiw1?6x1ZrRP8mZ2KMLov4zkonW#xy* zI?;ci#Gu&JKWRPZ5Bw<<0Xxhwb1S#P<4m;RXSU6K=tIc;s$IBKcU)Q~WwcP$=bB0C z=9}U=s+zxnFG&nnm8tP@rI}WTGt7sGi=_otj^}KMo=@*3K$g<%%ZZ38sUB+@*reEF zCFmSU#MAzwAZsy>0JTB@@7H}Y%@w%o17QEJVec$q5qIBVy(U~77?p2W*k?uEgG?izqmaY>jZT;BRH zOM7*PSy%DaJ=~IAoJ7-LwMAGQn;34Ho<6FwH$**q3{jjL!Yz@5wX7ArPAd?# zJ^j@YmZ>Ykw{bi=sFe}4>_l-A5vnnQaS%n6ShOzkkA=IKQd?3v{B28r4iV)~&auYL z(HO`fJkm)yoYYp<5Ra#?njC5Q2#ZoGH%_jNv<3zBOHi*}8`e>!L|NkA&^?Nu2FOo7 zmGVXso()mf!l3h;XBy~c%5*bjeu2sV$=23B9QX>`SbgHN{3Jm@O3;EBMmF8Dv?N>(|ScR}?Z+F1mZdC|;rp4u2~jng>dAqo>-_;N1cv4us=bCP1LeiBWt z=V2K5f;lZYrX?#bB!198)}v>$>MSeMb0Jcb)ypLU+3fob6*r$N+5tC$=Fe5tYgw9k zaowZ;0oYYdJF7sOBn+BzLQ#|3o+e$?jE&09^n@n~0T@iH0%|{@dIL$5FNoJWl;oB zE9hWVc~XZ`rb#A&IMII$JLP@2liSgH)ss5HpDw;El5gZG?-#29iO8Op1d`RLSsAfT zL!y-@E*`m^tb1_r;Knf=ovd4l3X`8~#c@#Xy~)-PJ!q8K4A<8uTkd&*LTXQtfTm;t z?lUCIsyIV3FnFe9fyp!E7UXk=`ti9OS4cVC|+o8?P=)-G;Zt$uqq){)+GMYpj>)c{Fkb0iaN;XOT?j) zlv$DLaJu!NjyaN|dj1+3CmNcn3~MD(XD0Nt?rC?WAHKurfGmTnc|O+v6t)elR@$ac>;VEN?ju zq=k9Sb>~tCrn*)?mq}o%i7MtCD}kUPseQO{sss~GXhi&(ZzG~b-Z@MU-cJGr`pX+n zd^ySek}w|f<$v8w*?p`h&$`LqKUsFtzbOgor-q1*F;h=TzgeB#*P0$QEkRxKsi$L5 zUV`ehC8WLD-xnauSKH6E#PDQwFHgFfPofA z8%}p7TwpB@3A)u^+>8YEOjb&qlQhKI8|kr}-$q+_inUV3V}XoS&ib(ydX|}L={W1x zGerF>9&fo)QDCc<;8b{m@emM*^LX0!jgx-`vlQS1k;$&KW}VgC0a~DSR)YGgwnuxy zZCe!rFIO`e{_}$}uhz@2_BA$el^??2B6>w=h*0whRu_LP!`f@ZSc^YJgupR!8X>BV z;ZFB!teXgWs#fH(%7?4%xz=3G|4*T|)Y9TME;~6@je4h}tc1dAPt;g-E$hjz6|RZ2 zMUAZwpGlc$%?=z*Wr#33(R#uE-q-@AOu==QuofqR1royeT4cM-FM4v;p8R-*LOIcf zZPgWI>wmphCaU=r3;oZ_RL`ZnXXu z1Vaaq;?5_!fPdUZPPXKHxUrM1URt6%jYg?eldZ=XDT1WV7n@o26y|BRIy41LrQh)1 zpK2}i%yDX`TEuwP(~_+1a4vh1mB-LFiMz}z2eIW@7xHmq9%!!VmkIgkwq(WwP$F&s z0nQYqR6hNgsVehfF_9+2ai7lKF7Z!qq3bhM_gm=aZLUgh$}M11MBld&Ve%Rfz&4O4 zbT06o#i;>^bTzkF?@HsRgEcoyheg!S({Z2E2%zBsVp5E`6>jh(7;~y_g_otSw`KqZ zI4jS@CoS8o+F^USh(h0dhXv(%{RSe8f5(o?%;E=%SsHDi{{ zi=2vSl-+Kz>3WuK5&<1Ktm1YnP3@a)iAMFWzQ}hl`wCrnkKWsrti7 zNR-c5NR)FeS4>JLEHF+31$*!-ESPH{At`^YFVAgWs|0ioRJep^>YDq~9oBbJAJ1`R z1t5=7)mUJ~YRl*dSrl9WmIn=OA?T`5on5Gffh!7`PYhv&R5D-H7HZMp>q6b|s5|x8 zjJ;F8&AZbY7bR-=G>RL-m83?!oFw60kKW101uA|4mbIAe?IK-A6 z&DeBZXgwb|1+I903%HxRtmsgdv1hUMG`Ee5t;H7wY8gZ=8t+hRSDu@{ODmecpZdF@ zVzM$4N~+F73ABW18LlFhT9O@cwCQuYeQuRr> z$Xva`r48;a^&vVYqa9vS|0a6jhpgGOtGPXnZ7Fe1+lQ^b0=pNlq}|v@7hwolveN3N zhiaxuO~YJJvy!2j;j~+21qkSA}r{!~&uC^v}Se$As2loAeTSuS=O>pXQ~xzX}Y#M zr1KWD&Wde1%4LYE{R@6Aa~+cTOf_L0a+!1}TCIsh`&D!tJR0mw2kH_#x)iB6qHL_ z*Lta;Pcf@H{nDPNK|S*)P=29*fKL7WD<|q{Yk^qiiZ@!j&M?$7p3%!-%`;#oq7FP` z^@i!?t~74~b5ilRGeyOd|GzIp`0RO1*1Chu7~&+2&=@`oh&tR?m-G!bG<3!GA? zX?pLI5qk9yb|hD9V)!;yShwqmI`^MQeI;x%6t%(tLGWG%~_;@wp4;DF%6l> zT1Bq{;-nKTUxjam(Ou+%)rQU1NR1uZD9<$^ajNYWT4k|8%9`blD>c7neWz;@u%Ah$=U)nx8LFh1JMu;HuYki`?l@!(K;S z=Ej|W=?%EG6HHL)Q3|eY?Zg3lUZxtN4_oP3`Hw;fRrsHMewxz z$$&IZ^Y9)Zrjnk)djOx_uW~=I;;hq>5sQP#CcJ?Z9nK|k$TGF&1Iq|1^0&A+LEW*# z=!{Q)^>!9i!`e=fo)Xo4o0Z=6K?cC&3#nZGq*1a`Gr3Dcr8Hc7wn5*@$m(v*X(7X+ z{Dm*~-&Z84&vwRjRu!*z!9#pIqU}RcT{4dR_1i5Ybfx~hcz;}i>Ys*!D&s?zf~6`u za2D*U1ofZzw2rFiLu(9aUw>$&pX7P}2su7`B}xV{CTPm#0|Y@Yifm4mHz=~1^N3lYWaBWqw(C4CLB zHtZ|>2)YF{ePs31#_Zm-BLKh8$pApIX5%oGve$B_yuH7%&%5)Rv)Af<+J`U57#V8Y zUZ{tEJQDX=DJ@^5YU$`p=sJ3}XQ}VALLwZ0;wCk3AB@4v0y1CJsQP_YLd2{7+?$)hY|6*Spq7q-XB_7RyPne`?DUDS!Eer$QO)Wd5zD~V?^)3+e#wqV_I+dS5U%*+z z_JfN{oh|!CFrTTme1^ayi~%bw{Bv{}GaR0$oymxwS`VX!OGrK3rKUJ@kv3O-!343h z>kHbu%{l&s^^SOQWW9*iz3wY54&w~irKI6vq=&C9H@eFxRoj;BzZoy#0W7l_=_rSUsT@e_8o$=;cCEU3s{wi`0y=2eo|?w@mniS)Ap-W&mA36lH{_}B5xii^*xZ5+aZdRUum|*iBLTm-5%+7B?i^tju5T9?5nu&psHunehz#7+%0p-g zgrst)+tX%Tl*pw*q@*J{i)$`*k1SWwKWX+(zKjt3;N}|elQkk<5c~xs$pVos3i;4K zJ8OQjo^XxGz167aTCr$8fje0_wUav`XRGQziH=y+Jq24HG%Afo<+L z&2b#Mi*NzWq7bO^-?Xq1`ak`1&;Pme!^s<}u5AlWBK;pNfoc99Y7U%<|7RuWBZNdC zmoX3mEEfapA8=7~X@6jutyGnIm1wVj*H*vN>z*jioxf}0v3bpTM_f+*2#QENagV?j z`K8O0ceQ&ek#z9(ti-WC@2Dk_H1(m)c@mlW$WbesmU{kXNlf{}+6_~h^(TEJ{Pv%~ zuZ+<}s`w3CdqVuFCyN11R{Q@%8_Yp4$E;s@k?@~+I$?*XomCFagYHMO5;AjvRt~|4tR&<59ECIY>!r2=6Yz{ z3^l`JKSrxruV92AdnC{Ef^0c!$nT{yFWA1y|8|=18>1F%C+pr4`{P58*o04YwtB53?_nEMfLl|CB`>q*O|{E^0!!EfHy!as;VHMzc#ACnl(U z;q+*g^L4nLAV*SpTG|8IiiY=Bvgdu3+tU6VkuIy1-K3o^Xa&u{4kOy>idKB<*S>1S z@BUV{s4GuVXAr3He$YTlcRY`>Bkd`H9DY?Z9@9QzaYjYi;ukm}%HBnWo~>;+7UC_c zXB)c@5n)q8N~$)4VOrah_&u}@O=4}fVXDDsylH%Qv#Px|fqlpTxRVlXuJA06`xJ#s-CeERZ6U#N%^_4{_<}{Yr{`B zv0OI9+D`^-F&S0ivSUEhi~0zs)6|Qsg<<|00|W&%MO*tC_T2{M;ERrf>&XP2r? zw7+CK9@QkPaJ;mgx+G>vcQrxfPi2qB>}~8iNK3Y#jM)Q`m%>E3)sK6M8nq3_h0Ik! z;D=<}jQA*!L0KvGj)=WYubx!>0qtF&hd2n zZ%Y3xu!^nc=M7oANznoUj0IrgTA15LwIe~!i}F@5aO9JP6UA6py=*YvTc^VYKf z9ZK}NRKmmxy(u7^vy<5uh^F^^*TpF~*WTcNNiM0ofxUmPr-Z2T{b8Ko*Uw%eKOO9E z-{aZmaAMd%nbgYjnGNovGC}mZng3Ef^I$$|GP>dCnq@ceP2mOL`qgUcAii0xHV(2M z_UH603&(8wkZr1>3z;i)ffw3?B4pI$&rqZ40QKn0z*1~N#B6ery&3coGngi(UdeKmz2m}=k1?V_9ckg%{f+v1tN>SnuNsG#Ups&RW_ zJN3)W_GNlzg&*yL!JYtwRdYIod)hmbr`cOwccu2kLPChjyv0sCbKjv3E7=KNbc;RI z9WXgyBTgN@1w8sipnIz8bS5Q36;6jlWvH>Y>gH{^)eaoWQ9K;Sz$3T9&}29RX4ub) zAbDt}?sm*9`wY=!Rn{!~CgJqIhRdt@t!s2i(Tgm*mMn#@X4$v1x^rjSu}Lyq0@p&3 z#&ccHC5TWY+Ame{Z2Jucd+Z#02(4N*hgJ=DLT>}Pc)oJt=h}YrTe+5mA?kthO?y$!&SjX?MTX{fu#lLW_VM+n4s78KQ3E&pkzNYmhI*1eNtLKJz za_g&M3ft)6&!bTL><%Jad4JJw2I#?Yov@g{h&n(qg zh-p6OPJ3UV3E2yD6LJ@@cD{90*+mQBW4@E;ew=R~wGjFxz#Xm{yZ0pW@IreNVAk#~ zmeXLh>Mnbr{xy~p7znDVGt%@fs&YLPX@S~xkd+nh>nI>#G zsdjkTefFfF?@=iFx_DL5eehpTIa}_t9Z%>!U@%;bTH67g^b)&(6&$q`Ml(YlS_kwaETiNW_E(^so0m!072r1~-1hq3*ve z!^?W4bWkZ(!EIGu8={tEl*lqw+e>r>2TK?ZUb~h;G3ZU1Z3Kn>z|bcu(bAUGZ3!u< z8-h}0xm`rI#^t)Eq!q03ABC;LfA>K=qbqi>cOh>-UN|^|uAoTh)(YL4sE6!#{;#$% z2iq9tAxO+hJ2q61aiSVE1B2hyEA7OfRcEP7z6frwidMpF1EVXU&jQpfRP7CD-J)07 zKQeVRolQk=2-cRC2Ua2JU5l%F%_DYVJNZxqP+1KD(>FZ-YWp3R&<#}K z<$4lFm4h)d)LrEuBXlt3bljz8K0H$q$~X5AkMKwBg=ZpeX{y^}x|A7@=~C7|W|wF~ z@O@M(DE|a&IO=hY@}>D@Ul97HyefQ^r=)f84!O-?i=BHoqhAI`SA%G9SkJ(DVbg; z^l7F}6Rv-$n2mNnHEDzWxM!ymwNcQ*aFzND_u=a7XIO`RVpSEHN?G6G+`Hi!mZ5(- z>MkQt(F|w(vk*dxudbl0PdV)>;l}+dptdELHTrq`IzE~4JYmypFRkFcsQL zBDu~qJZ;@BL}U;HtseXz{hRFCX)waIa$H1J>1ewXWe1Yl>#}3y)G{eoF3B0EvR=29 zHns%ey3{R}emA}j+SU`GvU;c`98v*n=n1B(>I{y9aZBS_5w|a^(5md#rDj+XWUBSiJq=% z%Li!3_Nkbi@Oy_pK%(`km~Ai|b=!$m(tDeIp)PZgin+ZdpuWu>A8Jq>9!{6D%_(HN z?H*)*w~Cnq2b9f6uzh1uX?jfTpt|V#?FfaIivQ4GDtrGM=Y*5_L%W-f%-x>$$e;yC z>FKinnhzOn;U+@-A~Kt@Rl^(XJI&bv&$U|B@30?s$5Msbx_zS_>ls(}SBQ8MpIwWr z;Ukq5`61nuu6cq=D%a4VT00~_z|!$lsHlavB+zGVU{HE_y31P^b=@92O)c4J_vT>l z>YesnPkJC1{llMO7xb8jo`I|pp>#+veNT00mtVtjmr9Z|<}-K0{rp>9yc>Z*IPxgf z^Ov+ZEqG?Adv_yS^g5~N4ttQ_dN&n49@cov9>fSifEQ3h07srpj7*>!cao3nSj`>@ zZk1mra=DqisplbA^FYaT^vs@sby&T@|KMSuF>@mZ9NY&U(ok zofz`K3z4NYMtIpLqPJC1pP=P9*KJPKr#68ih3jalwD=Qv)$`=%cRc-?a%G;#Agy8! zto?9m!_|cSl-9qgbNKD-Ml3aF}eUH5l+BsmB(t{L+^ulCotYn`82QyXF_pFzh z&id~WVQ5S4kM=u3S&8beC9OKC%|9_kb&vL9aUH_o&|Ymk1hn{dU==xLWSP|}q-eRKB@biv3r6SiQe^!XvE=Gf9$(va+)AOl_b8&P$Te<1F6 z8vnL~gX#NkLB46+t`GJN0^-&O`+#X@d$8{Zq!Q=lP~Tj!rk@?=yGlox5CSM&V&8F? z@1D@7gcPaze%KeI|0XI=&I%9$hjie(8t$8dWU)QmH#d~xhqd-y#cgeC>{qLt0d0IG z%#BkU?b|D{ZFDRajPrHGGMG3w%+D&?bQ~A zGtV$e)x$X0qkmUlxd+#o176?5n%;($c($R%pU*~_m4+`|r-hzKd)M$q2Ca@!&zNDI zPstS|7P*oPLi7<0>_@^R7vAfObGli+lpxPg7n|u=Et7n{99o(GJWI6VZCJeQ_kzPc z!z9NKr??&*>h2q&GQ0aaoRWThci-GolE}J%QOxh*O8|V9_VD!!8lI?LvwiJVT@O7< zTBDzl?vsFCgbq${s?vRvLYO71x9?&9=$6!Xi*xGE_FWk48R0g$;!1Q}ndkZrp90lc z=TXr}H&0I6uCjGO$AKz8&o>g^``oKK#lFl=> z#Rb0ko{QC*3w(W;&yOzv>Y>?#e1EI{aZG}IJV9%9oT3YTM1v`H-nz*5v!|VK!J3v) zT0nw$M!h%0_bKh!er^{rEo~X=1#NlI53uiH(J@nY65tzUSEssRcP5ERX@)*sk&_6 zW+`CRWj-N~^?zgaC_mCJ@_`v4C7E-Ob4L3TNgptpwvE#Dmkq_@Q}75&uY5G^Zmuug zHyY4!b=zvv7~g|*>i8JCaSEM8FOP~bd#rDaUd>UZxg0@SHP)9Baaj{>L0!&9@;%s< zHpssG=*xX=-IC)}|I2-k^IU(qZ-l?HCx(vmd30HAl;`d=+)SLQ<9)#%eny%5EVtAv zeNSj<#-j>vOo|H{jo8HIGtU^ubCqwaFd5ZX`(6$9jCJPaP%H(!mkXASxZID~2r3Z) zF36nd!&zshy7)R@oc4GT!DAR#IG2QZ6EOKk&ASeKHB+s*&KGNmN>0$F zq{*LrwbMCp9dHA$mU@Hl+4yl(EXom|Y-{IFgs1VOxgl7~ZuIpJy`uSRUsZIYFWhsb z%AMgGry6eb-R`*x?#+iA-N1-Y_o-qB9+DH9J^x3Z`+2TumXy=%Ik(yKwW@M512a*Q ze5yl6=M**%>gODJzFwZO>ipL?KIjI(aA>kuW!%IWKyOYW_CfYdtQI0;7x}vASXq-* z{uFX&{@yE^9fVm^eaWig6;?;iO}-S>dkRy1(}~PeBy)OFFotI#J)$8JS|jEqlk04* zL2AwIVX=f`ua#o6^Kg;FQD6!Ut@tC=b+(%()u8^24~p|+RdyQbCIn#WR z5kH~I5CJ7sb-&3+K#A5O%ij?k85O8mIJY=exycu+J8?_1+NL*qzEz$LRks4JD(Anc zY~fS2H&gZO{v6kwIF02*F!htFj%liz8f2o;`A_v3dZXuTx8$0a?6zG`Y6#h6mrge> ziGnhmONL^Os$2{fy3M`KbqBiOV;S5x;o?W;`NGwIkSMueKVPc zC5q{YC5owGuv!mn#!3$=@~2H2>Ow1hnLh0filhkXOy@tdQe(4P&M325(X@PCl(PY zU5{YRZN9z|E?q`5Wv=gPVy5fo2Ju&2IoFp#^z_uF{8;cUzIfkB!b1Wdp!fsq0m``D zmx+&c{_UXLl~Ov0;CA08(6?@2)lv3-7wlnr3%+IpQQbT!!6OWNCsmo)R;*v(4D9K5 z_`VG)PgI{d;q8g^g1}ZWALd|I~ulVIdkLT{>G@Oj>az{@2qd_hIsY)?6d@t4Bn3P*pn__LRJ^ zwnR8Tfob1$pQ}Fcbtoy~*vG2-eBJOcJCWi2X3rnE&pGeVnwlr@|0{Zpz0cbOArfKo_TdvfYNN$sPKeG2}_z8`v(xCA;>v6`bEi+Cl9)JcVKEc5;F z2K#kGgAOE?{KP?|yu`%IAOpkbe%GWm79OEWI#3h2S=Ps#HI@4}-B7aS0= zzH~t$r^sgx`|6bZU;FbnFY}vI@_c)SGBFev`Fz3Fza}_;7x|8Q@Wwv+fUnE^gX9$? zEvr?A>-$sQe>mm+$5Y-9o$~(EDepg@^4@Urd&0jOPfqyPFHP@G`x4&;Vd}ewd>!I% zgePiFOC|;0)r^OH)78p{ebGUANwW9GtFq^&h7uN(=N{5u)oP`0)%@4!;M-guavk9M zk?T*cVNj>JTpPJQBw~+*Ogq8xMp%K3-WZ*YCV6&y}vG_F2e zmvhbHTEex4>m{xaxazq6=IRu|5jkA9aV_I|oNE_XYgn^HE}Ls0*ATADxUS@y#5I#^ zG1u8N{9m^usYh;#=oB>FfB%1|`}Vl1itg|B;h^Uz=ppU`a*lw4?8`wdH7%jEEHxoD zwY)%TscB+bYI%W2OD!!3Wm#!Knp$dtm$v35C@m{9=<;Nx1!cDqKI=_KpJe$G5}#wP#{6qB&OS-XS_rwT`DIYek6n3L72h!Mbp!5|Xc`QuV%J)9_!Ze0I7-H2 zX!Lx6^qxwx&cJwo$0Q_i9ftgi17NJoTZh5CnQH~R;%@JCV$f`?24Bm67EI(By70Z0 zzdM!3Ccz})vyd8QuSL$@^;r0L_ChGiT?bj>L^bMH@gaFWo-b_ z^GJ)v6Mc1~gh7%5ehx5?D)z|oJT+FaM6(%#rRVKvC-&gpeinuEY{={uzqwiDEr6L> z!FblYFdFrO^yZO@`NCF)>GbC~&t0)0Gc2O2S@de!w;?mZu`P-Af8*;=J{3!&8&QqE z8&FOEMxc8327psG0;ikt6%L{Z?7;07#+ERPIxdd{9d4@AT!Vq6r2Rk#TiT~{9I zaenvb`Sa!PWq6fCR?LPWu=i289gSG{Nh>FY$$~8qaSDq^49&+W=LJX;I2IU2tF8@) zHeEGP@M)0iv9XvW)xCjv@@L!=yDAMuxwl^GQFhk*NquuTCs4r>+cbimEG14zQf6kNWa0y^gS4~E`(^+JVa|M*b55w&PCo~dow*{VZX|_ zP&?XV4QD});T*gx9e61-|3a!b-Hu@`kSpcy$;=M&-F&g{G57{@q4d3(>IEo&Z{|## zU&oSAoK@F&u4`AQOo*B%SWuz`B?*Ye@6XKsCuG1Z*Tu;2HAe<4x?UV2#X?45I=IT& zn#|Nd!IV_0uFcH60H-mGIZSPEppMM~b+Q6YInWi1ni+e#Rqza}8l5dD(}GkB(iqAl z&#Mq3bSi!o?QQT2w`d%JDV-^=0yj{+W%n!?cg`HXpbLnFMFSp5ctGnaVbHXIyGfYO z=(GQ25{{Per5(q0c@r> z{P713rea_OtGTyqaA){nLu_sMmqc>o{#pfH9@DCcXYgyGBKKM$|5N zuE29Oo*VGoM3WApe~Bf>>#bPg8=CE$g7_W~^gS@>dr;8#jX~dot?&F5F`?A&bvqSU zJ>(QCzG@dmCwE4BVgK+#7DIx*hX#EQ3;Mn}=zF;J?SBJXRU_KdjdLJa6~2L;fRUuV ziD~mKRQV=2m8UYs70!)_^=dKx-pcOdXvLw-)l~6TX1cFHwzN$Ow@Fx%!X@MA+qW_Y zFBmVKvycu`)C37@624u+84|uj!f6toC}EqTCrQ|*=*becDf&(cONzewk}1-`Ch4gX zwn_Rf3ETCUCSkiCh4lO3%w)&(_Vh?*Xbkz^25Y~YO5f$RID+WqUFXK~%G;p088rO} zR<&l*=_4RmSUlku)Yy+8=-g7M{fSVstWdKp?>W}%J}XpW9b}sODX%Wmh?t9Vqyq`u z2#mOSR9c6QH`|HFotiWZxi!G;x zT=(uY;vF8ocuo5hoqIQP$UiPomm#xCJlkZ(4=|I36m}=>0INvF&{y&vMydz@(RFci z*Q)n2J(|4`&U*kUcrx+y#xnrVt#~kP7ketau0FV|{yVVc*6r-uHY47LK*{)IRU`(REL@1p@9hV_BW>&oX~#LVu8$zboBFp7qK0C8j)`*bS5kypVS31QK}%l5oc z$q6o}c^`n`l-vaZd4vxlj^}S2v4mR?dv92)Bkzyx z6U!RLImHe@Y4f&z%xdfG4>K2GU0JkyLl+o>5~uoCG$WXm&ERs%I*R3C3StJU$O%6dT(K3Uvek9+lZr> z)qzL!i7dD~kiM||_w`SZ-$Z0FahdTC^GPip2o6|g-Q=ea%>d&CA4=g#X2@h8ro zpMeKPx*kc2je3ti@#9pvL!~1+m27I`#jE{^#lK?lH;zhGDX87uyc{=N}j6x}h0-O*2?0 zU$$XTUBB=!%-F{*JO5G9#n7PP~a?*Xh~+FrJsTS81RJD#9mYJ9zr>J|I8bRE)~mU!Omp zhj844sd#u!>dCAQB13X6ALwF~cGylxo z<;2CVh>88i79CtW2dYCAWuIB8sI6Vt+SuY&dnqrQ-@4V-aY~K(i%)&MCH64(WvH8Q z2`kbB+gQ>8+g3lRsZ`Zj?SVav`T;7;M*ik=mS?K#Les$LaYE#M7c3vPfEMge@vauk zR1ZM5@oU&rN{2c3nm?nR<*Mq%%8pM}uTgw7K~?);hXW9VJyngv`VGEg%_ddF!PPW# zjjrAw8p>?`CQ^E;hB>gC>J6b0fAXj|ILv7->8{RHtNJXV-!B05tl4cfM zqkh6Cb1>>hnz{YdDn)tQRIXET^qGqlOA%M&IKk2WDqCThe!V)@p&T)Ro309PoiL8F zn_{BM3O8VPaFDtvbSL;l2%T0tBnbS}VeCJe0yU*9m-EFN)r}z{)f|d=Lya_R^3)2a zbeM3nYRJ!m40l4A=M9&+_huD0d~q?NDW|<3x+KFUXB+E>%^`{?pVRPWQ*ij|VYnOy?7-oS_=RrUf%WA095v zF`h8o$|+toQ@z%G9FcP1?83&i8oRP0Jj|?`sp29bMot@#V_24 zMJP`?j#)K48Um7i0;jIjvd-93o~0hc>JtYty|dNX4w*vf8Wmav;jD%G6jT%H?nCu4 zCSL2uG~<4?8&v-uxL+L?&e^dTEGl6Ba=-epLuoLJ=c`bMX{6d!P&%sn6tdag8xDEf)iBvpvpH^;RSOJld%rx z55>K7-o6%VPS&~45=qz+crn}Z%!7dzadbD>;b zs{X};UHRo|$;CK9U(zGZibvEDtS%|IOH`@qk>$)NRZ~#KL8adgbeSY&e_A=OLL9y@vA2)P*96p7c=}`s^u+*r;{I@yu^ms3Zzt&&Y>S zY3tBfI(7;IX3>@HuuPa6>ME;Pj`hWr>P%q-(@nLJEX|jzyKGqApn(l7Qa6Tv17gDg zkfVH?L>e@Hv)_dlOKvvqUh%I|OK<`d?fkN&n|iGS&V)a%_KY^f-bEhiLLW z5rNwpYoJu74vKM^RZoKctgt3%uC;?1;nO$?qx^@7^2ul(P6VaP%3F-6pi+&MIaKzC zzGq1#+U7gTdmi+3rZj=I|CDz-Bv6lM)V)b;h?PY~?n^i0;lY%rT8v9v4zpI>>ck1m z+70T{BFR`P?(B!2@N7ReXu~m;U$Id=A$)q$yyq}@e9!q9s`(Dw^(vUYFwOq!g>T1im|t~Cf_C06 zbp>v^6oi+(8^ry)706PfdN?A;INQ0d$v;9SVgEv2(7;9SGb zZt2|0b~ZgPtNswBwVCsZ+E&3Gj(M-Dx8nB3Ew8Ez-ECy(w(J^f<{nV}7;~xkpvnd< ze?JIL?=gL^sRMYcDrXn?)}l96zP7OTO?3e-Da?6G{m>B_g;Wx$*yl*5-bd6LCE7f9 zM1?{$^yur50?ur zQKv}i%R6S%c3J(QWLkDiO-IUz0h(N^M41i8)D<`;ZQk>l`kOTXc0lW?-9_{cwB-xb zI)UnUAiVbk;wJJpNUt6|Y}8fgzl9^98^+h6n#)dr8)L(|wx0&6XEJ*9*)P>ZnNZ%X zFv#!!N}a2;w+dSEduI#>U#Umam^k@o6Y5xecfi9kpY1l93T_Vr)qITvfM}JX)a)qb!gfm$}Hs}7)kBti$2>eY=0BfuKMaA)59Pr|X$GJ>vBhF5N(TboW!XwLnQx7Yh z=VE=!p+|}4DgPa^5iC1#qWQmdb}BH%R-?sI z-`~|JQJ#x3K)KqGuQRUJI@TGB4JC-|0QT>C9e2W4{jSzYG6d_v?!kkQ5i0&rEy*mM zlo}m3juBK>>i$r7#M^Yh@;uK2F4T9;pK2$89bQlBgXdf z$&Vwip?zmnOOd%Ry?tkU!_9-9#@!Cb@?xQ)@}D!oEW5CTCO)qV++BMpC{bEla}=hZuucpe{kafb`T2{8;+kV|}J z)8CGzz55*&>R0Zp)u61~RZvq|!zk$0JG4X1DCV3)BVqa5Pt`NCaHYWVc+3Stw3!!& zGjp6;cSY%D&I#3KI272o;~t34kP4l{1TR&5hx_b`ra||)?iMVRRAEaVr^V25uzP$k zp3NsKH)xS%CG)YarOWRH=8Z~W+1Ii$>UMyB|-B`qeb6~Z;r&;UP z?swu;*XcGIWX3jHh0@E!_Y4I`xAL+;MRPscs_=Ud4{9SK4cI%0&^}>NC_;nfXEW(i z?Q4rbuo~P4<|7hgH5d%!7}RLse#-3Bv?v-CtMRoE#j%J38;-FWtRpa{(Nu@93Xz?x zg_%w9T3t&)f0t9v;uP@4dZ4drHSZ$&w1Mb~S9Z{@VRq6%`y`2}k13DGb>_5OzknNM z&1nsVfr)J7I7K@k62+rmNb8 znI&l&rcs>mO;q{=1nY*5+WQjT-AQ{AC)#*Sp{7i9$A(rg1W@#TB6Q8twM7?6v{&J( zOzk?Qk2xtr`=SL7l-aRhFV(N@ir}VU6te`tgGCNyWdT=Lb1U>xt}&NqX+wC-YV3k{ zUyEXLyK19wWz+O-Xea+TNU;?!z(#vrSG3}_CR~RrVzzn-G;>2DagYKy#D0Tdhhj?E zzq z7KSFe_);kDe%Vikpq1yxV5ADq5bD;~YMmsp7yJTqoUm?&6APQ2&LnP7p2OL+X~W#O zdEB^>G~zm~CL=Ho!JTQD=~%2WNZ97AX=YA;4VJ5lF~8Fm0D<5EPeNc8EX}MMsEr5( zFnY9>VyZW3Ct!fjj2NnI2mzzpJscfYlrn@Wd%|#4RU$6d+B;IKU|&Sps$ixOK2{sd zQ_L}AHC+%mcEHAJ?_u*tFo*m@9h@{bU+W#urQ;u$jB7Il44O;5p6c_p4GOe%n1HfF zprz<(>f)kfDPEUc4JasXoj?Z)G&U9cQGqrKw>stBrcDD>dz)t6kcoMr0jrUPF6beb z-08wxV*n_-VI9ux#f{VaxB%+#I3;Wn#U^ZUu#pHBBkSpgUUn5HHBZUM;kx)pD3Jsuet z9wpsJ;}A5u<`^@tP+P0G#|C0g{}<}*xmyc!=U?pB<8H0DQefV5w-%yg+$NJ5C*R}c zdxCu5F5h>Ul{2(5M`$giYX`JelOVX>t3mjiXnr|cn-v;82?2Sg*A)-{xW>48Z@!iy zhGr%{9)FqPcgMp#3`f7`D}3ER?R<@|9OuAd2;~vtqQK-^pp8`~o5c&X9~{txK;5?H z+=(1{_krn@F){@(@B7&BRKPsHvf;Y`vm|80)2Lvf78zX#XJ*~JC}?|4H#Sz*Y=$wT4UII_rP?9IJqHeq z$b3xiwajo{r{o#pgLs^j_ORAHg4eQwv$&6@KCJcnoAdp&`(f>6Wezni(<0*;LvxWd zzvtmS5pQmzIpljBgwpVohKb;LEPvE2)4W!sOuWLEW1Kia!LNNDxiaOK`jD;mgnyiyqZVL~N!B zE(+5`zKHF68buoT9GE_q{vc8;z>ZmNiRMI#qt{}5X*h@5cS=gMruYT2N=5QrjCWAA zHkWGS5h>y^Emrv#WjrPdHT^NIEN25UVxla@b2A=3OTzGQJdE#j<&sO5;LQ)i_Kxeq zKn6X_w80Tx1Y;?0QNa0eIOC!*UT&;khs6x%3M~#rNLrx{iTDa3IrIa8(8Vi|$PwxM zV8FQ%p~H8=c^n?AJ~=D3!C6lM3@&vq33Ck=%J0SU4Qzs9#5E;zXew#3j>XB;zN4#S z_&oSrNSMi^oWKPwJUNzFp_F_oez6rOgZE_WR%(gx|9+*GfYT)f<>;@F3CgwDcqUg= zR@`gR4{w`4J!FN#b+8D9sFnPBSU6JHXRTaGOe=P)<5SSi1^THct$Xw`q|NlY9B=M( z79xt*fH?fCw4?ElNdHIWy9Dn*;}1cm0m?6xAs)lq&KPBS9K3rDeek$ugqO*{bS2E@D2BREh2k=(*xd8KwTzEWoOjC`-XILmdE^b91*Idso6U@#(H3LSe! zE5aRTXoF3P?^#4(@zs_K*2{!81QN=47W1AtRPZb&7$5=*3SX}cj^8N5J}2ML2jYnO zZldMuwQ-1ZdOfTVY=dNYJ!$s_Eg^g}Qec*CQD@@@&5#SF?k(`i zfsd=K@|#FAf1|cTiO9m<9EZ-t!+mQZY@~FHEcc{@VIp1}9utctIL(El#1o#!n7@@8 zw}DK>z1>Ckz*d)klQt@i>6qi%^vB;k%tZycftWXG329X*g54>aN9&K^T&-$4y-7<6 zw5y$Jf65w+eV87bwYczY5=)#!7aF}8)74g>~wE=Y_l$Q*Oh77Xq{ z=Nm6Tkl8`sz5r25&@Ke(ty(s|3$~&k>?B{6Ru&j<>@nLy=^IsO5v!-r`1P8H8@3wV zV;4%$ynF1X@2ip1OBB9MyFa*>#P309uI*m=-iNo9zG(RUjOkwCFH2W>57h2BYk_|f z>~ zrm>F>yr|8k{-)L-HWW<%E^V&8EMC1EU1|;evRfN_C6_K5Ic4MFpWW{NBR8m{Y1fFw z1_&&I@!d>~FF~^ARNK??-9~~LwMWZ$U@KD0151vxQp`SZg4ZvsY}D=3{NaaCLp$%0 zX83-sr6M#-Zb8C6jB$LE*2~%f>_Up^vwU`ybs8no_I(FpIa`5P+Gb0Bdfey%l$vRvT{Q?u1Z^WvDx$z6cb9|djZNAYaW22_vOYLFozF@r}vivI$(n;}2 zb$Qrt%>D{O%=eZd z@dp+_ztdtIeG4=aWrDdP-3) zp>wBrhHhT@1B70f*?OP}?+_~eO-pb%y=C*;xATR1E$T#?f?`@UgIk(ur@>aSGMn`? z*32vBN3Eukq9{-KaNO|gzZ`Sonq(YGsmf}PMX|?Iu|oJFrpOgPY2)2)nN&-vd>doD zzZ1_a9)>yCRwmMdjqBDNfQsLX!&X9gShvtH0hcyLW9{V^Fnv0E3axVHS1nz^5-|#` zwB;Ap1%JcP2jgAhdx7qvZ<-+A_auj_&cphW7J{`8 zcIio!?FMtIYpG-Dr=`A;|2e6lr5;8DU6z{#nxkBLn8H3-fpqIbqiwae7RZ$!&b?Jx z{k=d*0=BTKVtlUhR(h`3XoeTBxMjCWE-QR8%*~V;35f;P%l-(9b=$H!wjo;Uu_$VB z7p&D6-rCX0!{S%1^jl(>AG2)1qqqwXqcjaD*w>*w6+MH6zU(|qFpHwl`IfcTT@jo* zPs41w??}(K);on-nbx<~#T{(_kXh$2{RIe3Xn(AVhUqR8=JzoD{$TW(%ffY-PhCs9 z+vqZS`BDxhYt9wadu0gb?D6 z5qm&k>m$M>gB%&5&%&BVeFTbLXr7MHpOniDR2rq1IWoM|YK+m2vZM9A*iR{Kr$c^- zK{+#NP>eoKBoa>r`yt;Sj?u>p7#5?};P6CAQk2si7^}ljjmi<634D2_h>MJ7r2+89gPw{z7%A%ENdUs!!X3kxk z!QH63quz_sJL+)}mo@Xdobo#AeSF=UIrnG=_v9poL|oC#xfexu()&1id+FXZy)*6Y zsQam^lOBhw-t|N}(Mj({C)3bZdUw>lmha4T_?C2p@5Xe!o8ww9{o2uv*&_pfLp#B5 zN(TG}cZz_-2G!HpCKXKz4fDpTJWq(wpv zs=kP(X!;3DlLUgF%gopH9*T^wi~9^H_wx2mx$RlKHy#IRRPgw-hJMI$Eb~pkjz;%r z*d+Js*8ZroETRMpj@@IOL7l6Il1i1y4s8E+(fe`^dRM(2{J{_glj~lb207M6&%M|K zrYgGXJ;>DsxUK5iJlZT;(haD-C@B#mpK>qLm$ApG%k^7e6j0=wd%3xDz$Y>L%Ndw^WVLHW`S#Ys%6DLtY3Qv-B{A}Q<6*9D=go60h8NTH zds|}H-T}i1BNDLsS#>2wQk(#WK73fKFzikiT&YJ!{Fi9?+Y+Ew`X)}5?YL4;rNY(N zuo;g8{#*Ep9PYNQ)3CAK77B7|Jq(v@j>eH`&(-?SkWlD*K6#a{Ir1P7q+y@D;VQ^L zHQTWBTGi-v(cWvpxEik3qb_PzDgpD@xPUX!~taASUM*}zgcN%!?F%L}%i*@C7MRgTC zHY!T+%@3o2QJaD%xc59EVLSX*!29uVcz!RUtZVehKxcm#PQjh60`PJ9a1_`RMR1?p zH<)Jxlflb?d8CAm^4_}f-?~KHXEnUykmMD8hvjM?2Ff2smEnx%5;YQ&(f(G-4YugKJ+=yTezyu-v_e=Y-C2`=6g>+ z-4!~FlYv2GsO@>L)#E~$rQJls`spy}vknJ5iu&nsRwwSKYuEsId!I$C?{zU6Le^DnFWN5CCn>SoI zkI7U#0ENHP3gJl&bJ3#f^{AD(I5RL+)F|UW7(O`YU0y36t_8!>By1;DNWOu(!SW7N zD+gkP5OUG7fe=Qf)8p)wJ5cwORlMq?V*?>-7Qv@%U^On@8=}WyTe5(gVw_BThE>cF z5}av)gCvLzYHp~8BDBiASb~YaV zF~Z6y=SDsDZ_Z0CJdUJd_-5VbwF1vY1g`b{5}qyLxe}f!;d%7NjhG6}w@O&Y=*QVU zF6~MFE)u0>eFH}Ozbqet_KAZmw9_Jdkf)%PC*v%J4$kudnFq5#h98u$A>qYzd@%AH zLJ>2Ok0)1;!gpFOs9?y-dT1Qx=jzVTB^-$=CqdgLe-7|=YgtY;)-0A{k8deG%Yh%V zI>(DL)raYHF6LCrtTGne%1abCqG%QQ_;L=$SIK`6`BAGXIR3_!6jd1kPo^N6$)UI^ z3#QAel*yv=z{XWsA>k63&qU=#7wU$s zHBm-Um8d*f6&RMOya{cAd&$rwG?Cq{et<904=My1El8AAsPtMCk$|MRNY6+Z9az9? zB^)W?brNP7fWtp4VO|koc)f&MN_c~WnK82eM!-mmwhz&Lu&GvnZUVEyXoE#Jp{Rnw zHdz%D9eguxLPLn7?3wL^9paxwF!T)Uu!#DL<)tc7snA_0#RSUwIxG@OLC1%J3I_Y4Cm?zD26GQ5>bd6BAz0l%iq{2d$@++}?W zG@ltFi6v?%V;;m3KLUl~n(vW`^PV=tdujB|SU+$MgVb7bGgyfDs@V+vteTrK%M#!> z0gv2C;41?IWbWAKrTHsDV>0$5S#BI2ZI};CWlZBIY2}hT0CRRP)AHfy05#k#QgEJ0 zbca{0qB9NQ6jN3nP`zRp3NHG>L8~vk7F4}&*t4#zwVOh3=Kg{DP1=PeDbC;xuT_8* z_-6P`3A0$k@LLjICgH;p=7O^S+Y(+R;Uf|*lJGlJISP$|xy>jP^UQFR#Jdbqc+?1d zg^flH-lNJvXq)#bYcxVkWOt?xTEt&mR>!zjbZV#`1EonIJ^L15`3%0wnyNA17!5{) z1NygsT>4Vd7>EYr(_^6E#-R?6M)u72z$4;z!8OW4Nb7ZSEHc|yWACcl)hjmfVh zTy%+*{?`^Ju~-jG;&_HAv%uw&TO}@O9e;6;!(u(76HD}g?nY(-0y;Cw?yhKkQKJPvxUA&< z^jhS6k4*logr`gRoP?)J_%8`hlJI#6+u|56l5+nnkp7Boy6ulkgY`CrJ1f2`5VUX2ATjYm$p^ zPA^FmZ{=#pX6>mKx#8$S2 zJl<#H;U8DV9(+?}FvcrKOOr4Uz7uHbOiWU;r|C}Yh!kYNID5l*-RbD)6XSxTlYFOJ zZ!H6HgWG2nkI?wpwR%hztuw;OsYfH)mb1--lbm|QJ1i%ave0DipWw?OG;Y)sXy0># zu{tQQA-Et#jR!9Lx1%+)tkxXJ-(9S4mT;jjKmB&#uA9IR+Q0gCRBPR2(Am-3!Fmr& z(>>*Pfb(7^EC0C6^Ky#6Lr;k4E}b8d&ONB#9T+BhiX7Zir0W$hw2e%92};A#kRU7} zP@I^+jl~7I$|^`7t013I)*$e9H8*F%irMLeKqi{7BjqCvm`)lEVcS6fBB z#wu!GikOUo_k*$}Ue}6VfC(y7Q|R?Am<)=iVK*m>o}G+xZ5H`W!sgMj$-te!Vhxut zF&AZERFZlpJPvXBJ+mN4bL;h|(RX6+p>QG`m%$sh{TV;*yCm{%pxQf8x?Ohw3r%+- zq4)Vq%pzemhP!CVUtmQyT7`p(Gzy0UzthoSvDvYFik^wr?kOmrz~;#*7zs3TPlZF` zoyZgTl8Br#6@{C^#e}#cOMPr6+`KJXIO)(-FoXrq|)Ql^vrk_*<|D4ANS>nc(^FH(D7+NvWsaWtPoW?!zo+R zJCherL|_ixLMKl}#_%`K*#(2ow~90LE?JzBTb)+Aw@La>lKG62aJ+=aOE_A>6C})Q zwOp>-C5(BofbXE|r|X?ECc-(GT^xZo|7?UG!Z$~sWU=$6;Xq?*p?-M5^|D;kWxD^8 z0q>UZdWz;h!ONLL%>MbvYq zz5vtUf`v$+ZYI_U1eGQ|%Y!3+HqxGu4E0|~Kr+1>%cW3m&#u#I4A2yfq`zm_@+k<}GNcqccE-U=dg^ zzZo2gnV7Pfrq2d*dWLdtK`o-@z-bkg-V7F-g(_roJ@8|aUM_-^&(b~d3x(r_8rn0d zWunZ1wW#G*73z4Z{)qL>9S_rOLGMD&EaC42*e_?N@;6Y2$3z{%KgO6d9{F5~$4%99 zu#GuoHaLdpdaLmDw?4;xkejcJ-kyyrk75o8Cc{R9uz+`f`CRH8(PeYyNUkK-Zi?oB z`K_>6@>p8VLWwAHxm8Rt$$+gIln;YNBfK$qo#Rk~oSv}A=}A%Qhyk+HJx~s7Ic)k| z;I)bgZ#C_{4{S*+DSdOF9+tI6Qq&At@TVj^O~Ox0_)ZB|P}=>dSn6!>HG3He4F?$! z+js({Vg|R4zcG8BgQ|<^>CgBQ^2i2J$bxSrxowo`cb4ftC*h6~eqO>IB)mz&?IpZf z!tDTaQ(dU^l^C6b!Ax$CEmS&J&lHPl0^ht|lko!L26LJ<3PR#%cNzlBk++H-LSAOh zRicgDESa%awN+;xo0M(ho24>ZbwBD|;l|ev{%RTr@10gq!Qx*O--6Uki`4EwUfq$P z)nIA!_2fajP&_93#WJtm5@yQhykC;=0(^7TIqY0K?6*hy&6e<9Dn*j8r(QiDEw$e& ziif-F%htE(6g3oaA6jkVJSN!5=&g(RD;HWdn4^oawGGW%pbtnpAd|OS>7azUl`hoc z`vrQkP$j?t(4xTSW%#`GH5ma+LX`J)AMKx#9ur}seyempWTAVw1YuQ#hfXmwfl(2B zyK|)1Tb3YvSO~(fp3Y+zeKTLqvYZQ05gtr^wzO6!OJL8M>LonEnr`fB#AdW-fbQ(c zA~K`&T^V46gx`}eqn-WVm#{6Qe?aGof%1P_o#R8R3U&x=LCXnijASY3-t=2T+2w6LS6Ki{#6CcpKDdJu_9^#msxH{aa*O=80>V|`r0+;BoyT3v0 z*f|mwoS<>?^bgd2P0N_HG0iLyT>+R8#`Bg;JPN-l=OH~Z#`xayVsXUw>UxseXS8b< zpY+Z7^Gp~##9xl*+dyt>9s*bS&&A+(0q{8co(zB@@b?#krvjh|{6hc~ftxM{PX|B| z_{RV!0{?U|_;Uahfqw~rBJi&lgTDnp5%^31MBrp-%k8sX@MP$m^-6kJKuOE>O&N#3 zyx4|Q7~qLPDEljr;_2mj*Qh4g$Z8F58`EC`E~~l%_Jbb5a5#>pK7t-mOG_WoJ4HPH z*~Ll23cw?nX?#Z?J)&n`I_%iRzTRVWYD{Jf%tvUC>I+((N50%8Z_T7r=^Z+n#~#&> zDxpU}tvI=PyBmj%O0m7qY?gmaLj2u7=o>T4FL9=$=u5~a1Ls4lQGE=0M|`nX7(y{k zaxC0r`j|dgTp`t#BF^E0>#A*`*h5@}Rn)_e>8_;UJL0(J9O<4Y>qMN7rhlhKihJ!> zQgL=X?2dHph|TLVeI16;(iR4mrpt7%kBc@E@i@~QJT5#QJa(~tl(jXZ z-U}z^xZk0^A~_!&U#-W6vbPI^4D`yv)?i9CnS5*X0Z8QZQ^;l1G+c+}Ukpp=Kg2)YFWA8jQ{D0O~li~EZ6=&ecRnsiAYmW_jZzMVWZ6GTD70k0sHs~H%WT*(@ zIJ1NNMmie$aK8}%MCP+nRR4(TLf`+D|9eH19-gN^!Fye@kV zI(&4fI65o80Afa zfoOjQj1Q%5gPD*Hs{ffb969m;#ZR<+xcBj}#1q_pcpjrKtMsl=M4q<-R!oXo z;lx1V09bNsN!95v4U%82FF{6)FX^%6+w`c=gP@p8D8hw%ul?IZadWom35=^T+w{(% zF9`2EKVnvFgO;Z}@=~~6_lt8jEC(XU_@I|t^{n)c|Hj&2W9_Uc1q@}fn!HMl5TgjVD` zjk?tRiUU_W_UZ!z=aMGE({8pTs{8{>$DY^-XLxJLm>7q+?(`0Sf}4jI5tOPAgYV=% zh_o8qKAbW?0mPQ<(}yDWoUd_kPK`})mG9Rrqhc^yvtNG|UKe;n_RG-1%3P%V{>1@h<=J5e?{=Xk6zI&b1O(q)-L>2F;QN!zKV~r~NOx5jR=q~*YggZg=-oU`Y&X?2a(@;n_{D!_lh&ETE2#h_(L@WcuO>$7_OTxN9Xh|aXZT@-UE#` z;y_VDK9m_py`}e#jts^$qI>bUsWA?x18d+Pi~v|seIqQgtYR_Lrw;2yqCzlaFLc=t z>jMQGO^p+A9M1o?IO>3QNyaj1DaJzSJN;9r0(yO|!_2z3!C8cB7}d9eYsEYIF;UMU zC<2Q({4iOaFu^^$D=fRbS+74B&XS`8?o59D=rqMfnuYJ`Q4U8`2WsOCYfm)}*b8i0 z>WwmM-q%kkv~G(YC#>z%{9ErYi>)k%eF*=D811=T5=n`Th{P7s^bbJ>xHR!Y!AbNL+G9COz?;{TG-GHbV;HUGw)qPO~$!3W|5Qg4K zZxv16Vlc|p{UTwi=UWVB*qIW8aQ53i5b1aNDrju&{tib(7+bf|m)}7yU>g-JsP+oz zdW}D+7ume5Vyxd;{yld4IH*F6i!!=m(hTu@{P+4X3o+F1l%A5t{`}+Vh7(VBJR%O> zjEiYRF~7}PsO_uLA;-W z38Xja%TWBh_Tc=7+hMPuu1Q}FQFiKSB%}qmvps_R_f${s3&VEZSd1*5pCRH-GMD}g zFv z45nv3y5|grRB*O4dRMni-TkOwWh%(ogglwad=IPxP4|axnKbG``~JZA;PYCw?*uHQ zl+|~SHC=yVEn66U^iaVU;E!hycYv|Zvk?A#ly_Eep{Zx}GC;~X{Z>?D^f`T+119B8 zdtieLc2&d5{F|UNS?-J4=`mai*k!z8SZ6mKRNCYb!r=3-8tut{gl%ZNLg%S@g^q1p`uHp++|P?VwQOe(srX zh8lPA`-&DuM{E}qv@m!sgsJ3jqD2Se22I$zf^9II2DuypTvbcMPu&iohkm2ShrQ@B z8XSt38e17NtVW78r?fUUTa?k$ObR#dRDkOXvq4-D!XkLl%eV!#>WxrzbPvpdooHit zQQpwDh9!Z?GfBB^jVR1gg@`n_tzn%{8cfC2Es|;7zp*7HuKV_Sj2?EyF~#9Qc8VprN6w(%-ah-6vgi7y-2Ptt^Y=swl3WS=gy6rZvj@c1azU{g_M=QN`QUn8B>5pXo)M3zH3cQ!hsCOFE8Rj>*8` zOE;voWtuTwnD6C*i!)e5(+_pNKRQ^>?g?j}3w4km%~ zfQB(Z=|RU0W0T!ZtNlj4Y!%VJFp@qHnM^1B1}`ZHqTz0bxz7X~2&-BIQDjO7e_Z(} zXvJ4#8Hvhd+LvXNL7xIO?G7`5Twz+>#pny4#xBM+(5VnkxktgyiY`sVxOi_Qj^KQh z;wn3Q2oh-_j#$=g%W|28U5y%tpseh&)8k^xYTm-F36~qHaJr4MdW6NA6_=w@(9fu! zi&|B6#5v}}-Hm0T-1Iq=cNEs#3VRsc+zc~y;6kLG&V;g>Y0mIZd36szrj9G=qaMa! zM$S4+b+daKevwBMpW*~>Ie=5iB|VLSz}WGg;5$qUJt^x7Ny<{{ExE}+=_ldHUda^* zdle~#{*>}wh7&p}Vsxu`7p+kBG?eDCs@Dr62b4K_K}0N4p{JTX4Rlk|3r(NHu6-!# z+vr4^?ZLdlUn5ym80GXvcffElzqfIVXsZw=CCiTWA3%l&azYM@k z(Trf+XmpkFbVLy@OJFZM_77Cr$B0cE2j}3J1DnBZ0JkRh{MZECU0AETBGZ0)&$>>4 zmxAoXrZl@gA(gLB_^jXH!ZR076`mWh z_wX#9Uf<%u#R>0VpQ8BG`SZ*1?8A0ONYnZAkDfk%{?lL1pC3pCIYvUn*589#2&Gy> z%i-)=3TK|!;Y1t8=S6Lup3t^%YDGD(I3r;(;rkrpVd(eFx!OpHz80;+6CajinR_wv zPEhsL#sH?0zpgg^g)yS|8YA{^HeW8mwb@vt+T9(|o`b#90*NHZ0W zn~HCbhoC>TrH2Og!@BCIzD8fs7osU|c}!QzKM8@X&VWJcigT@8=E=UsDhEtKia}}B zbznHbORJ;$8&P7GYOf3>P|gSyo$n@elHA{1(2w%8b()*|8@VAOlO$3G8Y!rF+Cbww zydnl+puOH2`EHEN0G)=*r?do@z&5iW0{|8UJkOa2%@}Y$OVwMDmqmwZ3qQ z;WW<&BY z^!MUlQxeV<=I3Jh%RdvsRYfmgsHPDsKusTFs3KyvkWgRP;*Z-*F*1<*SnDRQVQ%t3cRkjKDqZh(>O zX0-&)2kQ`%jF(Zl>dD3|2bvRaT&mj??=*9#8nfkv046R3=%o;D1UMFSjJv52LPh8> z6eXMLk3rNZoM9BgL}lX)fL)!i+xfcVCD3fSktoOc$k*H=ChR5ON z+p~=K6xgh+oC8r?8EO7dV@26Y3%oGQyAZX3su_nZ>587aYoW0U=fmqA9}=%}a{ZFvD<)RgEK5U1H##(i^QsNSz<`h*fK_Bfv^((NParOsDKy^znrMyFC zeT4fGu1$V|ZJ7*%{*Y&>(d~a<6{?tHIE76PL5@_r)UcM#5-DOS(4G53h_n15qp$k~ zFcIzsSco~owx=GFvM19$Ba6G>e` zd&UlvNZfEe?+k7@czf~i0H2MAe|B&Pau>T%&hNPKXyA$#Vdcw>p@9-kq|?h$Gw*0@ z2FzVrs$99;9xJGRxt!8O^JfBuJqk{K7FtGBwG7r=t*QqaAqFNefq5n%_tZdg z)sIMKkjUQFoJrD7_M=An{}?H(@nP38k=8tFbn@LLGZ7R3Z!aE3%7tJNr*O*N1}`V2 z#ISUCESVJTht;1F!&)(BW*XcYXtZar4_a6v3BGwJaZkHY#}cEf>=YnA5O*fbX#3aW z4w$%7Oy&y%0rOr4f*L-M3E%y zIV{1}Va;QPwP+kq5oLkp1KgYe-T#}g6SSnv2ovF>sqzJEL~br)+BDHGu|PH5k}~`& zjhS|ur(l?S?@GfmWpz32E;sHEy&L7k%r?vyDMH0l9vN$u8J2k7;MQOdX_YZT_+3uR zR~dc4jow~m42abq_jh|xUw(to|e%8|RC(uo2BA>QYaBsU5 zs)@yowuPgyz~1l#SPm!TqUyVxSfVgGImz{;F;FNeaF;+V(Od7~+F)z)Nw7m4@Z`Du zENc~}_iAH=GTW*w&+}o*+*k*d)nRLl;R-Hb4D9;fZ$+C+jcZVgc@{KZ2nCe;l%Xms z&3R85tsQ|KrPj#XhsUO+c&e;Gz6-3FMO0s5Sc{C&lvOE-A(|#tB6Ts3%%t}#F>{p6 zq9h!QHmpM%mpSDbBg~q_#lYxhBo@1i;g!9UZ)RABnOSjwbc6)bw9XhBkdC-ac6qqp zPlV|w%$^IM#o~rUedV(lSR2+G)^&z|XAa5+*(1@`8;n;4d+3U!I#BTpzE8fb?liME z8rdN@jas}3quWAKUI2mDY=T_8h?LFX`a;wC0qa|6f<4IJ3Cd#1+lto`;Ulypm*To@ zlxOy4jEWD@X%6(T70JD{wa?|B3usn2@Rl%HrXDF&Va2I-& zEL+7c!zCkT-Q5|yZI=-yCObTK_Q7*ArZ1R3H|@e$yzajw=-+KLKrW7W$(V)L(w87n zJu7;C`5vR2V|@o<1(+JfKyb<5WAt@wz<$>anVqR_k8ucmDD{@?hXVb;;>-HP7-J1h$;QhC{ zw*)}W!mN84T=BwONp-()kw4|u8b<}DVo7_&m?4m43odQw^iq_h<`u~LTM;d|BvpZA z&VW@NRYHb3~= zn6B5rTOHMC^9omcsyKuaHmt;$Qt~>`d&=DMIu^A>9d4k!eOM@LnhSF7{RUQ(PSMmi zQqq#r#1v@Pc%iL+ZS^K83z=;`C&O4~m4%+fgKtTKb9XafbWHZEf z*nO?0&R8Wz3^b2emk-`C_0#lvu+*J_5fe*`cR}%JSG|$_j~k+Pfs&~z&X-{Hha-e{_s+mDLPGm%p#2g`n>MXWo^}Ga0*_;g+C|Yt08FV}H8{O<8qs zJ5QPa4Pf>?BmEyI11z1{xnD~;-=G!K&%t*3`|lZE$BP~4)JOUiKJH@nYqetxRII}+A}KwX9NV$`yRN1e3s-^Q|_ zk*R(>x_j=2vK#p#AL~;Cj~V^{A9bldCI_5kYCLAV1rx&;6bcU? zH>{g?P&=!+XwavS1ozOqPmN9@VVe$_p7&ma@Y+wYh9uOd#){6`otEM{8!Ehx7tx2i zad!MX{?$Aef{q=6siBy_-q4~22Rk_MvTz?=z&J? zH6I;p#KItBoPWU`5VwRSf*x}hMPQ@!b4=`y(7ex$A5bEpOLMdxY%s0*!ieH6jTgQ! zZWd*XrqeG$1;Tp*awcp7er5C#)H@Psqi+92y|wf!V;t2S!}VXwzWiUt+Y0-HP?q{o zL51SKH3lT@3qm2Y7hX}~1qALZ{iyg`EK098E59`&Lqhu@C~gS)LAS;G`jZCIqvG$4 zCxMuxQ^tk>r{H9mJg*HTb^H`ILo9VHGy4Yv_n7s=hO@CCf-e=~(T{WIM%~XN<~ssA z=W%gA0vlEi)&yWw- z{SHB-mg;{uX8ad2$TK1FO!>q32K%9v4u67K_$T(OS=KlQM2QzBac2!r`4vvwJ9I+9 z6_V$SDkme_;m6$_#Z(&VA8v(AFr6*@6J_iKTGG;=C_SjArN06KWP!^cDVV6UtauIz zxi&hNnkKYLq%$smnEMqp8dK>+?9jCWb#}t~apApK!i0SZw?A1qKzVNexHNk+FQ5j* zLLGj=`+f)MBe(xM*r8Th`y*j}TD%TfuQ#mMo7U?sp7N!L3(5~uUTgm+IC`Rm`K?WN z%y2T=gZIx&9Z6}h1<$#;5EG3RMXbK7bYv1;gnwuUE0+i5v#VR-=H25 z{(M0*kyL9!3aN_lyP{bNVeyQKa~vM4ThyldBYX0=#p|N%#lLItu(z$`(HGy?XTNCB z?gh9bDK~);m;Ax>dZ|AQ{ou+={nwy2#h3am8Gj`CbX59eq~BUk2g=sKtagd&PsLWe z-;$dD9?16tj=cMOW1Y|+m?$a7w_e*<1=G5+qL z)6p^hgv*$#aS568Fc07k%ssL`h)2W#=FV-elk}r4F@9_D0t+50_Vr6XYw0YH^;@eA z*o}gE8QoQoKJ-2CF~X zJ~En-+niavOQ#e4nKYuEM2b)aoF!r*#T@8j3`{^17t`(pKOe?}f_toaGQp3j*Lxh* zT2D%*oFsoA5v#M%vBS!atF#Vmf|*KDS%M{u;6}ICFu6ON^63T{cy zC(8!tJeB95mS6h}UHREPP*gwGo=*i$TnD~Ljb*3n|3F|b`59xZ>iZ$kvwuX4R1S4O z){*I7d0t!9wo{;h%F9$wdCHnZk)OXidi*uCgPKoJo9=-it=32@zC&)ekTHNc?PdU}H!1w%}tj#eI+sC7;U} zNv6ttO(QZ_!>EmcKAdG%0PdAvffO7a(YB$Z+8J%)(37puyL99?yTl^8H7uFeVBLIL zCth3ZvlH}C(CRwzS`F95q6YRvH zg{x(tLGNldu7!yIN>NdD%Wt^#_PXR3GVE7&;H0I_%$9k`oAk?bOatHYSTzk^Rzy`XLTZUi(?9O!{HK|;si2id}< z>#ZKG;G3i%Wpg^DuZB*!o&nLW$M4b|cD?1S=nlP4Rhlt{Ty)#7K%KDacP!r3b>}a$ z3yj!eW90iF_*4&mB2rNYKHq9n2~`ccxF-*#5e30E;O&2gDYA6F2!n{v5lf%V=Bdc z`Ne9MM$(qPd=BnZ;`;IZxYJs{I?iOSINQmOaxbBYF7Ah*+6-^uN>rQT<}Hnt15i_? z{(PK@V-$_;&udB_(9r46Kd!r?+rO$>Z6tW%DQo*czK%(%fI)nk>fT8iFbIjeZQ3c= zv>T(p{#`Se-^Q+cSKiIy{SB4P+u&iyp(qyadj&bfnsyJmJDg`L&`c7BxOe7_{rrp( zd{D@L31>F;r-fOl8@cjJQ7>clqBO!QW)mUL47f!x*j4C_eFl zp&B{wW8upD4^|qgM(INxk+zKDpK?7vvQeoU%@=FAQL@JJNlepl&N$wNi>e+N$L?^o z4vc_{xw90Qi?QQ5ZP9T-E`M2N)^M8PnrkoqT_8o6>Fq zLLi7U4=wly$hl^?(%+JzY{)~6|JSYz{pJW9@+mG1!?9qT-|#t)SZoK%TRpqs@0v)s zwd(%)`~{UFOqcLDt&%kfwN9NjAld`-DK^rWLiMrc&Z*hFB3WHoyvz%aS>Sdvo^QHOWM#*D1tQpg{ckA=Xxp&i&0~7 z*_PVOF3jL9flN)UAJRk?)N$NGS~D&ba<_!<9l{g{yx`8-jceI_COuoiN9o5E)2Die zR-Bz_^mkPrmgQjjx`ZDc$Zp6^af|p4rI+#%D*4#8Ddo?jX7niI_ru6O*#^yPCW>Pf z)qaC5mIX8U*|7gLlkcQOsMvZC8jWLc4x2yQIw}ouKz`3jtwx_lK>CVnk`U&%$m)2S0m#chdq2E)y(t`rn+#vrFnKXzY^z5 z8HXzBIvN8XK^!(5yzD|k8|U!HeOS|Bn>R5OJs>!iHb2H^vBve7-p69S+9JeO)V%1e zWIc|q05_LGo9q+Jt6!PNvt=fzI(_GVRmaKLCTr(5?mWQ<8?MDrw^_cel+^jGfO{xC z7Vw{OhU+m(izoR<42Byq$`gzD8-9l0V`%Tw?PDskdSOz0Io8i`Ge&u98UG}!&rI>3 z92NRZpbxF8;3um&)^%<9LOx7!tl+14=hOIzmoS;s#c=J=;kU+T!LTcj~M=pp&wr7|2Eu?QNCZzchfX%97^4@i~VF ztk5hB)O9neqldz6fhf_LLQH5V3*O;*130p^n!n_uGBJ_Xe25XgNeSP@hZ@)+#65bK zu2!h2DB&x6&`o>M3w!xz{ruX$m#at? zTtr!(J;vi@p;!`*^FMQ#t34hRs_-W;Uc$M!uBZ7#gKsRg|I53jGWRrpKx<}$l^#EU zZ7Mq?<)!odWFyy%z@kv%-^Yl>@(aIBo#i@EfU(5=fy0jF&*K4#+rRK*xDdZsO{lQB zwrlHNt0W32nr%=;Z*O?AmdnbWsk}yzU~CnnSg!EJ2CWNZ`YydxeV00>@8YNIxXwev z-(RV{;TnQWsHhzRHH(}40+rT|Sk}ON08%6@3M;glkNfa2saEP*370k6`Y5#)A;^cSt6hTQTCxzQ)e)-_ z-d-S1l^&~k;a8=c7kG}22tqIyqMQ?iS$Z)NiqV}eWp+p5lqNy&aP`M{7J6Em@QVS* zrx=aOw5~$17b^0??m{LP9)|K^YiZ#y$HE-TX(GE7o$eu|_(#B*DFk-G7pa8w6vq2- zt(BRBgz-k4j!^TAZqr-2nS*Pnv6gV|b*w^|hYE-0TM#n|v4BrotZM?tG=XEAz;R9B z_$F{d6FBif*yEw3SX%nH2cGsRG2%1;_=Q=^Fi_c6v#Xb%q-b{a=H^rkWQ7RaYo-RR zV|Ny|*X-*3g&j0I|25osN*|7(0*xIm?89AnYOeVa!V+93v}c5HhLdR3NTHue22Ic@ z?#2auFiOAzLPs)<7UpxEl&41vn1*!L7-%0W%;mZ$JI4wydKl6mqRux@pkk*`X0XN5 zZ`Z6X*WYmpOsD$p1YtbaRT-NnJY(?b2Hb1|Za>xE@Cf=~l5ocWz2=1lm?fH{L(I@+ zZnUSn*)tTlmvUSttyv}nDc)0sFe7xMql<(JkiES~C^dACrOyTLR@A*%D1+P1V&RNQ zLUJYwoC_7z>KTF=&b2dyP}SLs7QPl7q+FXJ?Djy1yJaS7t%(g`pp+bm=eZ+2J6lijm~Z8#n^W47?VPcNjv1`F75t3aS5J)t|^e~!={{>$bF zMNlo}9uo#}XwHv;_x(tCTo{g9f>lQ-VlqcuV8X^vUU5w)=|4oc^KA8o807-X!R zi!5a;Gv^ApfuS3no+k`fImxEbF*IWk8cWs_!XblUu+~*5{6gUuA1;T&pBFlqsxYVL zsNN6TH@VLXNh*wEmkh3YURb~lQKFX!5O71?_&rRsuXsV2Xc!L04oPUKn3oFGQ2(Ra z7f~BVQhK>yL-yvCgQ0!cvH?YZf+I8hK`d6}=0U6MbIj>-qp_oUq+B@0jbdE<4*Cr9 zmJ6{k)+`r-bkfv0Lb)*vgW1_FE#&vRfc2i`f(4=4Rj7fpEA+q*X%h-H@U=_fMxW6- z|Hm-?|AU+C)YiRig>b-UobENA7QO`j=2G@60BZWX)?xP|@t`$DYGLWE`OCEnU20X+?x z;Czytd%(mo+aSB1qJP70ipGnXdTw83iAF(%W(G4>(lTbOqOHt$o$6tb zqzKT)p5cr8K0ibnRh0dqaE8j5>)ARav;sDqhu)&FI?JviTdNTdEstH0Ja6IV0^uoc zJ^AcI?ccUr7{YB}C@?Z`bVV?foBUb_-KqQZxqduEFSF2i4a= zuwdi079GZijK!U>A*vR!`6IAyH${I0r#%|=(>_9+y^QQcY?EcPdZJ$AUZYW2t2(Lg zOnlUsAO+WeZI1my95#fITnd%5mnc3~?LKpmdnU^dY9K2k24V;3fFNQ;QNV@YJ`l@O zK#fl+d{}KhtYKHP`Ke}CFYNnFvtMJkzhQF-^r<(#9o2Fi{ISp*Ycgs%6n`w(ac`+= zulX2-S*N8xOHaRE1E=ZWmy~``5PiPV+Z`^=-H*JlIEXrWjP@K95`DgYuu1mTo8&iI zlT7^tIXsTh~Y2uzrY-@Y{Ob^|n25aaCE8&C9X$$h(wwfqFqs>YU>A!T0(I0a zbkx;fp#+0y**C~xE<25Q?JLYKf>~OfaBsJoJvL!7$CQOCK0df>YkzcbaTF;t3 zDmNuD8>`xeR(cj9^mHQibdG!tcGi3eLe1YG#Wot|A>RNq6k)zZx3^SpjTS~sCYCJW zirsM38Cr=ZPm8}o8tMo=mRcW22IHtJGvaA1GZJXtanP5jMZ0rc$mNo>0xCO!ZY!A; zP!Mf60cp^dYEK}A6f&I@9_Lb(g(rop90vR|zQfqDz4F3$7<8CAfNy3zWeq8FS~zCF z{^{OT0#2x$2E_v1JuS>KSrH_V+MQvg@;!!uB4B@Ve&B)euxj1Y$rn0kXYsny5T{Qt zCsXnnVHQUJYtCTU*@+p6Sd0@SpUw!*x_s2bW1gWnqxtk%;a!~3M2J|L8-jzEr}{@g z@9mrrX0XN4y;#3im!wgj{mxWYg zNH4@@bBwRBLfaB1o5=Sf=QT`Od&5fwm3h~M7dhN$?Ys?~mK%cEzmLlgriqqqgnQNv zp~|PP%botZA!PdZbAd3i{CgX1D))DxzoCB|y>lt1RXj_bEna2fW4*@!zz&$~PfeQn zQ$47uyovGjK$fcr5OVY;M!Gm}r9u9;ga{Kug&X!kA^g*CVVuoeJZa%IBwDo|>RCr_ zL0VP6gNLl_U!uNkz9r1{$wC+{kHQ})KSOpLeg3D=imJZ!#9h{ZqTlI-ttmClcDDsl zFYgJF4X4{H$amgag|LvgqCvc7xa zKGqSO>aVQrYh8rpiXK+>z{;`#)~SY_aq1JyrVqi_X6i$yyGR&ljitr?t+>~`HHU+W z{jEuKb~kn$Umj?cFdPvEA)7Vy<3MXa=+H38^bw+`Q*>*Huebr$&T0}gaez(@2mKP{ zo6ZihTJUf=mt{@ipk%_h^_iBJAp?<`xhLp4syQqeXvGz8H$99PJDkh1Mg-O&1qW&w zTexR6uU?D)rRwYRmCKi=53;7HnZ-W!!fb1VkCz_dIE~G=#&Rc^Yb>_rROnk33w6)3 zj-j|-R<$!{WS!F({)3jtc@4Ut1&+%GKUC6w*4(ij!Q%X?QGO^JrNLNCmchus%Is@e z%!z}o3m7Lci5`Ni{>f;-42RioYaxPjT)f^r#2Uu^!wLy&VZ+$7(=6B>w#?hLgAjzOX9vWoSAd?1pY7n%dSV(UT^3fn)6{2H9T!rALdE?dNAt=YJ zU05%ahFZ(1zY|2^unADmg`w8XDqnE_HL3vfqO-%m0yR*q8c2y7ZVkqZ*Ey({juEUf zGAmp7U_^9RQ&Db@w8j}!KKZQB3vV3NI<2vaG{zdo(Xnw>9@Xm9w zL2}uc8XjZRdMzs(RETcoS$Vpd!!kb6g%lGy)&$X>rsM;~9Y35i*-6gHRuMBa6$ykPD*OZ0Yq#cui5jb3dsTuV6jkDCG^kdC zKGLB58gxL5_pt^Y)ciitphKG9VHKhklU)Mli0V#fCxbe*-rSyymZcU%=P3{~Y8xw` zVm+qi@QfCJQGqMafdZ6P+(fGdyNP-UVmFm#NvWD@y=-Xri(X5Ag~_xAF}G5?*S*Gv z9xB!=*+o6fCE8htx_4Ozuh3}*{-%Rhi7T>3_+Hb&>+woLk#(5bam#8k+>NIRw}ACtJT1RvZHo-; zxn=F74siTvMj1}#Ett~QsF?piqu^F4;eVpW8Scl^z}wa~oK2a2+nQ&)zN=dcZqC^KPztvm^B^ zHs9G2FddsNNWF_!vNJum*)tR|er-Ban{y(F_BOFctC%2O_nS(ME#^ z4NFeME9eINU*ip_e^GTv@=}4tR*c6vqPJWVR6o_$C?QyO_BR zF#+&03sU8Ygs(AM9kcN!*d#BIVD=JG*gA-*Ekjl8C6=Mm3G1X#y5l9< zVejHCegluvNx-kxCV0^?ROfuH^fTnUE(TrfQf5!Dzru&Ldaaabw z-b{QL6;bdL35)%Q{lrW_{{CW7>we%Wn~r$kV@nDB0lS811Lzfh#2ZK_{l$J5{R2Wv z2@w6bEM-7|IG)3*|CZ)rg%QK^^kDHgm!pJ-h}f&{MKfB8IcjrhM$39gQM9D1mmkgD zD46v&q&lwb>V-LPsJP949cm;S=dtp|o0@kzZ6g{V`(t@UkywBc0WIPgU`&q|H^I0P z%?d~nV#MbSn4Rp2LsrMpx_EIaH(m)$5IcBadXk=umf}>#CWG;T6F{qbG3K!%hqMF- zsQfRef9CE_Hm)yD5e?i#Wkx&kJcliVWM1q*i#mvFxk(D_Q5>F>?IVa^fSz!x_-=~= zAa$1qk0emQkDf~_FJY=?UK)Z`it-RBbcv#a^Ph^ajCa#uHlx~|$=Ils#3|f#Wuz?r z&Z#Br(wgW)BRh$`R3|1C)IwLbbP`|Vu=&uZi}(rGR|!l*1%@y`Z4>h_wM(~)oiKQw zV;3txoqt!c7gWfGb`@uFsLw~ci4mqEBy6TNnPO1o!(yCz`T5i2^h$x&`rc$Tl!wtq zhEu`AVr(E&v(G@ntRxuC#kA^Su~#7L4om=Dedry!^)M1hrs)nb1v2Rs2N?b+ai`h_ zu}0)jNg12YNTGG<;%nje(dV!~hJdvvml}UB8kvFW$-E)Yw=>qX!NqcpXPO%^y!FWx zM~5&!^i--+0h7+GDVETxOfjmW?mtGH-iEawSEjnqw7Z_(in+VkpKYm(?IDW3k0SG| z_}3*?ytA&QQr$y5;HB=F2T}SvhESz^0Axs`j^2KDv4)v#yLWfncBi@+9>QctJF|kf zxK|oRev0bq`k1aje|!uchOXotd@jGH=61JuF2CKn+kR%!-5ilr`Z`kjGwAQDhlqz7 z$@`8`h5>5%P|(8^0;p=ZScl``Ge(G?sER2lK(#Y-z;wwCrtzSoD}MzVoYgPm>>zK$ z%*(=l7K{{sX-wi>GLIJL(u&b|RzXdM-+@`(f|o+@K*|`=K?|bV87tq5#*)OTlmPl| zjM$Cp?%}eV&TSGQvDu+^^H}^`^F`Cj8Y||q^Xg+EezSh?^$s5ns#ry0AL}&P=Z&v< zMg6xZ`$qS%oUsrieE=QzV84k@V{$VpNys z(BPM$f7yvI0K<`6_{O1~l;K;B?>l@8(E#?~I|OyVt5A`M7h0N?ZN=g*+nQsHWitiNKz+u#97A6l3{v1A6oc~92{{M(*59<5>gxm=cav%QeYZ~T1@N4Sk z4!`B*UvHeR1@46^>>lXf?5&X)`xYVW-~R{U{|(1~xy{$v{a+scpWLHa!Yg$)GLy0W zd;Md6p12FMy$EgVD`nzv!zW(Urb6rq{cu+8wJSpxRG{%x&lFc+i9q-S1D6qxiv3MR zz`@bN=Wv3h_%ZR0vSXIm-4OVSC$vFPqfnt#IsOv)KPL7wJqc$mu!6u2kHF2~uY0%+ zR67qHcL9{@8*>s+DClq~@T{2$><%J_*zTSqfjr6%y7-*`6Cl-|^ z_(owJap6L7e)P+5VVF^!RSH(E76P4xnb+{`ZJ(@!P5|@Rk)E6L!p^87s~PfwI2#YwHCC5jUJz4FF^HdzTZ(aji(e}C4}1nPn&DP8g<;0xMHVPt zRxK4ru%#qctNdOR%@wC6K~eZRcAQdQL`VND6}*Vi+;j9SGoGi7FG8Tt&O>i<;YIWg zFVJ6bfYw2BIp$F#Cc}M5xflm^gE?@(D$*|1T(y{}^)*3?|2FZy0dstRMcmJEuPgOC#5@n`U5?~VO~6cX zffMubToZ=G#kn6o}gKkgQ7s-9u&9`U95v8W|R)HH8=e)zEC`A`JD1bocT z^|b>m;p>F28@>#Deeh-B8;)-rK3CWYx_uhVVti%z9>=!`-}CsE7<|go#Ch$8=;CCBfO4}#K(2|ctKP9UcV*yI4 zL74%bNT+_pg9ecYMQ^Bt1nw6H(TEz%##hupWE`jwc{;UUj1)XDhG#=@_OZ1MPkd~; z!t5-!yY!S;n`iKDN@4QqCYbiomIGq!1DI-5 zOip*2SZo(fE=;veFn!bn-tPu8N#9g%9e6MqhW_6O{@4u-%fP`V@F#BYza?{su6&Gc z3(KXSh_Tp7LK$G6@}TGl{7jGO39JnB5!!lCObk5Q#2FXb9mJsatl7&i`imxhbxq)U zCIk|>FSW$J(u`x8@wH}rqZ!9Fy@ja<_CClLR&XA3Dqy78t%iby#nbtsc6qJ3tDmm;Jg{w*F!(IanDu zg2lYQS$PK0%b$r^Js1);2X_~YToc&P1omhG8)?Q#aH0CBh`TD8J&J1PngXc(RNoe~ z=m;iL>e#_z^E4`*KWE*Z4@K8ug~68s({V>!ZXITAY6lgI`Q6ZZv=DVZ7o;qy7cY20 zUj;Y`Ymf|eWwOCr;lCB}jvN~pY14gN7lPGa$30J@KbyudH7fO^>j60OKjM^FOsU_C z-pZI$=ogtaOzHi-*xeJl&M#a*a@gm;Ad0QOK5_qkD&jKcvA^V#_wT1@R!rg3oqj?7 zi`<+hs!s8L!^u5Xi*L2Nja_aG+cPxsNAWw8KREX=+ftzZKZ#@1478v%N4%gZcmWp^ z;(CXl#ILYJv+if{A1**y^NTo{Gc-@6&p!`oL)8~BJ1;+G!Cd;H7;G>n(zp_zHZ(00 z>ITIZ#W0*)SaS{K>Ub{Ntghuy|2(1H#ThYo3wt{N9@>VYsE+W%pBi zBPPq)P%J}p=NE_Rgk-9OP}w!Hj?V7IvPK`3BwBJ^?5{cW*Bs(*VC_5WmS{H&Or&>? zhgxaH4KYQtnN00oDD9almNeZeu)bz9sgi*|)_kT={zVw%E&vk_^177N~F+6|FVBau?kO z9(cTq1&!8}evkPn&U;w)19JlE!^2Q4NZpp)Md$DxP0EZqP5<)8S3M? zmMs!wk08b2DFw5*L%pOZQ|nkPmg49SJNP>fC(z5k!Ce7Wzp$4+24j0@vzHX<9_Fl< zGzC%ncuNtgGYXYOg)`3V7%_}?nDFXZCnVNd0Z}O?5OLIB5>0_OVzhBWCj8X71O*03 z4`VMkI|!t{MD;;ZtZ6)&VjG$v8iEwRU_soCwUg+|k^{?JrUET}-)%%>w`^kUx4s0b2LdiH=Nf9vSwUTmR)VD%8 zvU0-nLXoHd%nD)WvIaL=qbM*IyGYd$QW)YLj*wzuT#1nS!RQhxi7=)|qKdSpEs;_O z7^fqpPAa|>dLbUd!QNW3z^3;09&PKV)x-rxMi^N(Z(1y|yi{ya)s6`4@$+9uBLMx+Hs-mM& z>sgB3Xa?w}@@Oeoh0|OV?unK%5uJpLFvP=4$H?&aVk8Px<(?O z#qnwhJsU5LR-NZJ(z2k@ig)BACA<@rAW7I3!l(c%KAmv4*|bE-qDFg)mL*E8Xs##d z={@aoiB8mA{^N4VPL$YlKQFjE9#cJ3JdZb8=QUb!Dg)Tn08ikmDlBY8CP`-OOtnjr zCL4TmP!eo>7ENoui40Pz+e$C9Gc78aXWQdEQmzM1;+TuEQe*xP4-r@hZP?Ab!o8Ix zsS=)}%fl@^(k7_fxngYA=h!}M(}RsBa6o>yF-WQDAeDJwR||a}c8A}>Q;)f#6la)} zNUzWLX-O+Z>1D%Yj1q7@hWbm=X2TQ>P|ULAXXFZ$)?Fko_GA>gb*z`CNl7>#qav$* zrdcqpOp`ie4eI(;5&N%;!^}`%QaeZ9hB7MD?2e<@KTvzrqJ|C(EB66-_auk5*rW(U zaUv~!Dj6~!}C=47+ll_%?m!-)A&}V#9{rP>n?=` z%m+?3m1Ujwf<)>ztV1is(OvR0_$-7EbA6Jw_5y*^dZIsj3U1Azq=*%)o|2!>B0b2{ zS`eI0tHzSpyk1gl;4`|{V%>a}1<5o$2hg7(Q2csJLpZE$Ir~5cE}?mSr14nTI^74- zYbgcxMTTC~vRAH-sw?k7wc}J@w2);K*iY(YSdKwLQp=W<+fRza8kaiquFCQ5KXOafD}e6@q^VTmjjQ(GqA^+82_NfcM{J? zI0i~nLYOFeQD@Psz{fN#d}(VAMqqV6KtJ*|7A?wW3Y=N@oI`g9LddLCU8(mVkS9SY zQc6@2ds98G3(#G{SyEnz!-{GeKDO}2a7c7z5QO?F3e19}dtIZkI17iha%f%_%6zrv zw1YWSY4)>Ol95}(?ASJ*D;O)Yr8@2ns?U~Yg|LH)tfjGZm}J)I96K1SmuSvlDOL@^ z#snB^sDBz2TL+^!aEQ7u@_Ku)w2fO!TXI0rI^}u}q&coy3m=LGz;wb`P29kW0h^V> zAjg4t>u_nkX(Kp>2Y#-buwFg_!>70PqDnDg^#3Jx->OESDob>Ige0o6h9w_e;mpCv zeCInmhaWg`4TCT%Ahc412SW@rNOi_si*Gs%rv z@?xnw^aWNemacMploy_rQan^r^z*uPOQdT|9r6W93E8XXja2|vI$GYM-;02f-csp; zhl!2AJ*a*eUNGSu*c4j3T(YS1DOMktjNC`{%RzP+{k2>Y1K0|p%cmxhp4c6V_dU;J zwmYT*LNfrVvA-Bf@7N~D#1b=5v?(D)*;WDhiKdWZBMq}k_ zDHjJ&ovTrq4${Kaz&?{|S4#@CDdtpR(72s8R!N-#+3|Vy#~K!+WIJ82k_H7fWL$S1 zN7-v6!sR3M{Rvac$~PbeKB4S4q|v~-4aqy?FkrUy>XNi97Z42{ zaLKCWP0X%7rDxxia#U3e4n8b-w$Q{#*iYBtHQ+N~V3!GI;$!7@1TgbvN`~8EGU=Cx zkNF+d{R)u^L&vt1*dO!z9DcZ>zmHcCwBy&Ug*>XG!)s9kdeQZ@;0}&JtWyo90LJtR z`>vA`y4LF$nZ_lP^o&5Zffb66b<|(NpJD$>5BDid_Qxpvl(uLXkFJxB`!Eb_T^9=z zzvCcD&0DDVIOFk_^seC;Dx8^bLo3%yNrtZzDWEG3t)FGUH;L*=1E1qAGAMb2l;U%u z0UWzQvN2-YZ2lX1dNNv-q)HKV~bnyn$+)s01VZwczR;9)DfG)+c%^5 zPSe+$k^c8&+5+f|62C?IE+#M!`UJv59_^ld$k1kImP*w)td`kuE*0Is~tkT(_zuP;+@G3TfDO|+G#rQp^W|MD|G8ac}9Rg zD4VB8#&x`9yW~voI3yLD>afwWKsks!jcK9u>n=GCOOoSv!{|%mZaD?|ehl&-j|5%u zCs6rrxi|onHE_W2GzILD`(SW3Vvo$52d6vUa5PYB7)CGek>ku`7%RpnyU^s)kv(!p zoapt~E05*sasQ+|(Z}%n15};cD=*=2-e#Yih9$X;`{dqU9K&L7M+@hrg^{^Nz7=*U zCwgA=*y!Y{&5t{xZ7$Awtftnrax@M!KU^z!3z+Q20gp$>aYPQL)wOakrUct+<#h&+ zt2Fu}d2E0;BV8xa*o+Q-BrnAU8bkNXF)=brIn7lOj9ox!g2R@U=CD9s{VG*^IbPanI3YXsWzEB7`X+7dL)w-O6L5`JE3XS7>XTcgF=2XqSkA!^fBi8zftr0P?+!xa(6Z~w zl&Oxs{S;;VJl*+J?&WK`z$%Z;VXLBgXId-juq@4wNg5b9)K9LL`{N0!ZS`_*c1*NhcC>adni`sfR}Wxv$vv;$H0n!K$IVpzr97zBG#72v zCa)s51ieZq{3|&V9q-t$Cs~Jn z1F~PCP2b2PahrkZxcnNZTXS3<#OAQaFgL|I3n%K7`4rQk@8r}LkHa}`RzcYmm-~DwIwi+a@+nzr zv7)Kx%gmDxMjyC(b1v&eySk#Sr}t0E?QmPfIRx=2!I0X}JTsdgZh{IM}B_1iEUI&!5!#dwFOyle}@P-_(=z^@T%B(Igib zKo#H1B>}VDxaRvft4|Ts{)`+HAi~4dW%_ocL1*Mp4|}?UvK2Wj(v35|5Fn6St~TM@ zmsXvTvn->KT5L&vo-4U=4~CjR{%7S8txAzWSBOX5DVam_&&quxo^`9ezDwLGdXWa5 zlcUJvoGe7Fb`SN2JDPPY)WFu;+yf|#4-NeE-9;asle1fV+LT?NQ|lkl2~B~5t(@Hc zOjGak?kFK%+)-Yn^*_iX48DI8cV0dK{nmr$<{?ZqS6a;NAvmzT{qFr3vzD2EO#`IQR0uX0OhffKgt6WUty9x4TGu1bY5?8ny<6H z*_-tFk8&)8&y64Dn1t;tTW-U>W*;_E=Bi=M_EFkTa#H(XcsUZ{OVyEALp$_qIz zNw57Pr^F3}KMDs@)@@kq_ojQux9H+8@}JH9es*`fNY{RqlRVLi!28N;kOo~Y$^lR~ z>wQrk8gS4(=waG)QEs1tF4Si;!G{QBp*`TL__T&(q+|IO&$o<0sB>XC3enFUX^QcjQq80vfz(O zsoFS8vFzpj6`fJLW#0Q;*+e>oCk18YY;{laNfj!`4_Mj71?d< z;+pd+i4I%QB=;1W%MXU?LPvj>Lq|RAjvKPth1kZ^{u#{{c;Lv!>)XB={W2NpjejlN$q@9g=4ibFRfzq^uT<{JdLH{)>WC& zU>iG8^GqtbE$_oxV~4-wmQ&wCcF`At{cd8}yhUT7GfgeQhMvbfQ7x;+RS5GAIK(kV zH-_1xhS4i|;{?HcfU5sOAN(c#@R!`hU_MK&|Cak1%)hhQR##g8w_Jj`eye}v-H@rr z|B>57U|i-%npiZeu&fAu^`@9I*K8>e=YH;>@=vFJcjPFpl&0R1%b`qi=Z-u&-~h|L z&d0z{DF3e9G2pnn+qchbyes4Dh_92f@owkjvz}MFS8ei1qUi6tBz^FGmncsUM^(BK zccII=-$SbTY0l{rCOSK4M*Hd0I8Wr^cv?@xhzx3fBCTVTFX!2BV7a4wc_x0+%h~^o z@^Z(r^ko^#9OW6rpGdRPjuUAXV-#mRLZ?oo^>kDqR0V=nlxO1Wj;{y4p4GPJ)?yK;svX~N00;a(ZQ;3!{1H7C;|y~@*Vu4bE27Gm$esRl@QPr?#BO zbK_v9a2^#5Zz|{U_+v2JaUQQf4zoSyv0*+;9HE}vA8{OUu_Z;b;24&YhhrQ5Iuq8mc{yb(w z_V;Z5+*RuPo~={QM+aG=ozX?H(`T0H62$mVqfEg(X|*FB(xp+paHd9Yy{SOu@$&n& zDEjF=TL>3Uciyw5;sz_#srUP~K-?-d>U~>V%>CgMPjA0(Yk~E^J@4Dv<6sw@I$<9R zP#D>_*;?YppT>y!YQ$DdfIleYxMDp&!ZEp(0cYMWY_r9NKj~r=#AHl-gOJ2Q3d?p| zI1WanZMSuU@S3yT))BMB>g~21>@^raunjU{2)%g`2sEcz_t|9#H`o~ zaj^i5M0!iHu@#J~imfMf>N@T~Hv3cF4%=|Zk6k-#@mR$!bQU)e4Q}sF^)07q)Pvk_FDs<(aP7n%%tp=Atdr8EFE|9ji8 z`Bj@@yLN5wU_Y=%Gb?^TsJ*=dA9I6^{lKjo+`6f5u*F8JRy&J=A7m$*+0|b}>&D#i z!`zu&{RNJ$T^;yfiH0RwF`hw#q}R^c&O%jY?m5()h4k(@Tbysa%DPzak=Fxcvx_!UCwIslqu8Yj3XEfHziP8Ch^?z|b(X@UEx8 z^R_q~Na%PTE$BRrJa3D|{gL(OZNaqbJcQ_VW>3bwQ{aMNz%3$RLkwkIuvra0tysPX z(D4hlDKz#+h~0;Ow6&qRKibMQ(C;Ukg@JkN-}%XA!nyZ%FWJIdCZ|^$Cvwf+92#5Z zocw_!oegu0$@Kjtn=sjE$zYHro&83u_Go7J?vl;`7#ftJK^Yq4&>)8jrD-A4w2*09 zNUYAV=xJKWH080&5F1>wvhs@U4U<2{AF=t<%G5qNgZlk$>)tY>JiV>jagHx7cq|{i zvigtK{SIbj(5JuK;=>W7JR^EG>#-AyOR(dRR|Y%W$or;kvKh|trDe{Nvba*zi1G|& z{!N>&?|h?09oBVmXoi}5?=BfC6G9k~TIRjGXt`;~u<8}kT@BDvWrc$Q;D}~qs9qr| z%Ty);gU&LYSE|>TkRB?E-Wm!90EK2`s9qtNY5)zZg8>Mj85ycqOO@7^DnTtXmUmy? zoegEmVN+(_M=^7gUwYhL;_J+)nvhwQlTkJ4r9bTjfrB0CRSfaqUYa?SW^ndA|FIcW z>FHIY(yMaQtMcd^XJ3g84pi6-HE`EVEpXQi-9*?inN_2q&0&8g$CjSyaCBz@&9?Lm zha*$Bx}uxy4g~0-y4oEGpoO(F{CZdxK*zuWWL6sO!L-!FzBaONx<*1@jTEz;C8pz| zfkyi)VFS}uB*uX{GCLL|U>!&IjrQ|$wnOvw&ejw2&Q5o^q-!yZSvrO+9UerXp7s~8 zoUJ9DL0dfSRYD&^NwMDcb^jOG{_?hW zi$}H9hzfx@MJtUU-6`y$`{{4=baafTz#UQumH61_`6TH?#nEjadx6Dh>8(XifIHee z%8^xuo(&m)($`)Z90q5-q(d^b@D}oIW`7Ukwmr@4r+o(NzA5ykpWW$cwDioV8b)S+ z`!IviLIwWzTyC)PslOeSFoo&@?BkjzquNbO$8wjNo`t$Kw~vb)+(S!#aChD8nO-$W zOD~RgG`An(2Gc^beO6#72!`E4=Hn ztBox>z+XYb8< zC+foq<;NQP=Ly_dW!ukok?UOLNMD|sURpN3pe(<{SyoiSH9O6ZbpPGcq;D()>KOg<8tRN_6yB`*hssV7q7^+5K0< zYMVK|bo`{ElIhMeF628nBxg=9vpNe4ivWMG;y{qHh9D;xxrvz=gXI@K%Ek4f6Bq3X z@t=a6_RO(hTK;(OVtP>_moO7qO=6DI3rh32`1=%l$==>PlTqH?3Gtj?T*3vOBj+W1 z>wq`mn$SHTNGEau>uAX(yA=w3`!3m~wgvEt?SaHvtU}TWusLVW=0f^|w&iWr$s3m7 z^76SBYpL~R`+)cigi7gCm^W=Ergudp`CLei8dP_}1~ms=(HAe<+nAq2(4;0b<&_yKJB zoeSwnkNswknvd<#dP`ckqf#*Yk{XlYvw+9W?@;ubTz%$2s&}q9wqU> z-yx@9a-p+qCdU4gONwR|b1mLR=)|0Y>BZ9uCULQ0fRZr#9-lwEpo~jAqoiE3U+`#k z3{m5AW==q60#_qQLJoEr!NoSUlzh|P8uQLxH|+z0YT=bK1X*^q%#e?0J@faWk8j#7 z(7*hN8FR?%mfbS{V@A)A5@%uQG%&cNV8YC@e9jWhSe~Le=S_2#mU1!M5U{Q8!YX4- z4+Kfp99UJ1xuG)M6$VcET+|~f&-GA66CUBBK1VDaO)+CW7k!`Afn>Idp`{e@CF8IP zvveXJRg0g&Y?XrxI|4#P7dRfHCWxA{f_zkrS->qf_>@A1lsG38Oe-jx!-YOg&Hu1R z%zuI*Qxlt5R+5jl_7-zUWRX}VB8LOH3KbQXabbTrAbH}MXDMf1*g!{F{_J9| true | Pbytes_to_string | Pbytes_of_string @@ -127,11 +127,12 @@ let preserve_tailcall_for_prim = function | Pmake_unboxed_product _ | Punboxed_product_field _ | Pccall _ | Praise _ | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pdivint _ | Pmodint _ | Pandint | Porint | Pxorint | Plslint | Plsrint - | Pasrint | Pintcomp _ | Poffsetint _ | Poffsetref _ | Pintoffloat - | Pfloatofint _ | Pnegfloat _ | Pabsfloat _ | Paddfloat _ | Psubfloat _ | Pmulfloat _ - | Pdivfloat _ | Pfloatcomp _| Punboxed_float_comp _ + | Pasrint | Pintcomp _ | Poffsetint _ | Poffsetref _ | Pintoffloat Pfloat64 + | Pfloatofint (Pfloat64, _) | Pnegfloat (Pfloat64, _) | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) | Pmulfloat (Pfloat64, _) + | Pdivfloat (Pfloat64, _) | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pstringlength | Pstringrefu | Pstringrefs - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets | Pmakearray _ | Pduparray _ | Parraylength _ | Parrayrefu _ | Parraysetu _ | Parrayrefs _ | Parraysets _ | Pisint _ | Pisout | Pbintofint _ | Pintofbint _ @@ -428,7 +429,7 @@ let comp_primitive stack_info p sz args = | Pgetpredef id -> Kgetglobal id | Pintcomp cmp -> Kintcomp cmp | Pcompare_ints -> Kccall("caml_int_compare", 2) - | Pcompare_floats -> Kccall("caml_float_compare", 2) + | Pcompare_floats Pfloat64 -> Kccall("caml_float_compare", 2) | Pcompare_bints bi -> comp_bint_primitive bi "compare" args | Pfield (n, _ptr, _sem) -> Kgetfield n | Pfield_computed _sem -> Kgetvectitem @@ -459,14 +460,14 @@ let comp_primitive stack_info p sz args = | Pasrint -> Kasrint | Poffsetint n -> Koffsetint n | Poffsetref n -> Koffsetref n - | Pintoffloat -> Kccall("caml_int_of_float", 1) - | Pfloatofint _ -> Kccall("caml_float_of_int", 1) - | Pnegfloat _ -> Kccall("caml_neg_float", 1) - | Pabsfloat _ -> Kccall("caml_abs_float", 1) - | Paddfloat _ -> Kccall("caml_add_float", 2) - | Psubfloat _ -> Kccall("caml_sub_float", 2) - | Pmulfloat _ -> Kccall("caml_mul_float", 2) - | Pdivfloat _ -> Kccall("caml_div_float", 2) + | Pintoffloat Pfloat64 -> Kccall("caml_int_of_float", 1) + | Pfloatofint (Pfloat64, _) -> Kccall("caml_float_of_int", 1) + | Pnegfloat (Pfloat64, _) -> Kccall("caml_neg_float", 1) + | Pabsfloat (Pfloat64, _) -> Kccall("caml_abs_float", 1) + | Paddfloat (Pfloat64, _) -> Kccall("caml_add_float", 2) + | Psubfloat (Pfloat64, _) -> Kccall("caml_sub_float", 2) + | Pmulfloat (Pfloat64, _) -> Kccall("caml_mul_float", 2) + | Pdivfloat (Pfloat64, _) -> Kccall("caml_div_float", 2) | Pstringlength -> Kccall("caml_ml_string_length", 1) | Pbyteslength -> Kccall("caml_ml_bytes_length", 1) | Pstringrefs -> Kccall("caml_string_get", 2) @@ -492,26 +493,26 @@ let comp_primitive stack_info p sz args = | Parrayrefs (Pfloatarray_ref _) -> Kccall("caml_floatarray_get", 2) | Parrayrefs (Paddrarray_ref | Pintarray_ref) -> Kccall("caml_array_get_addr", 2) - | Parrayrefs (Punboxedfloatarray_ref | Punboxedintarray_ref _) -> + | Parrayrefs (Punboxedfloatarray_ref Pfloat64 | Punboxedintarray_ref _) -> Misc.fatal_errorf "Cannot use primitive %a for unboxed arrays in bytecode" Printlambda.primitive p | Parraysets (Pgenarray_set _) -> Kccall("caml_array_set", 3) | Parraysets Pfloatarray_set -> Kccall("caml_floatarray_set", 3) | Parraysets (Paddrarray_set _ | Pintarray_set) -> Kccall("caml_array_set_addr", 3) - | Parraysets (Punboxedfloatarray_set | Punboxedintarray_set _) -> + | Parraysets (Punboxedfloatarray_set Pfloat64 | Punboxedintarray_set _) -> Misc.fatal_errorf "Cannot use primitive %a for unboxed arrays in bytecode" Printlambda.primitive p | Parrayrefu (Pgenarray_ref _) -> Kccall("caml_array_unsafe_get", 2) | Parrayrefu (Pfloatarray_ref _) -> Kccall("caml_floatarray_unsafe_get", 2) | Parrayrefu (Paddrarray_ref | Pintarray_ref) -> Kgetvectitem - | Parrayrefu (Punboxedfloatarray_ref | Punboxedintarray_ref _) -> + | Parrayrefu (Punboxedfloatarray_ref Pfloat64 | Punboxedintarray_ref _) -> Misc.fatal_errorf "Cannot use primitive %a for unboxed arrays in bytecode" Printlambda.primitive p | Parraysetu (Pgenarray_set _) -> Kccall("caml_array_unsafe_set", 3) | Parraysetu Pfloatarray_set -> Kccall("caml_floatarray_unsafe_set", 3) | Parraysetu (Paddrarray_set _ | Pintarray_set) -> Ksetvectitem - | Parraysetu (Punboxedfloatarray_set | Punboxedintarray_set _) -> + | Parraysetu (Punboxedfloatarray_set Pfloat64 | Punboxedintarray_set _) -> Misc.fatal_errorf "Cannot use primitive %a for unboxed arrays in bytecode" Printlambda.primitive p | Pctconst c -> @@ -593,12 +594,12 @@ let comp_primitive stack_info p sz args = | Pnot | Psequand | Psequor | Praise _ | Pmakearray _ | Pduparray _ - | Pfloatcomp _ | Punboxed_float_comp _ + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pmakeblock _ | Pmakefloatblock _ | Pmakeufloatblock _ | Pprobe_is_enabled _ - | Punbox_float | Pbox_float _ | Punbox_int _ | Pbox_int _ + | Punbox_float Pfloat64 | Pbox_float (Pfloat64, _) | Punbox_int _ | Pbox_int _ | Pmake_unboxed_product _ | Punboxed_product_field _ -> fatal_error "Bytegen.comp_primitive" @@ -777,7 +778,7 @@ let rec comp_expr stack_info env exp sz cont = end | Lprim((Popaque _ | Pobj_magic _), [arg], _) -> comp_expr stack_info env arg sz cont - | Lprim((Pbox_float _ | Punbox_float), [arg], _) -> + | Lprim((Pbox_float (Pfloat64, _) | Punbox_float Pfloat64), [arg], _) -> comp_expr stack_info env arg sz cont | Lprim((Pbox_int _ | Punbox_int _), [arg], _) -> comp_expr stack_info env arg sz cont @@ -853,7 +854,7 @@ let rec comp_expr stack_info env exp sz cont = else comp_args stack_info env args sz (Kmakeblock(List.length args, 0) :: Kccall("caml_make_array", 1) :: cont) - | Punboxedfloatarray | Punboxedintarray _ -> + | Punboxedfloatarray Pfloat64 | Punboxedintarray _ -> Misc.fatal_errorf "Cannot use Pmakeblock for unboxed arrays in bytecode" Printlambda.primitive p @@ -896,7 +897,7 @@ let rec comp_expr stack_info env exp sz cont = let nargs = List.length args - 1 in comp_args stack_info env args sz (comp_primitive stack_info p (sz + nargs - 1) args :: cont) - | Lprim (Pfloatcomp cmp, args, _) | Lprim (Punboxed_float_comp cmp, args, _) -> + | Lprim (Pfloatcomp (Pfloat64, cmp), args, _) | Lprim (Punboxed_float_comp (Pfloat64, cmp), args, _) -> let cont = match cmp with | CFeq -> Kccall("caml_eq_float", 2) :: cont diff --git a/ocaml/lambda/lambda.ml b/ocaml/lambda/lambda.ml index 13db7d21382..7e13b65b39a 100644 --- a/ocaml/lambda/lambda.ml +++ b/ocaml/lambda/lambda.ml @@ -174,16 +174,22 @@ type primitive = | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp of integer_comparison - | Pcompare_ints | Pcompare_floats | Pcompare_bints of boxed_integer + | Pcompare_ints + | Pcompare_floats of boxed_float + | Pcompare_bints of boxed_integer | Poffsetint of int | Poffsetref of int (* Float operations *) - | Pintoffloat | Pfloatofint of alloc_mode - | Pnegfloat of alloc_mode | Pabsfloat of alloc_mode - | Paddfloat of alloc_mode | Psubfloat of alloc_mode - | Pmulfloat of alloc_mode | Pdivfloat of alloc_mode - | Pfloatcomp of float_comparison - | Punboxed_float_comp of float_comparison + | Pintoffloat of boxed_float + | Pfloatofint of boxed_float * alloc_mode + | Pnegfloat of boxed_float * alloc_mode + | Pabsfloat of boxed_float * alloc_mode + | Paddfloat of boxed_float * alloc_mode + | Psubfloat of boxed_float * alloc_mode + | Pmulfloat of boxed_float * alloc_mode + | Pdivfloat of boxed_float * alloc_mode + | Pfloatcomp of boxed_float * float_comparison + | Punboxed_float_comp of boxed_float * float_comparison (* String operations *) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets @@ -265,8 +271,8 @@ type primitive = (* Primitives for [Obj] *) | Pobj_dup | Pobj_magic of layout - | Punbox_float - | Pbox_float of alloc_mode + | Punbox_float of boxed_float + | Pbox_float of boxed_float * alloc_mode | Punbox_int of boxed_integer | Pbox_int of boxed_integer * alloc_mode (* Jane Street extensions *) @@ -283,7 +289,10 @@ and float_comparison = CFeq | CFneq | CFlt | CFnlt | CFgt | CFngt | CFle | CFnle | CFge | CFnge and value_kind = - Pgenval | Pfloatval | Pboxedintval of boxed_integer | Pintval + | Pgenval + | Pintval + | Pboxedfloatval of boxed_float + | Pboxedintval of boxed_integer | Pvariant of { consts : int list; non_consts : (int * value_kind list) list; @@ -294,7 +303,7 @@ and value_kind = and layout = | Ptop | Pvalue of value_kind - | Punboxed_float + | Punboxed_float of boxed_float | Punboxed_int of boxed_integer | Punboxed_vector of boxed_vector | Punboxed_product of layout list @@ -305,7 +314,7 @@ and block_shape = and array_kind = Pgenarray | Paddrarray | Pintarray | Pfloatarray - | Punboxedfloatarray + | Punboxedfloatarray of unboxed_float | Punboxedintarray of unboxed_integer and array_ref_kind = @@ -313,7 +322,7 @@ and array_ref_kind = | Paddrarray_ref | Pintarray_ref | Pfloatarray_ref of alloc_mode - | Punboxedfloatarray_ref + | Punboxedfloatarray_ref of unboxed_float | Punboxedintarray_ref of unboxed_integer and array_set_kind = @@ -321,12 +330,17 @@ and array_set_kind = | Paddrarray_set of modify_mode | Pintarray_set | Pfloatarray_set - | Punboxedfloatarray_set + | Punboxedfloatarray_set of unboxed_float | Punboxedintarray_set of unboxed_integer +and boxed_float = Primitive.boxed_float = + | Pfloat64 + and boxed_integer = Primitive.boxed_integer = Pnativeint | Pint32 | Pint64 +and unboxed_float = boxed_float + and unboxed_integer = boxed_integer and vec128_type = @@ -371,6 +385,8 @@ let vec128_name = function let equal_boxed_integer = Primitive.equal_boxed_integer +let equal_boxed_float = Primitive.equal_boxed_float + let equal_boxed_vector_size v1 v2 = match v1, v2 with | Pvec128 _, Pvec128 _ -> true @@ -394,7 +410,7 @@ let join_boxed_vector_layout v1 v2 = let rec equal_value_kind x y = match x, y with | Pgenval, Pgenval -> true - | Pfloatval, Pfloatval -> true + | Pboxedfloatval f1, Pboxedfloatval f2 -> equal_boxed_float f1 f2 | Pboxedintval bi1, Pboxedintval bi2 -> equal_boxed_integer bi1 bi2 | Pboxedvectorval bi1, Pboxedvectorval bi2 -> equal_boxed_vector_size bi1 bi2 @@ -413,7 +429,7 @@ let rec equal_value_kind x y = && List.length fields1 = List.length fields2 && List.for_all2 equal_value_kind fields1 fields2) non_consts1 non_consts2 - | (Pgenval | Pfloatval | Pboxedintval _ | Pintval | Pvariant _ + | (Pgenval | Pboxedfloatval Pfloat64 | Pboxedintval _ | Pintval | Pvariant _ | Parrayval _ | Pboxedvectorval _), _ -> false let equal_layout x y = @@ -428,7 +444,7 @@ let rec compatible_layout x y = | Pbottom, _ | _, Pbottom -> true | Pvalue _, Pvalue _ -> true - | Punboxed_float, Punboxed_float -> true + | Punboxed_float f1, Punboxed_float f2 -> equal_boxed_float f1 f2 | Punboxed_int bi1, Punboxed_int bi2 -> equal_boxed_integer bi1 bi2 | Punboxed_vector bi1, Punboxed_vector bi2 -> equal_boxed_vector_size bi1 bi2 @@ -437,7 +453,8 @@ let rec compatible_layout x y = && List.for_all2 compatible_layout layouts1 layouts2 | Ptop, Ptop -> true | Ptop, _ | _, Ptop -> false - | (Pvalue _ | Punboxed_float | Punboxed_int _ | Punboxed_vector _ | Punboxed_product _), _ -> + | (Pvalue _ | Punboxed_float Pfloat64 | Punboxed_int _ | Punboxed_vector _ | + Punboxed_product _), _ -> false let must_be_value layout = @@ -739,8 +756,8 @@ let layout_class = Pvalue Pgenval let layout_module = Pvalue Pgenval let layout_module_field = Pvalue Pgenval let layout_functor = Pvalue Pgenval -let layout_boxed_float = Pvalue Pfloatval -let layout_unboxed_float = Punboxed_float +let layout_boxed_float f = Pvalue (Pboxedfloatval f) +let layout_unboxed_float f = Punboxed_float f let layout_unboxed_nativeint = Punboxed_int Pnativeint let layout_unboxed_int32 = Punboxed_int Pint32 let layout_unboxed_int64 = Punboxed_int Pint64 @@ -1508,15 +1525,15 @@ let primitive_may_allocate : primitive -> alloc_mode option = function | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp _ - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ | Poffsetint _ | Poffsetref _ -> None - | Pintoffloat -> None - | Pfloatofint m -> Some m - | Pnegfloat m | Pabsfloat m - | Paddfloat m | Psubfloat m - | Pmulfloat m | Pdivfloat m -> Some m - | Pfloatcomp _ | Punboxed_float_comp _ -> None + | Pintoffloat Pfloat64 -> None + | Pfloatofint (Pfloat64, m) -> Some m + | Pnegfloat (Pfloat64, m) | Pabsfloat (Pfloat64, m) + | Paddfloat (Pfloat64, m) | Psubfloat (Pfloat64, m) + | Pmulfloat (Pfloat64, m) | Pdivfloat (Pfloat64, m) -> Some m + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) -> None | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets -> None | Pmakearray (_, _, m) -> Some m @@ -1524,9 +1541,9 @@ let primitive_may_allocate : primitive -> alloc_mode option = function | Parraylength _ -> None | Parraysetu _ | Parraysets _ | Parrayrefu (Paddrarray_ref | Pintarray_ref - | Punboxedfloatarray_ref | Punboxedintarray_ref _) + | Punboxedfloatarray_ref Pfloat64 | Punboxedintarray_ref _) | Parrayrefs (Paddrarray_ref | Pintarray_ref - | Punboxedfloatarray_ref | Punboxedintarray_ref _) -> None + | Punboxedfloatarray_ref Pfloat64 | Punboxedintarray_ref _) -> None | Parrayrefu (Pgenarray_ref m | Pfloatarray_ref m) | Parrayrefs (Pgenarray_ref m | Pfloatarray_ref m) -> Some m | Pisint _ | Pisout -> None @@ -1569,8 +1586,8 @@ let primitive_may_allocate : primitive -> alloc_mode option = function | Pprobe_is_enabled _ -> None | Pobj_dup -> Some alloc_heap | Pobj_magic _ -> None - | Punbox_float | Punbox_int _ -> None - | Pbox_float m | Pbox_int (_, m) -> Some m + | Punbox_float Pfloat64 | Punbox_int _ -> None + | Pbox_float (Pfloat64, m) | Pbox_int (_, m) -> Some m | Prunstack | Presume | Pperform | Preperform -> Misc.fatal_error "Effects-related primitives are not yet supported" | Patomic_load _ @@ -1588,8 +1605,8 @@ let constant_layout: constant -> layout = function | Const_unboxed_int32 _ -> Punboxed_int Pint32 | Const_unboxed_int64 _ -> Punboxed_int Pint64 | Const_unboxed_nativeint _ -> Punboxed_int Pnativeint - | Const_float _ -> Pvalue Pfloatval - | Const_unboxed_float _ -> Punboxed_float + | Const_float _ -> Pvalue (Pboxedfloatval Pfloat64) + | Const_unboxed_float _ -> Punboxed_float Pfloat64 let structured_constant_layout = function | Const_base const -> constant_layout const @@ -1599,12 +1616,12 @@ let structured_constant_layout = function let layout_of_native_repr : Primitive.native_repr -> _ = function | Untagged_int -> layout_int | Unboxed_vector v -> layout_boxed_vector v - | Unboxed_float -> layout_boxed_float + | Unboxed_float Pfloat64 -> layout_boxed_float Pfloat64 | Unboxed_integer bi -> layout_boxedint bi | Same_as_ocaml_repr s -> begin match s with | Value -> layout_any_value - | Float64 -> layout_unboxed_float + | Float64 -> layout_unboxed_float Pfloat64 | Word -> layout_unboxed_nativeint | Bits32 -> layout_unboxed_int32 | Bits64 -> layout_unboxed_int64 @@ -1613,8 +1630,8 @@ let layout_of_native_repr : Primitive.native_repr -> _ = function let array_ref_kind_result_layout = function | Pintarray_ref -> layout_int - | Pfloatarray_ref _ -> layout_boxed_float - | Punboxedfloatarray_ref -> layout_unboxed_float + | Pfloatarray_ref _ -> layout_boxed_float Pfloat64 + | Punboxedfloatarray_ref Pfloat64 -> layout_unboxed_float Pfloat64 | Pgenarray_ref _ | Paddrarray_ref -> layout_field | Punboxedintarray_ref Pint32 -> layout_unboxed_int32 | Punboxedintarray_ref Pint64 -> layout_unboxed_int64 @@ -1638,10 +1655,12 @@ let primitive_result_layout (p : primitive) = | Pfield _ | Pfield_computed _ -> layout_field | Punboxed_product_field (field, layouts) -> (Array.of_list layouts).(field) | Pmake_unboxed_product layouts -> layout_unboxed_product layouts - | Pfloatfield _ | Pfloatofint _ | Pnegfloat _ | Pabsfloat _ - | Paddfloat _ | Psubfloat _ | Pmulfloat _ | Pdivfloat _ - | Pbox_float _ -> layout_boxed_float - | Pufloatfield _ | Punbox_float -> Punboxed_float + | Pfloatfield _ -> layout_boxed_float Pfloat64 + | Pfloatofint (f, _) | Pnegfloat (f, _) | Pabsfloat (f, _) + | Paddfloat (f, _) | Psubfloat (f, _) | Pmulfloat (f, _) | Pdivfloat (f, _) + | Pbox_float (f, _) -> layout_boxed_float f + | Pufloatfield _ -> Punboxed_float Pfloat64 + | Punbox_float Pfloat64 -> Punboxed_float Pfloat64 | Pccall { prim_native_repr_res = _, repr_res } -> layout_of_native_repr repr_res | Praise _ -> layout_bottom | Psequor | Psequand | Pnot @@ -1650,8 +1669,9 @@ let primitive_result_layout (p : primitive) = | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp _ - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ - | Poffsetint _ | Pintoffloat | Pfloatcomp _ | Punboxed_float_comp _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ + | Poffsetint _ | Pintoffloat Pfloat64 + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytesrefs | Parraylength _ | Pisint _ | Pisout | Pintofbint _ @@ -1678,7 +1698,7 @@ let primitive_result_layout (p : primitive) = | Pbigarrayref (_, _, kind, _) -> begin match kind with | Pbigarray_unknown -> layout_any_value - | Pbigarray_float32 | Pbigarray_float64 -> layout_boxed_float + | Pbigarray_float32 | Pbigarray_float64 -> layout_boxed_float Pfloat64 | Pbigarray_sint8 | Pbigarray_uint8 | Pbigarray_sint16 | Pbigarray_uint16 | Pbigarray_caml_int -> layout_int @@ -1754,7 +1774,7 @@ let array_ref_kind mode = function | Pintarray -> Pintarray_ref | Pfloatarray -> Pfloatarray_ref mode | Punboxedintarray int_kind -> Punboxedintarray_ref int_kind - | Punboxedfloatarray -> Punboxedfloatarray_ref + | Punboxedfloatarray Pfloat64 -> Punboxedfloatarray_ref Pfloat64 let array_set_kind mode = function | Pgenarray -> Pgenarray_set mode @@ -1762,7 +1782,7 @@ let array_set_kind mode = function | Pintarray -> Pintarray_set | Pfloatarray -> Pfloatarray_set | Punboxedintarray int_kind -> Punboxedintarray_set int_kind - | Punboxedfloatarray -> Punboxedfloatarray_set + | Punboxedfloatarray Pfloat64 -> Punboxedfloatarray_set Pfloat64 let is_check_enabled ~opt property = match property with diff --git a/ocaml/lambda/lambda.mli b/ocaml/lambda/lambda.mli index 16e63492c8f..a58ebaf82a7 100644 --- a/ocaml/lambda/lambda.mli +++ b/ocaml/lambda/lambda.mli @@ -133,16 +133,22 @@ type primitive = | Plslint | Plsrint | Pasrint | Pintcomp of integer_comparison (* Comparisons that return int (not bool like above) for ordering *) - | Pcompare_ints | Pcompare_floats | Pcompare_bints of boxed_integer + | Pcompare_ints + | Pcompare_floats of boxed_float + | Pcompare_bints of boxed_integer | Poffsetint of int | Poffsetref of int (* Float operations *) - | Pintoffloat | Pfloatofint of alloc_mode - | Pnegfloat of alloc_mode | Pabsfloat of alloc_mode - | Paddfloat of alloc_mode | Psubfloat of alloc_mode - | Pmulfloat of alloc_mode | Pdivfloat of alloc_mode - | Pfloatcomp of float_comparison - | Punboxed_float_comp of float_comparison + | Pintoffloat of boxed_float + | Pfloatofint of boxed_float * alloc_mode + | Pnegfloat of boxed_float * alloc_mode + | Pabsfloat of boxed_float * alloc_mode + | Paddfloat of boxed_float * alloc_mode + | Psubfloat of boxed_float * alloc_mode + | Pmulfloat of boxed_float * alloc_mode + | Pdivfloat of boxed_float * alloc_mode + | Pfloatcomp of boxed_float * float_comparison + | Punboxed_float_comp of boxed_float * float_comparison (* String operations *) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets @@ -227,8 +233,8 @@ type primitive = (* Primitives for [Obj] *) | Pobj_dup | Pobj_magic of layout - | Punbox_float - | Pbox_float of alloc_mode + | Punbox_float of boxed_float + | Pbox_float of boxed_float * alloc_mode | Punbox_int of boxed_integer | Pbox_int of boxed_integer * alloc_mode (* Jane Street extensions *) @@ -252,7 +258,7 @@ and float_comparison = and array_kind = Pgenarray | Paddrarray | Pintarray | Pfloatarray - | Punboxedfloatarray + | Punboxedfloatarray of unboxed_float | Punboxedintarray of unboxed_integer (** When accessing a flat float array, we need to know the mode which we should @@ -262,7 +268,7 @@ and array_ref_kind = | Paddrarray_ref | Pintarray_ref | Pfloatarray_ref of alloc_mode - | Punboxedfloatarray_ref + | Punboxedfloatarray_ref of unboxed_float | Punboxedintarray_ref of unboxed_integer (** When updating an array that might contain pointers, we need to know what @@ -272,11 +278,14 @@ and array_set_kind = | Paddrarray_set of modify_mode | Pintarray_set | Pfloatarray_set - | Punboxedfloatarray_set + | Punboxedfloatarray_set of unboxed_float | Punboxedintarray_set of unboxed_integer and value_kind = - Pgenval | Pfloatval | Pboxedintval of boxed_integer | Pintval + | Pgenval + | Pintval + | Pboxedfloatval of boxed_float + | Pboxedintval of boxed_integer | Pvariant of { consts : int list; non_consts : (int * value_kind list) list; @@ -292,7 +301,7 @@ and value_kind = and layout = | Ptop | Pvalue of value_kind - | Punboxed_float + | Punboxed_float of boxed_float | Punboxed_int of boxed_integer | Punboxed_vector of boxed_vector | Punboxed_product of layout list @@ -301,9 +310,14 @@ and layout = and block_shape = value_kind list option +and boxed_float = Primitive.boxed_float = + | Pfloat64 + and boxed_integer = Primitive.boxed_integer = Pnativeint | Pint32 | Pint64 +and unboxed_float = boxed_float + and unboxed_integer = boxed_integer and vec128_type = @@ -347,6 +361,8 @@ val equal_layout : layout -> layout -> bool val compatible_layout : layout -> layout -> bool +val equal_boxed_float : boxed_float -> boxed_float -> bool + val equal_boxed_integer : boxed_integer -> boxed_integer -> bool val equal_boxed_vector_size : boxed_vector -> boxed_vector -> bool @@ -625,8 +641,8 @@ val layout_module : layout val layout_functor : layout val layout_module_field : layout val layout_string : layout -val layout_boxed_float : layout -val layout_unboxed_float : layout +val layout_boxed_float : boxed_float -> layout +val layout_unboxed_float : boxed_float -> layout val layout_boxedint : boxed_integer -> layout val layout_boxed_vector : Primitive.boxed_vector -> layout (* A layout that is Pgenval because it is the field of a block *) diff --git a/ocaml/lambda/matching.ml b/ocaml/lambda/matching.ml index 300957cea34..a8632708fa8 100644 --- a/ocaml/lambda/matching.ml +++ b/ocaml/lambda/matching.ml @@ -2870,13 +2870,13 @@ let combine_constant value_kind loc arg cst partial ctx def let hs, sw, fail = share_actions_tree value_kind sw fail in hs (Lstringswitch (arg, sw, fail, loc, value_kind)) | Const_float _ -> - make_test_sequence value_kind loc fail (Pfloatcomp CFneq) - (Pfloatcomp CFlt) arg + make_test_sequence value_kind loc fail (Pfloatcomp (Pfloat64, CFneq)) + (Pfloatcomp (Pfloat64, CFlt)) arg const_lambda_list | Const_unboxed_float _ -> make_test_sequence value_kind loc fail - (Punboxed_float_comp CFneq) - (Punboxed_float_comp CFlt) + (Punboxed_float_comp (Pfloat64, CFneq)) + (Punboxed_float_comp (Pfloat64, CFlt)) arg const_lambda_list | Const_int32 _ -> make_test_sequence value_kind loc fail diff --git a/ocaml/lambda/printlambda.ml b/ocaml/lambda/printlambda.ml index a820284a176..89891c82724 100644 --- a/ocaml/lambda/printlambda.ml +++ b/ocaml/lambda/printlambda.ml @@ -60,7 +60,7 @@ let array_kind = function | Paddrarray -> "addr" | Pintarray -> "int" | Pfloatarray -> "float" - | Punboxedfloatarray -> "unboxed_float" + | Punboxedfloatarray Pfloat64 -> "unboxed_float" | Punboxedintarray Pint32 -> "unboxed_int32" | Punboxedintarray Pint64 -> "unboxed_int64" | Punboxedintarray Pnativeint -> "unboxed_nativeint" @@ -75,7 +75,7 @@ let array_ref_kind ppf k = | Paddrarray_ref -> fprintf ppf "addr" | Pintarray_ref -> fprintf ppf "int" | Pfloatarray_ref mode -> fprintf ppf "float%a" pp_mode mode - | Punboxedfloatarray_ref -> fprintf ppf "unboxed_float" + | Punboxedfloatarray_ref Pfloat64 -> fprintf ppf "unboxed_float" | Punboxedintarray_ref Pint32 -> fprintf ppf "unboxed_int32" | Punboxedintarray_ref Pint64 -> fprintf ppf "unboxed_int64" | Punboxedintarray_ref Pnativeint -> fprintf ppf "unboxed_nativeint" @@ -90,7 +90,7 @@ let array_set_kind ppf k = | Paddrarray_set mode -> fprintf ppf "addr%a" pp_mode mode | Pintarray_set -> fprintf ppf "int" | Pfloatarray_set -> fprintf ppf "float" - | Punboxedfloatarray_set -> fprintf ppf "unboxed_float" + | Punboxedfloatarray_set Pfloat64 -> fprintf ppf "unboxed_float" | Punboxedintarray_set Pint32 -> fprintf ppf "unboxed_int32" | Punboxedintarray_set Pint64 -> fprintf ppf "unboxed_int64" | Punboxedintarray_set Pnativeint -> fprintf ppf "unboxed_nativeint" @@ -109,6 +109,9 @@ let boxed_integer_name = function | Pint32 -> "int32" | Pint64 -> "int64" +let boxed_float_name = function + | Pfloat64 -> "float" + let variant_kind print_contents ppf ~consts ~non_consts = fprintf ppf "@[[(consts (%a))@ (non_consts (%a))]@]" (Format.pp_print_list ~pp_sep:Format.pp_print_space Format.pp_print_int) @@ -126,7 +129,7 @@ let variant_kind print_contents ppf ~consts ~non_consts = let rec value_kind ppf = function | Pgenval -> () | Pintval -> fprintf ppf "[int]" - | Pfloatval -> fprintf ppf "[float]" + | Pboxedfloatval bf -> fprintf ppf "[%s]" (boxed_float_name bf) | Parrayval elt_kind -> fprintf ppf "[%sarray]" (array_kind elt_kind) | Pboxedintval bi -> fprintf ppf "[%s]" (boxed_integer_name bi) | Pboxedvectorval (Pvec128 v) -> fprintf ppf "[%s]" (vec128_name v) @@ -136,7 +139,7 @@ let rec value_kind ppf = function and value_kind' ppf = function | Pgenval -> fprintf ppf "*" | Pintval -> fprintf ppf "[int]" - | Pfloatval -> fprintf ppf "[float]" + | Pboxedfloatval bf -> fprintf ppf "[%s]" (boxed_float_name bf) | Parrayval elt_kind -> fprintf ppf "[%sarray]" (array_kind elt_kind) | Pboxedintval bi -> fprintf ppf "[%s]" (boxed_integer_name bi) | Pboxedvectorval (Pvec128 v) -> fprintf ppf "[%s]" (vec128_name v) @@ -148,7 +151,7 @@ let rec layout is_top ppf layout_ = | Pvalue k -> (if is_top then value_kind else value_kind') ppf k | Ptop -> fprintf ppf "[top]" | Pbottom -> fprintf ppf "[bottom]" - | Punboxed_float -> fprintf ppf "[unboxed_float]" + | Punboxed_float bf -> fprintf ppf "[unboxed_%s]" (boxed_float_name bf) | Punboxed_int bi -> fprintf ppf "[unboxed_%s]" (boxed_integer_name bi) | Punboxed_vector (Pvec128 v) -> fprintf ppf "[unboxed_%s]" (vec128_name v) | Punboxed_product layouts -> @@ -164,7 +167,8 @@ let return_kind ppf (mode, kind) = | Pvalue Pgenval when is_heap_mode mode -> () | Pvalue Pgenval -> fprintf ppf ": %s@ " smode | Pvalue Pintval -> fprintf ppf ": int@ " - | Pvalue Pfloatval -> fprintf ppf ": %sfloat@ " smode + | Pvalue (Pboxedfloatval bf) -> + fprintf ppf ": %s%s@ " smode (boxed_float_name bf) | Pvalue (Parrayval elt_kind) -> fprintf ppf ": %s%sarray@ " smode (array_kind elt_kind) | Pvalue (Pboxedintval bi) -> fprintf ppf ": %s%s@ " smode (boxed_integer_name bi) @@ -172,7 +176,7 @@ let return_kind ppf (mode, kind) = fprintf ppf ": %s%s@ " smode (vec128_name v) | Pvalue (Pvariant { consts; non_consts; }) -> variant_kind value_kind' ppf ~consts ~non_consts - | Punboxed_float -> fprintf ppf ": unboxed_float@ " + | Punboxed_float bf -> fprintf ppf ": unboxed_%s@ " (boxed_float_name bf) | Punboxed_int bi -> fprintf ppf ": unboxed_%s@ " (boxed_integer_name bi) | Punboxed_vector (Pvec128 v) -> fprintf ppf ": unboxed_%s@ " (vec128_name v) | Punboxed_product _ -> fprintf ppf ": %a" layout kind @@ -182,7 +186,7 @@ let return_kind ppf (mode, kind) = let field_kind ppf = function | Pgenval -> pp_print_string ppf "*" | Pintval -> pp_print_string ppf "int" - | Pfloatval -> pp_print_string ppf "float" + | Pboxedfloatval bf -> pp_print_string ppf (boxed_float_name bf) | Parrayval elt_kind -> fprintf ppf "%s-array" (array_kind elt_kind) | Pboxedintval bi -> pp_print_string ppf (boxed_integer_name bi) | Pboxedvectorval (Pvec128 v) -> pp_print_string ppf (vec128_name v) @@ -225,6 +229,20 @@ let unboxed_integer_mark name bi m = let print_unboxed_integer name ppf bi m = fprintf ppf "%s" (unboxed_integer_mark name bi m);; +let boxed_float_mark name bf m = + match bf with + | Pfloat64 -> Printf.sprintf "Float.%s%s" name (alloc_kind m) + +let print_boxed_float name ppf bf m = + fprintf ppf "%s" (boxed_float_mark name bf m);; + +let unboxed_float_mark name bf m = + match bf with + | Pfloat64 -> Printf.sprintf "Float_u.%s%s" name (alloc_kind m) + +let print_unboxed_float name ppf bf m = + fprintf ppf "%s" (unboxed_float_mark name bf m);; + let print_bigarray name unsafe kind ppf layout = fprintf ppf "Bigarray.%s[%s,%s]" (if unsafe then "unsafe_"^ name else name) @@ -274,17 +292,17 @@ let integer_comparison ppf = function | Cgt -> fprintf ppf ">" | Cge -> fprintf ppf ">=" -let float_comparison ppf = function - | CFeq -> fprintf ppf "==." - | CFneq -> fprintf ppf "!=." - | CFlt -> fprintf ppf "<." - | CFnlt -> fprintf ppf "!<." - | CFle -> fprintf ppf "<=." - | CFnle -> fprintf ppf "!<=." - | CFgt -> fprintf ppf ">." - | CFngt -> fprintf ppf "!>." - | CFge -> fprintf ppf ">=." - | CFnge -> fprintf ppf "!>=." +let float_comparison = function + | CFeq -> "==" + | CFneq -> "!=" + | CFlt -> "<" + | CFnlt -> "!<" + | CFle -> "<=" + | CFnle -> "!<=" + | CFgt -> ">" + | CFngt -> "!>" + | CFge -> ">=" + | CFnge -> "!>=" let field_read_semantics ppf sem = match sem with @@ -419,20 +437,23 @@ let primitive ppf = function | Pasrint -> fprintf ppf "asr" | Pintcomp(cmp) -> integer_comparison ppf cmp | Pcompare_ints -> fprintf ppf "compare_ints" - | Pcompare_floats -> fprintf ppf "compare_floats" + | Pcompare_floats bf -> fprintf ppf "compare_floats %s" (boxed_float_name bf) | Pcompare_bints bi -> fprintf ppf "compare_bints %s" (boxed_integer_name bi) | Poffsetint n -> fprintf ppf "%i+" n | Poffsetref n -> fprintf ppf "+:=%i"n - | Pintoffloat -> fprintf ppf "int_of_float" - | Pfloatofint m -> fprintf ppf "float_of_int%s" (alloc_kind m) - | Pnegfloat m -> fprintf ppf "~.%s" (alloc_kind m) - | Pabsfloat m -> fprintf ppf "abs.%s" (alloc_kind m) - | Paddfloat m -> fprintf ppf "+.%s" (alloc_kind m) - | Psubfloat m -> fprintf ppf "-.%s" (alloc_kind m) - | Pmulfloat m -> fprintf ppf "*.%s" (alloc_kind m) - | Pdivfloat m -> fprintf ppf "/.%s" (alloc_kind m) - | Pfloatcomp(cmp) -> float_comparison ppf cmp - | Punboxed_float_comp(cmp) -> fprintf ppf "%a (unboxed)" float_comparison cmp + | Pintoffloat bf -> fprintf ppf "int_of_%s" (boxed_float_name bf) + | Pfloatofint (bf,m) -> + fprintf ppf "%s_of_int%s" (boxed_float_name bf) (alloc_kind m) + | Pabsfloat (bf,m) -> print_boxed_float "abs" ppf bf m + | Pnegfloat (bf,m) -> print_boxed_float "neg" ppf bf m + | Paddfloat (bf,m) -> print_boxed_float "add" ppf bf m + | Psubfloat (bf,m) -> print_boxed_float "sub" ppf bf m + | Pmulfloat (bf,m) -> print_boxed_float "mul" ppf bf m + | Pdivfloat (bf,m) -> print_boxed_float "div" ppf bf m + | Pfloatcomp (bf,cmp) -> + print_boxed_float (float_comparison cmp) ppf bf alloc_heap + | Punboxed_float_comp (bf,cmp) -> + print_unboxed_float (float_comparison cmp) ppf bf alloc_heap | Pstringlength -> fprintf ppf "string.length" | Pstringrefu -> fprintf ppf "string.unsafe_get" | Pstringrefs -> fprintf ppf "string.get" @@ -599,8 +620,9 @@ let primitive ppf = function | Pprobe_is_enabled {name} -> fprintf ppf "probe_is_enabled[%s]" name | Pobj_dup -> fprintf ppf "obj_dup" | Pobj_magic _ -> fprintf ppf "obj_magic" - | Punbox_float -> fprintf ppf "unbox_float" - | Pbox_float m -> fprintf ppf "box_float%s" (alloc_kind m) + | Punbox_float bf -> fprintf ppf "unbox_%s" (boxed_float_name bf) + | Pbox_float (bf,m) -> + fprintf ppf "box_%s%s" (boxed_float_name bf) (alloc_kind m) | Punbox_int bi -> fprintf ppf "unbox_%s" (boxed_integer_name bi) | Pbox_int (bi, m) -> fprintf ppf "box_%s%s" (boxed_integer_name bi) (alloc_kind m) @@ -649,20 +671,20 @@ let name_of_primitive = function | Pasrint -> "Pasrint" | Pintcomp _ -> "Pintcomp" | Pcompare_ints -> "Pcompare_ints" - | Pcompare_floats -> "Pcompare_floats" + | Pcompare_floats Pfloat64 -> "Pcompare_floats" | Pcompare_bints _ -> "Pcompare" | Poffsetint _ -> "Poffsetint" | Poffsetref _ -> "Poffsetref" - | Pintoffloat -> "Pintoffloat" - | Pfloatofint _ -> "Pfloatofint" - | Pnegfloat _ -> "Pnegfloat" - | Pabsfloat _ -> "Pabsfloat" - | Paddfloat _ -> "Paddfloat" - | Psubfloat _ -> "Psubfloat" - | Pmulfloat _ -> "Pmulfloat" - | Pdivfloat _ -> "Pdivfloat" - | Pfloatcomp _ -> "Pfloatcomp" - | Punboxed_float_comp _ -> "Punboxed_float_comp" + | Pintoffloat Pfloat64 -> "Pintoffloat" + | Pfloatofint (Pfloat64, _) -> "Pfloatofint" + | Pnegfloat (Pfloat64, _) -> "Pnegfloat" + | Pabsfloat (Pfloat64, _) -> "Pabsfloat" + | Paddfloat (Pfloat64, _) -> "Paddfloat" + | Psubfloat (Pfloat64, _) -> "Psubfloat" + | Pmulfloat (Pfloat64, _) -> "Pmulfloat" + | Pdivfloat (Pfloat64, _) -> "Pdivfloat" + | Pfloatcomp (Pfloat64, _) -> "Pfloatcomp" + | Punboxed_float_comp (Pfloat64, _) -> "Punboxed_float_comp" | Pstringlength -> "Pstringlength" | Pstringrefu -> "Pstringrefu" | Pstringrefs -> "Pstringrefs" @@ -740,8 +762,8 @@ let name_of_primitive = function | Pprobe_is_enabled _ -> "Pprobe_is_enabled" | Pobj_dup -> "Pobj_dup" | Pobj_magic _ -> "Pobj_magic" - | Punbox_float -> "Punbox_float" - | Pbox_float _ -> "Pbox_float" + | Punbox_float Pfloat64 -> "Punbox_float" + | Pbox_float (Pfloat64, _) -> "Pbox_float" | Punbox_int _ -> "Punbox_int" | Pbox_int _ -> "Pbox_int" | Parray_of_iarray -> "Parray_of_iarray" diff --git a/ocaml/lambda/printlambda.mli b/ocaml/lambda/printlambda.mli index 8af3563d6b6..1cd9f6edbe2 100644 --- a/ocaml/lambda/printlambda.mli +++ b/ocaml/lambda/printlambda.mli @@ -18,7 +18,7 @@ open Lambda open Format val integer_comparison: formatter -> integer_comparison -> unit -val float_comparison: formatter -> float_comparison -> unit +val float_comparison: float_comparison -> string val structured_constant: formatter -> structured_constant -> unit val lambda: formatter -> lambda -> unit val program: formatter -> program -> unit diff --git a/ocaml/lambda/tmc.ml b/ocaml/lambda/tmc.ml index e862c07e1c9..83813d6c643 100644 --- a/ocaml/lambda/tmc.ml +++ b/ocaml/lambda/tmc.ml @@ -887,23 +887,24 @@ let rec choice ctx t = | Plslint | Plsrint | Pasrint | Pintcomp _ | Punboxed_int_comp _ | Poffsetint _ | Poffsetref _ - | Pintoffloat | Pfloatofint _ - | Pnegfloat _ | Pabsfloat _ - | Paddfloat _ | Psubfloat _ | Pmulfloat _ | Pdivfloat _ - | Pfloatcomp _ | Punboxed_float_comp _ + | Pintoffloat Pfloat64 | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) | Pdivfloat (Pfloat64, _) + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets | Parraylength _ | Parrayrefu _ | Parraysetu _ | Parrayrefs _ | Parraysets _ | Pisint _ | Pisout | Pignore - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ (* we don't handle effect or DLS primitives *) | Prunstack | Pperform | Presume | Preperform | Pdls_get (* we don't handle atomic primitives *) | Patomic_exchange | Patomic_cas | Patomic_fetch_add | Patomic_load _ - | Punbox_float | Pbox_float _ + | Punbox_float Pfloat64 | Pbox_float (Pfloat64, _) | Punbox_int _ | Pbox_int _ (* we don't handle array indices as destinations yet *) diff --git a/ocaml/lambda/transl_array_comprehension.ml b/ocaml/lambda/transl_array_comprehension.ml index 6916e24fdde..f4fb5e4a4c6 100644 --- a/ocaml/lambda/transl_array_comprehension.ml +++ b/ocaml/lambda/transl_array_comprehension.ml @@ -697,7 +697,7 @@ let initial_array ~loc ~array_kind ~array_size ~array_sizing = | Fixed_size, (Pintarray | Paddrarray) -> Immutable StrictOpt, make_vect ~loc ~length:array_size.var ~init:(int 0) - | Fixed_size, (Pfloatarray | Punboxedfloatarray) -> + | Fixed_size, (Pfloatarray | Punboxedfloatarray Pfloat64) -> (* The representations of these two are the same, it's only accesses that differ. *) Immutable StrictOpt, make_float_vect ~loc array_size.var @@ -712,7 +712,7 @@ let initial_array ~loc ~array_kind ~array_size ~array_sizing = Mutable, Resizable_array.make ~loc array_kind (int 0) | Dynamic_size, Pfloatarray -> Mutable, Resizable_array.make ~loc array_kind (float 0.) - | Dynamic_size, Punboxedfloatarray -> + | Dynamic_size, Punboxedfloatarray Pfloat64 -> Mutable, Resizable_array.make ~loc array_kind (unboxed_float 0.) | Dynamic_size, Punboxedintarray Pint32 -> Mutable, Resizable_array.make ~loc array_kind (unboxed_int32 0l) @@ -808,7 +808,7 @@ let body Lassign(array.id, make_array), set_element_in_bounds elt.var, (Pvalue Pintval) (* [unit] is immediate *))) - | Pintarray | Paddrarray | Pfloatarray | Punboxedfloatarray + | Pintarray | Paddrarray | Pfloatarray | Punboxedfloatarray Pfloat64 | Punboxedintarray _ -> set_element_in_bounds body in @@ -821,7 +821,7 @@ let comprehension { comp_body; comp_clauses } = (match array_kind with | Pgenarray | Paddrarray | Pintarray | Pfloatarray -> () - | Punboxedfloatarray | Punboxedintarray _ -> + | Punboxedfloatarray Pfloat64 | Punboxedintarray _ -> if not !Clflags.native_code then Misc.fatal_errorf "Array comprehensions for kind %s are not allowed in bytecode" diff --git a/ocaml/lambda/translcore.ml b/ocaml/lambda/translcore.ml index 84dd69b5469..a9d423847c3 100644 --- a/ocaml/lambda/translcore.ml +++ b/ocaml/lambda/translcore.ml @@ -59,7 +59,7 @@ let layout_pat sort p = layout p.pat_env p.pat_loc sort p.pat_type *) let record_field_kind l = match l with - | Punboxed_float -> Pfloatval + | Punboxed_float Pfloat64 -> Pboxedfloatval Pfloat64 | _ -> must_be_value l (* CR layouts v5: This function is only used for sanity checking the @@ -643,7 +643,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = Lconst(Const_float_array(List.map extract_float cl)) | Pgenarray -> raise Not_constant (* can this really happen? *) - | Punboxedfloatarray | Punboxedintarray _ -> + | Punboxedfloatarray Pfloat64 | Punboxedintarray _ -> Misc.fatal_error "Use flambda2 for unboxed arrays" in match amut with diff --git a/ocaml/lambda/translprim.ml b/ocaml/lambda/translprim.ml index 81863a604db..78639830162 100644 --- a/ocaml/lambda/translprim.ml +++ b/ocaml/lambda/translprim.ml @@ -210,20 +210,20 @@ let lookup_primitive loc poly pos p = | "%geint" -> Primitive ((Pintcomp Cge), 2) | "%incr" -> Primitive ((Poffsetref(1)), 1) | "%decr" -> Primitive ((Poffsetref(-1)), 1) - | "%intoffloat" -> Primitive (Pintoffloat, 1) - | "%floatofint" -> Primitive (Pfloatofint mode, 1) - | "%negfloat" -> Primitive (Pnegfloat mode, 1) - | "%absfloat" -> Primitive (Pabsfloat mode, 1) - | "%addfloat" -> Primitive (Paddfloat mode, 2) - | "%subfloat" -> Primitive (Psubfloat mode, 2) - | "%mulfloat" -> Primitive (Pmulfloat mode, 2) - | "%divfloat" -> Primitive (Pdivfloat mode, 2) - | "%eqfloat" -> Primitive ((Pfloatcomp CFeq), 2) - | "%noteqfloat" -> Primitive ((Pfloatcomp CFneq), 2) - | "%ltfloat" -> Primitive ((Pfloatcomp CFlt), 2) - | "%lefloat" -> Primitive ((Pfloatcomp CFle), 2) - | "%gtfloat" -> Primitive ((Pfloatcomp CFgt), 2) - | "%gefloat" -> Primitive ((Pfloatcomp CFge), 2) + | "%intoffloat" -> Primitive (Pintoffloat Pfloat64, 1) + | "%floatofint" -> Primitive (Pfloatofint (Pfloat64, mode), 1) + | "%negfloat" -> Primitive (Pnegfloat (Pfloat64, mode), 1) + | "%absfloat" -> Primitive (Pabsfloat (Pfloat64, mode), 1) + | "%addfloat" -> Primitive (Paddfloat (Pfloat64, mode), 2) + | "%subfloat" -> Primitive (Psubfloat (Pfloat64, mode), 2) + | "%mulfloat" -> Primitive (Pmulfloat (Pfloat64, mode), 2) + | "%divfloat" -> Primitive (Pdivfloat (Pfloat64, mode), 2) + | "%eqfloat" -> Primitive ((Pfloatcomp (Pfloat64, CFeq)), 2) + | "%noteqfloat" -> Primitive ((Pfloatcomp (Pfloat64, CFneq)), 2) + | "%ltfloat" -> Primitive ((Pfloatcomp (Pfloat64, CFlt)), 2) + | "%lefloat" -> Primitive ((Pfloatcomp (Pfloat64, CFle)), 2) + | "%gtfloat" -> Primitive ((Pfloatcomp (Pfloat64, CFgt)), 2) + | "%gefloat" -> Primitive ((Pfloatcomp (Pfloat64, CFge)), 2) | "%string_length" -> Primitive (Pstringlength, 1) | "%string_safe_get" -> Primitive (Pstringrefs, 2) | "%string_safe_set" -> Primitive (Pbytessets, 3) @@ -448,8 +448,8 @@ let lookup_primitive loc poly pos p = | "%obj_magic" -> Primitive(Pobj_magic Lambda.layout_any_value, 1) | "%array_to_iarray" -> Primitive (Parray_to_iarray, 1) | "%array_of_iarray" -> Primitive (Parray_of_iarray, 1) - | "%unbox_float" -> Primitive(Punbox_float, 1) - | "%box_float" -> Primitive(Pbox_float mode, 1) + | "%unbox_float" -> Primitive(Punbox_float Pfloat64, 1) + | "%box_float" -> Primitive(Pbox_float (Pfloat64, mode), 1) | "%get_header" -> Primitive (Pget_header mode, 1) | "%atomic_load" -> Primitive ((Patomic_load {immediate_or_pointer=Pointer}), 1) @@ -506,9 +506,9 @@ let glb_array_type loc t1 t2 = match t1, t2 with (* Handle unboxed array kinds which can only match with themselves *) - | Punboxedfloatarray, Punboxedfloatarray -> Punboxedfloatarray - | Punboxedfloatarray, _ | _, Punboxedfloatarray -> - raise(Error(loc, Invalid_array_kind_in_glb Punboxedfloatarray)) + | Punboxedfloatarray Pfloat64, Punboxedfloatarray Pfloat64 -> Punboxedfloatarray Pfloat64 + | Punboxedfloatarray Pfloat64, _ | _, Punboxedfloatarray Pfloat64 -> + raise(Error(loc, Invalid_array_kind_in_glb (Punboxedfloatarray Pfloat64))) | Punboxedintarray Pint32, Punboxedintarray Pint32 -> Punboxedintarray Pint32 | Punboxedintarray Pint64, Punboxedintarray Pint64 -> Punboxedintarray Pint64 | Punboxedintarray Pnativeint, Punboxedintarray Pnativeint -> @@ -529,9 +529,9 @@ let glb_array_type loc t1 t2 = let glb_array_ref_type loc t1 t2 = match t1, t2 with (* Handle unboxed array kinds which can only match with themselves *) - | Punboxedfloatarray_ref, Punboxedfloatarray -> t1 - | Punboxedfloatarray_ref, _ | _, Punboxedfloatarray -> - raise(Error(loc, Invalid_array_kind_in_glb Punboxedfloatarray)) + | Punboxedfloatarray_ref Pfloat64, Punboxedfloatarray Pfloat64 -> t1 + | Punboxedfloatarray_ref Pfloat64, _ | _, Punboxedfloatarray Pfloat64 -> + raise(Error(loc, Invalid_array_kind_in_glb (Punboxedfloatarray Pfloat64))) | Punboxedintarray_ref Pint32, Punboxedintarray Pint32 -> t1 | Punboxedintarray_ref Pint64, Punboxedintarray Pint64 -> t1 | Punboxedintarray_ref Pnativeint, Punboxedintarray Pnativeint -> t1 @@ -565,9 +565,9 @@ let glb_array_ref_type loc t1 t2 = let glb_array_set_type loc t1 t2 = match t1, t2 with (* Handle unboxed array kinds which can only match with themselves *) - | Punboxedfloatarray_set, Punboxedfloatarray -> t1 - | Punboxedfloatarray_set, _ | _, Punboxedfloatarray -> - raise(Error(loc, Invalid_array_kind_in_glb Punboxedfloatarray)) + | Punboxedfloatarray_set Pfloat64, Punboxedfloatarray Pfloat64 -> t1 + | Punboxedfloatarray_set Pfloat64, _ | _, Punboxedfloatarray Pfloat64 -> + raise(Error(loc, Invalid_array_kind_in_glb (Punboxedfloatarray Pfloat64))) | Punboxedintarray_set Pint32, Punboxedintarray Pint32 -> t1 | Punboxedintarray_set Pint64, Punboxedintarray Pint64 -> t1 | Punboxedintarray_set Pnativeint, Punboxedintarray Pnativeint -> t1 @@ -757,7 +757,7 @@ let comparison_primitive comparison comparison_kind = match comparison, comparison_kind with | Equal, Compare_generic -> Pccall caml_equal | Equal, Compare_ints -> Pintcomp Ceq - | Equal, Compare_floats -> Pfloatcomp CFeq + | Equal, Compare_floats -> Pfloatcomp (Pfloat64, CFeq) | Equal, Compare_strings -> Pccall caml_string_equal | Equal, Compare_bytes -> Pccall caml_bytes_equal | Equal, Compare_nativeints -> Pbintcomp(Pnativeint, Ceq) @@ -765,7 +765,7 @@ let comparison_primitive comparison comparison_kind = | Equal, Compare_int64s -> Pbintcomp(Pint64, Ceq) | Not_equal, Compare_generic -> Pccall caml_notequal | Not_equal, Compare_ints -> Pintcomp Cne - | Not_equal, Compare_floats -> Pfloatcomp CFneq + | Not_equal, Compare_floats -> Pfloatcomp (Pfloat64, CFneq) | Not_equal, Compare_strings -> Pccall caml_string_notequal | Not_equal, Compare_bytes -> Pccall caml_bytes_notequal | Not_equal, Compare_nativeints -> Pbintcomp(Pnativeint, Cne) @@ -773,7 +773,7 @@ let comparison_primitive comparison comparison_kind = | Not_equal, Compare_int64s -> Pbintcomp(Pint64, Cne) | Less_equal, Compare_generic -> Pccall caml_lessequal | Less_equal, Compare_ints -> Pintcomp Cle - | Less_equal, Compare_floats -> Pfloatcomp CFle + | Less_equal, Compare_floats -> Pfloatcomp (Pfloat64, CFle) | Less_equal, Compare_strings -> Pccall caml_string_lessequal | Less_equal, Compare_bytes -> Pccall caml_bytes_lessequal | Less_equal, Compare_nativeints -> Pbintcomp(Pnativeint, Cle) @@ -781,7 +781,7 @@ let comparison_primitive comparison comparison_kind = | Less_equal, Compare_int64s -> Pbintcomp(Pint64, Cle) | Less_than, Compare_generic -> Pccall caml_lessthan | Less_than, Compare_ints -> Pintcomp Clt - | Less_than, Compare_floats -> Pfloatcomp CFlt + | Less_than, Compare_floats -> Pfloatcomp (Pfloat64, CFlt) | Less_than, Compare_strings -> Pccall caml_string_lessthan | Less_than, Compare_bytes -> Pccall caml_bytes_lessthan | Less_than, Compare_nativeints -> Pbintcomp(Pnativeint, Clt) @@ -789,7 +789,7 @@ let comparison_primitive comparison comparison_kind = | Less_than, Compare_int64s -> Pbintcomp(Pint64, Clt) | Greater_equal, Compare_generic -> Pccall caml_greaterequal | Greater_equal, Compare_ints -> Pintcomp Cge - | Greater_equal, Compare_floats -> Pfloatcomp CFge + | Greater_equal, Compare_floats -> Pfloatcomp (Pfloat64, CFge) | Greater_equal, Compare_strings -> Pccall caml_string_greaterequal | Greater_equal, Compare_bytes -> Pccall caml_bytes_greaterequal | Greater_equal, Compare_nativeints -> Pbintcomp(Pnativeint, Cge) @@ -797,7 +797,7 @@ let comparison_primitive comparison comparison_kind = | Greater_equal, Compare_int64s -> Pbintcomp(Pint64, Cge) | Greater_than, Compare_generic -> Pccall caml_greaterthan | Greater_than, Compare_ints -> Pintcomp Cgt - | Greater_than, Compare_floats -> Pfloatcomp CFgt + | Greater_than, Compare_floats -> Pfloatcomp (Pfloat64, CFgt) | Greater_than, Compare_strings -> Pccall caml_string_greaterthan | Greater_than, Compare_bytes -> Pccall caml_bytes_greaterthan | Greater_than, Compare_nativeints -> Pbintcomp(Pnativeint, Cgt) @@ -805,7 +805,7 @@ let comparison_primitive comparison comparison_kind = | Greater_than, Compare_int64s -> Pbintcomp(Pint64, Cgt) | Compare, Compare_generic -> Pccall caml_compare | Compare, Compare_ints -> Pcompare_ints - | Compare, Compare_floats -> Pcompare_floats + | Compare, Compare_floats -> Pcompare_floats Pfloat64 | Compare, Compare_strings -> Pccall caml_string_compare | Compare, Compare_bytes -> Pccall caml_bytes_compare | Compare, Compare_nativeints -> Pcompare_bints Pnativeint @@ -1088,8 +1088,12 @@ let lambda_primitive_needs_event_after = function (* We add an event after any primitive resulting in a C call that may raise an exception or allocate. These are places where we may collect the call stack. *) - | Pduprecord _ | Pccall _ | Pfloatofint _ | Pnegfloat _ | Pabsfloat _ - | Paddfloat _ | Psubfloat _ | Pmulfloat _ | Pdivfloat _ | Pstringrefs | Pbytesrefs + | Pduprecord _ | Pccall _ + | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) | Pdivfloat (Pfloat64, _) + | Pstringrefs | Pbytesrefs | Pbytessets | Pmakearray (Pgenarray, _, _) | Pduparray _ | Parrayrefu (Pgenarray_ref _ | Pfloatarray_ref _) | Parrayrefs _ | Parraysets _ | Pbintofint _ | Pcvtbint _ | Pnegbint _ @@ -1116,21 +1120,21 @@ let lambda_primitive_needs_event_after = function | Pufloatfield _ | Psetufloatfield _ | Psequor | Psequand | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pdivint _ | Pmodint _ | Pandint | Porint | Pxorint | Plslint | Plsrint - | Pasrint | Pintcomp _ | Poffsetint _ | Poffsetref _ | Pintoffloat - | Pcompare_ints | Pcompare_floats - | Pfloatcomp _ | Punboxed_float_comp _ + | Pasrint | Pintcomp _ | Poffsetint _ | Poffsetref _ | Pintoffloat Pfloat64 + | Pcompare_ints | Pcompare_floats Pfloat64 + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pstringlength | Pstringrefu | Pbyteslength | Pbytesrefu | Pbytessetu - | Pmakearray ((Pintarray | Paddrarray | Pfloatarray | Punboxedfloatarray + | Pmakearray ((Pintarray | Paddrarray | Pfloatarray | Punboxedfloatarray Pfloat64 | Punboxedintarray _), _, _) | Parraylength _ | Parrayrefu _ | Parraysetu _ | Pisint _ | Pisout | Pprobe_is_enabled _ | Patomic_exchange | Patomic_cas | Patomic_fetch_add | Patomic_load _ | Pintofbint _ | Pctconst _ | Pbswap16 | Pint_as_pointer _ | Popaque _ | Pdls_get - | Pobj_magic _ | Punbox_float | Punbox_int _ + | Pobj_magic _ | Punbox_float Pfloat64 | Punbox_int _ (* These don't allocate in bytecode; they're just identity functions: *) - | Pbox_float _ | Pbox_int _ + | Pbox_float (Pfloat64, _) | Pbox_int _ -> false (* Determine if a primitive should be surrounded by an "after" debug event *) diff --git a/ocaml/middle_end/clambda_primitives.ml b/ocaml/middle_end/clambda_primitives.ml index 6337b44a01e..f322bb8295b 100644 --- a/ocaml/middle_end/clambda_primitives.ml +++ b/ocaml/middle_end/clambda_primitives.ml @@ -65,16 +65,22 @@ type primitive = | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp of integer_comparison - | Pcompare_ints | Pcompare_floats | Pcompare_bints of boxed_integer + | Pcompare_ints + | Pcompare_floats of boxed_float + | Pcompare_bints of boxed_integer | Poffsetint of int | Poffsetref of int (* Float operations *) - | Pintoffloat | Pfloatofint of alloc_mode - | Pnegfloat of alloc_mode | Pabsfloat of alloc_mode - | Paddfloat of alloc_mode | Psubfloat of alloc_mode - | Pmulfloat of alloc_mode | Pdivfloat of alloc_mode - | Pfloatcomp of float_comparison - | Punboxed_float_comp of float_comparison + | Pintoffloat of boxed_float + | Pfloatofint of boxed_float * alloc_mode + | Pnegfloat of boxed_float * alloc_mode + | Pabsfloat of boxed_float * alloc_mode + | Paddfloat of boxed_float * alloc_mode + | Psubfloat of boxed_float * alloc_mode + | Pmulfloat of boxed_float * alloc_mode + | Pdivfloat of boxed_float * alloc_mode + | Pfloatcomp of boxed_float * float_comparison + | Punboxed_float_comp of boxed_float * float_comparison (* String operations *) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets @@ -139,8 +145,8 @@ type primitive = | Popaque (* Probes *) | Pprobe_is_enabled of { name : string } - | Punbox_float - | Pbox_float of alloc_mode + | Punbox_float of boxed_float + | Pbox_float of boxed_float * alloc_mode | Punbox_int of boxed_integer | Pbox_int of boxed_integer * alloc_mode | Pget_header of alloc_mode @@ -155,7 +161,7 @@ and float_comparison = Lambda.float_comparison = and array_kind = Lambda.array_kind = Pgenarray | Paddrarray | Pintarray | Pfloatarray - | Punboxedfloatarray + | Punboxedfloatarray of unboxed_float | Punboxedintarray of unboxed_integer and array_ref_kind = Lambda.array_ref_kind = @@ -163,7 +169,7 @@ and array_ref_kind = Lambda.array_ref_kind = | Paddrarray_ref | Pintarray_ref | Pfloatarray_ref of alloc_mode - | Punboxedfloatarray_ref + | Punboxedfloatarray_ref of unboxed_float | Punboxedintarray_ref of unboxed_integer and array_set_kind = Lambda.array_set_kind = @@ -171,12 +177,14 @@ and array_set_kind = Lambda.array_set_kind = | Paddrarray_set of modify_mode | Pintarray_set | Pfloatarray_set - | Punboxedfloatarray_set + | Punboxedfloatarray_set of unboxed_float | Punboxedintarray_set of unboxed_integer and value_kind = Lambda.value_kind = - (* CR mshinwell: Pfloatval should be renamed to Pboxedfloatval *) - Pgenval | Pfloatval | Pboxedintval of boxed_integer | Pintval + | Pgenval + | Pintval + | Pboxedfloatval of boxed_float + | Pboxedintval of boxed_integer | Pvariant of { consts : int list; non_consts : (int * value_kind list) list; @@ -187,7 +195,7 @@ and value_kind = Lambda.value_kind = and layout = Lambda.layout = | Ptop | Pvalue of value_kind - | Punboxed_float + | Punboxed_float of boxed_float | Punboxed_int of boxed_integer | Punboxed_vector of boxed_vector | Punboxed_product of layout list @@ -195,9 +203,14 @@ and layout = Lambda.layout = and block_shape = Lambda.block_shape +and boxed_float = Lambda.boxed_float = + | Pfloat64 + and boxed_integer = Lambda.boxed_integer = Pnativeint | Pint32 | Pint64 +and unboxed_float = boxed_float + and unboxed_integer = boxed_integer and vec128_type = Lambda.vec128_type = @@ -243,10 +256,13 @@ let result_layout (p : primitive) = | Pmakeufloatblock _ | Pduparray _ | Pbigarraydim _ -> Lambda.layout_block | Pfield _ | Pfield_computed -> Lambda.layout_field - | Pfloatfield _ | Pfloatofint _ | Pnegfloat _ | Pabsfloat _ - | Paddfloat _ | Psubfloat _ | Pmulfloat _ | Pdivfloat _ - | Pbox_float _ -> Lambda.layout_boxed_float - | Pufloatfield _ | Punbox_float -> Punboxed_float + | Pfloatfield _ | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) | Pdivfloat (Pfloat64, _) + | Pbox_float (Pfloat64, _) -> Lambda.layout_boxed_float Pfloat64 + | Pufloatfield _ -> Punboxed_float Pfloat64 + | Punbox_float Pfloat64 -> Punboxed_float Pfloat64 | Pccall { prim_native_repr_res = _, repr_res } -> Lambda.layout_of_native_repr repr_res | Praise _ -> Lambda.layout_bottom | Psequor | Psequand | Pnot @@ -255,8 +271,9 @@ let result_layout (p : primitive) = | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp _ - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ - | Poffsetint _ | Pintoffloat | Pfloatcomp _ | Punboxed_float_comp _ + | Pcompare_ints | Pcompare_floats Pfloat64| Pcompare_bints _ + | Poffsetint _ | Pintoffloat Pfloat64 + | Pfloatcomp (Pfloat64, _) | Punboxed_float_comp (Pfloat64, _) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytesrefs | Parraylength _ | Pisint | Pisout | Pintofbint _ @@ -276,7 +293,7 @@ let result_layout (p : primitive) = | Pbigarrayref (_, _, kind, _) -> begin match kind with | Pbigarray_unknown -> Lambda.layout_any_value - | Pbigarray_float32 | Pbigarray_float64 -> Lambda.layout_boxed_float + | Pbigarray_float32 | Pbigarray_float64 -> Lambda.layout_boxed_float Pfloat64 | Pbigarray_sint8 | Pbigarray_uint8 | Pbigarray_sint16 | Pbigarray_uint16 | Pbigarray_caml_int -> Lambda.layout_int diff --git a/ocaml/middle_end/clambda_primitives.mli b/ocaml/middle_end/clambda_primitives.mli index 2e2f462db6e..bfe57201a0f 100644 --- a/ocaml/middle_end/clambda_primitives.mli +++ b/ocaml/middle_end/clambda_primitives.mli @@ -65,16 +65,22 @@ type primitive = | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp of integer_comparison - | Pcompare_ints | Pcompare_floats | Pcompare_bints of boxed_integer + | Pcompare_ints + | Pcompare_floats of boxed_float + | Pcompare_bints of boxed_integer | Poffsetint of int | Poffsetref of int (* Float operations *) - | Pintoffloat | Pfloatofint of alloc_mode - | Pnegfloat of alloc_mode | Pabsfloat of alloc_mode - | Paddfloat of alloc_mode | Psubfloat of alloc_mode - | Pmulfloat of alloc_mode | Pdivfloat of alloc_mode - | Pfloatcomp of float_comparison - | Punboxed_float_comp of float_comparison + | Pintoffloat of boxed_float + | Pfloatofint of boxed_float * alloc_mode + | Pnegfloat of boxed_float * alloc_mode + | Pabsfloat of boxed_float * alloc_mode + | Paddfloat of boxed_float * alloc_mode + | Psubfloat of boxed_float * alloc_mode + | Pmulfloat of boxed_float * alloc_mode + | Pdivfloat of boxed_float * alloc_mode + | Pfloatcomp of boxed_float * float_comparison + | Punboxed_float_comp of boxed_float * float_comparison (* String operations *) | Pstringlength | Pstringrefu | Pstringrefs | Pbyteslength | Pbytesrefu | Pbytessetu | Pbytesrefs | Pbytessets @@ -142,8 +148,8 @@ type primitive = | Popaque (* Probes *) | Pprobe_is_enabled of { name : string } - | Punbox_float - | Pbox_float of alloc_mode + | Punbox_float of boxed_float + | Pbox_float of boxed_float * alloc_mode | Punbox_int of boxed_integer | Pbox_int of boxed_integer * alloc_mode | Pget_header of alloc_mode @@ -159,7 +165,7 @@ and float_comparison = Lambda.float_comparison = and array_kind = Lambda.array_kind = Pgenarray | Paddrarray | Pintarray | Pfloatarray - | Punboxedfloatarray + | Punboxedfloatarray of unboxed_float | Punboxedintarray of unboxed_integer and array_ref_kind = Lambda.array_ref_kind = @@ -167,7 +173,7 @@ and array_ref_kind = Lambda.array_ref_kind = | Paddrarray_ref | Pintarray_ref | Pfloatarray_ref of alloc_mode - | Punboxedfloatarray_ref + | Punboxedfloatarray_ref of unboxed_float | Punboxedintarray_ref of unboxed_integer and array_set_kind = Lambda.array_set_kind = @@ -175,12 +181,14 @@ and array_set_kind = Lambda.array_set_kind = | Paddrarray_set of modify_mode | Pintarray_set | Pfloatarray_set - | Punboxedfloatarray_set + | Punboxedfloatarray_set of unboxed_float | Punboxedintarray_set of unboxed_integer and value_kind = Lambda.value_kind = - (* CR mshinwell: Pfloatval should be renamed to Pboxedfloatval *) - Pgenval | Pfloatval | Pboxedintval of boxed_integer | Pintval + | Pgenval + | Pintval + | Pboxedfloatval of boxed_float + | Pboxedintval of boxed_integer | Pvariant of { consts : int list; non_consts : (int * value_kind list) list; @@ -191,7 +199,7 @@ and value_kind = Lambda.value_kind = and layout = Lambda.layout = | Ptop | Pvalue of value_kind - | Punboxed_float + | Punboxed_float of boxed_float | Punboxed_int of boxed_integer | Punboxed_vector of boxed_vector | Punboxed_product of layout list @@ -199,9 +207,14 @@ and layout = Lambda.layout = and block_shape = Lambda.block_shape +and boxed_float = Lambda.boxed_float = + | Pfloat64 + and boxed_integer = Lambda.boxed_integer = Pnativeint | Pint32 | Pint64 +and unboxed_float = boxed_float + and unboxed_integer = boxed_integer and vec128_type = Lambda.vec128_type = diff --git a/ocaml/middle_end/closure/closure.ml b/ocaml/middle_end/closure/closure.ml index 8fe0ef5d276..91bf7094129 100644 --- a/ocaml/middle_end/closure/closure.ml +++ b/ocaml/middle_end/closure/closure.ml @@ -61,12 +61,12 @@ let is_gc_ignorable kind = match kind with | Ptop -> Misc.fatal_error "[Ptop] can't be stored in a closure." | Pbottom -> Misc.fatal_error "[Pbottom] should not be stored in a closure." - | Punboxed_float -> true + | Punboxed_float Pfloat64 -> true | Punboxed_int _ -> true | Punboxed_vector _ -> true | Pvalue Pintval -> true - | Pvalue (Pgenval | Pfloatval | Pboxedintval _ | Pvariant _ | Parrayval _ | - Pboxedvectorval _) -> false + | Pvalue (Pgenval | Pboxedfloatval Pfloat64 | Pboxedintval _ | Pvariant _ | + Parrayval _ | Pboxedvectorval _) -> false | Punboxed_product _ -> Misc.fatal_error "TODO" let split_closure_fv kinds fv = @@ -345,7 +345,7 @@ let simplif_arith_prim_pure ~backend fpc p (args, approxs) dbg = | Pnot -> make_const_bool (n1 = 0) | Pnegint -> make_const_int (- n1) | Poffsetint n -> make_const_int (n + n1) - | Pfloatofint _ when fpc -> make_const_float (float_of_int n1) + | Pfloatofint (Pfloat64, _) when fpc -> make_const_float (float_of_int n1) | Pbintofint (Pnativeint,_) -> make_const_natint (Nativeint.of_int n1) | Pbintofint (Pint32,_) -> make_const_int32 (Int32.of_int n1) | Pbintofint (Pint64,_) -> make_const_int64 (Int64.of_int n1) @@ -379,20 +379,20 @@ let simplif_arith_prim_pure ~backend fpc p (args, approxs) dbg = (* float *) | [Value_const(Uconst_ref(_, Some (Uconst_float n1)))] when fpc -> begin match p with - | Pintoffloat -> make_const_int (int_of_float n1) - | Pnegfloat _ -> make_const_float (-. n1) - | Pabsfloat _ -> make_const_float (abs_float n1) + | Pintoffloat Pfloat64 -> make_const_int (int_of_float n1) + | Pnegfloat (Pfloat64, _) -> make_const_float (-. n1) + | Pabsfloat (Pfloat64, _) -> make_const_float (abs_float n1) | _ -> default end (* float, float *) | [Value_const(Uconst_ref(_, Some (Uconst_float n1))); Value_const(Uconst_ref(_, Some (Uconst_float n2)))] when fpc -> begin match p with - | Paddfloat _ -> make_const_float (n1 +. n2) - | Psubfloat _ -> make_const_float (n1 -. n2) - | Pmulfloat _ -> make_const_float (n1 *. n2) - | Pdivfloat _ -> make_const_float (n1 /. n2) - | Pfloatcomp c -> make_float_comparison c n1 n2 + | Paddfloat (Pfloat64, _) -> make_const_float (n1 +. n2) + | Psubfloat (Pfloat64, _) -> make_const_float (n1 -. n2) + | Pmulfloat (Pfloat64, _) -> make_const_float (n1 *. n2) + | Pdivfloat (Pfloat64, _) -> make_const_float (n1 /. n2) + | Pfloatcomp (Pfloat64, c) -> make_float_comparison c n1 n2 | _ -> default end (* nativeint *) diff --git a/ocaml/middle_end/convert_primitives.ml b/ocaml/middle_end/convert_primitives.ml index d186ebb8a0f..066370e0957 100644 --- a/ocaml/middle_end/convert_primitives.ml +++ b/ocaml/middle_end/convert_primitives.ml @@ -74,20 +74,20 @@ let convert (prim : Lambda.primitive) : Clambda_primitives.primitive = | Pasrint -> Pasrint | Pintcomp comp -> Pintcomp comp | Pcompare_ints -> Pcompare_ints - | Pcompare_floats -> Pcompare_floats + | Pcompare_floats bf -> Pcompare_floats bf | Pcompare_bints bi -> Pcompare_bints bi | Poffsetint offset -> Poffsetint offset | Poffsetref offset -> Poffsetref offset - | Pintoffloat -> Pintoffloat - | Pfloatofint m -> Pfloatofint m - | Pnegfloat m -> Pnegfloat m - | Pabsfloat m -> Pabsfloat m - | Paddfloat m -> Paddfloat m - | Psubfloat m -> Psubfloat m - | Pmulfloat m -> Pmulfloat m - | Pdivfloat m -> Pdivfloat m - | Pfloatcomp comp -> Pfloatcomp comp - | Punboxed_float_comp comp -> Punboxed_float_comp comp + | Pintoffloat bf -> Pintoffloat bf + | Pfloatofint (bf,m) -> Pfloatofint (bf,m) + | Pnegfloat (bf,m) -> Pnegfloat (bf,m) + | Pabsfloat (bf,m) -> Pabsfloat (bf,m) + | Paddfloat (bf,m) -> Paddfloat (bf,m) + | Psubfloat (bf,m) -> Psubfloat (bf,m) + | Pmulfloat (bf,m) -> Pmulfloat (bf,m) + | Pdivfloat (bf,m) -> Pdivfloat (bf,m) + | Pfloatcomp (bf,comp) -> Pfloatcomp (bf,comp) + | Punboxed_float_comp (bf,comp) -> Punboxed_float_comp (bf,comp) | Pstringlength -> Pstringlength | Pstringrefu -> Pstringrefu | Pstringrefs -> Pstringrefs @@ -178,8 +178,8 @@ let convert (prim : Lambda.primitive) : Clambda_primitives.primitive = ~native_name:"caml_obj_dup" ~native_repr_args:[P.Prim_global, P.Same_as_ocaml_repr Jkind.Sort.Value] ~native_repr_res:(P.Prim_global, P.Same_as_ocaml_repr Jkind.Sort.Value)) - | Punbox_float -> Punbox_float - | Pbox_float m -> Pbox_float m + | Punbox_float bf -> Punbox_float bf + | Pbox_float (bf,m) -> Pbox_float (bf,m) | Punbox_int bi -> Punbox_int bi | Pbox_int (bi, m) -> Pbox_int (bi, m) | Pget_header m -> Pget_header m diff --git a/ocaml/middle_end/flambda/closure_offsets.ml b/ocaml/middle_end/flambda/closure_offsets.ml index f2f67611789..a481149e8aa 100644 --- a/ocaml/middle_end/flambda/closure_offsets.ml +++ b/ocaml/middle_end/flambda/closure_offsets.ml @@ -77,7 +77,7 @@ let add_closure_offsets Misc.fatal_error "[Pbottom] should have been eliminated as dead code \ and not stored in a closure." - | Punboxed_float -> true + | Punboxed_float Pfloat64 -> true | Punboxed_int _ -> true | Punboxed_vector _ -> true | Pvalue Pintval -> true diff --git a/ocaml/middle_end/flambda/flambda_to_clambda.ml b/ocaml/middle_end/flambda/flambda_to_clambda.ml index 39e02a4bcb1..48fae4c6c46 100644 --- a/ocaml/middle_end/flambda/flambda_to_clambda.ml +++ b/ocaml/middle_end/flambda/flambda_to_clambda.ml @@ -710,7 +710,7 @@ and to_clambda_set_of_closures t env Misc.fatal_error "[Pbottom] should have been eliminated as dead code \ and not stored in a closure." - | Punboxed_float -> true + | Punboxed_float Pfloat64 -> true | Punboxed_int _ -> true | Punboxed_vector _ -> true | Pvalue Pintval -> true diff --git a/ocaml/middle_end/flambda/inline_and_simplify.ml b/ocaml/middle_end/flambda/inline_and_simplify.ml index d9fc0bc9ef0..dc3fd71bd6b 100644 --- a/ocaml/middle_end/flambda/inline_and_simplify.ml +++ b/ocaml/middle_end/flambda/inline_and_simplify.ml @@ -1118,7 +1118,7 @@ and simplify_named env r (tree : Flambda.named) : Flambda.named * R.t = Misc.fatal_errorf "Assignment of a float to a specialised \ non-float array: %a" Flambda.print_named tree - | Punboxedfloatarray_set | Punboxedintarray_set _ -> + | Punboxedfloatarray_set Pfloat64 | Punboxedintarray_set _ -> Misc.fatal_errorf "Unboxed arrays not supported" in match A.descr block_approx, A.descr value_approx with diff --git a/ocaml/middle_end/flambda/simple_value_approx.ml b/ocaml/middle_end/flambda/simple_value_approx.ml index 45b6e039917..70c2efa13db 100644 --- a/ocaml/middle_end/flambda/simple_value_approx.ml +++ b/ocaml/middle_end/flambda/simple_value_approx.ml @@ -253,7 +253,7 @@ let replace_description t descr = { t with descr } let augment_with_kind t (kind:Lambda.value_kind) = match kind with | Pgenval -> t - | Pfloatval -> + | Pboxedfloatval Pfloat64 -> begin match t.descr with | Value_float _ -> t @@ -278,7 +278,7 @@ let augment_with_kind t (kind:Lambda.value_kind) = let augment_kind_with_approx t (kind:Lambda.value_kind) : Lambda.value_kind = match t.descr with - | Value_float _ -> Pfloatval + | Value_float _ -> Pboxedfloatval Pfloat64 | Value_int _ -> Pintval | Value_boxed_int (Int32, _) -> Pboxedintval Pint32 | Value_boxed_int (Int64, _) -> Pboxedintval Pint64 @@ -375,7 +375,7 @@ let value_mutable_float_array ~size = let value_immutable_float_array (contents:t array) = let size = Array.length contents in let contents = - Array.map (fun t -> augment_with_kind t Pfloatval) contents + Array.map (fun t -> augment_with_kind t (Pboxedfloatval Pfloat64)) contents in approx (Value_float_array { contents = Contents contents; size; } ) diff --git a/ocaml/middle_end/flambda/simplify_primitives.ml b/ocaml/middle_end/flambda/simplify_primitives.ml index 31e711d08a1..d6d3e973e24 100644 --- a/ocaml/middle_end/flambda/simplify_primitives.ml +++ b/ocaml/middle_end/flambda/simplify_primitives.ml @@ -174,7 +174,8 @@ let primitive (p : Clambda_primitives.primitive) (args, approxs) | Pbswap16 -> S.const_int_expr expr (S.swap16 x) | Pisint -> S.const_bool_expr expr true | Poffsetint y -> S.const_int_expr expr (x + y) - | Pfloatofint _ when fpc -> S.const_float_expr expr (float_of_int x) + | Pfloatofint (Pfloat64, _) when fpc -> + S.const_float_expr expr (float_of_int x) | Pbintofint (Pnativeint,_) -> S.const_boxed_int_expr expr Nativeint (Nativeint.of_int x) | Pbintofint (Pint32,_) -> S.const_boxed_int_expr expr Int32 (Int32.of_int x) @@ -208,19 +209,19 @@ let primitive (p : Clambda_primitives.primitive) (args, approxs) end | [Value_float (Some x)] when fpc -> begin match p with - | Pintoffloat -> S.const_int_expr expr (int_of_float x) - | Pnegfloat _ -> S.const_float_expr expr (-. x) - | Pabsfloat _ -> S.const_float_expr expr (abs_float x) + | Pintoffloat Pfloat64 -> S.const_int_expr expr (int_of_float x) + | Pnegfloat (Pfloat64, _) -> S.const_float_expr expr (-. x) + | Pabsfloat (Pfloat64, _) -> S.const_float_expr expr (abs_float x) | _ -> expr, A.value_unknown Other, C.Benefit.zero end | [Value_float (Some n1); Value_float (Some n2)] when fpc -> begin match p with - | Paddfloat _ -> S.const_float_expr expr (n1 +. n2) - | Psubfloat _ -> S.const_float_expr expr (n1 -. n2) - | Pmulfloat _ -> S.const_float_expr expr (n1 *. n2) - | Pdivfloat _ -> S.const_float_expr expr (n1 /. n2) - | Pfloatcomp c -> S.const_float_comparison_expr expr c n1 n2 - | Pcompare_floats -> S.const_int_expr expr (Float.compare n1 n2) + | Paddfloat (Pfloat64, _) -> S.const_float_expr expr (n1 +. n2) + | Psubfloat (Pfloat64, _) -> S.const_float_expr expr (n1 -. n2) + | Pmulfloat (Pfloat64, _) -> S.const_float_expr expr (n1 *. n2) + | Pdivfloat (Pfloat64, _) -> S.const_float_expr expr (n1 /. n2) + | Pfloatcomp (Pfloat64, c) -> S.const_float_comparison_expr expr c n1 n2 + | Pcompare_floats Pfloat64 -> S.const_int_expr expr (Float.compare n1 n2) | _ -> expr, A.value_unknown Other, C.Benefit.zero end | [A.Value_boxed_int(A.Nativeint, n)] -> diff --git a/ocaml/middle_end/internal_variable_names.ml b/ocaml/middle_end/internal_variable_names.ml index fee8351c97c..87447e4de4b 100644 --- a/ocaml/middle_end/internal_variable_names.ml +++ b/ocaml/middle_end/internal_variable_names.ml @@ -410,20 +410,20 @@ let of_primitive : Lambda.primitive -> string = function | Pasrint -> pasrint | Pintcomp _ -> pintcomp | Pcompare_ints -> pcompare_ints - | Pcompare_floats -> pcompare_floats + | Pcompare_floats Pfloat64 -> pcompare_floats | Pcompare_bints _ -> pcompare_bints | Poffsetint _ -> poffsetint | Poffsetref _ -> poffsetref - | Pintoffloat -> pintoffloat - | Pfloatofint _ -> pfloatofint - | Pnegfloat _ -> pnegfloat - | Pabsfloat _ -> pabsfloat - | Paddfloat _ -> paddfloat - | Psubfloat _ -> psubfloat - | Pmulfloat _ -> pmulfloat - | Pdivfloat _ -> pdivfloat - | Pfloatcomp _ -> pfloatcomp - | Punboxed_float_comp _ -> punboxed_float_comp + | Pintoffloat Pfloat64 -> pintoffloat + | Pfloatofint (Pfloat64, _) -> pfloatofint + | Pnegfloat (Pfloat64, _) -> pnegfloat + | Pabsfloat (Pfloat64, _) -> pabsfloat + | Paddfloat (Pfloat64, _) -> paddfloat + | Psubfloat (Pfloat64, _) -> psubfloat + | Pmulfloat (Pfloat64, _) -> pmulfloat + | Pdivfloat (Pfloat64, _) -> pdivfloat + | Pfloatcomp (Pfloat64, _) -> pfloatcomp + | Punboxed_float_comp (Pfloat64, _) -> punboxed_float_comp | Pstringlength -> pstringlength | Pstringrefu -> pstringrefu | Pstringrefs -> pstringrefs @@ -489,8 +489,8 @@ let of_primitive : Lambda.primitive -> string = function | Pprobe_is_enabled _ -> pprobe_is_enabled | Pobj_dup -> pobj_dup | Pobj_magic _ -> pobj_magic - | Punbox_float -> punbox_float - | Pbox_float _ -> pbox_float + | Punbox_float Pfloat64 -> punbox_float + | Pbox_float (Pfloat64, _) -> pbox_float | Punbox_int _ -> punbox_int | Pbox_int _ -> pbox_int | Parray_of_iarray -> parray_of_iarray @@ -546,20 +546,20 @@ let of_primitive_arg : Lambda.primitive -> string = function | Pasrint -> pasrint_arg | Pintcomp _ -> pintcomp_arg | Pcompare_ints -> pcompare_ints_arg - | Pcompare_floats -> pcompare_floats_arg + | Pcompare_floats Pfloat64 -> pcompare_floats_arg | Pcompare_bints _ -> pcompare_bints_arg | Poffsetint _ -> poffsetint_arg | Poffsetref _ -> poffsetref_arg - | Pintoffloat -> pintoffloat_arg - | Pfloatofint _ -> pfloatofint_arg - | Pnegfloat _ -> pnegfloat_arg - | Pabsfloat _ -> pabsfloat_arg - | Paddfloat _ -> paddfloat_arg - | Psubfloat _ -> psubfloat_arg - | Pmulfloat _ -> pmulfloat_arg - | Pdivfloat _ -> pdivfloat_arg - | Pfloatcomp _ -> pfloatcomp_arg - | Punboxed_float_comp _ -> punboxed_float_comp_arg + | Pintoffloat Pfloat64 -> pintoffloat_arg + | Pfloatofint (Pfloat64, _) -> pfloatofint_arg + | Pnegfloat (Pfloat64, _) -> pnegfloat_arg + | Pabsfloat (Pfloat64, _) -> pabsfloat_arg + | Paddfloat (Pfloat64, _) -> paddfloat_arg + | Psubfloat (Pfloat64, _) -> psubfloat_arg + | Pmulfloat (Pfloat64, _) -> pmulfloat_arg + | Pdivfloat (Pfloat64, _) -> pdivfloat_arg + | Pfloatcomp (Pfloat64, _) -> pfloatcomp_arg + | Punboxed_float_comp (Pfloat64, _) -> punboxed_float_comp_arg | Pstringlength -> pstringlength_arg | Pstringrefu -> pstringrefu_arg | Pstringrefs -> pstringrefs_arg @@ -625,8 +625,8 @@ let of_primitive_arg : Lambda.primitive -> string = function | Pprobe_is_enabled _ -> pprobe_is_enabled_arg | Pobj_dup -> pobj_dup_arg | Pobj_magic _ -> pobj_magic_arg - | Punbox_float -> punbox_float_arg - | Pbox_float _ -> pbox_float_arg + | Punbox_float Pfloat64 -> punbox_float_arg + | Pbox_float (Pfloat64, _) -> pbox_float_arg | Punbox_int _ -> punbox_int_arg | Pbox_int _ -> pbox_int_arg | Parray_of_iarray -> parray_of_iarray_arg diff --git a/ocaml/middle_end/printclambda.ml b/ocaml/middle_end/printclambda.ml index 410e7c66974..1444500931d 100644 --- a/ocaml/middle_end/printclambda.ml +++ b/ocaml/middle_end/printclambda.ml @@ -29,12 +29,12 @@ let rec value_kind0 ppf kind = match kind with | Pgenval -> Format.pp_print_string ppf "" | Pintval -> Format.pp_print_string ppf ":int" - | Pfloatval -> Format.pp_print_string ppf ":float" + | Pboxedfloatval Pfloat64 -> Format.pp_print_string ppf ":float" | Parrayval Pgenarray -> Format.pp_print_string ppf ":genarray" | Parrayval Pintarray -> Format.pp_print_string ppf ":intarray" | Parrayval Pfloatarray -> Format.pp_print_string ppf ":floatarray" | Parrayval Paddrarray -> Format.pp_print_string ppf ":addrarray" - | Parrayval Punboxedfloatarray -> Format.pp_print_string ppf ":unboxedfloatarray" + | Parrayval Punboxedfloatarray Pfloat64 -> Format.pp_print_string ppf ":unboxedfloatarray" | Parrayval Punboxedintarray Pint32 -> Format.pp_print_string ppf "unboxedint32array" | Parrayval Punboxedintarray Pint64 -> Format.pp_print_string ppf "unboxedint64array" | Parrayval Punboxedintarray Pnativeint -> Format.pp_print_string ppf "unboxednativeintarray" @@ -62,7 +62,7 @@ let layout (layout : Lambda.layout) = | Pvalue kind -> value_kind kind | Ptop -> ":top" | Pbottom -> ":bottom" - | Punboxed_float -> ":unboxed_float" + | Punboxed_float Pfloat64 -> ":unboxed_float" | Punboxed_int Pint32 -> ":unboxed_int32" | Punboxed_int Pint64 -> ":unboxed_int64" | Punboxed_int Pnativeint -> ":unboxed_nativeint" diff --git a/ocaml/middle_end/printclambda_primitives.ml b/ocaml/middle_end/printclambda_primitives.ml index 0cd07e1faeb..27f25578814 100644 --- a/ocaml/middle_end/printclambda_primitives.ml +++ b/ocaml/middle_end/printclambda_primitives.ml @@ -21,6 +21,9 @@ let boxed_integer_name = function | Lambda.Pint32 -> "int32" | Lambda.Pint64 -> "int64" +let boxed_float_name = function + | Lambda.Pfloat64 -> "float" + let boxed_integer_mark name = function | Lambda.Pnativeint -> Printf.sprintf "Nativeint.%s" name | Lambda.Pint32 -> Printf.sprintf "Int32.%s" name @@ -30,6 +33,18 @@ let alloc_kind = function | Lambda.Alloc_heap -> "" | Lambda.Alloc_local -> "[L]" +let float_comparison = function + | Lambda.CFeq -> "==" + | Lambda.CFneq -> "!=" + | Lambda.CFlt -> "<" + | Lambda.CFnlt -> "!<" + | Lambda.CFle -> "<=" + | Lambda.CFnle -> "!<=" + | Lambda.CFgt -> ">" + | Lambda.CFngt -> "!>" + | Lambda.CFge -> ">=" + | Lambda.CFnge -> "!>=" + let print_boxed_integer name ppf bi m = fprintf ppf "%s%s" (boxed_integer_mark name bi) (alloc_kind m) @@ -42,6 +57,20 @@ let unboxed_integer_mark name bi m = let print_unboxed_integer name ppf bi m = fprintf ppf "%s" (unboxed_integer_mark name bi m);; +let boxed_float_mark name bf m = + match bf with + | Lambda.Pfloat64 -> Printf.sprintf "Float.%s%s" name (alloc_kind m) + +let print_boxed_float name ppf bf m = + fprintf ppf "%s" (boxed_float_mark name bf m);; + +let unboxed_float_mark name bf m = + match bf with + | Lambda.Pfloat64 -> Printf.sprintf "Float_u.%s%s" name (alloc_kind m) + +let print_unboxed_float name ppf bf m = + fprintf ppf "%s" (unboxed_float_mark name bf m);; + let array_kind array_kind = let open Lambda in match array_kind with @@ -49,7 +78,7 @@ let array_kind array_kind = | Paddrarray -> "addr" | Pintarray -> "int" | Pfloatarray -> "float" - | Punboxedfloatarray -> "unboxed_float" + | Punboxedfloatarray Pfloat64 -> "unboxed_float" | Punboxedintarray Pint32 -> "unboxed_int32" | Punboxedintarray Pint64 -> "unboxed_int64" | Punboxedintarray Pnativeint -> "unboxed_nativeint" @@ -65,7 +94,7 @@ let pp_array_ref_kind ppf k = | Paddrarray_ref -> fprintf ppf "addr" | Pintarray_ref -> fprintf ppf "int" | Pfloatarray_ref mode -> fprintf ppf "float%a" pp_mode mode - | Punboxedfloatarray_ref -> fprintf ppf "unboxed_float" + | Punboxedfloatarray_ref Pfloat64 -> fprintf ppf "unboxed_float" | Punboxedintarray_ref Pint32 -> fprintf ppf "unboxed_int32" | Punboxedintarray_ref Pint64 -> fprintf ppf "unboxed_int64" | Punboxedintarray_ref Pnativeint -> fprintf ppf "unboxed_nativeint" @@ -81,7 +110,7 @@ let pp_array_set_kind ppf k = | Paddrarray_set mode -> fprintf ppf "addr%a" pp_mode mode | Pintarray_set -> fprintf ppf "int" | Pfloatarray_set -> fprintf ppf "float" - | Punboxedfloatarray_set -> fprintf ppf "unboxed_float" + | Punboxedfloatarray_set Pfloat64 -> fprintf ppf "unboxed_float" | Punboxedintarray_set Pint32 -> fprintf ppf "unboxed_int32" | Punboxedintarray_set Pint64 -> fprintf ppf "unboxed_int64" | Punboxedintarray_set Pnativeint -> fprintf ppf "unboxed_nativeint" @@ -215,21 +244,23 @@ let primitive ppf (prim:Clambda_primitives.primitive) = | Pasrint -> fprintf ppf "asr" | Pintcomp(cmp) -> Printlambda.integer_comparison ppf cmp | Pcompare_ints -> fprintf ppf "compare_ints" - | Pcompare_floats -> fprintf ppf "compare_floats" + | Pcompare_floats bf -> fprintf ppf "compare_floats %s" (boxed_float_name bf) | Pcompare_bints bi -> fprintf ppf "compare_bints %s" (boxed_integer_name bi) | Poffsetint n -> fprintf ppf "%i+" n | Poffsetref n -> fprintf ppf "+:=%i"n - | Pintoffloat -> fprintf ppf "int_of_float" - | Pfloatofint m -> fprintf ppf "float_of_int%s" (alloc_kind m) - | Pnegfloat m -> fprintf ppf "~.%s" (alloc_kind m) - | Pabsfloat m -> fprintf ppf "abs.%s" (alloc_kind m) - | Paddfloat m -> fprintf ppf "+.%s" (alloc_kind m) - | Psubfloat m -> fprintf ppf "-.%s" (alloc_kind m) - | Pmulfloat m -> fprintf ppf "*.%s" (alloc_kind m) - | Pdivfloat m -> fprintf ppf "/.%s" (alloc_kind m) - | Pfloatcomp(cmp) -> Printlambda.float_comparison ppf cmp - | Punboxed_float_comp(cmp) -> - fprintf ppf "%a (unboxed)" Printlambda.float_comparison cmp + | Pintoffloat bf -> fprintf ppf "int_of_%s" (boxed_float_name bf) + | Pfloatofint (bf,m) -> + fprintf ppf "%s_of_int%s" (boxed_float_name bf) (alloc_kind m) + | Pabsfloat (bf,m) -> print_boxed_float "abs" ppf bf m + | Pnegfloat (bf,m) -> print_boxed_float "neg" ppf bf m + | Paddfloat (bf,m) -> print_boxed_float "add" ppf bf m + | Psubfloat (bf,m) -> print_boxed_float "sub" ppf bf m + | Pmulfloat (bf,m) -> print_boxed_float "mul" ppf bf m + | Pdivfloat (bf,m) -> print_boxed_float "div" ppf bf m + | Pfloatcomp (bf,cmp) -> + print_boxed_float (float_comparison cmp) ppf bf alloc_heap + | Punboxed_float_comp (bf,cmp) -> + print_unboxed_float (float_comparison cmp) ppf bf alloc_heap | Pstringlength -> fprintf ppf "string.length" | Pstringrefu -> fprintf ppf "string.unsafe_get" | Pstringrefs -> fprintf ppf "string.get" @@ -324,8 +355,9 @@ let primitive ppf (prim:Clambda_primitives.primitive) = | Patomic_fetch_add -> fprintf ppf "atomic_fetch_add" | Popaque -> fprintf ppf "opaque" | Pprobe_is_enabled {name} -> fprintf ppf "probe_is_enabled[%s]" name - | Pbox_float m -> fprintf ppf "box_float.%s" (alloc_kind m) - | Punbox_float -> fprintf ppf "unbox_float" + | Pbox_float (bf,m) -> + fprintf ppf "box_%s.%s" (boxed_float_name bf) (alloc_kind m) + | Punbox_float bf -> fprintf ppf "unbox_%s" (boxed_float_name bf) | Pbox_int (bi, m) -> fprintf ppf "box_%s.%s" (boxed_integer_name bi) (alloc_kind m) | Punbox_int bi -> fprintf ppf "unbox_%s" (boxed_integer_name bi) diff --git a/ocaml/middle_end/semantics_of_primitives.ml b/ocaml/middle_end/semantics_of_primitives.ml index 937f7a5ed02..864ecfc15f6 100644 --- a/ocaml/middle_end/semantics_of_primitives.ml +++ b/ocaml/middle_end/semantics_of_primitives.ml @@ -60,7 +60,7 @@ let for_primitive (prim : Clambda_primitives.primitive) = | Pasrint | Pintcomp _ | Punboxed_int_comp _ -> No_effects, No_coeffects - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ -> No_effects, No_coeffects | Pdivbint { is_safe = Unsafe } | Pmodbint { is_safe = Unsafe } @@ -74,18 +74,18 @@ let for_primitive (prim : Clambda_primitives.primitive) = Arbitrary_effects, No_coeffects | Poffsetint _ -> No_effects, No_coeffects | Poffsetref _ -> Arbitrary_effects, Has_coeffects - | Punbox_float | Punbox_int _ - | Pintoffloat - | Pfloatcomp _ - | Punboxed_float_comp _ -> No_effects, No_coeffects - | Pbox_float m | Pbox_int (_, m) - | Pfloatofint m - | Pnegfloat m - | Pabsfloat m - | Paddfloat m - | Psubfloat m - | Pmulfloat m - | Pdivfloat m -> No_effects, coeffects_of m + | Punbox_float Pfloat64 | Punbox_int _ + | Pintoffloat Pfloat64 + | Pfloatcomp (Pfloat64, _) + | Punboxed_float_comp (Pfloat64, _) -> No_effects, No_coeffects + | Pbox_float (Pfloat64, m) | Pbox_int (_, m) + | Pfloatofint (Pfloat64, m) + | Pnegfloat (Pfloat64, m) + | Pabsfloat (Pfloat64, m) + | Paddfloat (Pfloat64, m) + | Psubfloat (Pfloat64, m) + | Pmulfloat (Pfloat64, m) + | Pdivfloat (Pfloat64, m) -> No_effects, coeffects_of m | Pstringlength | Pbyteslength | Parraylength _ -> No_effects, No_coeffects | Pisint @@ -165,13 +165,13 @@ type return_type = let return_type_of_primitive (prim:Clambda_primitives.primitive) = match prim with - | Pfloatofint _ - | Pnegfloat _ - | Pabsfloat _ - | Paddfloat _ - | Psubfloat _ - | Pmulfloat _ - | Pdivfloat _ + | Pfloatofint (Pfloat64, _) + | Pnegfloat (Pfloat64, _) + | Pabsfloat (Pfloat64, _) + | Paddfloat (Pfloat64, _) + | Psubfloat (Pfloat64, _) + | Pmulfloat (Pfloat64, _) + | Pdivfloat (Pfloat64, _) | Pfloatfield _ | Parrayrefu (Pfloatarray_ref _) | Parrayrefs (Pfloatarray_ref _) -> @@ -211,22 +211,22 @@ let may_locally_allocate (prim:Clambda_primitives.primitive) : bool = | Plsrint | Pasrint | Pintcomp _ -> false - | Pcompare_ints | Pcompare_floats | Pcompare_bints _ + | Pcompare_ints | Pcompare_floats Pfloat64 | Pcompare_bints _ -> false | Poffsetint _ -> false | Poffsetref _ -> false - | Punbox_float | Punbox_int _ - | Pintoffloat - | Pfloatcomp _ - | Punboxed_float_comp _ -> false - | Pbox_float m | Pbox_int (_, m) - | Pfloatofint m - | Pnegfloat m - | Pabsfloat m - | Paddfloat m - | Psubfloat m - | Pmulfloat m - | Pdivfloat m -> is_local_alloc m + | Punbox_float Pfloat64 | Punbox_int _ + | Pintoffloat Pfloat64 + | Pfloatcomp (Pfloat64, _) + | Punboxed_float_comp (Pfloat64, _) -> false + | Pbox_float (Pfloat64, m) | Pbox_int (_, m) + | Pfloatofint (Pfloat64, m) + | Pnegfloat (Pfloat64, m) + | Pabsfloat (Pfloat64, m) + | Paddfloat (Pfloat64, m) + | Psubfloat (Pfloat64, m) + | Pmulfloat (Pfloat64, m) + | Pdivfloat (Pfloat64, m) -> is_local_alloc m | Pstringlength | Pbyteslength | Parraylength _ -> false | Pisint diff --git a/ocaml/testsuite/tests/translprim/comparison_table.heap.reference b/ocaml/testsuite/tests/translprim/comparison_table.heap.reference index 29c1b3a8cb3..e3827b05d06 100644 --- a/ocaml/testsuite/tests/translprim/comparison_table.heap.reference +++ b/ocaml/testsuite/tests/translprim/comparison_table.heap.reference @@ -7,7 +7,8 @@ intlike_cmp = (function {nlocal = 0} x[int] y[int] : int (compare_ints x y)) float_cmp = - (function {nlocal = 0} x[float] y[float] : int (compare_floats x y)) + (function {nlocal = 0} x[float] y[float] : int + (compare_floats float x y)) string_cmp = (function {nlocal = 0} x y : int (caml_string_compare x y)) int32_cmp = (function {nlocal = 0} x[int32] y[int32] : int @@ -22,7 +23,8 @@ int_eq = (function {nlocal = 0} x[int] y[int] : int (== x y)) bool_eq = (function {nlocal = 0} x[int] y[int] : int (== x y)) intlike_eq = (function {nlocal = 0} x[int] y[int] : int (== x y)) - float_eq = (function {nlocal = 0} x[float] y[float] : int (==. x y)) + float_eq = + (function {nlocal = 0} x[float] y[float] : int (Float.== x y)) string_eq = (function {nlocal = 0} x y : int (caml_string_equal x y)) int32_eq = (function {nlocal = 0} x[int32] y[int32] : int (Int32.== x y)) @@ -35,7 +37,8 @@ int_ne = (function {nlocal = 0} x[int] y[int] : int (!= x y)) bool_ne = (function {nlocal = 0} x[int] y[int] : int (!= x y)) intlike_ne = (function {nlocal = 0} x[int] y[int] : int (!= x y)) - float_ne = (function {nlocal = 0} x[float] y[float] : int (!=. x y)) + float_ne = + (function {nlocal = 0} x[float] y[float] : int (Float.!= x y)) string_ne = (function {nlocal = 0} x y : int (caml_string_notequal x y)) int32_ne = (function {nlocal = 0} x[int32] y[int32] : int (Int32.!= x y)) @@ -48,7 +51,7 @@ int_lt = (function {nlocal = 0} x[int] y[int] : int (< x y)) bool_lt = (function {nlocal = 0} x[int] y[int] : int (< x y)) intlike_lt = (function {nlocal = 0} x[int] y[int] : int (< x y)) - float_lt = (function {nlocal = 0} x[float] y[float] : int (<. x y)) + float_lt = (function {nlocal = 0} x[float] y[float] : int (Float.< x y)) string_lt = (function {nlocal = 0} x y : int (caml_string_lessthan x y)) int32_lt = (function {nlocal = 0} x[int32] y[int32] : int (Int32.< x y)) int64_lt = (function {nlocal = 0} x[int64] y[int64] : int (Int64.< x y)) @@ -59,7 +62,7 @@ int_gt = (function {nlocal = 0} x[int] y[int] : int (> x y)) bool_gt = (function {nlocal = 0} x[int] y[int] : int (> x y)) intlike_gt = (function {nlocal = 0} x[int] y[int] : int (> x y)) - float_gt = (function {nlocal = 0} x[float] y[float] : int (>. x y)) + float_gt = (function {nlocal = 0} x[float] y[float] : int (Float.> x y)) string_gt = (function {nlocal = 0} x y : int (caml_string_greaterthan x y)) int32_gt = (function {nlocal = 0} x[int32] y[int32] : int (Int32.> x y)) @@ -71,7 +74,8 @@ int_le = (function {nlocal = 0} x[int] y[int] : int (<= x y)) bool_le = (function {nlocal = 0} x[int] y[int] : int (<= x y)) intlike_le = (function {nlocal = 0} x[int] y[int] : int (<= x y)) - float_le = (function {nlocal = 0} x[float] y[float] : int (<=. x y)) + float_le = + (function {nlocal = 0} x[float] y[float] : int (Float.<= x y)) string_le = (function {nlocal = 0} x y : int (caml_string_lessequal x y)) int32_le = @@ -85,7 +89,8 @@ int_ge = (function {nlocal = 0} x[int] y[int] : int (>= x y)) bool_ge = (function {nlocal = 0} x[int] y[int] : int (>= x y)) intlike_ge = (function {nlocal = 0} x[int] y[int] : int (>= x y)) - float_ge = (function {nlocal = 0} x[float] y[float] : int (>=. x y)) + float_ge = + (function {nlocal = 0} x[float] y[float] : int (Float.>= x y)) string_ge = (function {nlocal = 0} x y : int (caml_string_greaterequal x y)) int32_ge = @@ -109,7 +114,11 @@ ignore assert all zero_alloc : int (compare_ints prim prim)) eta_float_cmp = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (compare_floats float prim prim)) +======= ignore assert all zero_alloc : int (compare_floats prim prim)) +>>>>>>> main eta_string_cmp = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_compare prim prim)) @@ -137,7 +146,11 @@ ignore assert all zero_alloc : int (== prim prim)) eta_float_eq = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (Float.== prim prim)) +======= ignore assert all zero_alloc : int (==. prim prim)) +>>>>>>> main eta_string_eq = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_equal prim prim)) @@ -164,7 +177,11 @@ ignore assert all zero_alloc : int (!= prim prim)) eta_float_ne = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (Float.!= prim prim)) +======= ignore assert all zero_alloc : int (!=. prim prim)) +>>>>>>> main eta_string_ne = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_notequal prim prim)) @@ -191,7 +208,11 @@ ignore assert all zero_alloc : int (< prim prim)) eta_float_lt = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (Float.< prim prim)) +======= ignore assert all zero_alloc : int (<. prim prim)) +>>>>>>> main eta_string_lt = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_lessthan prim prim)) @@ -218,7 +239,11 @@ ignore assert all zero_alloc : int (> prim prim)) eta_float_gt = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (Float.> prim prim)) +======= ignore assert all zero_alloc : int (>. prim prim)) +>>>>>>> main eta_string_gt = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_greaterthan prim prim)) @@ -245,7 +270,11 @@ ignore assert all zero_alloc : int (<= prim prim)) eta_float_le = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (Float.<= prim prim)) +======= ignore assert all zero_alloc : int (<=. prim prim)) +>>>>>>> main eta_string_le = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_lessequal prim prim)) @@ -272,7 +301,11 @@ ignore assert all zero_alloc : int (>= prim prim)) eta_float_ge = (function {nlocal = 0} prim[float] prim[float] stub +<<<<<<< HEAD + ignore assert all zero_alloc : int (Float.>= prim prim)) +======= ignore assert all zero_alloc : int (>=. prim prim)) +>>>>>>> main eta_string_ge = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_greaterequal prim prim)) diff --git a/ocaml/testsuite/tests/translprim/comparison_table.stack.reference b/ocaml/testsuite/tests/translprim/comparison_table.stack.reference index c4a57b9796b..30ebad6ac6f 100644 --- a/ocaml/testsuite/tests/translprim/comparison_table.stack.reference +++ b/ocaml/testsuite/tests/translprim/comparison_table.stack.reference @@ -7,7 +7,8 @@ intlike_cmp = (function {nlocal = 0} x[int] y[int] : int (compare_ints x y)) float_cmp = - (function {nlocal = 0} x[float] y[float] : int (compare_floats x y)) + (function {nlocal = 0} x[float] y[float] : int + (compare_floats float x y)) string_cmp = (function {nlocal = 0} x y : int (caml_string_compare x y)) int32_cmp = (function {nlocal = 0} x[int32] y[int32] : int @@ -22,7 +23,8 @@ int_eq = (function {nlocal = 0} x[int] y[int] : int (== x y)) bool_eq = (function {nlocal = 0} x[int] y[int] : int (== x y)) intlike_eq = (function {nlocal = 0} x[int] y[int] : int (== x y)) - float_eq = (function {nlocal = 0} x[float] y[float] : int (==. x y)) + float_eq = + (function {nlocal = 0} x[float] y[float] : int (Float.== x y)) string_eq = (function {nlocal = 0} x y : int (caml_string_equal x y)) int32_eq = (function {nlocal = 0} x[int32] y[int32] : int (Int32.== x y)) @@ -35,7 +37,8 @@ int_ne = (function {nlocal = 0} x[int] y[int] : int (!= x y)) bool_ne = (function {nlocal = 0} x[int] y[int] : int (!= x y)) intlike_ne = (function {nlocal = 0} x[int] y[int] : int (!= x y)) - float_ne = (function {nlocal = 0} x[float] y[float] : int (!=. x y)) + float_ne = + (function {nlocal = 0} x[float] y[float] : int (Float.!= x y)) string_ne = (function {nlocal = 0} x y : int (caml_string_notequal x y)) int32_ne = (function {nlocal = 0} x[int32] y[int32] : int (Int32.!= x y)) @@ -48,7 +51,7 @@ int_lt = (function {nlocal = 0} x[int] y[int] : int (< x y)) bool_lt = (function {nlocal = 0} x[int] y[int] : int (< x y)) intlike_lt = (function {nlocal = 0} x[int] y[int] : int (< x y)) - float_lt = (function {nlocal = 0} x[float] y[float] : int (<. x y)) + float_lt = (function {nlocal = 0} x[float] y[float] : int (Float.< x y)) string_lt = (function {nlocal = 0} x y : int (caml_string_lessthan x y)) int32_lt = (function {nlocal = 0} x[int32] y[int32] : int (Int32.< x y)) int64_lt = (function {nlocal = 0} x[int64] y[int64] : int (Int64.< x y)) @@ -59,7 +62,7 @@ int_gt = (function {nlocal = 0} x[int] y[int] : int (> x y)) bool_gt = (function {nlocal = 0} x[int] y[int] : int (> x y)) intlike_gt = (function {nlocal = 0} x[int] y[int] : int (> x y)) - float_gt = (function {nlocal = 0} x[float] y[float] : int (>. x y)) + float_gt = (function {nlocal = 0} x[float] y[float] : int (Float.> x y)) string_gt = (function {nlocal = 0} x y : int (caml_string_greaterthan x y)) int32_gt = (function {nlocal = 0} x[int32] y[int32] : int (Int32.> x y)) @@ -71,7 +74,8 @@ int_le = (function {nlocal = 0} x[int] y[int] : int (<= x y)) bool_le = (function {nlocal = 0} x[int] y[int] : int (<= x y)) intlike_le = (function {nlocal = 0} x[int] y[int] : int (<= x y)) - float_le = (function {nlocal = 0} x[float] y[float] : int (<=. x y)) + float_le = + (function {nlocal = 0} x[float] y[float] : int (Float.<= x y)) string_le = (function {nlocal = 0} x y : int (caml_string_lessequal x y)) int32_le = @@ -85,7 +89,8 @@ int_ge = (function {nlocal = 0} x[int] y[int] : int (>= x y)) bool_ge = (function {nlocal = 0} x[int] y[int] : int (>= x y)) intlike_ge = (function {nlocal = 0} x[int] y[int] : int (>= x y)) - float_ge = (function {nlocal = 0} x[float] y[float] : int (>=. x y)) + float_ge = + (function {nlocal = 0} x[float] y[float] : int (Float.>= x y)) string_ge = (function {nlocal = 0} x y : int (caml_string_greaterequal x y)) int32_ge = @@ -109,7 +114,7 @@ ignore assert all zero_alloc : int (compare_ints prim prim)) eta_float_cmp = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (compare_floats prim prim)) + ignore assert all zero_alloc : int (compare_floats float prim prim)) eta_string_cmp = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_compare prim prim)) @@ -137,7 +142,7 @@ ignore assert all zero_alloc : int (== prim prim)) eta_float_eq = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (==. prim prim)) + ignore assert all zero_alloc : int (Float.== prim prim)) eta_string_eq = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_equal prim prim)) @@ -164,7 +169,7 @@ ignore assert all zero_alloc : int (!= prim prim)) eta_float_ne = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (!=. prim prim)) + ignore assert all zero_alloc : int (Float.!= prim prim)) eta_string_ne = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_notequal prim prim)) @@ -191,7 +196,7 @@ ignore assert all zero_alloc : int (< prim prim)) eta_float_lt = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (<. prim prim)) + ignore assert all zero_alloc : int (Float.< prim prim)) eta_string_lt = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_lessthan prim prim)) @@ -218,7 +223,7 @@ ignore assert all zero_alloc : int (> prim prim)) eta_float_gt = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (>. prim prim)) + ignore assert all zero_alloc : int (Float.> prim prim)) eta_string_gt = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_greaterthan prim prim)) @@ -245,7 +250,7 @@ ignore assert all zero_alloc : int (<= prim prim)) eta_float_le = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (<=. prim prim)) + ignore assert all zero_alloc : int (Float.<= prim prim)) eta_string_le = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_lessequal prim prim)) @@ -272,7 +277,7 @@ ignore assert all zero_alloc : int (>= prim prim)) eta_float_ge = (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (>=. prim prim)) + ignore assert all zero_alloc : int (Float.>= prim prim)) eta_string_ge = (function {nlocal = 0} prim prim stub ignore assert all zero_alloc : int (caml_string_greaterequal prim prim)) diff --git a/ocaml/testsuite/tests/translprim/module_coercion.compilers.flat.reference b/ocaml/testsuite/tests/translprim/module_coercion.compilers.flat.reference index cc3d191f07d..4ff742cba21 100644 --- a/ocaml/testsuite/tests/translprim/module_coercion.compilers.flat.reference +++ b/ocaml/testsuite/tests/translprim/module_coercion.compilers.flat.reference @@ -43,19 +43,20 @@ ignore assert all zero_alloc : int (array.unsafe_set[float] prim prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (compare_floats prim prim)) + ignore assert all zero_alloc : int + (compare_floats float prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (==. prim prim)) + ignore assert all zero_alloc : int (Float.== prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (!=. prim prim)) + ignore assert all zero_alloc : int (Float.!= prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (<. prim prim)) + ignore assert all zero_alloc : int (Float.< prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (>. prim prim)) + ignore assert all zero_alloc : int (Float.> prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (<=. prim prim)) + ignore assert all zero_alloc : int (Float.<= prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - ignore assert all zero_alloc : int (>=. prim prim))) + ignore assert all zero_alloc : int (Float.>= prim prim))) (makeblock 0 (function {nlocal = 0} prim[addrarray] stub ignore assert all zero_alloc : int (array.length[addr] prim)) diff --git a/ocaml/testsuite/tests/translprim/module_coercion.compilers.no-flat.reference b/ocaml/testsuite/tests/translprim/module_coercion.compilers.no-flat.reference index d63bd7da813..0014464a379 100644 --- a/ocaml/testsuite/tests/translprim/module_coercion.compilers.no-flat.reference +++ b/ocaml/testsuite/tests/translprim/module_coercion.compilers.no-flat.reference @@ -31,13 +31,20 @@ (function {nlocal = 0} prim[addrarray] prim[int] prim[float] stub (array.unsafe_set[addr] prim prim prim)) (function {nlocal = 0} prim[float] prim[float] stub - (compare_floats prim prim)) - (function {nlocal = 0} prim[float] prim[float] stub (==. prim prim)) - (function {nlocal = 0} prim[float] prim[float] stub (!=. prim prim)) - (function {nlocal = 0} prim[float] prim[float] stub (<. prim prim)) - (function {nlocal = 0} prim[float] prim[float] stub (>. prim prim)) - (function {nlocal = 0} prim[float] prim[float] stub (<=. prim prim)) - (function {nlocal = 0} prim[float] prim[float] stub (>=. prim prim))) + ignore assert all zero_alloc : int + (compare_floats float prim prim)) + (function {nlocal = 0} prim[float] prim[float] stub + ignore assert all zero_alloc : int (Float.== prim prim)) + (function {nlocal = 0} prim[float] prim[float] stub + ignore assert all zero_alloc : int (Float.!= prim prim)) + (function {nlocal = 0} prim[float] prim[float] stub + ignore assert all zero_alloc : int (Float.< prim prim)) + (function {nlocal = 0} prim[float] prim[float] stub + ignore assert all zero_alloc : int (Float.> prim prim)) + (function {nlocal = 0} prim[float] prim[float] stub + ignore assert all zero_alloc : int (Float.<= prim prim)) + (function {nlocal = 0} prim[float] prim[float] stub + ignore assert all zero_alloc : int (Float.>= prim prim))) (makeblock 0 (function {nlocal = 0} prim[addrarray] stub (array.length[addr] prim)) diff --git a/ocaml/typing/primitive.ml b/ocaml/typing/primitive.ml index 42baefb6228..017c0edf45f 100644 --- a/ocaml/typing/primitive.ml +++ b/ocaml/typing/primitive.ml @@ -22,11 +22,13 @@ type boxed_integer = Pnativeint | Pint32 | Pint64 type vec128_type = Int8x16 | Int16x8 | Int32x4 | Int64x2 | Float32x4 | Float64x2 +type boxed_float = Pfloat64 + type boxed_vector = Pvec128 of vec128_type type native_repr = | Same_as_ocaml_repr of Jkind.Sort.const - | Unboxed_float + | Unboxed_float of boxed_float | Unboxed_vector of boxed_vector | Unboxed_integer of boxed_integer | Untagged_int @@ -66,7 +68,7 @@ type value_check = Bad_attribute | Bad_layout | Ok_value let check_ocaml_value = function | _, Same_as_ocaml_repr Value -> Ok_value | _, Same_as_ocaml_repr _ -> Bad_layout - | _, Unboxed_float + | _, Unboxed_float Pfloat64 | _, Unboxed_vector _ | _, Unboxed_integer _ | _, Untagged_int -> Bad_attribute @@ -74,14 +76,14 @@ let check_ocaml_value = function let is_unboxed = function | _, Same_as_ocaml_repr _ | _, Untagged_int -> false - | _, Unboxed_float + | _, Unboxed_float Pfloat64 | _, Unboxed_vector _ | _, Unboxed_integer _ -> true let is_untagged = function | _, Untagged_int -> true | _, Same_as_ocaml_repr _ - | _, Unboxed_float + | _, Unboxed_float Pfloat64 | _, Unboxed_vector _ | _, Unboxed_integer _ -> false @@ -204,8 +206,8 @@ let parse_declaration valdecl ~native_repr_args ~native_repr_res = Inconsistent_noalloc_attributes_for_effects)); let native_repr_args, native_repr_res = if old_style_float then - (make_native_repr_args arity (Prim_global, Unboxed_float), - (Prim_global, Unboxed_float)) + (make_native_repr_args arity (Prim_global, Unboxed_float Pfloat64), + (Prim_global, Unboxed_float Pfloat64)) else (native_repr_args, native_repr_res) in @@ -284,7 +286,7 @@ let print p osig_val_decl = @ (match repr with | Same_as_ocaml_repr _ -> [] - | Unboxed_float + | Unboxed_float Pfloat64 | Unboxed_vector _ | Unboxed_integer _ -> if all_unboxed then [] else [oattr_unboxed] | Untagged_int -> if all_untagged then [] else [oattr_untagged]) @@ -323,6 +325,10 @@ let equal_boxed_integer bi1 bi2 = | (Pnativeint | Pint32 | Pint64), _ -> false +let equal_boxed_float f1 f2 = + match f1, f2 with + | Pfloat64, Pfloat64 -> true + let equal_boxed_vector_size bi1 bi2 = (* For the purposes of layouts/native representations, all 128-bit vector types are equal. *) @@ -333,19 +339,24 @@ let equal_native_repr nr1 nr2 = match nr1, nr2 with | Same_as_ocaml_repr s1, Same_as_ocaml_repr s2 -> Jkind.Sort.equal_const s1 s2 | Same_as_ocaml_repr _, - (Unboxed_float | Unboxed_integer _ | Untagged_int | Unboxed_vector _) -> false - | Unboxed_float, Unboxed_float -> true - | Unboxed_float, - (Same_as_ocaml_repr _ | Unboxed_integer _ | Untagged_int | Unboxed_vector _) -> false + (Unboxed_float Pfloat64 | Unboxed_integer _ | Untagged_int | + Unboxed_vector _) -> false + | Unboxed_float f1, Unboxed_float f2 -> equal_boxed_float f1 f2 + | Unboxed_float Pfloat64, + (Same_as_ocaml_repr _ | Unboxed_integer _ | Untagged_int | + Unboxed_vector _) -> false | Unboxed_vector vi1, Unboxed_vector vi2 -> equal_boxed_vector_size vi1 vi2 | Unboxed_vector _, - (Same_as_ocaml_repr _ | Unboxed_float | Untagged_int | Unboxed_integer _) -> false + (Same_as_ocaml_repr _ | Unboxed_float Pfloat64 | Untagged_int | + Unboxed_integer _) -> false | Unboxed_integer bi1, Unboxed_integer bi2 -> equal_boxed_integer bi1 bi2 | Unboxed_integer _, - (Same_as_ocaml_repr _ | Unboxed_float | Untagged_int | Unboxed_vector _) -> false + (Same_as_ocaml_repr _ | Unboxed_float Pfloat64 | Untagged_int | + Unboxed_vector _) -> false | Untagged_int, Untagged_int -> true | Untagged_int, - (Same_as_ocaml_repr _ | Unboxed_float | Unboxed_integer _ | Unboxed_vector _) -> false + (Same_as_ocaml_repr _ | Unboxed_float Pfloat64 | Unboxed_integer _ | + Unboxed_vector _) -> false let equal_effects ef1 ef2 = match ef1, ef2 with @@ -369,7 +380,9 @@ let native_name_is_external p = let sort_of_native_repr = function | Same_as_ocaml_repr s -> s - | (Unboxed_float | Unboxed_integer _ | Untagged_int | Unboxed_vector _) -> Jkind.Sort.Value + | (Unboxed_float Pfloat64 | Unboxed_integer _ | Untagged_int | + Unboxed_vector _) -> + Jkind.Sort.Value let report_error ppf err = match err with diff --git a/ocaml/typing/primitive.mli b/ocaml/typing/primitive.mli index cf801a2ac4e..1a32ec1d114 100644 --- a/ocaml/typing/primitive.mli +++ b/ocaml/typing/primitive.mli @@ -17,6 +17,8 @@ type boxed_integer = Pnativeint | Pint32 | Pint64 +type boxed_float = Pfloat64 + type vec128_type = Int8x16 | Int16x8 | Int32x4 | Int64x2 | Float32x4 | Float64x2 type boxed_vector = Pvec128 of vec128_type @@ -25,7 +27,7 @@ type boxed_vector = Pvec128 of vec128_type of a primitive *) type native_repr = | Same_as_ocaml_repr of Jkind.Sort.const - | Unboxed_float + | Unboxed_float of boxed_float | Unboxed_vector of boxed_vector | Unboxed_integer of boxed_integer | Untagged_int @@ -94,6 +96,7 @@ val byte_name: description -> string val vec128_name: vec128_type -> string val equal_boxed_integer : boxed_integer -> boxed_integer -> bool +val equal_boxed_float : boxed_float -> boxed_float -> bool val equal_boxed_vector_size : boxed_vector -> boxed_vector -> bool val equal_native_repr : native_repr -> native_repr -> bool val equal_effects : effects -> effects -> bool diff --git a/ocaml/typing/rec_check.ml b/ocaml/typing/rec_check.ml index 8982171b6f7..4a8ee82f0f2 100644 --- a/ocaml/typing/rec_check.ml +++ b/ocaml/typing/rec_check.ml @@ -526,7 +526,7 @@ let array_mode exp = match Typeopt.array_kind exp with | Lambda.Paddrarray | Lambda.Pintarray -> (* non-generic, non-float arrays act as constructors *) Guard - | Lambda.Punboxedfloatarray | Lambda.Punboxedintarray _ -> + | Lambda.Punboxedfloatarray Pfloat64 | Lambda.Punboxedintarray _ -> Guard (* Expression judgment: diff --git a/ocaml/typing/typedecl.ml b/ocaml/typing/typedecl.ml index 3a5ce37b854..80283cb51b6 100644 --- a/ocaml/typing/typedecl.ml +++ b/ocaml/typing/typedecl.ml @@ -2150,7 +2150,7 @@ let native_repr_of_type env kind ty = | Untagged, Tconstr (path, _, _) when Path.same path Predef.path_int -> Some Untagged_int | Unboxed, Tconstr (path, _, _) when Path.same path Predef.path_float -> - Some Unboxed_float + Some (Unboxed_float Pfloat64) | Unboxed, Tconstr (path, _, _) when Path.same path Predef.path_int32 -> Some (Unboxed_integer Pint32) | Unboxed, Tconstr (path, _, _) when Path.same path Predef.path_int64 -> diff --git a/ocaml/typing/typeopt.ml b/ocaml/typing/typeopt.ml index 982251bb036..db5a83dfc4d 100644 --- a/ocaml/typing/typeopt.ml +++ b/ocaml/typing/typeopt.ml @@ -324,7 +324,7 @@ let rec value_kind env ~loc ~visited ~depth ~num_nodes_visited ty | Tconstr(p, _, _) when Path.same p Predef.path_char -> num_nodes_visited, Pintval | Tconstr(p, _, _) when Path.same p Predef.path_float -> - num_nodes_visited, Pfloatval + num_nodes_visited, (Pboxedfloatval Pfloat64) | Tconstr(p, _, _) when Path.same p Predef.path_int32 -> num_nodes_visited, (Pboxedintval Pint32) | Tconstr(p, _, _) when Path.same p Predef.path_int64 -> @@ -521,11 +521,11 @@ and value_kind_record env ~loc ~visited ~depth ~num_nodes_visited out void. *) match rep with | Record_float | Record_ufloat -> - (* We're using the `Pfloatval` value kind for unboxed floats. + (* We're using the `Pboxedfloatval` value kind for unboxed floats. This is kind of a lie (there are unboxed floats in here, not boxed floats), but that was already happening here due to the float record optimization. *) - num_nodes_visited, Pfloatval + num_nodes_visited, Pboxedfloatval Pfloat64 | Record_boxed _ | Record_inlined _ | Record_unboxed -> value_kind env ~loc ~visited ~depth ~num_nodes_visited label.ld_type @@ -565,7 +565,7 @@ let[@inline always] layout_of_const_sort_generic ~value_kind ~error : Jkind.Sort.const -> _ = function | Value -> Lambda.Pvalue (Lazy.force value_kind) | Float64 when Language_extension.(is_at_least Layouts Stable) -> - Lambda.Punboxed_float + Lambda.Punboxed_float Pfloat64 | Word when Language_extension.(is_at_least Layouts Stable) -> Lambda.Punboxed_int Pnativeint | Bits32 when Language_extension.(is_at_least Layouts Stable) -> @@ -662,7 +662,8 @@ let rec layout_union l1 l2 = | l, Pbottom -> l | Pvalue layout1, Pvalue layout2 -> Pvalue (value_kind_union layout1 layout2) - | Punboxed_float, Punboxed_float -> Punboxed_float + | Punboxed_float f1, Punboxed_float f2 -> + if equal_boxed_float f1 f2 then l1 else Ptop | Punboxed_int bi1, Punboxed_int bi2 -> if equal_boxed_integer bi1 bi2 then l1 else Ptop | Punboxed_vector vi1, Punboxed_vector vi2 -> @@ -670,7 +671,8 @@ let rec layout_union l1 l2 = | Punboxed_product layouts1, Punboxed_product layouts2 -> if List.compare_lengths layouts1 layouts2 <> 0 then Ptop else Punboxed_product (List.map2 layout_union layouts1 layouts2) - | (Ptop | Pvalue _ | Punboxed_float | Punboxed_int _ | Punboxed_vector _ | Punboxed_product _), + | (Ptop | Pvalue _ | Punboxed_float Pfloat64 | Punboxed_int _ | + Punboxed_vector _ | Punboxed_product _), _ -> Ptop From 9a68af39bb3a3c400446caf21a5cf6199d89452a Mon Sep 17 00:00:00 2001 From: Max Slater Date: Mon, 12 Feb 2024 10:57:25 +0000 Subject: [PATCH 2/2] bootstrap --- ocaml/boot/ocamlc | Bin 3995072 -> 3996478 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ocaml/boot/ocamlc b/ocaml/boot/ocamlc index 049e1b831a1967f9d3025ff166bf694b6fadbfe4..4397db24e19234512a6f3b9be860338fc1371b8e 100755 GIT binary patch delta 88512 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†F!}!V}5fK;b{NNZ;nBMh47!8RfNe?>@G?z4^#RzNA?4) zIHvy7rj+DOM%d$}ShS>Tj!a8ym?vS!XjJa>yb>v~M!R{H8Tt(D?pDdq@g!edfUlq^<@xh-LMeVN_MacrOK(ioXfp(j2;$HCv6=U^Khcuw2#cPYtgNtLR=XvaQswOFI+gm2}pZUp``DFtk_6`ZAeI+($LLqwHM8 z6xugf@1|AFlAcO-N7<;PpHW}Fak7bWFJ>olCMMC3ifcNjk^Z1Ak@npaX`+#rBi*$5 zbDi5UUd{Ja)tvzMR=`jI|15wJvZ&V`w~HZEqcprl_TJBiz<`KL&`Jn`4a=|jbx@~K;*Hbjg53m5l~k{9>ak1&Zr3s2pn2N(d+ zfEa)g5DRDxXag_-%z(B43m{HDbx-_-1F@P`5v`)pNCq7>JQi;)FPf^CuVy5S6Y(6$ zGld5)4bT-Zh$gLaTWR$21RK?N*J$ag(WbVwN(otJ&Xs3L5OkF8Na!7bV3HjPh2>4N^;Gn`eH@iVBDD@HT+40QPe^NtFLdiiOG&Q}ndQm0*%n+zHz>B2#Yg zCgjAB=~{-7Y7Om;WSbbRrMdoi%%;8(S~At87%L7(>&uIZ5mKwyS9~6$Rhq}O;OTFm zW%IJE)RZhFD!4NPRlhkwf1N_1QYgyH3iV_ag`n%gFU%cxfn3 z#s9RohrCH=vP3_Kg^zfAQ0CE5$0sjH4QDGw7X8=n9%c&+UIfrIVb{OgEmuW^STO6TX zIM9|1NRbEHQqK(*KhaH-Qm2WNv}samj<`f8C#4S4=nARxTJS)hBe175e?H z$UIGFp;c2-6Lsqqym_q8LI;2gKm9Nz)g_*!*rL=<;t2I(=RY*5D0QefD*rJp^|%oK zqlW*Yg6pXNj8s`%p=&czhl#j_`7=}H{F&_soE6bj_h6cZHjhcmq?KdR;^^F%v<1RI z#RX|^3d6$m!Zd&lkS?beX4rp5Z=1`E7Rr>ejAWXt)ym`Vv@hv|w%1H-XQ7gZ65N#a zxP52$h*sKGQRqe<{S<%;z&vshpc25Gz7%jTV2g_L9`ico?~Al3{K5R18ooev*M`Kc zRKpg+)c}@LpIB?U(9)RpUXLiH{Q34YD!a#`O&@_+uFVX%p}@6M@bc0PcFLXs;&$Fi}k#8!I zY0-L`_}>^~#laXow$KFhQnWjcY9~ZT`T{)?hjMx6;E9+C7y#f&7}_ICsI)oWqT|kb zBBastRkC1*6bIsLf7-RF+{DKaKOMj>H;?@aD4i3dZ55+NV0Cf-EPpxOM7FLTEe)S< z&(v`iF=QT-V4-s{4n0-Qw;M6wRXf^S$vw?sqUt&J#2ZvrDlt01?Mmz=v79sknKM|Z zsu^>kwr`4-ieAr%qk%c#k;g`)CQ|M#32{_XjU`q6Wg@o0x=1k3r4SyfwJ8dkNISPi z8s&mg`#7^0ST2@Z>BNinW7N1QUN2H8HKtuM4es4hPhXVVbE#*8)l^bCQtqA(S{-jI@l==cXdDZ@&&sd_MGvY!x}F0Y|JoUOXOZ-mnyc~Aj__?r%;JoZ=?ll>;so4Xjkk^FqSVV#w=cA9}K}iX|3HQHdCLq z_D)F=;E`NZB!DFp_QwKDlt0vET~V2!U$F$t>_CCuMD=U!!>@~ZdJr*N$pUnxDpOQ4 z<@U|cQhfmmF1rAksG!oWH^(755x{%FO@J+d)lNw4tl>e&Tf{ux4)e$HIm)wTTHTJXwrl_{IYUPHDepX7UvC_ZE zB7w$L*=@A5%AQA~U$yH~d0ox{O%UqfzYbLQsy&(NU$q-={5M~jS$SSdTE?8mn8ivbK5~o_7HYK*aDq{B^D9gIDeC zBKAPS@xQN0n*S^!81^IbFyJWQ8$cPtnpKx;$xEJBNsQ`eJP2dpX9(iqZYAOv+5%ov zVLjZ3MXQ_nzgCj~YQS}TE5bs-3VgZ>?Wh=|>PZJG0ek@NC1x|c*t!9F0Js-WQ?m=WyEInKYMNz&tlAA>b>3`Uw&)`P8Ve{CSC*B8UAr;$+q6E z7q6`-bj4#EYe8sx6KAtoyjX4!E}^>hSRv0+_W$fws_fa`L`@yq>#6o>2>wW*r3LBw zxQY$-iDC{lOo>kx(<%SC7%YI3X=dzuoDjfcaI zO^FW)6J4pHqh&0u+GtJ!CJ?>vm(kn98f3 zv1)3qD-LzIh3a!6wDR_&U=Nx)4#}XbPg3=A*4Oq0QJN2}G`Tt}K|auE?ktgc6v(0F}*5{B;$!}o>ZpN8R|QQdEL zoX9L%EmaoiGt0};^wjf$Jy+}x@RQ{i>?z^^)m*U86bDIc&Pb+yO?I0&6o_t`ivg3iAMinmqY`V{$cl-If6y1P5@@j zDU|PrpQbzlqf*vLlAps4e5ZM`_n#} zDtF>kxOrKMNjce8ABfb-^?%wc#T|#$F5z6cOOJ%%UxeXbhT&fYaeDN!-7cTFY+oeA zF)HmYS#-}tutuiz&j|3pf589N{bM(Y8v!S>d1vqe_}4z{w7KhFzn>KX9M6^82;4~N zMvW!@`|ofB3W<6cQLU*NQQDP_IPo2rDH3V>Imwj0F6^B8WElQn7=AY`y=qU^^+a$q zEsKe;h}Wp@s@>A>Yc%s_6!{I@&{~&40mb3R)%X*tds213Ro(C4Qqxs?mgdn`)c%^i zqxs=5)m3kL;F>+z!%gN4&m%!-K^;KO8z{@-9RC}gx@I4txquz%FcwzychSqozUT8|eshF%{yLCwoto4- zGbs-l|GolQD1OuFmiPz2nJzfY4~G?h5Ac|f_e^!XBVK{Rt_2m;6C7?EI8XT8yE1< zK8XcRCH*~dlq;m3LZ*2_>MQ0_osg!9Cb~%@<#hk-hn9J~c%~)(P#AtYaIS}e3R5zY zHSuTY1C8_|tz?xb{|8+|afB45q1?rtv6 zrCUvs7b+R0_}t?zt$^~#BBfPqg-Ba%k}8Fue6y6J(?FPwq5L#&G8s)#IM14;i6VkZ zvn4APY)Umk6Va!wlqPgk$WCOyi3&J+#i4?>Qco)DfShd>X**P2z2ea5%ND60M0@zZ z6R}KaC0jL4zpbfPyp${;?K&k3Rp;;?dl(foh0vHo{B1-0mJom34L_}lm*!R+ha^(= zfle!uIO{ZO{6J?E?E?P#pV}o-$w-{6O;+igIT@{H#*w1BsT7+i`P#Nu(KOYyCDOO6 zt?j66MWU9*CrXLtbTuYJb?vk)QF;T~Pjse*@{**{!V&P-CP^v68E9lvk~Cbn0{*=3 ze0sT{9SDV+mZeF_f!xa$CO|`+EX4_rnx+jDIi?h8iSW|u6lsF+ks(zYCNghiL&ydP zjw8^}n7&On89Jzy>c};~@YPyP25x01ghNxJOS2fVRFZ5ul_uHA*j~yscUHr4RJRLv z29mdzQp`80VK=L8S6bR$df(7ZMZ06>U{>5h#c7h&&_fOF$?fVSdQlyR-l~T7<|5ac zb5*pD>fT1nY|?2%Ulr{~Rd)2r%5-V4p}!h-JDpFLX43R@sS9OIiP6%k3`sKFp~l`x zrFK+z9Kxu;4ois9E}5t{LmEuu*_UF6uiJw-NEXyU)IDaG3dB7;Y{^tom0(P|SIuXH z>W)<1`vSdKCP|XGKd>Mw-@p{BU6hFbk_=igs^v&&N$-#{#b~<8A@vXsP_aYG5fAe6 zu~ODXFoiJzf8&R~IBIG(=#vUiROrGlREz$Pj0tQN*<;ms-hWv}8mHpCKQR7~inF4f z@rUU?7m9u)(7I|DX5ILJ-{zKbvmaH-Sx{s0$5foRHO42XI3I->pGeEx(f~1u`j{M0 z^1G#OVlodR6j2^2QB2|Hr&0AD^hZIR7s~%OP`1_9c_ErMyY!-nsyxyNbFrFhkh@JK zgBKk$EzrGrQ=*XYnhQsg-rzOWMd;V*YQJu?CYI-R(Te{DR(kbbeH_($rGA&+fT|%Y17n`&lM;0^QIeUmt5TE6wgeiv%IWR(@+zOys1dVhUPs9;W>Zy1@SewM zS4XKU4m-kx#@O?f@i&&c!oORwp~LOFeq zG+!qcQB@xDT1?sb7^-J!52A=L(U)+@ zb~nNkhe_RNH2X#l!_+IMs$r5<$7_B$d;98EpiA7;{D9R$1$qCy@rT$*MO zM0F2HW5h~1{XwZ~gyyA0`ru%6M#bs`tz1$lEsqi}^Y~-#j>NvuI4~CFgHB`=#N zZP1EWsr!@C=i)Wl@Ra0=6zk;d#Znt6`sF^)N;#2YeIU!SJ1ttdtW4?>W7vR}@F~Pb z>4#!0a^ovflMoxJVYM_uw+V4Zs(A>eiQF|(5lt_X5~=oFCMMNn97@lv!Or_eAjiD> zFvbJdN(04adD&X&JB@$_=T&K_*b04#^ptp$FidFNVGTIzH#kpCd`)VM71i>P8W4#Z zdG%Y;`$D{>j&w|H3lviOE{5wJs#znssPZfhKsyf@^>U^x4iw~9t}AtO`$ID zNhuW%>Y%~xua`!M-L$$M6Tg<~IIxa% z4U$iMNZAdNJ?SH)<})CtW>J^d{2qkGQlH^am1nJF9rTY_96hzL|DD7cKW{j?rM^MZ zijQeagXGeE0&;BJJCdMkZ;8YzZ?y{MU>FXw!_jFMzJr@WybHMeL{T7 zbI49bPDcvGoszDK&&d3}^a_r@Jh$Wn-%ArC=+d_m=G>1`rdAx3=lvqh5r#v^pA};f zR1+0t(S8oJyuK)oGS5jiQ7;cUC#6NjHXxMQYApCBWPyqlXfpbv_GK@-F;4$;>*bvn zvHw#2kz{T8#zQ!o4%f_K!F|1R=GMmHs6i5f4$-Up#9TXW}q) z85_n!w5+cSeDXE)S6=TlNJe{8!C)>+Hp;s!8ENGT2)Ek5r7YcHRJLt-aaU*qa+nxl zFrJnEEe#T1&_OtwFB9pIH6?+v{*k)qzG8AZwN(T9b}&qo`~&)n;Ztf7WjYkZr4>V$LV<uMLQtA zWjnR8d>-JOdD_ipqaBvdnK-C~Ux=w)w2z4M^R_VG`d{ zb{oei&1rSxt!@LNGjzU9qlK|% zhu?e_GnkifP?z>IrM7j9g?+BHt>ZMD;)ijUq4Bs5b~KA)xcG&@rqP>2GxZg=B$y%N z90SF#bTAGgNl~0*v^dB99C4mRyyGMB8`ZUQU{Y0fFwxa`N29n9VCYv9FbhYaSZ0%4 zd>23;z+F`LS%ife2U&`!>2>JtZHW#WU5@i$+>V3UE=hEx7}7w<+_8yj5*gL`XzxKcY3a&`MmamlJUPP9+ZszDlVw>k!XvDugx%dP$m_?d4Vu+FKU2~hijs$ zk&ZMnox{PQY#8Qz1RWga7-rUnrPopRa7S;Pj*EvotRjjQ1Jmg_6EeSMv&v_NJ8=B@fp*u!6df+&3zzJCivW-Mg8|sA`;BfrFNKA6G zylkYy5+$HlD#83$M4YTopz5w41~BIKvS|c z5}Vq5#}a5fl|n1`r-1*@cNCbD&~9E~Jife2+EJep#~2#@A4eipZ|WFFrioyBW&NDE z4OHS-pi5zT+A^%2RW2!YoX{9j5s-_7m#Lwh6Dop_v^sg-0!M@p?d8&^9Y^(sG*IyP zWy*!mJKi+uu3&guQ{5UEBJ1@LsP|gO)f6RE7YH5vw^J`hP~ic$MaOf*MA;o6Ee?!^ z8L(_8_Ouht@p0uvy^M18PRFHKVZ%WIOS$$l$3&4%DAX$V+waJX5EH5RkYnMH+0fFJ zUGn>{0QAu4r2y=J`vLz0#A3+}13V9y{g>ar7m$JZJr?jCU^do56TpTwb0_ux++j~T z3~y^xjhB@jz{`SpPvbgVLcn&S}?WDnn%c0$rB1O=m1``cy0TjCT&yi4OA9?VP?yI-zl5bnnNO zmb(Bld%exMGFEirUbIlt38;Ot0{-eRuoGm<2;X27o#i`vIQQ#BP9U!6-3YztB4_t; z4vG{v$@2y{=eHF%E0w4EU!6u;@=*%J==+^zI?+|$HOBc`gy=?vW1Y|8t|#i7M#gc@ zZqP;`D2EEZVjIbAE^J4)MQi0ni&cA5q_9vWO+CY`T6NmD8`n0m~dFMH; zctHO9MQ3sZ)EWv)$gFT?MnbRAtJ;|+&syaiC`19(t#vZ{R1g=ycCB?jCB{;p zO6O@YjvQ6aM<6>ct#V!z56h*mI{WH0k0j9txvqB9xWPG*6&4stdE!QAnMPo@8SCsy z-KNJH<=i)%S|J{z{+pd?VuJk8X6I`H%TcL^ZL1S9Y6BI&>D&)}1*&sVOqR22oN19X zc%#!M7s<{&8bc8Vm6umEm1e|QaN2S|m~XDV))ox*ILOU=JHEfravaIiY%OcC<}v)A^$Ggmwz7k=;D8v(_G(#qT)ols?z z$mu^jKZp8(6MlsIcFN+$`sk^J1daZ}ENya*haO^alQT`Pdm4qNQ1<5zKvI%nT9eoV`v?UqT^}n{)kAjorm76`Zs7e>o;p55M6WH#4;+qhN>P|i>Mo+ zFLLMzC^Ejj=FAbxDfVAfXocb!D%70QsBm&R^cnwRQWFV3C{_lXmjceqibKYKvBdO# zXB-q13f1aB_~w6|m#A#E*0`d`l_EB*Sn5g>8&_<>|C?4Ebd8~_ex&OnT#3*b3=s(4 zOq1BzLQCPSSc2>1wZdgwu^FC5_8f49{6ZsMoqxI8g7y$v7fdK$02ha?>o1*vBJK6zNLA5+v^i$<44qsIRp+X zXM{OrQ4D+|4Il}o(9($*6t>OaGF2E|lHr&-UvM{coek@eGhP(i8NF}~JHtdHXeV-s zi;S)=I4AEiqN9(KITr29yn^L@g8e;kD|Se%>jfM>PsW1aJ1TCAgFRY|+xA9I9p~yv zm0a*nM%@-vwJ8pD<1n0?(k&pbUGG54+PJ2R(_n9|avB^9+LdiwOK^Nr0^(XDU1b|r zQJ`Xj8ErD7#p_z5iFs{N+*J-MX^XJ3Ht=OxkVRu#^s!_LptxehK3g0jsx6p(gUtcd zO^xhBS{!e<=H1!?EsH}|MeI|uLZx$QU)x}5Hg1TLq9h(!t>j5#n}S1VQEOx%C7{8k zIFRJVV=4@cLu_!?B?iW!gkzC&Kq2rKol0Dby*Pqdbs~A7NW|cwBw`8Qzl9)ujT$1V1#%Qi3(KB6L&uIQl zl3RCk-7E}#kTPRWq4b@eWE$VyWrV@&zujHG3LzKXg2gK|a%m4&51ojRcjdbLkwPo) z8sO@!5jy$W9WHyMh?LXwT**-)O71nnwc9`ix407JxI)+5Ho_n;D{`IIi)i`3vt2P- z5hIt*bFGbn=$`&GR!A&6F#bFZop&nr@k@+sr^v zhmfF-fuK&5+TiL0Y4ZkgHkrS1xysAhpo?(*mMR-CIGt$|=-TF><)H_`F74>Sx`>2| z!{EI)QTAb!d$W=p*OFj(Dmm;bFn2{7mLa>TZg*-v49;*1d5)k%dT_~|D0hOxq$uKh z2JjO{TsBz5t{rh5)!f>S?*GQqUO?3R(v?Hie#|5#`)*%?h30bTAPAhRzeKLLv6B{? zz>^!m<@S}uS1zA`%-P|niy(8t!MlN@u3DBkkGaM`&=g<0a&Y5C>4fSRBB8nc8rPA{ZOmT{Tkfp&Oi?j;wJVMgP9(D`54&i@NcksmA<|!Kr=MpuMp$6W;i(rWQZRQ#TRb8o;I5pYHZocjXK z{Q+l`;>i6@x^gwK-1NuPE}uZ=3n;lL4;tzcHH9}0Knu|~_ z=6#R3I*pcn@0u^B%jVNAJSzAvC+q|M!yXPF_a`nqjDO9ux_ry!ix+GYb z8Y10kltm7li!?YK9XN|&m`kV5VzZy8)T82bx{1dB>@sPdz-sx`;H1i*A(qUi;@@34 za?{T)7>Y|;);L98_p56pOMsw3L*DZ$1~?;RK_#HNWsq?N; zVgcn}Lf6@Tb4`SaO6iHL@7sZA{N~CN&v3v;EC{MJ*j+E69S{lC06ZdDl7;KIO;`wv z(G8)C=UHlQ!Zdo0vYRmi5EZYd8U2$6Thh;1xl6BC5ypXq8Bl)yjut-8p;HQ9P%{KK zS6F75ipQ(?G8Jc|1+&x_RXnJvFIVy4JY25gK`qb<>T}UGMO5(I=nL5qPA58x2})U) zTqg5MkaJJHq`EJ23wnrGuJ@AO5L6JY3h8?N9~jfs9AKy1Kd^$=TpzADTJ;B*4IX?1 z`%`ZG!_`xWN=p69Wi?c(CB4csG>3}*a&^3ABJ*aIlHZJRmu{h&zg=nOt!i*k zLG~t{`r9>4SIxnczYx}k;APY}QNxqmQZXN_-;@-kg>lS$ z#WgnL9W`rKg>#ATh7~1)1-Ee|D9m#^)m*`x-9fQe!8qOvIPVj7bli!l&}hX@D!uCJ zOAD^J;*Xlq2WXnOh#@z0I`jU z*UPmUcZ%kw&%-*jo*Rsgz84Uj5Dj58hsmsSyGXCW8=t{CcO`YxpdeGE+eqWtmmBF$ z5nqMW4Ry#9M>$}qI7aDF?x)1pbSlbifh4Us#{e4SQyf|s<(^JGXMqh@ z>)kfN5Y^Q!!rgu$H*dqAqe-AVi^4>7n0XvDcdoeFBO$C>)#W^>se zcwdv%Axkee#khOI$frlQb%}Ln!8Gttth=kYK&#~%k`xuUqY(8vec zrEJLcxy_oZ?d02fx_>u|Yk^gus9jC7Ek;^(#A%YJ-{sEL>;6TRRpnLvy>7k6-;SRD zMb{1@aotFCp&;`JIIseZK%*69RYbsV`cMxfg0g2K_wM{fdtDqJqv(#k1VX zY3_Z(B0oCaJw*%c_SduAuZVca?C!pikeW+h0ZILQcL5~h>=Jj35Q%cHQg`nN+!w1_ zfEtx8aGOLs8UCl*>XLESU_6~#lMW^DK)iY0JRYay!AGFd8BOki!jOV^=Ei2KyU+<{ znwvpW(gVis`jzfVjX4$3yfy08%0qGeiW^FsG|FG?eqY$+*fs8>8j&vlQ0eXzp~*<5 zCl-1WKDo_xqI8bN9F_bv_gjqg%{T6&I%segH@f8rXmIy7@L|v5XB2F3 zr_hqFxFSU6~(BN_eory&z+gp25$kZCX!SKm8lP69A-W(nzz+o^E1*jDS%Z$k%W? zk?pH=TspfsDTNB+JSh;e^CQvQ^;I~C**0fr<;pnEtO$tO$^^_x1j!&8lIVF8Z|1Kh zdUk8lhhR9^U=n1`cZK0Y<&(*t_eFZ18qOw6UJ?0W_}#Q4)k9*KoZsGqejiRJ(>x35 zKr&3gMK;e|I+5(b(zSU^h7oE?4HaHZz#%W)b4CaKaA3i*hWcz&h{*fAETBKetPcqcSN-x!Kjy5V+zs82)xHF(E<6!(lDy~e3 zdAO!hbd%?*c$f;iBC|&V4KkgBo_@T_V*F^_qf~b@q93D%t{!_uS5JYM5J)gFB*CN` z324#HxUHcuzIE&a=U-#?vtOngm9_Oy5yUgS&Zh z%|&W&1WjVaw7Q!oIelta@U#&85ezW2+dH+EiYcA(7Uh6jThZOqQ!_o8?m8~o;S|$w zn+J@iyQc|C>B3t)BQpG9H~YU0!w+4h_iphx&6NlbHTlklg2m%YAAw+&Z`ts~73~e2 zuL=h7EHd}ULs9KaJO#?!C`{rs749-v`hUd62Wz~x|K4Xwx&{LqCt-tgkVIx9 zG!@Q>w4}cZFAK~Z#XkzepQ9~3J@)Lm2#!H?Fo%aYhY);t7(R$ZFOTJ>Zeh9YfYmRw zw4T62vsnrYVYKqR9`|#aow%^qG}adf5$n|A_7+EI%4*mYTciZe6^tcum)0_W1kh0O z=rH^u%#)$XzYoJV01s{N_%Qr-;Gy}awM;+1l_e|z+ebqaG{9yWith-+%fs-ZFnkE` z&WCW;GHxPqC4JV3=DCyDubc`tNwrkk=fMs2c^}c&d6S1zO?W9^?EmDixo! zPBph2nu99NB^0Q1Y!db$JhTT|h2i$FHzaMt-kAJy;d%$~Uec=72C6%pV3{A;G8`BtzezWyx`7W@XzL^Y1v@CM$sgqHWhd4Ga3FFBLRA%q3=cdjSx z=GX0hzsBMBGiM6sFNHm2X$3rVYH$3No|u}NU>l0ZESzmTfZf~GJh&bo;f)GG=@Vz3 zsfO}Mto#`{k?^&{DD}Z8O~Q*5PKkR4N)EGBT4gkT3dFJ2B3Lu;kAW}<;@88j;>8N* zfmwDv>?t*jb$h|If2uE4rXh^!=YcgncSvhU`V!BG)PU>6ALE%*H05{HT5!5A#g5SZ zHiU4;GS}nI;vYF%K6Z)&4c~8hfa3r>`)4T|iteXVoME5BEDIg$AdInGE1o2?5pJa7 zXHzZxYflDJhYsJn2n)rxhT*Hj@P$;|*E3-L9SG(TV^KP|M7jUFooJcewr^U__+sGP z70&^J{nq%k-~TA^&}wW$SSY?3IG4w1!87QM+x6zQkA)H4@-_W?&2TfWs9@xmhLm7Y z3At-|CCn4sg^MP|13hWbk1vDMZ8K7EN|w8i90}B! zanAWg;4yHy#5VvO&ZSL3xWdTIT~&%;3Onv(dMxuV9}ZMKSVg31W$1dNiZA{j@naFs zbiu42aCohS5%>zwh)U$L~kYV|(5hf_pd% z>eE43yML;d&JC{pI3Ol)$L&+YxmJS_9$NDp;6`d*nrfx8K^}ele$a55Luwl4mNRL~ zAkR$AcXi|(>}jw2UmdbW9TP3FpQ}`y^WF65U{5D=d2P$#x6r1+5IjRE`+y|04#Rf0 z?3H-nfxDBAhd*c;RkW)merYEQAjJ>HS?6znH?(ivz(Y%U>HU`Yqha`6z(dog0uPQI zFQTURS_)nt0cT-KokGr5r3m1zd*Vi5tDy)B&2$kp55YVu>Cv*2hVHn*5*8ylXLCl) zhNo%e_CPkg4!N)Sw-$N$0bD-+HpzkFe}rGHQ>&}*2Eu*{30wNEpPstQ)9b$T2;_pA z)JU#puWc>sTm5z*11>n2X$8VU+jQowmiT*=G!#0D4Ecefp0o%W|6%7$s=f(UnQeD_ z63rvfmt5-osyhZRfIMmQ3srP1TrSK7m;q?K#qWZvh@k|2!2A_ax6B6-G8B4F7OT%Vdjzhh}@P8XuhPJi|-~3*xA8t5cg> zrn&nD&PM~-nciqgu;%ra89WO-w9uk3{3hU`ZTn^u_NKBaZ8E9k9*?^he{F=jg{6re zRV_*HSQEf`T6F>)yV)u|uO1WqaF1t%=Im;^^D{&pB zdFHS|RMAn^PRCXclI}A+!(bC#I>Ymm?kVJwOEtx8{+{K5Zf2$@QOUY3CO}Try=n z3FB97PZ)?BU-k@+0!fEgQFo+>UGJF*CuxJnP8-*I-0(N7hw^C-onH? zlxtvrRn%Mj!bR4&^JkiW~!001yvKd+_RD zj*R?cgwm)ODt2|URJ`vQsGxW;-w!=h@V;lGfc;kKV%sjyK8+HqrG`u|E&@QB@w~iiuVu!zh&noMi#$MOyZmXNoA7#eNU&TP~;Kqo{e-0bD3pp-@oP zXVAjd*TZm1_>KTFSV>g}Je?qvHXOk0dzt=#qj@Eno^LI+C*^hfszA!o2avL9eS0lz zuqZm2OslQ>^0KbD^zpnklC~c7JOg7a^0ZLVsdOXEu!_I-gfC#esiJv@JQFmpCey9o z`PxzSCq9_;PvK&YV$yei?wN@1a-@F^y<5o-=}-xN?lHkc+weJR^}icg(dg6APfPXa z{Pi4(Uf+Xnt~Kt15xn4cmnnJ!CLttK-{K(fcsi=jEmA#U^U5$4n_Y3#F02G8#F%}B^*g(v`PfVZePFImR7(yqf$%)S}u)4V(IRhisZtT2id+HfOb zg&8)AZn4n1AMte2R3}qMYf=U-K4`SG^N1&ln(95c0)aR|CmK9%8vG^3^lgg$3d-(n z=ytf_ZVC1|3O@n*+#6f0Hcy7U&X5VT z1Bhh~Y^H{%trj^;=d}rOP=<|StX6Xf6aC((1UeAy)f+wsC7(LeNyK>5sOepgQP#(J zXKC=TvNYB^0WH7-cCU*X?}Ay_))pBZmJ!f5LL3R$JSyY8gEe2MN4YNp3Tj&d=)RI+ zFY3$O?CE4LOoK;J6wl+eL+RT|hW4~C#XA>f2W(!B%433*bw7yRXM&9YgU{>P4+Sj}onw2mUT)o{}$#>GL zP`TOx-pv7j8kH1dS(@I!=N(oJ^ln7x>Q}u!D!PNIW%HfhDF$&`E*<8@tLdY(>mKh# zRHx=%?;|ndjGXizFP^9WAg4a;ovGtDcQ7?=sGi`(tdeUcdB4+%pX6oJyr1*dQ#jL$ z&59@6UN}F`@+KS3s_nsJ=?hLQ(C%?s**)7kP9uJnm(KA%5~=wGGa>~BLF1F&MBT4U zPUbsx7P;q>-faTbc5EWU@YYV*OAbu1fuSwH`2HrBF7S?ugl(M{@w?A?H^+)5dCN*~ zju6cENkFh5Xkjq~29t&(UkyQ6B&QR53Q}8-twRbs_q^|Y$g;TiJdmNpCu0;k| zH&tFAU++gpy$=U{G(fI=&3jdk4qCn0dm0^7y2T4~=6X7e+C?Uf(2OgWwewz^55Xd+r1s5|55QP0bE>F$Vl4m9Zkcxd)+Xl z7w^Di)t|*vrurRT6O8Joc6f)vsGj{EoCqp?&pXJhgv74Ve@BOZX=@FxbUQ(fmxfffB=op%s! zmMYPW_o249Q;OQQc#F#~sUN(%jZ-qn$CD-5>a54{I)*>u-O-YKx#blBtVs!KzC z#+MIy3pWV6;5&-BO;{?+_jqe{Hl?C{9*zU|{MehQNl&4>2DE8U^?$U5h5lo2KU@lE z{@D8nZTrxhMMa7H&AcJF%*d=4t;XKF~0$4nEMGDQ(x~LNVYw=uB*4hlvp_*S9xkX zEUppc9`+8#)2XG0y#sVv$lXMBUx6QAKI|=m;r)THFmqNN!J_L-yN-D0K&O>| z41!&KpB!8T`ocR-bP3R${Q~X0iD?E=!IxgG?q=kbOnvU@0_o*TZ$C}f6x#Z&2Nw#C zdhxm1i+C}9^-FI7jX&b;LSobP_`x7brkcx z2gM#k9plbIA9>=8*Jx8mKa2ie``y~jX#;r4E+_7URTl_G_$=(Vrvj&TpcOf9OM0rF52HmRci zF0Gl*Tde;%{BNN7cvyA}%dF%ia?QKxdV`d0I{|d*RC7l%dJzC?kngie3uAhTemE42-ANv;KF@fnj?<`8` zhWDzr&n25K8ntUfReVZ2@txPGNxnwyUrKCGm9KTdoceDf2q;ml6*9nstY{-O0I;3CIE z?R-NGgVc4eC$XjzCPO>lD(qDAl6?arkOD5Q+_(4ji`5MVAz!w^D5u~93%QxT6pa`X zsHpNOgIOJYEAiJ6Q1iVS&CnEj{+ca8Zp!xIb!CIxy{qqv7S90#?Rp1`^m69}d|0}t z&nR#K`+9S!tYdP@hU#8Ey|`Ph>F?W*H-dOU>FXPX+SJ|U8_N6UP~Sz|3JIjSBS|aU z@_gepntM{{x8a==C-YjJNhSod>Tn?)Bwr#0a^0r0<9p*N6EFi*)P( zv|=RKFJDEtkIWDHk~IUXspEsb_cV7`(=QMD-qj7QhQ^M>@(4?LS$C|IF}{78{Azlp zz;|c6R}uG0jo*I&a2oJCU<#CCgSN@P6!<1qB+))mYzWk%K?<`)7P8uOH{@D3YcDc@6L| z)W9bI5zs_G1E{9+5BUZdMyUhahVoBGfek(E8yM|Bf+xPPE!e-HS0DCu)(roGzIxdA z4Cd1VkNAecsd>a_@i2d6-gpOqd6U8)5oTAz;3#27>HH%;ANF68+HsNk z4!MZutzqjAN%F3|e)(`xHsM|#B;!S(;G9hab;ab2HcqUYa^2bpZf?7 z1)G8S=y(&LFXhjRvhV|irRd*j)I1es+CKH+h1*0t2P`Q<^QUv>X_TkMB`Mp9RDFdD zTvMNf4Q7hWe{1B3auuyhEOZz_Z5( zg#asJil+M#acke)tV`29g-O|l3in!FlsgHZPARf>)XV3l`|zB30f{Hjio6*>o@PG| zEHivd_@xBzI(aep&@H|rjtg2}Mr!X^h>UogdC75O7KP!9!|-QSoK*_^1G7+u?m4QP z>3a%KC<^CcrWeeUAjr=0xuJbS_#ffWmjEoZDeQ8JyyEXp#oMft8;OmCx!1>Q$ z8Z<5N72r*9{?p(BTdC%0I{k7U2ECXGQf&&-`F9@Hf6QgLSe9RC417W-Z>?+y#DrH>c;`fBRb zib~I7B7Vp$(9Ta3Gx2@`mG;qSM}{7Xwz_A1Irvf-#wLxf7U7mc%5$LkBrqdwkK^k~ z1<(0XbbC>VX+?96ovIJSw5GdC@I8s9cG=yi={etMv5&LFpHNy7X{soK{9`)~o!!J7 zUmU(^0=@37xMNv=m}R{ssLQ8xeu*!+;?6F5ytROL8eUiwF2$t7x3rnv9;Ak)7|ufh z3?I)%AnjWMMs{K;_Jx8cptx1odjnSz=i|@7Zi*hYnkqhkz;!r;A01Ks6Y#zDxx=g} zl=lLz>wUo!)mq_@z{r79m*??c6MxFH`UQ;XSDYxh0&5YP3-%h4)c!uEpfs=yQwI+z z)HMJBISFq=%gTHbC31esGOp+J#{&t9mZ93FWk_{`1MGC>1q2|pA2eRq>r%fAOY1v@ zKs1IV%zF_TZ!6@gwx4^?%|iKvucWc+;7%3GoAP zK4#nt;LV5U&W~XkvcYmByH9-nd^iPoBb4ome5okA+= zS&rIGF9#PnA4p#rixj!beOmr-ygXpJ?{EG=YN2tp8yU4P6EyWt^n@9elrKK1#k#(0uYCl zJP=R-C;)VHGy(8IvQ}1r6VL;Y2N(%>7*GtD3wRc=60jbyO^d(7@*zC+fNudm z0xkh=#;}hC6anS|o&&4|tOv+|j{!#j-vgQe{{oCSBew(G0=OSA9xwy20PrH960jAZ z2YdPtU>aaS)cjVhUVvvE;3L5IfCxSA+@?gh*QECEyj-UaLjGy?c~R(lA_4*?zr zyZ~4SI09%5DJ=!y1@s0C0Nf3@A21#;1MnQ+CNvfoJBq8oM`i__*#YPAfHOyN=+YXj z!0HJGEyNxsmW!%>cO^krD(6*>J=9PkP1P=C{>gK3ecH+J?V^h{Q`?_r)azcWTxmaaqiXxB!{^t8dcwupD;)XVOxt z+vH1*e=jWO_Zg=eLp0=%H?Sp)djp-)i2q=LLj7S@`Zy+$vNrn?ueW43rn&pBTNa#wcTFGKuaQE@dYT=GV|w%qh5RF^36Xv;8~ zSnbQYPC@IcaW*a3>eDkl)rVqA>f>RlyVPLkD=NY$w-^QwG3pqf!66T37ZqYrqaK=eO@Yf%V#p2LnKRy_(KzqCRo$?*v=;<{)Mig^Vi8vy_O12<-{SR z$dZI@TlU!uzg>@QsKLs<&=PHGi8fzH&D)`2`TaUtxZUS6T)d7h%mHaf3-v}w?zMLiT=|9#oY+>G)#K$`3B(Sr+KH(Vz_#pBL9{Dhq^b9tGf99 z$9r8adQs3z?1FGv6qWm0uKR*{NiEj|wQ>(!5_d>TOH;^7ODzcHSZP9OYHC8MFUut; zEh{a^7Aq@wXJw@YtyWmy=b6`BMDzXme!jo|e)qxfnlrC?&2nbu%$YN1&cKYG_aLy2 zR|oLwV&ki<0~nez^zW;N{&Uq(#L4AO$b7|k2zBICM8Q2h|AWTF49WaL6R)bK0f&wd39<*Ss0Hv6K8YCz7w z)wnGGs7v_|sJJZuXe)nMqj?o1w5$I7h>rB$Op<9dWZ>|pu)SU2&@ zZjAwfu*Y)gWs?gK-bgW)^+0E3wuC1rW)*r$7^70ay(H{gboG{Sn0((y!px`e_o)(Q zwu0fl5(d*K;Ois|j+S8?ww@~Az)A;3Y`M3fF=;T zOfAEru`G4Ih4C_kf&yldN zlh2i~uanP{u&NkUHtz+Tdabw)n?_|-7_f_|^gV2h+)eQ(!SdW=J)nzn64P2tHF%{ZR)l-4H%rBX z?A4GxmpqLn(UOx8UFGpG!o0H)E2mVLqP{jCCFy`_V96_b)_t)>KX}50n#Xc(h4x<)?)>I_CCHA((kgB5Y{<)H`el)*e|k!s^(F=!>u*Au5Ad!yj3~4_}h5_^~I;Qf>>(xJZ{3N`UrET z>l7%1w`U?&t^=_LkvdXw(1e#;K77Q`o+3L%NJWM zPu%iPLIBM}my8`)Dc5v{gz+47KjI(1qT@Vq1^gsk{1oFJ#xR+DY-IA068zK^kv3V8 zN;p5T0;f~l@$#NVp}`Oiq~iXU2%B0dsZ1yuZRRtX!LIIwSHOF&fcIVj?<1uqMek_JVD7bywEb7W zFZp1q-iNyic9w<(+QV=ZlFBAJB5BNv&_F18&9DbCz2cF;zc(o0;gGm#^!Mf4qjLcB z^uqhXkK46i@-;@!}gI~Wq&!1t{3K(L|c4Mo}#C%Y3 z6xw1nU#CRcZ3koN@Qp3olk0mByhCQ%_bJm`Kz3BFx}(h_zozVIj_X)T|AuDB+KV81 zN`(mkIu(^12(1%8_XNfNRrGcoHg~wYm@a?!`^~YX@@t^Gk8;HH1i4#ADo4$}?c8rP z$1aM$>fQk(R7iapHc331`$uel#Ov-GvGoyexX~qb_iV_1e17a88}3NuxQT#%&HZ_D z7)gUu-MYE9huh@`iH|78@!sx5iuKmS+hjlG9W%F|d#E4o8pSi(JaxT$kRpt$C#zm^*K9pHghqApNmWE%kof0aw&+vBB2*AoqF& zyDB2z%pou;A@Yr&+&-;gm1LOvf(@$0s2TW+?m9L@-irtV8&;--}Muzq?x~tcE4!1{IqMVTbIGLW8EoMMqy^~cvMV;!<6D+3vgiglPY^T=#i%Os?Clm<4yZd)jSZ z#9Hh;>*1M+NUiI3ZNxwE)%Z!3^OKLtlqzgbU){17St#}~q; zP3n60Y7t?yd1AdA=U>iK+LP`#V0cWRs%{`6X2wFMQ_?c31$E!xeoVwpqsp}~Gk-i7 zNz`p{yRASoej|z}{9#nzE+~$w#s=Yd##8PyvQmchswHb7$j+9*(+v!`}`~7Y8GRd40-9hdh z?j<661eLFXsjHd_R^!{@t`mX1=;%&Rr=R%q5i;cFUGDy@g1yVFi|enl-C3mxxmTB6%{~S zmE!{Q>D})>uKZy&qO(@Fo9>s~Ff;q7Bt~o_@UKgLTLWm&Bu6-%I^bRl6KbOED{wIy zl?(+bFF5EPqx>zR7as!c{Kx0*K|AKJ<zup6R4~Rw> zvqK3~y)ZCNi81l@rT_@HNtJ{Cvsf8p+c5_)R5p3gufy{;Ed%LK+iFUMQs zUeHYRv;-)dw1ElvuiZ&OJmVyAN^mi-?*w}1{KoB7T$J&RyPpzo7JlO{QXpvKO7rzO ziwT^r4_wK3Chs$lICPE<{=dsdvcf#`Id-pLViE0NU)VZU@wehslBW!M=LdIhLFi#&FCNOst{>fbI9^fuqx(e|Pqw~G9|%)` z&i7h_lpH~iHby}Eyx?c|{jA&0?JsWBGk)<+wUQ$L@++ncD7!aC!KG8~a{|eb2wrfn z2=mpS*8;x!cBB&*Ks(dF!70LX7u+zFmcnRD6iYZ3UtEe!XB7~}iL4GX}X(cdB7J=!61U8$O)bjAOWbv0^Nkt(N@499(g7c|`vIhxJw zDcxl}@YkoiVA*mLwEtHs>TIQlY(3mgXgY1`0KV8n^i;kU+hH$c(-vp`hkI*W4P0z?>h3{pqiVL&gpA8L;hL-{KKEBumr9B?ZOR#&p1lV5>3 zLuH=F1wg}gfiC7;tHQ)>nz<`P-DHi_(Pl;))odXu(VaXi5Aje&ZnC^)X$N(lg%n(r@*^shGZE6x zitAk%1fA65BGyP)^iiLL@jpR7xBZ9$SEQ)hU;=Q4TfI>kV3xbpFPlM&T)f}eMLiDV ze|L9P<7_v^!K}F(lT}wWiS7Qm!PTDas^ZMjU<>7$w_xS4p}RW9e+cmErP`V>5ZfN= zHvgdlF8mnw8v~m`6TPN~y4D6;+uXe7>fWm12W@aM@PtL%o2(agebqb#*TDe4ukm#- z0?*(eM5n>nnF)LF*=gzmJCwlror!k?Y|2Qhm2-Bsj43iqP@WM`vaiZZ!1;&K;G0VZ zso4swb2BAy4OT}(8{FqlqO!rN0d-w;lO4(}=9(dDL?lz4XD6$gz#jONRCgjZOjgSv zgcSvYQw_y^Gd@3g4duu;J_W`t5Zae z7LtOduXrvgO1l>W=RS3iGS7VTK6R7dj2vXf(-(Jsu4yh{o^gHf9e{bB^1<@~GdcFb z3jq6s8osbQWf%(}d|`K))eox6Ev7$|l#STht68bq&76l+ECm+g3s^Tfg{z(#R;kW` zivTw*)!l%bmg*kBO-r>HaMMyPVVKrD2)dQMTE)#XOA)}Ur%W37h?)|>3v!k$KS;{0 z9+c#1%vyPms7b*uqhmBpco|pE?T<@$+C8Q&7kxU6svpKmq2e)heOsPixHI@@SSEi6*AK2eWv$mhcN^T8 zor}~!Bvt>E8bLeT;n=HtwiDO1y#+mQV;$I!3q@*G)cvwb56I_(cs5pRAwHk@gc*HFee2+OM0sY}wf0_5(Q4|fY3OEMU~6^>Dl(~Q@w#FHJvzMX`XjhW;Z zt0RJ4h{n^|Lyf_;2&S47kXCjj&<B1MA-XSbC;EA)0~lXj@~mX&t<7!gdrs>|u*)>V~ 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

txp2Bz>A7$p*8&!Z`(q{_9+VJr|h*p4T$CT zHTKZ(5cuKV@iT^tMTY(_=7YB&`YUavXSKZk$}|a+K-&i>5vJ;7`m2R+6dg=X@~wFj z^Zvd$N?X(7Wcu=;S1UU5l*NBZ)nw6cL(LhE^{9C{h#Wp89N(oJ-~N~*nm$nJVxnaF zS87NICb)2Y+PuT)(jFOz=I(hqhYqi_OuI2qDU)!{Y-KLk#5nMV$MVTR*fKJ@sW(oX zff|o}Isti#OwX*uy^F2e#ra~A2Za7Ob7mimrj5JcBWZq~@~9tI+GhbdoiOzSTTK1H zQ8GFhqXr{^G0QU;*?lk^;nWRAo~P4(VSRNl#JPj)Lv+-42!daw2Sd*cQ4(-oZSxSF z+sPr|y_)5S@N3x5$7Z0Ruz8i-LzN$KQmx%E<-TA(9m~CK&TVdWg~VHjq1{fW1@~&Uo~X(&^B6 ze1+1qDAH-sM6^HXbx%|RZJhEP4E8pBWyQrg7tsT|au6G%eDjqH(q>ND zP|bIeqL}bnvbzw`eUoMuDo>*wz0I1HL&P?Wk0T;z-DG8(jwPy|h+)aP*f88eGDUG> zoku$~RaxQVvkpPH2I$&Z^r| z^}EeN*LHkNF-z}h_9vAVlC({8FGMN9$w9r1tFqYqMe|qt6nZ=FGgZYILcK+fd0NRf z?a*7cBq}Mh@dj;l`y=QrSYT=S#?#7W>xU2ncQX(6j-atyys)VEI=1Eh^pc`z0~RU! zOu8Ue+PnZqzS~wQ>!g5PMtr!b6Y=@BTDfJm{(*9Cru@aYY5bWi*}JAjiP0ylIIFns z?xuD%kUWxx)hKdvp33sr>_Iiy9*T`U$8jsf^)nH^k%0(<|G4US=E?4q9_?I>GS?(& zTK+O+m&N)K-1>1#jdM6JE2|}GulDTO7!yX#}q_Ux_VCc@0u6}npYQ{*ek_c*m_U9EHp;ENLYk4q-U^j*qXtqcliC>)au zXya;yxDWsH7uFCOy9V43(#AE)7}Nbp^zvLZueFs}$ZY$n;%z;oODjE#*WYrFC0kk^ z2IiPeHNt?8zixTso`F}DshD>A_Elv_umz$^uxB}V%7p{nM>%ViApu9=oxi48P@Kp| zY4choBK8=_?230Au+N4Y6h4KW8xO7GHO|jST8H|7oD$a|XRsk<9g<=IO&1zAtAt{e zdJXK{pBoH4=a^U&UMUHM;t$aY*mL+_816oS&VMWfnY=e?!J97ta-GDN0 zp@pw2(WxvTmn#;~lcr4LbYmI|w2g(Mqnl9QN4}15gxBDI^h(=b$0x=@7hgx~Ie;QJ zqRb4SWgC?V)-S=PnO^V+1rH5!Wh};nn@|nE!d?aR@$|%^fUL++dhT^4NXOXsv=8m` zm8m|KRL)oaGm6=rmvS1*tI?rND4f`M^M>+lz*z*#Nqx?UzlAowp+vOgU3*?2_k`j| z-b@t5@yZ(z=xYk7L)Lyx_Bu3&=P94jH`@F<N6Zeng9)WkHPop+NJ&pk2y zQw6FMRA;CzP+hg@pQcAPmo8~fpGzO$Wp>rNwbS3H-zw>KVr-qIsnjg?fyJ)H)$YaB zt~!gK$^&J=}1$;QQ`Z;$MY=wgeDJW-9ou#!Dq(Y07g5ROYVHu$q`ga9`qx>8N&a&|94`5{8n+mZMoKNF_N}vwl3FD9 zVFqI)-wFMz;&Z1>VO3|DAo*HL>MRo_UrQ0&Pm-E_lvigdkbE8-5|@x1n^0$&Ecp!5 zJ{+F$!GhqrjwSiiCl%&*5L)}`C6d=Mdf`+?FUv?sNZn6oIAZH8K9X1efe?6c7Jl4S z{6Dj*%2n;I&a8G-WwNuumT1Xxke)l8(aW_24wk^hlBz7IY^a`4NQSPG>3zgMT{0c) zS!cenh6fBs+BbROh)UbRqkpIPFr>+%!|iE$Cgr^Z%4`e=>5QU$^7aA&>fPwZZ33LGM5d2A6G(r zdD(p+bkQF4Qin+qxE-S)6SybtZ9(?H)LWAB`a|zSKQ&b&g58{i$PHu$@&Z|boLE9p z-fFT>odvhGB#y7MShYNF^(!yj&SuI(sm4CN-g$ajBcrgWcj(?)m#gED%EFT3NfRby z7Ej49FVCM-XDQPrwNU-NFc(@8tUA0OM($cApJ!=fuxf7}kjoqpNsF)KyP19pR@41M zCRDi+D~d`cx2v;+NyNMDOw_b-Hwve4ha0?U-}XbN7R5{|E1VNkHW`;i zs(9Tut&?}iq@tLTvV!~)m+hY&gnAs*7c{A0gRKpf^-$YTVGlLaI&DM8p;K#iWdxh8 zxceb=S4Lt}tMqTTYeN@|`P5MIa;cjF-*>xKyk5eEH2`_{A#Bqr%B_aeS(i#J4&G&Z zM0?z=Hj{kU-6`AP`%{)7FL>Kt7jzJI!f@ebi{LC`A*Hg5bi zC!-VX%u?0n!EV;ler@inR1q+Y5bNkcU1t&X->*Fb)S zRt!>G`>q#`E&eWBPukI6O{LxgAn9gWHb9M*w$RoA>Z-(#J&x{X`?O0JK~&%8F{)FO zaAED*9Q7T)Z#**8Sxw(l$w2jh^;ZPi36H0#!IV2lohIGVwhdCRO4vlbDNlVAYXFYH z>gn)r?nKKR*C3AOL@jxUy3`z(-ylWIsT&e2=gcUIS>-ZPvd(J0hrS%HzG|K8iDHDw z{3yLTLd7lzt@%jxsD$Z^v!m337%6oat$vBkhdR<|+!*zOWx)m;h6H2Pbb4g0nrC@t zgDr=ajZ<@MMi!Yr*4m9zJEJ*30`3^E2GRZF)h<{x{P%eEMJ)UcoS^QuUP9PisdSEWccg zs@0b!7OESt62i!97}(qF^hu$bL}!ZBX7pf@ItTMcy3>5>I9Xk5X}`hdrmA8!gw{<_ z)2Q_n)f*EqiBr@em|K}MMSTye2)g@+sBEgb1;@>Gw2&qgtIwiF>j5q0fZ}LJu^K^r z?@?!BJFHG$$@DauI1QW=r>Pa_>gx23Oh*<^Qxoa-G<7rPGTtarlhOA*QKGKGfdBsK z>WeD|}Tcy|zlGJKAC>lz6;?My|9i=p?)zmiFxUW0-K~ux9 z6ls136{M#i<-G&a5W0s+qlBL#-B0+m{~FGW2ExW{>tw^ET$`a-pbxg9qHm_(x1!SQrGD?KgREb;U9V52+IR3-*z&F#fK~s! z@2dYYTih;Mf5_RID&JFc%@H1S{yns$cIvbZRUPA^?Wm25x2YlMZm-{_j=&yvkP@Xr zO5U#KhF8=VFVn0B<~g)^2b#<^+tm(!Pd1=GjW?FnEWZ~TkX|DD`|6;iHyV)e9lO(@ znzl5sc!yqvTfe;xNC!BiKnngq&Gh@S0sR~mexNSIp_-pRP$!|C&fB35@r$o_U`}F> zy>Y7I#tt=G%4Wd=DQ_ooX$Z~Rsb-@0y=$i$D^1nD-Kmb3uw^TI7vKt-yi1M4yM;xf^yL(~8|{3i=8AcB`q_&hZOtXQ=fa ze0R=M)*d7#4pQw=GjMn0>OHE(@3{uMEOo+q_rJ!Zo@3)mY8GU(GOUvk#)7b+*5oi>nc?-Ov_nCzMSV zTwHe{?eZb@87VxiK`^d{K%4W4y2465j;on-+v|!G&)xca$o zcq-Zo5ix|7b_XO@&`V#dZRyvq)s(rl8{)flYwzM87-QLpAIR%$?}B0)O#A~{chI`) zG??OJb)%EL;0LjaWwZVZZ{3-WAEvWe{{@e3-CR&G#KI7(^*fImOXt2(&*HFy`vMBk zeERKMHKAFeo`Ug6PHgcj>(q+6euoyNhVs5s%jd2|gOQvOQ&~2{6;r#RLq^P9?V{1f zd*d7DvNy70_bD0ZomN(sP4_r_6As&Wi0mRR1N{__?Ypo|%7{sFN!YHL)65#Or`IHLIA_oz$fX~p+w<9?t^-=k_=rO*q|ZgCpe zO?XoUi4aFMNDz|^vy|VdIkci#MhM9l)xq@2MYPI~T~wp!!;5N_fP;TfV;B~!z4n7@ z?U?FLo|Ru-oUaRE3FgQczo{5U6iUrr85UoeKjm$g-bb^fQo1#$`G(ou$RnIT+e2$vbcWrlE>q3yVWHbqL+zP_rivif0Y8eddW z$zw8%eyjgbvqLhg+->xs(S(ZP`-?E{(*Mzqe<1xb$^W{V7!D^@nX$8ZOqM*OysYrv zf=ZY{qk-4eDgGcQR#fJfS0+@Tm{etId# zKyY<2fCHgr>Q*7TtRcEUA(@M_7iS~c5bed;+IwcFl@|ziTAbxR`I)tovTBE9)=s8w zR%da*V3)g=Sr6_l^kJk~odtg5GHc!L+R^UXiSF70O7?Otk5^GBT$#G#Zdt-{w@gEa z+p$@-W9U0C=Mw`}cb3bQ%?|xlcc#mgWf(o){hcm2=&4hkE;tZwoy^~G%MJ_<^j=fv z_PBm-5pq8vfxnZ(Fj#OH*ASOyyGoNk@-c z=K{JL{<<6K*NcjMoooI_{(Ja2yGNpUis%PJpDNNk&>*4v?dN>KmSTjAJI9(ki(@P? zeT0uB&{3U{L7dCI?!;$bb7w_R7|2Ez24@NPF_hcF`ET^(%>K?Zw!wyN8eQ~v=6hLU zdS%uQr{Mw4;U-HAy%FG?C=J&9TXOkIqmV%7_!g-sPlfJPZkHZj3@re$_28Z&_`%tR z-pgG(NQ9R_e+4@CNrP!`kn_HPPzW?2lgrY`%-Zo;wWDZIuybhoU_<=TMqwRoh&3AY zB6sZw!8NqW-|kgC(OEaCQj@1KX=K6+5y8$u-kKxI*=?2o{wA2(Gf7RZVj9IPnRn9M z9nK}*M=){MQZg4)tDQ~_NAZsBbmH-r32=icp*QG<51s9?S{c5}S>4uAkUzadd^#r> zJqW!PN7;3YhJ6ONwq}28Lt#q1{tiefJhBNXDrsYp5DwmS?x!jpqf>=>hP+447S|P=!Yk@yIF(Ms6 zQJ0-biJyQ=`z-X5ic5-E%IRgLQqujd%*828oL*c}ASGF-__FgwEb3XWI2DZjGOi#C z9w75o=cD-KJaN_eLEd>isMMVN;?fEEHVtijO7w#n}gA+_S$p%Q280@~d-LU;+H6<(4Di z#MG!1^)9{lt23`<9EUXc-qOnA>EJzCijSeFYtAhHNYGO-Pd1@wc5$VY{EasAn)9|9 zdlJj8J0r2;xahj`A#Aa1cEcHig}t_{Jxn>!<{m&$9fp?YmsXVIS5}r6PrA3VNQz0~ zD5VK#*qxUv?f=$ONacz|WmaUontVMi(YrgLVCv5+U3U6swK yl)`S&ikr^P7;k-k)7jpHISQ{^&gk$7Lq_FfVtW9uHG5^DklNGJ(?@o4$o~g@G(MOB