From 38337d63e3d6f9658c26ec11aa93ff402dac83e2 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 18:57:29 +0200 Subject: [PATCH 01/43] de-duplicates functions --- .../blender/exp/gltf2_blender_gather_image.py | 19 +++--------- .../exp/gltf2_blender_gather_materials.py | 13 +++++---- ...ltf2_blender_gather_materials_clearcoat.py | 7 +++-- ...gather_materials_pbr_metallic_roughness.py | 19 ++++-------- .../gltf2_blender_gather_materials_sheen.py | 5 ++-- ...gltf2_blender_gather_materials_specular.py | 7 +++-- ...2_blender_gather_materials_transmission.py | 3 +- .../gltf2_blender_gather_materials_volume.py | 5 ++-- .../exp/gltf2_blender_gather_texture.py | 13 ++------- .../exp/gltf2_blender_gather_texture_info.py | 29 ++++++------------- .../blender/exp/gltf2_blender_get.py | 9 ------ .../exp/gltf2_blender_search_node_tree.py | 16 ++++++++++ 12 files changed, 60 insertions(+), 85 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py index 3eff08cd7..03cb3c94d 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py @@ -18,7 +18,7 @@ from . import gltf2_blender_export_keys from io_scene_gltf2.io.com import gltf2_io -from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket from io_scene_gltf2.io.exp import gltf2_io_binary_data from io_scene_gltf2.io.exp import gltf2_io_image_data from io_scene_gltf2.io.com import gltf2_io_debug @@ -196,7 +196,7 @@ def __get_image_data(sockets, export_settings) -> ExportImage: # For shared resources, such as images, we just store the portion of data that is needed in the glTF property # in a helper class. During generation of the glTF in the exporter these will then be combined to actual binary # resources. - results = [__get_tex_from_socket(socket, export_settings) for socket in sockets] + results = [get_texture_node_from_socket(socket, export_settings) for socket in sockets] # Check if we need a simple mapping or more complex calculation if any([socket.name == "Specular" and socket.node.type == "BSDF_PRINCIPLED" for socket in sockets]): @@ -289,7 +289,7 @@ def __get_image_data_specular(sockets, results, export_settings) -> ExportImage: composed_image.store_data("ior", sockets[4].default_value, type="Data") - results = [__get_tex_from_socket(socket, export_settings) for socket in sockets[:-1]] #Do not retrieve IOR --> No texture allowed + results = [get_texture_node_from_socket(socket, export_settings) for socket in sockets[:-1]] #Do not retrieve IOR --> No texture allowed mapping = { 0: "specular", @@ -299,7 +299,7 @@ def __get_image_data_specular(sockets, results, export_settings) -> ExportImage: } for idx, result in enumerate(results): - if __get_tex_from_socket(sockets[idx], export_settings): + if get_texture_node_from_socket(sockets[idx], export_settings): composed_image.store_data(mapping[idx], result.shader_node.image, type="Image") @@ -326,17 +326,6 @@ def __get_image_data_specular(sockets, results, export_settings) -> ExportImage: return composed_image -# TODOExt deduplicate -@cached -def __get_tex_from_socket(blender_shader_socket: bpy.types.NodeSocket, export_settings): - result = gltf2_blender_search_node_tree.from_socket( - blender_shader_socket, - gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeTexImage)) - if not result: - return None - return result[0] - - def __is_blender_image_a_jpeg(image: bpy.types.Image) -> bool: if image.source != 'FILE': return False diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index 18e49f37b..eadc51be6 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -33,6 +33,7 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_clearcoat import export_clearcoat from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_ior import export_ior from io_scene_gltf2.io.com.gltf2_io_extensions import Extension +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket @cached def get_material_cache_key(blender_material, active_uvmap_index, export_settings): @@ -304,20 +305,20 @@ def __gather_orm_texture(blender_material, export_settings): # If not fully shared, return None, so the images will be cached and processed separately. occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") - if occlusion is None or not gltf2_blender_get.has_image_node_from_socket(occlusion): + if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): occlusion = gltf2_blender_get.get_socket_old(blender_material, "Occlusion") - if occlusion is None or not gltf2_blender_get.has_image_node_from_socket(occlusion): + if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): return None metallic_socket = gltf2_blender_get.get_socket(blender_material, "Metallic") roughness_socket = gltf2_blender_get.get_socket(blender_material, "Roughness") - hasMetal = metallic_socket is not None and gltf2_blender_get.has_image_node_from_socket(metallic_socket) - hasRough = roughness_socket is not None and gltf2_blender_get.has_image_node_from_socket(roughness_socket) + hasMetal = metallic_socket is not None and has_image_node_from_socket(metallic_socket, export_settings) + hasRough = roughness_socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: metallic_roughness = gltf2_blender_get.get_socket_old(blender_material, "MetallicRoughness") - if metallic_roughness is None or not gltf2_blender_get.has_image_node_from_socket(metallic_roughness): + if metallic_roughness is None or not has_image_node_from_socket(metallic_roughness, export_settings): return None result = (occlusion, metallic_roughness) elif not hasMetal: @@ -327,7 +328,7 @@ def __gather_orm_texture(blender_material, export_settings): else: result = (occlusion, roughness_socket, metallic_socket) - if not gltf2_blender_gather_texture_info.check_same_size_images(result): + if not gltf2_blender_gather_texture_info.check_same_size_images(result, export_settings): print_console("INFO", "Occlusion and metal-roughness texture will be exported separately " "(use same-sized images if you want them combined)") diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py index 3f2045f08..01ab8d221 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py @@ -15,6 +15,7 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.blender.exp import gltf2_blender_get +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info def export_clearcoat(blender_material, export_settings): @@ -32,7 +33,7 @@ def export_clearcoat(blender_material, export_settings): if isinstance(clearcoat_socket, bpy.types.NodeSocket) and not clearcoat_socket.is_linked: clearcoat_extension['clearcoatFactor'] = clearcoat_socket.default_value clearcoat_enabled = clearcoat_extension['clearcoatFactor'] > 0 - elif gltf2_blender_get.has_image_node_from_socket(clearcoat_socket): + elif has_image_node_from_socket(clearcoat_socket, export_settings): fac = gltf2_blender_get.get_factor_from_socket(clearcoat_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 clearcoat_extension['clearcoatFactor'] = fac if fac != None else 1.0 @@ -44,7 +45,7 @@ def export_clearcoat(blender_material, export_settings): if isinstance(clearcoat_roughness_socket, bpy.types.NodeSocket) and not clearcoat_roughness_socket.is_linked: clearcoat_extension['clearcoatRoughnessFactor'] = clearcoat_roughness_socket.default_value - elif gltf2_blender_get.has_image_node_from_socket(clearcoat_roughness_socket): + elif has_image_node_from_socket(clearcoat_roughness_socket, export_settings): fac = gltf2_blender_get.get_factor_from_socket(clearcoat_roughness_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 clearcoat_extension['clearcoatRoughnessFactor'] = fac if fac != None else 1.0 @@ -79,7 +80,7 @@ def export_clearcoat(blender_material, export_settings): clearcoat_extension['clearcoatRoughnessTexture'] = clearcoat_roughness_texture if clearcoat_roughness_texture_use_active_uvmap: use_actives_uvmaps.append("clearcoatRoughnessTexture") - if gltf2_blender_get.has_image_node_from_socket(clearcoat_normal_socket): + if has_image_node_from_socket(clearcoat_normal_socket, export_settings): clearcoat_normal_texture, clearcoat_normal_texture_use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_material_normal_texture_info_class( clearcoat_normal_socket, (clearcoat_normal_socket,), diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py index a3ea357e6..69c34fbe5 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py @@ -15,7 +15,8 @@ import bpy from io_scene_gltf2.io.com import gltf2_io -from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info, gltf2_blender_search_node_tree +from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions @@ -100,7 +101,7 @@ def __gather_base_color_texture(blender_material, export_settings): # keep sockets that have some texture : color and/or alpha inputs = tuple( socket for socket in [base_color_socket, alpha_socket] - if socket is not None and __has_image_node_from_socket(socket) + if socket is not None and has_image_node_from_socket(socket, export_settings) ) if not inputs: return None, None, None @@ -133,12 +134,12 @@ def __gather_metallic_roughness_texture(blender_material, orm_texture, export_se metallic_socket = gltf2_blender_get.get_socket(blender_material, "Metallic") roughness_socket = gltf2_blender_get.get_socket(blender_material, "Roughness") - hasMetal = metallic_socket is not None and __has_image_node_from_socket(metallic_socket) - hasRough = roughness_socket is not None and __has_image_node_from_socket(roughness_socket) + hasMetal = metallic_socket is not None and has_image_node_from_socket(metallic_socket, export_settings) + hasRough = roughness_socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: metallic_roughness = gltf2_blender_get.get_socket_old(blender_material, "MetallicRoughness") - if metallic_roughness is None or not __has_image_node_from_socket(metallic_roughness): + if metallic_roughness is None or not has_image_node_from_socket(metallic_roughness, export_settings): return None, None, None texture_input = (metallic_roughness,) elif not hasMetal: @@ -167,14 +168,6 @@ def __gather_roughness_factor(blender_material, export_settings): return fac if fac != 1 else None return None -def __has_image_node_from_socket(socket): - result = gltf2_blender_search_node_tree.from_socket( - socket, - gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeTexImage)) - if not result: - return False - return True - def get_default_pbr_for_emissive_node(): return gltf2_io.MaterialPBRMetallicRoughness( base_color_factor=[0.0,0.0,0.0,1.0], diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py index a750fbe19..339aa1336 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py @@ -16,6 +16,7 @@ from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket def export_sheen(blender_material, export_settings): @@ -44,7 +45,7 @@ def export_sheen(blender_material, export_settings): sheen_extension['sheenColorFactor'] = fac # Texture - if gltf2_blender_get.has_image_node_from_socket(sheenColor_socket): + if has_image_node_from_socket(sheenColor_socket, export_settings): original_sheenColor_texture, original_sheenColor_use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_texture_info( sheenColor_socket, (sheenColor_socket,), @@ -66,7 +67,7 @@ def export_sheen(blender_material, export_settings): sheen_extension['sheenRoughnessFactor'] = fac # Texture - if gltf2_blender_get.has_image_node_from_socket(sheenRoughness_socket): + if has_image_node_from_socket(sheenRoughness_socket, export_settings): original_sheenRoughness_texture, original_sheenRoughness_use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_texture_info( sheenRoughness_socket, (sheenRoughness_socket,), diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py index 96ea90413..c88734f50 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py @@ -18,6 +18,7 @@ from io_scene_gltf2.io.com.gltf2_io_constants import GLTF_IOR from io_scene_gltf2.blender.com.gltf2_blender_default import BLENDER_SPECULAR, BLENDER_SPECULAR_TINT from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket @@ -47,7 +48,7 @@ def export_original_specular(blender_material, export_settings): specular_extension['specularFactor'] = fac # Texture - if gltf2_blender_get.has_image_node_from_socket(original_specular_socket): + if has_image_node_from_socket(original_specular_socket, export_settings): original_specular_texture, original_specular_use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_texture_info( original_specular_socket, (original_specular_socket,), @@ -69,7 +70,7 @@ def export_original_specular(blender_material, export_settings): specular_extension['specularColorFactor'] = fac # Texture - if gltf2_blender_get.has_image_node_from_socket(original_specularcolor_socket): + if has_image_node_from_socket(original_specularcolor_socket, export_settings): original_specularcolor_texture, original_specularcolor_use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_texture_info( original_specularcolor_socket, (original_specularcolor_socket,), @@ -98,7 +99,7 @@ def export_specular(blender_material, export_settings): if base_color_socket is None: return None, None - # TODOExt replace by __has_image_node_from_socket calls + # TODOExt replace by has_image_node_from_socket calls specular_not_linked = isinstance(specular_socket, bpy.types.NodeSocket) and not specular_socket.is_linked specular_tint_not_linked = isinstance(specular_tint_socket, bpy.types.NodeSocket) and not specular_tint_socket.is_linked base_color_not_linked = isinstance(base_color_socket, bpy.types.NodeSocket) and not base_color_socket.is_linked diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py index 0522d70d1..464d275c9 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py @@ -16,6 +16,7 @@ from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket def export_transmission(blender_material, export_settings): transmission_enabled = False @@ -29,7 +30,7 @@ def export_transmission(blender_material, export_settings): if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked: transmission_extension['transmissionFactor'] = transmission_socket.default_value transmission_enabled = transmission_extension['transmissionFactor'] > 0 - elif gltf2_blender_get.has_image_node_from_socket(transmission_socket): + elif has_image_node_from_socket(transmission_socket, export_settings): fac = gltf2_blender_get.get_factor_from_socket(transmission_socket, kind='VALUE') transmission_extension['transmissionFactor'] = fac if fac is not None else 1.0 has_transmission_texture = True diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index b2dda8c57..09138e7a9 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -16,6 +16,7 @@ from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket def export_volume(blender_material, export_settings): @@ -26,7 +27,7 @@ def export_volume(blender_material, export_settings): transmission_socket = gltf2_blender_get.get_socket(blender_material, 'Transmission') if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked: transmission_enabled = transmission_socket.default_value > 0 - elif gltf2_blender_get.has_image_node_from_socket(transmission_socket): + elif has_image_node_from_socket(transmission_socket, export_settings): transmission_enabled = True if transmission_enabled is False: @@ -60,7 +61,7 @@ def export_volume(blender_material, export_settings): # If no thickness, no volume extension export return None, None volume_extension['thicknessFactor'] = val - elif gltf2_blender_get.has_image_node_from_socket(thicknesss_socket): + elif has_image_node_from_socket(thicknesss_socket, export_settings): fac = gltf2_blender_get.get_factor_from_socket(thicknesss_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 volume_extension['thicknessFactor'] = fac if fac != None else 1.0 diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py index 4f9afe36a..67db4c3c4 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -18,7 +18,7 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_sampler -from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket from io_scene_gltf2.blender.exp import gltf2_blender_gather_image from io_scene_gltf2.io.com import gltf2_io_debug from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions @@ -79,7 +79,7 @@ def __gather_name(blender_shader_sockets, export_settings): def __gather_sampler(blender_shader_sockets, export_settings): - shader_nodes = [__get_tex_from_socket(socket) for socket in blender_shader_sockets] + shader_nodes = [get_texture_node_from_socket(socket, export_settings) for socket in blender_shader_sockets] if len(shader_nodes) > 1: gltf2_io_debug.print_console("WARNING", "More than one shader node tex image used for a texture. " @@ -94,12 +94,3 @@ def __gather_source(blender_shader_sockets, export_settings): return gltf2_blender_gather_image.gather_image(blender_shader_sockets, export_settings) # Helpers - -# TODOExt deduplicate -def __get_tex_from_socket(socket): - result = gltf2_blender_search_node_tree.from_socket( - socket, - gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeTexImage)) - if not result: - return None - return result[0] diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index 526301de9..3a438eeab 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -17,7 +17,7 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture -from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket, from_socket, FilterByType from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp.gltf2_blender_get import previous_node from io_scene_gltf2.blender.exp.gltf2_blender_gather_sampler import detect_manual_uv_wrapping @@ -83,7 +83,7 @@ def __gather_texture_info_helper( def __filter_texture_info(primary_socket, blender_shader_sockets, filter_type, export_settings): if primary_socket is None: return False - if __get_tex_from_socket(primary_socket) is None: + if get_texture_node_from_socket(primary_socket, export_settings) is None: return False if not blender_shader_sockets: return False @@ -91,12 +91,12 @@ def __filter_texture_info(primary_socket, blender_shader_sockets, filter_type, e return False if filter_type == "ALL": # Check that all sockets link to texture - if any([__get_tex_from_socket(socket) is None for socket in blender_shader_sockets]): + if any([get_texture_node_from_socket(socket, export_settings) is None for socket in blender_shader_sockets]): # sockets do not lead to a texture --> discard return False elif filter_type == "ANY": # Check that at least one socket link to texture - if all([__get_tex_from_socket(socket) is None for socket in blender_shader_sockets]): + if all([get_texture_node_from_socket(socket, export_settings) is None for socket in blender_shader_sockets]): return False elif filter_type == "NONE": # No check @@ -118,9 +118,9 @@ def __gather_extras(blender_shader_sockets, export_settings): # MaterialNormalTextureInfo only def __gather_normal_scale(primary_socket, export_settings): - result = gltf2_blender_search_node_tree.from_socket( + result = from_socket( primary_socket, - gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeNormalMap)) + FilterByType(bpy.types.ShaderNodeNormalMap)) if not result: return None strengthInput = result[0].shader_node.inputs['Strength'] @@ -159,7 +159,7 @@ def __gather_texture_transform_and_tex_coord(primary_socket, export_settings): # # The [UV Wrapping] is for wrap modes like MIRROR that use nodes, # [Mapping] is for KHR_texture_transform, and [UV Map] is for texCoord. - blender_shader_node = __get_tex_from_socket(primary_socket).shader_node + blender_shader_node = get_texture_node_from_socket(primary_socket, export_settings).shader_node # Skip over UV wrapping stuff (it goes in the sampler) result = detect_manual_uv_wrapping(blender_shader_node) @@ -186,20 +186,9 @@ def __gather_texture_transform_and_tex_coord(primary_socket, export_settings): return texture_transform, texcoord_idx or None, use_active_uvmap -# TODOExt deduplicate -def __get_tex_from_socket(socket): - result = gltf2_blender_search_node_tree.from_socket( - socket, - gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeTexImage)) - if not result: - return None - if result[0].shader_node.image is None: - return None - return result[0] - - def check_same_size_images( blender_shader_sockets: typing.Tuple[bpy.types.NodeSocket], + export_settings ) -> bool: """Check that all sockets leads to images of the same size.""" if not blender_shader_sockets or not all(blender_shader_sockets): @@ -207,7 +196,7 @@ def check_same_size_images( sizes = set() for socket in blender_shader_sockets: - tex = __get_tex_from_socket(socket) + tex = get_texture_node_from_socket(socket, export_settings) if tex is None: return False size = tex.shader_node.image.size diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index f8f1bdccb..26fdff5f4 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -18,7 +18,6 @@ from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name from ...blender.com.gltf2_blender_conversion import texture_transform_blender_to_gltf from io_scene_gltf2.io.com import gltf2_io_debug -from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree def get_animation_target(action_group: bpy.types.ActionGroup): @@ -317,11 +316,3 @@ def previous_node(socket): return prev_socket.node return None -#TODOExt is this the same as __get_tex_from_socket from gather_image ? -def has_image_node_from_socket(socket): - result = gltf2_blender_search_node_tree.from_socket( - socket, - gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeTexImage)) - if not result: - return False - return True diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index c1fba51b2..54fd635a1 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -17,6 +17,7 @@ # import bpy +from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached import typing @@ -99,3 +100,18 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, return [] return __search_from_socket(start_socket, shader_node_filter, []) + +@cached +def get_texture_node_from_socket(socket, export_settings): + result = from_socket( + socket, + FilterByType(bpy.types.ShaderNodeTexImage)) + if not result: + return None + if result[0].shader_node.image is None: + return None + return result[0] + +def has_image_node_from_socket(socket, export_settings): + result = get_texture_node_from_socket(socket, export_settings) + return result is not None \ No newline at end of file From 86652d3da89a8fc9b05e3f406a357ccc41f51ef7 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:03:39 +0200 Subject: [PATCH 02/43] fix condition on return --- .../blender/exp/gltf2_blender_search_node_tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 54fd635a1..c0df2468d 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -114,4 +114,4 @@ def get_texture_node_from_socket(socket, export_settings): def has_image_node_from_socket(socket, export_settings): result = get_texture_node_from_socket(socket, export_settings) - return result is not None \ No newline at end of file + return len(result) > 0 \ No newline at end of file From 0f9c7e7247a9f1de7537d6bc912232198697527e Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:10:04 +0200 Subject: [PATCH 03/43] more use of has_image_node_from_socket --- .../exp/gltf2_blender_gather_materials_specular.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py index c88734f50..35ceee452 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py @@ -99,12 +99,11 @@ def export_specular(blender_material, export_settings): if base_color_socket is None: return None, None - # TODOExt replace by has_image_node_from_socket calls - specular_not_linked = isinstance(specular_socket, bpy.types.NodeSocket) and not specular_socket.is_linked - specular_tint_not_linked = isinstance(specular_tint_socket, bpy.types.NodeSocket) and not specular_tint_socket.is_linked - base_color_not_linked = isinstance(base_color_socket, bpy.types.NodeSocket) and not base_color_socket.is_linked - transmission_not_linked = isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked - ior_not_linked = isinstance(ior_socket, bpy.types.NodeSocket) and not ior_socket.is_linked + specular_not_linked = not has_image_node_from_socket(specular_socket, export_settings) + specular_tint_not_linked = not has_image_node_from_socket(specular_tint_socket, export_settings) + base_color_not_linked = not has_image_node_from_socket(base_color_socket, export_settings) + transmission_not_linked = not has_image_node_from_socket(transmission_socket, export_settings) + ior_not_linked = not has_image_node_from_socket(ior_socket, export_settings) specular = specular_socket.default_value if specular_not_linked else None specular_tint = specular_tint_socket.default_value if specular_tint_not_linked else None From a59ac9da31e5eaded212c97e61bd979e5edd7912 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:11:11 +0200 Subject: [PATCH 04/43] rollback condition change --- .../blender/exp/gltf2_blender_search_node_tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index c0df2468d..54fd635a1 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -114,4 +114,4 @@ def get_texture_node_from_socket(socket, export_settings): def has_image_node_from_socket(socket, export_settings): result = get_texture_node_from_socket(socket, export_settings) - return len(result) > 0 \ No newline at end of file + return result is not None \ No newline at end of file From ffdeb5c8d472aaeaf8bd357e74e79a2ee42013e9 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:18:27 +0200 Subject: [PATCH 05/43] remove dead code --- .../blender/exp/gltf2_blender_gather_materials.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index eadc51be6..fa6a867d3 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -155,21 +155,6 @@ def gather_material(blender_material, active_uvmap_index, export_settings): export_user_extensions('gather_material_hook', export_settings, material, blender_material) return material - # material = blender_primitive['material'] - # - # if get_material_requires_texcoords(glTF, material) and not export_settings['gltf_texcoords']: - # material = -1 - # - # if get_material_requires_normals(glTF, material) and not export_settings['gltf_normals']: - # material = -1 - # - # # Meshes/primitives without material are allowed. - # if material >= 0: - # primitive.material = material - # else: - # print_console('WARNING', 'Material ' + internal_primitive[ - # 'material'] + ' not found. Please assign glTF 2.0 material or enable Blinn-Phong material in export.') - def __get_new_material_texture_shared(base, node): if node is None: From aa1fcaf20000c2f67bab9f06d493675d9a5da07e Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:26:28 +0200 Subject: [PATCH 06/43] move function to another file --- .../exp/gltf2_blender_gather_materials_emission.py | 3 ++- ...lender_gather_materials_pbr_metallic_roughness.py | 6 +++--- .../exp/gltf2_blender_gather_materials_volume.py | 8 +++++--- .../io_scene_gltf2/blender/exp/gltf2_blender_get.py | 10 ---------- .../blender/exp/gltf2_blender_search_node_tree.py | 12 +++++++++++- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py index 17f663c20..a0bfdb1ed 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py @@ -16,6 +16,7 @@ from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_const_from_default_value_socket def export_emission_factor(blender_material, export_settings): emissive_socket = gltf2_blender_get.get_socket(blender_material, "Emissive") @@ -25,7 +26,7 @@ def export_emission_factor(blender_material, export_settings): if export_settings['gltf_image_format'] != "NONE": factor = gltf2_blender_get.get_factor_from_socket(emissive_socket, kind='RGB') else: - factor = gltf2_blender_get.get_const_from_default_value_socket(emissive_socket, kind='RGB') + factor = get_const_from_default_value_socket(emissive_socket, kind='RGB') if factor is None and emissive_socket.is_linked: # In glTF, the default emissiveFactor is all zeros, so if an emission texture is connected, diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py index 69c34fbe5..b2cad4a21 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py @@ -16,7 +16,7 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_const_from_default_value_socket from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions @@ -67,7 +67,7 @@ def __gather_base_color_factor(blender_material, export_settings): if export_settings['gltf_image_format'] != "NONE": alpha = gltf2_blender_get.get_factor_from_socket(alpha_socket, kind='VALUE') else: - alpha = gltf2_blender_get.get_const_from_default_value_socket(alpha_socket, kind='VALUE') + alpha = get_const_from_default_value_socket(alpha_socket, kind='VALUE') base_color_socket = gltf2_blender_get.get_socket(blender_material, "Base Color") if base_color_socket is None: @@ -78,7 +78,7 @@ def __gather_base_color_factor(blender_material, export_settings): if export_settings['gltf_image_format'] != "NONE": rgb = gltf2_blender_get.get_factor_from_socket(base_color_socket, kind='RGB') else: - rgb = gltf2_blender_get.get_const_from_default_value_socket(base_color_socket, kind='RGB') + rgb = get_const_from_default_value_socket(base_color_socket, kind='RGB') if rgb is None: rgb = [1.0, 1.0, 1.0] if alpha is None: alpha = 1.0 diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index 09138e7a9..fc3ecbeae 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -16,7 +16,9 @@ from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + has_image_node_from_socket, \ + get_const_from_default_value_socket def export_volume(blender_material, export_settings): @@ -47,11 +49,11 @@ def export_volume(blender_material, export_settings): # Even if density or attenuation are not set, we export volume extension if isinstance(attenuation_color_socket, bpy.types.NodeSocket): - rgb = gltf2_blender_get.get_const_from_default_value_socket(attenuation_color_socket, kind='RGB') + rgb = get_const_from_default_value_socket(attenuation_color_socket, kind='RGB') volume_extension['attenuationColor'] = rgb if isinstance(density_socket, bpy.types.NodeSocket): - density = gltf2_blender_get.get_const_from_default_value_socket(density_socket, kind='VALUE') + density = get_const_from_default_value_socket(density_socket, kind='VALUE') volume_extension['attenuationDistance'] = 1.0 / density if density != 0 else None # infinity (Using None as glTF default) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index 26fdff5f4..f493a7cd4 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -265,16 +265,6 @@ def get_factor_from_socket(socket, kind): return None -def get_const_from_default_value_socket(socket, kind): - if kind == 'RGB': - if socket.type != 'RGBA': return None - return list(socket.default_value)[:3] - if kind == 'VALUE': - if socket.type != 'VALUE': return None - return socket.default_value - return None - - def get_const_from_socket(socket, kind): if not socket.is_linked: if kind == 'RGB': diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 54fd635a1..ba3da19fc 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -114,4 +114,14 @@ def get_texture_node_from_socket(socket, export_settings): def has_image_node_from_socket(socket, export_settings): result = get_texture_node_from_socket(socket, export_settings) - return result is not None \ No newline at end of file + return result is not None + +# return the default value of a socket, even if this socket is linked +def get_const_from_default_value_socket(socket, kind): + if kind == 'RGB': + if socket.type != 'RGBA': return None + return list(socket.default_value)[:3] + if kind == 'VALUE': + if socket.type != 'VALUE': return None + return socket.default_value + return None \ No newline at end of file From de620c73fb5ca5f4fe87a403751a1537f59640aa Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:27:06 +0200 Subject: [PATCH 07/43] remove no more used function --- .../blender/exp/gltf2_blender_get.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index f493a7cd4..557a21f40 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -219,24 +219,6 @@ def inverted(mapping_transform): return texture_transform -def get_node(data_path): - """Return Blender node on a given Blender data path.""" - if data_path is None: - return None - - index = data_path.find("[\"") - if (index == -1): - return None - - node_name = data_path[(index + 2):] - - index = node_name.find("\"") - if (index == -1): - return None - - return node_name[:(index)] - - def get_factor_from_socket(socket, kind): """ For baseColorFactor, metallicFactor, etc. From 755681d46fe4db45b9f273bdd48f4a5a9269cece Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:29:05 +0200 Subject: [PATCH 08/43] add comment --- .../io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index ba3da19fc..fc8ebc5b0 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -58,6 +58,7 @@ def __call__(self, shader_node): return isinstance(shader_node, self.type) +#TODO: is path still used somewhere ? class NodeTreeSearchResult: def __init__(self, shader_node: bpy.types.Node, path: typing.List[bpy.types.NodeLink]): self.shader_node = shader_node From 5c65c588fbf4bc419e7ad6ceab366dcab7b87e8b Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:30:15 +0200 Subject: [PATCH 09/43] remove no more used function --- .../blender/exp/gltf2_blender_get.py | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index 557a21f40..284206f86 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -127,26 +127,6 @@ def check_if_is_linked_to_active_output(shader_socket): return False -def find_shader_image_from_shader_socket(shader_socket, max_hops=10): - """Find any ShaderNodeTexImage in the path from the socket.""" - if shader_socket is None: - return None - - if max_hops <= 0: - return None - - for link in shader_socket.links: - if isinstance(link.from_node, bpy.types.ShaderNodeTexImage): - return link.from_node - - for socket in link.from_node.inputs.values(): - image = find_shader_image_from_shader_socket(shader_socket=socket, max_hops=max_hops - 1) - if image is not None: - return image - - return None - - def get_texture_transform_from_mapping_node(mapping_node): if mapping_node.vector_type not in ["TEXTURE", "POINT", "VECTOR"]: gltf2_io_debug.print_console("WARNING", From f4fd3deb4fd02dc68da800175264e8dc8e7e6721 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:43:13 +0200 Subject: [PATCH 10/43] remove compatibility with old custom sockets --- .../blender/exp/gltf2_blender_gather_materials.py | 13 +------------ .../exp/gltf2_blender_gather_materials_emission.py | 4 ---- ...ender_gather_materials_pbr_metallic_roughness.py | 13 +------------ 3 files changed, 2 insertions(+), 28 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index fa6a867d3..897c07055 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -196,12 +196,6 @@ def __gather_alpha_mode(blender_material, export_settings): def __gather_double_sided(blender_material, export_settings): if not blender_material.use_backface_culling: return True - - old_double_sided_socket = gltf2_blender_get.get_socket_old(blender_material, "DoubleSided") - if old_double_sided_socket is not None and\ - not old_double_sided_socket.is_linked and\ - old_double_sided_socket.default_value > 0.5: - return True return None @@ -276,8 +270,6 @@ def __gather_name(blender_material, export_settings): def __gather_normal_texture(blender_material, export_settings): normal = gltf2_blender_get.get_socket(blender_material, "Normal") - if normal is None: - normal = gltf2_blender_get.get_socket_old(blender_material, "Normal") normal_texture, use_active_uvmap_normal, _ = gltf2_blender_gather_texture_info.gather_material_normal_texture_info_class( normal, (normal,), @@ -302,10 +294,7 @@ def __gather_orm_texture(blender_material, export_settings): hasRough = roughness_socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: - metallic_roughness = gltf2_blender_get.get_socket_old(blender_material, "MetallicRoughness") - if metallic_roughness is None or not has_image_node_from_socket(metallic_roughness, export_settings): - return None - result = (occlusion, metallic_roughness) + return None elif not hasMetal: result = (occlusion, roughness_socket) elif not hasRough: diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py index a0bfdb1ed..c0ca5bc19 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py @@ -20,8 +20,6 @@ def export_emission_factor(blender_material, export_settings): emissive_socket = gltf2_blender_get.get_socket(blender_material, "Emissive") - if emissive_socket is None: - emissive_socket = gltf2_blender_get.get_socket_old(blender_material, "EmissiveFactor") if isinstance(emissive_socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": factor = gltf2_blender_get.get_factor_from_socket(emissive_socket, kind='RGB') @@ -61,8 +59,6 @@ def export_emission_factor(blender_material, export_settings): def export_emission_texture(blender_material, export_settings): emissive = gltf2_blender_get.get_socket(blender_material, "Emissive") - if emissive is None: - emissive = gltf2_blender_get.get_socket_old(blender_material, "Emissive") emissive_texture, use_actives_uvmap_emissive, _ = gltf2_blender_gather_texture_info.gather_texture_info(emissive, (emissive,), export_settings) return emissive_texture, ["emissiveTexture"] if use_actives_uvmap_emissive else None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py index b2cad4a21..070989d97 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py @@ -72,8 +72,6 @@ def __gather_base_color_factor(blender_material, export_settings): base_color_socket = gltf2_blender_get.get_socket(blender_material, "Base Color") if base_color_socket is None: base_color_socket = gltf2_blender_get.get_socket(blender_material, "BaseColor") - if base_color_socket is None: - base_color_socket = gltf2_blender_get.get_socket_old(blender_material, "BaseColorFactor") if isinstance(base_color_socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": rgb = gltf2_blender_get.get_factor_from_socket(base_color_socket, kind='RGB') @@ -93,8 +91,6 @@ def __gather_base_color_texture(blender_material, export_settings): base_color_socket = gltf2_blender_get.get_socket(blender_material, "Base Color") if base_color_socket is None: base_color_socket = gltf2_blender_get.get_socket(blender_material, "BaseColor") - if base_color_socket is None: - base_color_socket = gltf2_blender_get.get_socket_old(blender_material, "BaseColor") alpha_socket = gltf2_blender_get.get_socket(blender_material, "Alpha") @@ -122,8 +118,6 @@ def __gather_metallic_factor(blender_material, export_settings): return blender_material.metallic metallic_socket = gltf2_blender_get.get_socket(blender_material, "Metallic") - if metallic_socket is None: - metallic_socket = gltf2_blender_get.get_socket_old(blender_material, "MetallicFactor") if isinstance(metallic_socket, bpy.types.NodeSocket): fac = gltf2_blender_get.get_factor_from_socket(metallic_socket, kind='VALUE') return fac if fac != 1 else None @@ -138,10 +132,7 @@ def __gather_metallic_roughness_texture(blender_material, orm_texture, export_se hasRough = roughness_socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: - metallic_roughness = gltf2_blender_get.get_socket_old(blender_material, "MetallicRoughness") - if metallic_roughness is None or not has_image_node_from_socket(metallic_roughness, export_settings): - return None, None, None - texture_input = (metallic_roughness,) + return None, None, None elif not hasMetal: texture_input = (roughness_socket,) elif not hasRough: @@ -161,8 +152,6 @@ def __gather_roughness_factor(blender_material, export_settings): return blender_material.roughness roughness_socket = gltf2_blender_get.get_socket(blender_material, "Roughness") - if roughness_socket is None: - roughness_socket = gltf2_blender_get.get_socket_old(blender_material, "RoughnessFactor") if isinstance(roughness_socket, bpy.types.NodeSocket): fac = gltf2_blender_get.get_factor_from_socket(roughness_socket, kind='VALUE') return fac if fac != 1 else None From d9e655ecba3a7c45ed2924c1f64308bb20bfc0a0 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:44:29 +0200 Subject: [PATCH 11/43] rename get_soket_old to get_socket_from_gltf_material_node --- .../blender/exp/gltf2_blender_gather_materials.py | 4 ++-- .../blender/exp/gltf2_blender_gather_materials_specular.py | 4 ++-- .../blender/exp/gltf2_blender_gather_materials_volume.py | 2 +- addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index 897c07055..f3041f438 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -283,7 +283,7 @@ def __gather_orm_texture(blender_material, export_settings): occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): - occlusion = gltf2_blender_get.get_socket_old(blender_material, "Occlusion") + occlusion = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, "Occlusion") if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): return None @@ -318,7 +318,7 @@ def __gather_orm_texture(blender_material, export_settings): def __gather_occlusion_texture(blender_material, orm_texture, export_settings): occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") if occlusion is None: - occlusion = gltf2_blender_get.get_socket_old(blender_material, "Occlusion") + occlusion = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, "Occlusion") occlusion_texture, use_active_uvmap_occlusion, _ = gltf2_blender_gather_texture_info.gather_material_occlusion_texture_info_class( occlusion, orm_texture or (occlusion,), diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py index 35ceee452..b2b75ac50 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py @@ -25,8 +25,8 @@ def export_original_specular(blender_material, export_settings): specular_extension = {} - original_specular_socket = gltf2_blender_get.get_socket_old(blender_material, 'Specular') - original_specularcolor_socket = gltf2_blender_get.get_socket_old(blender_material, 'Specular Color') + original_specular_socket = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, 'Specular') + original_specularcolor_socket = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, 'Specular Color') if original_specular_socket is None or original_specularcolor_socket is None: return None, None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index fc3ecbeae..02d551c38 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -39,7 +39,7 @@ def export_volume(blender_material, export_settings): has_thickness_texture = False thickness_slots = () - thicknesss_socket = gltf2_blender_get.get_socket_old(blender_material, 'Thickness') + thicknesss_socket = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, 'Thickness') if thicknesss_socket is None: # If no thickness (here because there is no glTF Material Output node), no volume extension export return None, None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index 284206f86..c206be234 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -96,7 +96,7 @@ def get_socket(blender_material: bpy.types.Material, name: str, volume=False): return None -def get_socket_old(blender_material: bpy.types.Material, name: str): +def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, name: str): """ For a given material input name, retrieve the corresponding node tree socket in the special glTF node group. From 3b92c6ef6abd96677b8e86abc355cf6293347b32 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:47:11 +0200 Subject: [PATCH 12/43] move function to another file --- .../exp/gltf2_blender_gather_materials.py | 6 +++--- ...gltf2_blender_gather_materials_specular.py | 6 +++--- .../gltf2_blender_gather_materials_volume.py | 5 +++-- .../blender/exp/gltf2_blender_get.py | 21 ------------------- .../exp/gltf2_blender_search_node_tree.py | 21 +++++++++++++++++++ 5 files changed, 30 insertions(+), 29 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index f3041f438..cd4ec79ee 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -33,7 +33,7 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_clearcoat import export_clearcoat from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_ior import export_ior from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_socket_from_gltf_material_node @cached def get_material_cache_key(blender_material, active_uvmap_index, export_settings): @@ -283,7 +283,7 @@ def __gather_orm_texture(blender_material, export_settings): occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): - occlusion = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, "Occlusion") + occlusion = get_socket_from_gltf_material_node(blender_material, "Occlusion") if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): return None @@ -318,7 +318,7 @@ def __gather_orm_texture(blender_material, export_settings): def __gather_occlusion_texture(blender_material, orm_texture, export_settings): occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") if occlusion is None: - occlusion = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, "Occlusion") + occlusion = (blender_material, "Occlusion") occlusion_texture, use_active_uvmap_occlusion, _ = gltf2_blender_gather_texture_info.gather_material_occlusion_texture_info_class( occlusion, orm_texture or (occlusion,), diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py index b2b75ac50..6b902c3ed 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py @@ -18,15 +18,15 @@ from io_scene_gltf2.io.com.gltf2_io_constants import GLTF_IOR from io_scene_gltf2.blender.com.gltf2_blender_default import BLENDER_SPECULAR, BLENDER_SPECULAR_TINT from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_socket_from_gltf_material_node def export_original_specular(blender_material, export_settings): specular_extension = {} - original_specular_socket = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, 'Specular') - original_specularcolor_socket = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, 'Specular Color') + original_specular_socket = get_socket_from_gltf_material_node(blender_material, 'Specular') + original_specularcolor_socket = get_socket_from_gltf_material_node(blender_material, 'Specular Color') if original_specular_socket is None or original_specularcolor_socket is None: return None, None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index 02d551c38..b1971cd14 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -18,7 +18,8 @@ from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ has_image_node_from_socket, \ - get_const_from_default_value_socket + get_const_from_default_value_socket, \ + get_socket_from_gltf_material_node def export_volume(blender_material, export_settings): @@ -39,7 +40,7 @@ def export_volume(blender_material, export_settings): has_thickness_texture = False thickness_slots = () - thicknesss_socket = gltf2_blender_get.get_socket_from_gltf_material_node(blender_material, 'Thickness') + thicknesss_socket = get_socket_from_gltf_material_node(blender_material, 'Thickness') if thicknesss_socket is None: # If no thickness (here because there is no glTF Material Output node), no volume extension export return None, None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index c206be234..2bec9426b 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -15,7 +15,6 @@ import bpy from mathutils import Vector, Matrix -from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name from ...blender.com.gltf2_blender_conversion import texture_transform_blender_to_gltf from io_scene_gltf2.io.com import gltf2_io_debug @@ -95,26 +94,6 @@ def get_socket(blender_material: bpy.types.Material, name: str, volume=False): return None - -def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, name: str): - """ - For a given material input name, retrieve the corresponding node tree socket in the special glTF node group. - - :param blender_material: a blender material for which to get the socket - :param name: the name of the socket - :return: a blender NodeSocket - """ - gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_name().lower()] - if blender_material.node_tree and blender_material.use_nodes: - nodes = [n for n in blender_material.node_tree.nodes if \ - isinstance(n, bpy.types.ShaderNodeGroup) and \ - (n.node_tree.name.startswith('glTF Metallic Roughness') or n.node_tree.name.lower() in gltf_node_group_names)] - inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], []) - if inputs: - return inputs[0] - - return None - def check_if_is_linked_to_active_output(shader_socket): for link in shader_socket.links: if isinstance(link.to_node, bpy.types.ShaderNodeOutputMaterial) and link.to_node.is_active_output is True: diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index fc8ebc5b0..16e9ab800 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -18,6 +18,7 @@ import bpy from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached +from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name import typing @@ -125,4 +126,24 @@ def get_const_from_default_value_socket(socket, kind): if kind == 'VALUE': if socket.type != 'VALUE': return None return socket.default_value + return None + + +def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, name: str): + """ + For a given material input name, retrieve the corresponding node tree socket in the special glTF node group. + + :param blender_material: a blender material for which to get the socket + :param name: the name of the socket + :return: a blender NodeSocket + """ + gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_name().lower()] + if blender_material.node_tree and blender_material.use_nodes: + nodes = [n for n in blender_material.node_tree.nodes if \ + isinstance(n, bpy.types.ShaderNodeGroup) and \ + (n.node_tree.name.startswith('glTF Metallic Roughness') or n.node_tree.name.lower() in gltf_node_group_names)] + inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], []) + if inputs: + return inputs[0] + return None \ No newline at end of file From c31f322ebe4b7e559030d6ca3e810bbd5b8ccc83 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:47:51 +0200 Subject: [PATCH 13/43] fix typo --- .../exp/gltf2_blender_gather_materials_volume.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index b1971cd14..5b09b46cf 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -40,8 +40,8 @@ def export_volume(blender_material, export_settings): has_thickness_texture = False thickness_slots = () - thicknesss_socket = get_socket_from_gltf_material_node(blender_material, 'Thickness') - if thicknesss_socket is None: + thickness_socket = get_socket_from_gltf_material_node(blender_material, 'Thickness') + if thickness_socket is None: # If no thickness (here because there is no glTF Material Output node), no volume extension export return None, None @@ -58,27 +58,27 @@ def export_volume(blender_material, export_settings): volume_extension['attenuationDistance'] = 1.0 / density if density != 0 else None # infinity (Using None as glTF default) - if isinstance(thicknesss_socket, bpy.types.NodeSocket) and not thicknesss_socket.is_linked: - val = thicknesss_socket.default_value + if isinstance(thickness_socket, bpy.types.NodeSocket) and not thickness_socket.is_linked: + val = thickness_socket.default_value if val == 0.0: # If no thickness, no volume extension export return None, None volume_extension['thicknessFactor'] = val - elif has_image_node_from_socket(thicknesss_socket, export_settings): - fac = gltf2_blender_get.get_factor_from_socket(thicknesss_socket, kind='VALUE') + elif has_image_node_from_socket(thickness_socket, export_settings): + fac = gltf2_blender_get.get_factor_from_socket(thickness_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 volume_extension['thicknessFactor'] = fac if fac != None else 1.0 has_thickness_texture = True # Pack thickness channel (R). if has_thickness_texture: - thickness_slots = (thicknesss_socket,) + thickness_slots = (thickness_socket,) use_actives_uvmaps = [] if len(thickness_slots) > 0: combined_texture, use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_texture_info( - thicknesss_socket, + thickness_socket, thickness_slots, export_settings, ) From 6fcde5fbf93ac20bdb9190e7688e74be7abf4c03 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:50:45 +0200 Subject: [PATCH 14/43] add todo comments --- addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py | 3 +++ .../blender/exp/gltf2_blender_search_node_tree.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index 2bec9426b..a42544490 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -49,6 +49,7 @@ def get_node_socket(blender_material, type, name): :param blender_material: a blender material for which to get the socket :return: a blender NodeSocket for a given type """ + # TODOSNodes manage groups nodes = [n for n in blender_material.node_tree.nodes if isinstance(n, type) and not n.mute] nodes = [node for node in nodes if check_if_is_linked_to_active_output(node.outputs[0])] inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], []) @@ -95,6 +96,7 @@ def get_socket(blender_material: bpy.types.Material, name: str, volume=False): return None def check_if_is_linked_to_active_output(shader_socket): + #TODOSNodes manage groups for link in shader_socket.links: if isinstance(link.to_node, bpy.types.ShaderNodeOutputMaterial) and link.to_node.is_active_output is True: return True @@ -227,6 +229,7 @@ def get_const_from_socket(socket, kind): def previous_socket(socket): + # TODOSNodes manage groups while True: if not socket.is_linked: return None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 16e9ab800..49cc77473 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -59,7 +59,7 @@ def __call__(self, shader_node): return isinstance(shader_node, self.type) -#TODO: is path still used somewhere ? +#TODOSNodes: is path still used somewhere ? class NodeTreeSearchResult: def __init__(self, shader_node: bpy.types.Node, path: typing.List[bpy.types.NodeLink]): self.shader_node = shader_node @@ -77,6 +77,7 @@ def from_socket(start_socket: bpy.types.NodeSocket, :return: a list of shader nodes for which filter is true """ # hide implementation (especially the search path) + #TODOSNodes Manage groups def __search_from_socket(start_socket: bpy.types.NodeSocket, shader_node_filter: typing.Union[Filter, typing.Callable], search_path: typing.List[bpy.types.NodeLink]) -> typing.List[NodeTreeSearchResult]: From 29121e4ef667ba6985783a5aef5ff0f72c441287 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 17 Aug 2022 19:56:25 +0200 Subject: [PATCH 15/43] fix typo --- .../blender/exp/gltf2_blender_gather_materials.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index cd4ec79ee..0346d818b 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -318,7 +318,7 @@ def __gather_orm_texture(blender_material, export_settings): def __gather_occlusion_texture(blender_material, orm_texture, export_settings): occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") if occlusion is None: - occlusion = (blender_material, "Occlusion") + occlusion = get_socket_from_gltf_material_node(blender_material, "Occlusion") occlusion_texture, use_active_uvmap_occlusion, _ = gltf2_blender_gather_texture_info.gather_material_occlusion_texture_info_class( occlusion, orm_texture or (occlusion,), From c7e0b79bd73597da0783b36f2417e74db219716b Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Fri, 19 Aug 2022 18:58:27 +0200 Subject: [PATCH 16/43] WIP --- .../blender/exp/gltf2_blender_gather_image.py | 34 +- .../exp/gltf2_blender_gather_materials.py | 30 +- ...ltf2_blender_gather_materials_clearcoat.py | 21 +- ...gltf2_blender_gather_materials_emission.py | 28 +- .../exp/gltf2_blender_gather_materials_ior.py | 12 +- ...gather_materials_pbr_metallic_roughness.py | 54 +-- .../gltf2_blender_gather_materials_sheen.py | 24 +- ...gltf2_blender_gather_materials_specular.py | 43 +-- ...2_blender_gather_materials_transmission.py | 12 +- .../gltf2_blender_gather_materials_unlit.py | 60 ++-- .../gltf2_blender_gather_materials_volume.py | 27 +- .../exp/gltf2_blender_gather_sampler.py | 45 +-- .../exp/gltf2_blender_gather_texture.py | 9 +- .../exp/gltf2_blender_gather_texture_info.py | 37 +- .../blender/exp/gltf2_blender_get.py | 215 ----------- .../exp/gltf2_blender_search_node_tree.py | 333 +++++++++++++++++- tests/scenes/22_node_groups.blend | Bin 0 -> 1184324 bytes tests/test/test.js | 18 + 18 files changed, 567 insertions(+), 435 deletions(-) create mode 100644 tests/scenes/22_node_groups.blend diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py index 03cb3c94d..f443fa149 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py @@ -18,7 +18,7 @@ from . import gltf2_blender_export_keys from io_scene_gltf2.io.com import gltf2_io -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket, NodeSocket from io_scene_gltf2.io.exp import gltf2_io_binary_data from io_scene_gltf2.io.exp import gltf2_io_image_data from io_scene_gltf2.io.com import gltf2_io_debug @@ -29,7 +29,7 @@ @cached def gather_image( - blender_shader_sockets: typing.Tuple[bpy.types.NodeSocket], + blender_shader_sockets: typing.Tuple[NodeSocket], export_settings): if not __filter_image(blender_shader_sockets, export_settings): return None, None @@ -130,7 +130,7 @@ def __gather_extras(sockets, export_settings): def __gather_mime_type(sockets, export_image, export_settings): # force png if Alpha contained so we can export alpha for socket in sockets: - if socket.name == "Alpha": + if socket.socket.name == "Alpha": return "image/png" if export_settings["gltf_image_format"] == "AUTO": @@ -199,7 +199,7 @@ def __get_image_data(sockets, export_settings) -> ExportImage: results = [get_texture_node_from_socket(socket, export_settings) for socket in sockets] # Check if we need a simple mapping or more complex calculation - if any([socket.name == "Specular" and socket.node.type == "BSDF_PRINCIPLED" for socket in sockets]): + if any([socket.socket.name == "Specular" and socket.socket.node.type == "BSDF_PRINCIPLED" for socket in sockets]): return __get_image_data_specular(sockets, results, export_settings) else: return __get_image_data_mapping(sockets, results, export_settings) @@ -235,23 +235,23 @@ def __get_image_data_mapping(sockets, results, export_settings) -> ExportImage: dst_chan = None # some sockets need channel rewriting (gltf pbr defines fixed channels for some attributes) - if socket.name == 'Metallic': + if socket.socket.name == 'Metallic': dst_chan = Channel.B - elif socket.name == 'Roughness': + elif socket.socket.name == 'Roughness': dst_chan = Channel.G - elif socket.name == 'Occlusion': + elif socket.socket.name == 'Occlusion': dst_chan = Channel.R - elif socket.name == 'Alpha': + elif socket.socket.name == 'Alpha': dst_chan = Channel.A - elif socket.name == 'Clearcoat': + elif socket.socket.name == 'Clearcoat': dst_chan = Channel.R - elif socket.name == 'Clearcoat Roughness': + elif socket.socket.name == 'Clearcoat Roughness': dst_chan = Channel.G - elif socket.name == 'Thickness': # For KHR_materials_volume + elif socket.socket.name == 'Thickness': # For KHR_materials_volume dst_chan = Channel.G - elif socket.name == "Specular": # For original KHR_material_specular + elif socket.socket.name == "Specular": # For original KHR_material_specular dst_chan = Channel.A - elif socket.name == "Sigma": # For KHR_materials_sheen + elif socket.socket.name == "Sigma": # For KHR_materials_sheen dst_chan = Channel.A if dst_chan is not None: @@ -259,9 +259,9 @@ def __get_image_data_mapping(sockets, results, export_settings) -> ExportImage: # Since metal/roughness are always used together, make sure # the other channel is filled. - if socket.name == 'Metallic' and not composed_image.is_filled(Channel.G): + if socket.socket.name == 'Metallic' and not composed_image.is_filled(Channel.G): composed_image.fill_white(Channel.G) - elif socket.name == 'Roughness' and not composed_image.is_filled(Channel.B): + elif socket.socket.name == 'Roughness' and not composed_image.is_filled(Channel.B): composed_image.fill_white(Channel.B) else: # copy full image...eventually following sockets might overwrite things @@ -287,7 +287,7 @@ def __get_image_data_specular(sockets, results, export_settings) -> ExportImage: composed_image = ExportImage() composed_image.set_calc(specular_calculation) - composed_image.store_data("ior", sockets[4].default_value, type="Data") + composed_image.store_data("ior", sockets[4].socket.default_value, type="Data") results = [get_texture_node_from_socket(socket, export_settings) for socket in sockets[:-1]] #Do not retrieve IOR --> No texture allowed @@ -322,7 +322,7 @@ def __get_image_data_specular(sockets, results, export_settings) -> ExportImage: composed_image.store_data(mapping[idx] + "_channel", src_chan, type="Data") else: - composed_image.store_data(mapping[idx], sockets[idx].default_value, type="Data") + composed_image.store_data(mapping[idx], sockets[idx].socket.default_value, type="Data") return composed_image diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index 0346d818b..71f6905ac 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -21,7 +21,6 @@ from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info, gltf2_blender_export_keys from io_scene_gltf2.blender.exp import gltf2_blender_gather_materials_pbr_metallic_roughness from ..com.gltf2_blender_extras import generate_extras -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions from io_scene_gltf2.io.com.gltf2_io_debug import print_console from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_volume import export_volume @@ -33,7 +32,11 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_clearcoat import export_clearcoat from io_scene_gltf2.blender.exp.gltf2_blender_gather_materials_ior import export_ior from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_socket_from_gltf_material_node +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + has_image_node_from_socket, \ + get_socket_from_gltf_material_node, \ + get_socket, \ + get_node_socket @cached def get_material_cache_key(blender_material, active_uvmap_index, export_settings): @@ -57,6 +60,7 @@ def gather_material(blender_material, active_uvmap_index, export_settings): if not __filter_material(blender_material, export_settings): return None + print("##################", blender_material.name) mat_unlit = __export_unlit(blender_material, active_uvmap_index, export_settings) if mat_unlit is not None: export_user_extensions('gather_material_hook', export_settings, mat_unlit, blender_material) @@ -149,7 +153,7 @@ def gather_material(blender_material, active_uvmap_index, export_settings): # If emissive is set, from an emissive node (not PBR) # We need to set manually default values for # pbr_metallic_roughness.baseColor - if material.emissive_factor is not None and gltf2_blender_get.get_node_socket(blender_material, bpy.types.ShaderNodeBsdfPrincipled, "Base Color") is None: + if material.emissive_factor is not None and get_node_socket(blender_material, bpy.types.ShaderNodeBsdfPrincipled, "Base Color").socket is None: material.pbr_metallic_roughness = gltf2_blender_gather_materials_pbr_metallic_roughness.get_default_pbr_for_emissive_node() export_user_extensions('gather_material_hook', export_settings, material, blender_material) @@ -269,7 +273,7 @@ def __gather_name(blender_material, export_settings): def __gather_normal_texture(blender_material, export_settings): - normal = gltf2_blender_get.get_socket(blender_material, "Normal") + normal = get_socket(blender_material, "Normal") normal_texture, use_active_uvmap_normal, _ = gltf2_blender_gather_texture_info.gather_material_normal_texture_info_class( normal, (normal,), @@ -281,17 +285,17 @@ def __gather_orm_texture(blender_material, export_settings): # Check for the presence of Occlusion, Roughness, Metallic sharing a single image. # If not fully shared, return None, so the images will be cached and processed separately. - occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") - if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): + occlusion = get_socket(blender_material, "Occlusion") + if occlusion.socket is None or not has_image_node_from_socket(occlusion, export_settings): occlusion = get_socket_from_gltf_material_node(blender_material, "Occlusion") - if occlusion is None or not has_image_node_from_socket(occlusion, export_settings): + if occlusion.socket is None or not has_image_node_from_socket(occlusion, export_settings): return None - metallic_socket = gltf2_blender_get.get_socket(blender_material, "Metallic") - roughness_socket = gltf2_blender_get.get_socket(blender_material, "Roughness") + metallic_socket = get_socket(blender_material, "Metallic") + roughness_socket = get_socket(blender_material, "Roughness") - hasMetal = metallic_socket is not None and has_image_node_from_socket(metallic_socket, export_settings) - hasRough = roughness_socket is not None and has_image_node_from_socket(roughness_socket, export_settings) + hasMetal = metallic_socket.socket is not None and has_image_node_from_socket(metallic_socket, export_settings) + hasRough = roughness_socket.socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: return None @@ -316,8 +320,8 @@ def __gather_orm_texture(blender_material, export_settings): return result def __gather_occlusion_texture(blender_material, orm_texture, export_settings): - occlusion = gltf2_blender_get.get_socket(blender_material, "Occlusion") - if occlusion is None: + occlusion = get_socket(blender_material, "Occlusion") + if occlusion.socket is None: occlusion = get_socket_from_gltf_material_node(blender_material, "Occlusion") occlusion_texture, use_active_uvmap_occlusion, _ = gltf2_blender_gather_texture_info.gather_material_occlusion_texture_info_class( occlusion, diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py index 01ab8d221..c2e939cf8 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_clearcoat.py @@ -14,8 +14,7 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_socket, get_factor_from_socket from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info def export_clearcoat(blender_material, export_settings): @@ -26,15 +25,15 @@ def export_clearcoat(blender_material, export_settings): clearcoat_extension = {} clearcoat_roughness_slots = () - clearcoat_socket = gltf2_blender_get.get_socket(blender_material, 'Clearcoat') - clearcoat_roughness_socket = gltf2_blender_get.get_socket(blender_material, 'Clearcoat Roughness') - clearcoat_normal_socket = gltf2_blender_get.get_socket(blender_material, 'Clearcoat Normal') + clearcoat_socket = get_socket(blender_material, 'Clearcoat') + clearcoat_roughness_socket = get_socket(blender_material, 'Clearcoat Roughness') + clearcoat_normal_socket = get_socket(blender_material, 'Clearcoat Normal') - if isinstance(clearcoat_socket, bpy.types.NodeSocket) and not clearcoat_socket.is_linked: - clearcoat_extension['clearcoatFactor'] = clearcoat_socket.default_value + if isinstance(clearcoat_socket.socket, bpy.types.NodeSocket) and not clearcoat_socket.socket.is_linked: + clearcoat_extension['clearcoatFactor'] = clearcoat_socket.socket.default_value clearcoat_enabled = clearcoat_extension['clearcoatFactor'] > 0 elif has_image_node_from_socket(clearcoat_socket, export_settings): - fac = gltf2_blender_get.get_factor_from_socket(clearcoat_socket, kind='VALUE') + fac = get_factor_from_socket(clearcoat_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 clearcoat_extension['clearcoatFactor'] = fac if fac != None else 1.0 has_clearcoat_texture = True @@ -43,10 +42,10 @@ def export_clearcoat(blender_material, export_settings): if not clearcoat_enabled: return None, None - if isinstance(clearcoat_roughness_socket, bpy.types.NodeSocket) and not clearcoat_roughness_socket.is_linked: - clearcoat_extension['clearcoatRoughnessFactor'] = clearcoat_roughness_socket.default_value + if isinstance(clearcoat_roughness_socket.socket, bpy.types.NodeSocket) and not clearcoat_roughness_socket.socket.is_linked: + clearcoat_extension['clearcoatRoughnessFactor'] = clearcoat_roughness_socket.socket.default_value elif has_image_node_from_socket(clearcoat_roughness_socket, export_settings): - fac = gltf2_blender_get.get_factor_from_socket(clearcoat_roughness_socket, kind='VALUE') + fac = get_factor_from_socket(clearcoat_roughness_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 clearcoat_extension['clearcoatRoughnessFactor'] = fac if fac != None else 1.0 has_clearcoat_roughness_texture = True diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py index c0ca5bc19..b92ee1253 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py @@ -14,19 +14,23 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_const_from_default_value_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + get_const_from_default_value_socket, \ + get_socket, \ + get_factor_from_socket, \ + get_const_from_socket, \ + NodeSocket def export_emission_factor(blender_material, export_settings): - emissive_socket = gltf2_blender_get.get_socket(blender_material, "Emissive") - if isinstance(emissive_socket, bpy.types.NodeSocket): + emissive_socket = get_socket(blender_material, "Emissive") + if isinstance(emissive_socket.socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": - factor = gltf2_blender_get.get_factor_from_socket(emissive_socket, kind='RGB') + factor = get_factor_from_socket(emissive_socket, kind='RGB') else: factor = get_const_from_default_value_socket(emissive_socket, kind='RGB') - if factor is None and emissive_socket.is_linked: + if factor is None and emissive_socket.socket.is_linked: # In glTF, the default emissiveFactor is all zeros, so if an emission texture is connected, # we have to manually set it to all ones. factor = [1.0, 1.0, 1.0] @@ -35,12 +39,12 @@ def export_emission_factor(blender_material, export_settings): # Handle Emission Strength strength_socket = None - if emissive_socket.node.type == 'EMISSION': - strength_socket = emissive_socket.node.inputs['Strength'] - elif 'Emission Strength' in emissive_socket.node.inputs: - strength_socket = emissive_socket.node.inputs['Emission Strength'] + if emissive_socket.socket.node.type == 'EMISSION': + strength_socket = emissive_socket.socket.node.inputs['Strength'] + elif 'Emission Strength' in emissive_socket.socket.node.inputs: + strength_socket = emissive_socket.socket.node.inputs['Emission Strength'] strength = ( - gltf2_blender_get.get_const_from_socket(strength_socket, kind='VALUE') + get_const_from_socket(NodeSocket(strength_socket, emissive_socket.group_path), kind='VALUE') if strength_socket is not None else None ) @@ -58,7 +62,7 @@ def export_emission_factor(blender_material, export_settings): return None def export_emission_texture(blender_material, export_settings): - emissive = gltf2_blender_get.get_socket(blender_material, "Emissive") + emissive = get_socket(blender_material, "Emissive") emissive_texture, use_actives_uvmap_emissive, _ = gltf2_blender_gather_texture_info.gather_texture_info(emissive, (emissive,), export_settings) return emissive_texture, ["emissiveTexture"] if use_actives_uvmap_emissive else None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_ior.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_ior.py index 79076d530..47aa304cb 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_ior.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_ior.py @@ -13,21 +13,21 @@ # limitations under the License. from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.io.com.gltf2_io_constants import GLTF_IOR +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_socket def export_ior(blender_material, extensions, export_settings): - ior_socket = gltf2_blender_get.get_socket(blender_material, 'IOR') + ior_socket = get_socket(blender_material, 'IOR') - if not ior_socket: + if not ior_socket.socket: return None # We don't manage case where socket is linked, always check default value - if ior_socket.is_linked: + if ior_socket.socket.is_linked: # TODOExt: add warning? return None - if ior_socket.default_value == GLTF_IOR: + if ior_socket.socket.default_value == GLTF_IOR: return None # Export only if the following extensions are exported: @@ -41,6 +41,6 @@ def export_ior(blender_material, extensions, export_settings): return None ior_extension = {} - ior_extension['ior'] = ior_socket.default_value + ior_extension['ior'] = ior_socket.socket.default_value return Extension('KHR_materials_ior', ior_extension, False) \ No newline at end of file diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py index 070989d97..2119fe3ad 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py @@ -16,8 +16,11 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_const_from_default_value_socket -from io_scene_gltf2.blender.exp import gltf2_blender_get +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + has_image_node_from_socket, \ + get_const_from_default_value_socket, \ + get_socket, \ + get_factor_from_socket from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions @@ -62,19 +65,20 @@ def __gather_base_color_factor(blender_material, export_settings): rgb, alpha = None, None - alpha_socket = gltf2_blender_get.get_socket(blender_material, "Alpha") - if isinstance(alpha_socket, bpy.types.NodeSocket): + alpha_socket = get_socket(blender_material, "Alpha") + if isinstance(alpha_socket.socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": - alpha = gltf2_blender_get.get_factor_from_socket(alpha_socket, kind='VALUE') + alpha = get_factor_from_socket(alpha_socket, kind='VALUE') else: alpha = get_const_from_default_value_socket(alpha_socket, kind='VALUE') - base_color_socket = gltf2_blender_get.get_socket(blender_material, "Base Color") - if base_color_socket is None: - base_color_socket = gltf2_blender_get.get_socket(blender_material, "BaseColor") - if isinstance(base_color_socket, bpy.types.NodeSocket): + #TODOSNodes : remove this old compatibility hack + base_color_socket = get_socket(blender_material, "Base Color") + if base_color_socket.socket is None: + base_color_socket = get_socket(blender_material, "BaseColor") + if isinstance(base_color_socket.socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": - rgb = gltf2_blender_get.get_factor_from_socket(base_color_socket, kind='RGB') + rgb = get_factor_from_socket(base_color_socket, kind='RGB') else: rgb = get_const_from_default_value_socket(base_color_socket, kind='RGB') @@ -88,16 +92,16 @@ def __gather_base_color_factor(blender_material, export_settings): def __gather_base_color_texture(blender_material, export_settings): - base_color_socket = gltf2_blender_get.get_socket(blender_material, "Base Color") - if base_color_socket is None: - base_color_socket = gltf2_blender_get.get_socket(blender_material, "BaseColor") + base_color_socket = get_socket(blender_material, "Base Color") + if base_color_socket.socket is None: + base_color_socket = get_socket(blender_material, "BaseColor") - alpha_socket = gltf2_blender_get.get_socket(blender_material, "Alpha") + alpha_socket = get_socket(blender_material, "Alpha") # keep sockets that have some texture : color and/or alpha inputs = tuple( socket for socket in [base_color_socket, alpha_socket] - if socket is not None and has_image_node_from_socket(socket, export_settings) + if socket.socket is not None and has_image_node_from_socket(socket, export_settings) ) if not inputs: return None, None, None @@ -117,19 +121,19 @@ def __gather_metallic_factor(blender_material, export_settings): if not blender_material.use_nodes: return blender_material.metallic - metallic_socket = gltf2_blender_get.get_socket(blender_material, "Metallic") - if isinstance(metallic_socket, bpy.types.NodeSocket): - fac = gltf2_blender_get.get_factor_from_socket(metallic_socket, kind='VALUE') + metallic_socket = get_socket(blender_material, "Metallic") + if isinstance(metallic_socket.socket, bpy.types.NodeSocket): + fac = get_factor_from_socket(metallic_socket, kind='VALUE') return fac if fac != 1 else None return None def __gather_metallic_roughness_texture(blender_material, orm_texture, export_settings): - metallic_socket = gltf2_blender_get.get_socket(blender_material, "Metallic") - roughness_socket = gltf2_blender_get.get_socket(blender_material, "Roughness") + metallic_socket = get_socket(blender_material, "Metallic") + roughness_socket = get_socket(blender_material, "Roughness") - hasMetal = metallic_socket is not None and has_image_node_from_socket(metallic_socket, export_settings) - hasRough = roughness_socket is not None and has_image_node_from_socket(roughness_socket, export_settings) + hasMetal = metallic_socket.socket is not None and has_image_node_from_socket(metallic_socket, export_settings) + hasRough = roughness_socket.socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: return None, None, None @@ -151,9 +155,9 @@ def __gather_roughness_factor(blender_material, export_settings): if not blender_material.use_nodes: return blender_material.roughness - roughness_socket = gltf2_blender_get.get_socket(blender_material, "Roughness") - if isinstance(roughness_socket, bpy.types.NodeSocket): - fac = gltf2_blender_get.get_factor_from_socket(roughness_socket, kind='VALUE') + roughness_socket = get_socket(blender_material, "Roughness") + if isinstance(roughness_socket.socket, bpy.types.NodeSocket): + fac = get_factor_from_socket(roughness_socket, kind='VALUE') return fac if fac != 1 else None return None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py index 339aa1336..ac3bfbd19 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py @@ -14,33 +14,35 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + has_image_node_from_socket, \ + get_socket, \ + get_factor_from_socket def export_sheen(blender_material, export_settings): sheen_extension = {} - sheenColor_socket = gltf2_blender_get.get_socket(blender_material, "sheenColor") - sheenRoughness_socket = gltf2_blender_get.get_socket(blender_material, "sheenRoughness") + sheenColor_socket = get_socket(blender_material, "sheenColor") + sheenRoughness_socket = get_socket(blender_material, "sheenRoughness") - if sheenColor_socket is None or sheenRoughness_socket is None: + if sheenColor_socket.socket is None or sheenRoughness_socket.socket is None: return None, None - sheenColor_non_linked = isinstance(sheenColor_socket, bpy.types.NodeSocket) and not sheenColor_socket.is_linked - sheenRoughness_non_linked = isinstance(sheenRoughness_socket, bpy.types.NodeSocket) and not sheenRoughness_socket.is_linked + sheenColor_non_linked = isinstance(sheenColor_socket.socket, bpy.types.NodeSocket) and not sheenColor_socket.socket.is_linked + sheenRoughness_non_linked = isinstance(sheenRoughness_socket.socket, bpy.types.NodeSocket) and not sheenRoughness_socket.socket.is_linked use_actives_uvmaps = [] if sheenColor_non_linked is True: - color = sheenColor_socket.default_value[:3] + color = sheenColor_socket.socket.socket.default_value[:3] if color != (0.0, 0.0, 0.0): sheen_extension['sheenColorFactor'] = color else: # Factor - fac = gltf2_blender_get.get_factor_from_socket(sheenColor_socket, kind='RGB') + fac = get_factor_from_socket(sheenColor_socket, kind='RGB') if fac is not None and fac != [0.0, 0.0, 0.0]: sheen_extension['sheenColorFactor'] = fac @@ -57,12 +59,12 @@ def export_sheen(blender_material, export_settings): if sheenRoughness_non_linked is True: - fac = sheenRoughness_socket.default_value + fac = sheenRoughness_socket.socket.default_value if fac != 0.0: sheen_extension['sheenRoughnessFactor'] = fac else: # Factor - fac = gltf2_blender_get.get_factor_from_socket(sheenRoughness_socket, kind='VALUE') + fac = get_factor_from_socket(sheenRoughness_socket, kind='VALUE') if fac is not None and fac != 0.0: sheen_extension['sheenRoughnessFactor'] = fac diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py index 6b902c3ed..7fc47be5f 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py @@ -14,11 +14,14 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.io.com.gltf2_io_constants import GLTF_IOR from io_scene_gltf2.blender.com.gltf2_blender_default import BLENDER_SPECULAR, BLENDER_SPECULAR_TINT from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket, get_socket_from_gltf_material_node +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + has_image_node_from_socket, \ + get_socket_from_gltf_material_node, \ + get_socket, \ + get_factor_from_socket @@ -28,22 +31,22 @@ def export_original_specular(blender_material, export_settings): original_specular_socket = get_socket_from_gltf_material_node(blender_material, 'Specular') original_specularcolor_socket = get_socket_from_gltf_material_node(blender_material, 'Specular Color') - if original_specular_socket is None or original_specularcolor_socket is None: + if original_specular_socket.socket is None or original_specularcolor_socket.socket is None: return None, None - specular_non_linked = isinstance(original_specular_socket, bpy.types.NodeSocket) and not original_specular_socket.is_linked - specularcolor_non_linked = isinstance(original_specularcolor_socket, bpy.types.NodeSocket) and not original_specularcolor_socket.is_linked + specular_non_linked = isinstance(original_specular_socket.socket, bpy.types.NodeSocket) and not original_specular_socket.socket.is_linked + specularcolor_non_linked = isinstance(original_specularcolor_socket.socket, bpy.types.NodeSocket) and not original_specularcolor_socket.socket.is_linked use_actives_uvmaps = [] if specular_non_linked is True: - fac = original_specular_socket.default_value + fac = original_specular_socket.socket.default_value if fac != 1.0: specular_extension['specularFactor'] = fac else: # Factor - fac = gltf2_blender_get.get_factor_from_socket(original_specular_socket, kind='VALUE') + fac = get_factor_from_socket(original_specular_socket, kind='VALUE') if fac is not None and fac != 1.0: specular_extension['specularFactor'] = fac @@ -60,12 +63,12 @@ def export_original_specular(blender_material, export_settings): if specularcolor_non_linked is True: - color = original_specularcolor_socket.default_value[:3] + color = original_specularcolor_socket.socket.default_value[:3] if color != [1.0, 1.0, 1.0]: specular_extension['specularColorFactor'] = color else: # Factor - fac = gltf2_blender_get.get_factor_from_socket(original_specularcolor_socket, kind='RGB') + fac = get_factor_from_socket(original_specularcolor_socket, kind='RGB') if fac is not None and fac != [1.0, 1.0, 1.0]: specular_extension['specularColorFactor'] = fac @@ -90,13 +93,13 @@ def export_specular(blender_material, export_settings): specular_extension = {} specular_ext_enabled = False - specular_socket = gltf2_blender_get.get_socket(blender_material, 'Specular') - specular_tint_socket = gltf2_blender_get.get_socket(blender_material, 'Specular Tint') - base_color_socket = gltf2_blender_get.get_socket(blender_material, 'Base Color') - transmission_socket = gltf2_blender_get.get_socket(blender_material, 'Transmission') - ior_socket = gltf2_blender_get.get_socket(blender_material, 'IOR') + specular_socket = get_socket(blender_material, 'Specular') + specular_tint_socket = get_socket(blender_material, 'Specular Tint') + base_color_socket = get_socket(blender_material, 'Base Color') + transmission_socket = get_socket(blender_material, 'Transmission') + ior_socket = get_socket(blender_material, 'IOR') - if base_color_socket is None: + if base_color_socket.socket is None: return None, None specular_not_linked = not has_image_node_from_socket(specular_socket, export_settings) @@ -105,11 +108,11 @@ def export_specular(blender_material, export_settings): transmission_not_linked = not has_image_node_from_socket(transmission_socket, export_settings) ior_not_linked = not has_image_node_from_socket(ior_socket, export_settings) - specular = specular_socket.default_value if specular_not_linked else None - specular_tint = specular_tint_socket.default_value if specular_tint_not_linked else None - transmission = transmission_socket.default_value if transmission_not_linked else None - ior = ior_socket.default_value if ior_not_linked else GLTF_IOR # textures not supported #TODOExt add warning? - base_color = base_color_socket.default_value[0:3] + specular = specular_socket.socket.default_value if specular_not_linked else None + specular_tint = specular_tint_socket.socket.default_value if specular_tint_not_linked else None + transmission = transmission_socket.socket.default_value if transmission_not_linked else None + ior = ior_socket.socket.default_value if ior_not_linked else GLTF_IOR # textures not supported #TODOExt add warning? + base_color = base_color_socket.socket.default_value[0:3] no_texture = (transmission_not_linked and specular_not_linked and specular_tint_not_linked and (specular_tint == 0.0 or (specular_tint != 0.0 and base_color_not_linked))) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py index 464d275c9..c16fe2c2e 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py @@ -14,9 +14,11 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import has_image_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + has_image_node_from_socket, \ + get_socket, \ + get_factor_from_socket def export_transmission(blender_material, export_settings): transmission_enabled = False @@ -25,13 +27,13 @@ def export_transmission(blender_material, export_settings): transmission_extension = {} transmission_slots = () - transmission_socket = gltf2_blender_get.get_socket(blender_material, 'Transmission') + transmission_socket = get_socket(blender_material, 'Transmission') if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked: - transmission_extension['transmissionFactor'] = transmission_socket.default_value + transmission_extension['transmissionFactor'] = transmission_socket.socket.default_value transmission_enabled = transmission_extension['transmissionFactor'] > 0 elif has_image_node_from_socket(transmission_socket, export_settings): - fac = gltf2_blender_get.get_factor_from_socket(transmission_socket, kind='VALUE') + fac = get_factor_from_socket(transmission_socket, kind='VALUE') transmission_extension['transmissionFactor'] = fac if fac is not None else 1.0 has_transmission_texture = True transmission_enabled = True diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py index 2774100a3..7b14fc83d 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py @@ -13,8 +13,13 @@ # limitations under the License. from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.io.com.gltf2_io_extensions import Extension +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + get_socket, \ + NodeSocket, \ + previous_socket, \ + previous_node, \ + get_factor_from_socket def detect_shadeless_material(blender_material, export_settings): """Detect if this material is "shadeless" ie. should be exported @@ -24,8 +29,8 @@ def detect_shadeless_material(blender_material, export_settings): if not blender_material.use_nodes: return None # Old Background node detection (unlikely to happen) - bg_socket = gltf2_blender_get.get_socket(blender_material, "Background") - if bg_socket is not None: + bg_socket = get_socket(blender_material, "Background") + if bg_socket.socket is not None: return {'rgb_socket': bg_socket} # Look for @@ -36,6 +41,7 @@ def detect_shadeless_material(blender_material, export_settings): info = {} + #TODOSNode this can be a function call for node in blender_material.node_tree.nodes: if node.type == 'OUTPUT_MATERIAL' and node.is_active_output: socket = node.inputs[0] @@ -44,24 +50,24 @@ def detect_shadeless_material(blender_material, export_settings): return None # Be careful not to misidentify a lightpath trick as mix-alpha. - result = __detect_lightpath_trick(socket) + result = __detect_lightpath_trick(NodeSocket(socket, [])) if result is not None: socket = result['next_socket'] else: - result = __detect_mix_alpha(socket) + result = __detect_mix_alpha(NodeSocket(socket, [])) if result is not None: socket = result['next_socket'] info['alpha_socket'] = result['alpha_socket'] - result = __detect_lightpath_trick(socket) + result = __detect_lightpath_trick(NodeSocket(socket, [])) if result is not None: socket = result['next_socket'] # Check if a color socket, or connected to a color socket if socket.type != 'RGBA': - from_socket = gltf2_blender_get.previous_socket(socket) - if from_socket is None: return None - if from_socket.type != 'RGBA': return None + from_socket = previous_socket(NodeSocket(socket, [])) + if from_socket.socket is None: return None + if from_socket.socket.type != 'RGBA': return None info['rgb_socket'] = socket return info @@ -77,13 +83,13 @@ def __detect_mix_alpha(socket): # # Returns None if not detected. Otherwise, a dict containing alpha_socket # and next_socket. - prev = gltf2_blender_get.previous_node(socket) - if prev is None or prev.type != 'MIX_SHADER': return None - in1 = gltf2_blender_get.previous_node(prev.inputs[1]) - if in1 is None or in1.type != 'BSDF_TRANSPARENT': return None + prev = previous_node(socket) + if prev.node is None or prev.node.type != 'MIX_SHADER': return None + in1 = previous_node(NodeSocket(prev.node.inputs[1], prev.group_path)) + if in1.node is None or in1.node.type != 'BSDF_TRANSPARENT': return None return { - 'alpha_socket': prev.inputs[0], - 'next_socket': prev.inputs[2], + 'alpha_socket': NodeSocket(prev.node.inputs[0], prev.group_path), + 'next_socket': NodeSocket(prev.node.inputs[2], prev.group_path), } @@ -99,17 +105,17 @@ def __detect_lightpath_trick(socket): # The Emission node can be omitted. # Returns None if not detected. Otherwise, a dict containing # next_socket. - prev = gltf2_blender_get.previous_node(socket) - if prev is None or prev.type != 'MIX_SHADER': return None - in0 = gltf2_blender_get.previous_socket(prev.inputs[0]) - if in0 is None or in0.node.type != 'LIGHT_PATH': return None - if in0.name != 'Is Camera Ray': return None - next_socket = prev.inputs[2] + prev = previous_node(socket) + if prev.node is None or prev.node.type != 'MIX_SHADER': return None + in0 = previous_socket(NodeSocket(prev.inputs[0], prev.group_path)) + if in0.node is None or in0.node.type != 'LIGHT_PATH': return None + if in0.node.name != 'Is Camera Ray': return None + next_socket = NodeSocket(prev.node.inputs[2], prev.group_path) # Detect emission - prev = gltf2_blender_get.previous_node(next_socket) - if prev is not None and prev.type == 'EMISSION': - next_socket = prev.inputs[0] + prev = previous_node(next_socket) + if prev.node is not None and prev.node.type == 'EMISSION': + next_socket = NodeSocket(prev.node.inputs[0], prev.group_path) return {'next_socket': next_socket} @@ -118,9 +124,9 @@ def gather_base_color_factor(info, export_settings): rgb, alpha = None, None if 'rgb_socket' in info: - rgb = gltf2_blender_get.get_factor_from_socket(info['rgb_socket'], kind='RGB') + rgb = get_factor_from_socket(info['rgb_socket'], kind='RGB') if 'alpha_socket' in info: - alpha = gltf2_blender_get.get_factor_from_socket(info['alpha_socket'], kind='VALUE') + alpha = get_factor_from_socket(info['alpha_socket'], kind='VALUE') if rgb is None: rgb = [1.0, 1.0, 1.0] if alpha is None: alpha = 1.0 @@ -132,7 +138,7 @@ def gather_base_color_factor(info, export_settings): def gather_base_color_texture(info, export_settings): sockets = (info.get('rgb_socket'), info.get('alpha_socket')) - sockets = tuple(s for s in sockets if s is not None) + sockets = tuple(s for s in sockets if s.socket is not None) if sockets: # NOTE: separate RGB and Alpha textures will not get combined # because gather_image determines how to pack images based on the diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index 5b09b46cf..1eafff3b8 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -14,12 +14,13 @@ import bpy from io_scene_gltf2.io.com.gltf2_io_extensions import Extension -from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ has_image_node_from_socket, \ get_const_from_default_value_socket, \ - get_socket_from_gltf_material_node + get_socket_from_gltf_material_node, \ + get_socket, \ + get_factor_from_socket def export_volume(blender_material, export_settings): @@ -27,9 +28,9 @@ def export_volume(blender_material, export_settings): # If no transmission --> No volume transmission_enabled = False - transmission_socket = gltf2_blender_get.get_socket(blender_material, 'Transmission') - if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked: - transmission_enabled = transmission_socket.default_value > 0 + transmission_socket = get_socket(blender_material, 'Transmission') + if isinstance(transmission_socket.socket, bpy.types.NodeSocket) and not transmission_socket.socket.is_linked: + transmission_enabled = transmission_socket.socket.default_value > 0 elif has_image_node_from_socket(transmission_socket, export_settings): transmission_enabled = True @@ -41,31 +42,31 @@ def export_volume(blender_material, export_settings): thickness_slots = () thickness_socket = get_socket_from_gltf_material_node(blender_material, 'Thickness') - if thickness_socket is None: + if thickness_socket.socket is None: # If no thickness (here because there is no glTF Material Output node), no volume extension export return None, None - density_socket = gltf2_blender_get.get_socket(blender_material, 'Density', volume=True) - attenuation_color_socket = gltf2_blender_get.get_socket(blender_material, 'Color', volume=True) + density_socket = get_socket(blender_material, 'Density', volume=True) + attenuation_color_socket = get_socket(blender_material, 'Color', volume=True) # Even if density or attenuation are not set, we export volume extension - if isinstance(attenuation_color_socket, bpy.types.NodeSocket): + if isinstance(attenuation_color_socket.socket, bpy.types.NodeSocket): rgb = get_const_from_default_value_socket(attenuation_color_socket, kind='RGB') volume_extension['attenuationColor'] = rgb - if isinstance(density_socket, bpy.types.NodeSocket): + if isinstance(density_socket.socket, bpy.types.NodeSocket): density = get_const_from_default_value_socket(density_socket, kind='VALUE') volume_extension['attenuationDistance'] = 1.0 / density if density != 0 else None # infinity (Using None as glTF default) - if isinstance(thickness_socket, bpy.types.NodeSocket) and not thickness_socket.is_linked: - val = thickness_socket.default_value + if isinstance(thickness_socket.socket, bpy.types.NodeSocket) and not thickness_socket.is_linked: + val = thickness_socket.socket.default_value if val == 0.0: # If no thickness, no volume extension export return None, None volume_extension['thicknessFactor'] = val elif has_image_node_from_socket(thickness_socket, export_settings): - fac = gltf2_blender_get.get_factor_from_socket(thickness_socket, kind='VALUE') + fac = get_factor_from_socket(thickness_socket, kind='VALUE') # default value in glTF is 0.0, but if there is a texture without factor, use 1 volume_extension['thicknessFactor'] = fac if fac != None else 1.0 has_thickness_texture = True diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py index 6f4123ad9..83dd0abf6 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py @@ -17,16 +17,17 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions from io_scene_gltf2.io.com.gltf2_io_constants import TextureFilter, TextureWrap -from io_scene_gltf2.blender.exp.gltf2_blender_get import ( +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import ( previous_node, previous_socket, get_const_from_socket, + NodeSocket ) @cached -def gather_sampler(blender_shader_node: bpy.types.Node, export_settings): - wrap_s, wrap_t = __gather_wrap(blender_shader_node, export_settings) +def gather_sampler(blender_shader_node: bpy.types.Node, group_path, export_settings): + wrap_s, wrap_t = __gather_wrap(blender_shader_node, group_path, export_settings) sampler = gltf2_io.Sampler( extensions=__gather_extensions(blender_shader_node, export_settings), @@ -90,11 +91,11 @@ def __gather_name(blender_shader_node, export_settings): return None -def __gather_wrap(blender_shader_node, export_settings): +def __gather_wrap(blender_shader_node, group_path, export_settings): # First gather from the Texture node - if blender_shader_node.extension == 'EXTEND': + if blender_shader_node.node.extension == 'EXTEND': wrap_s = TextureWrap.ClampToEdge - elif blender_shader_node.extension == 'CLIP': + elif blender_shader_node.node.extension == 'CLIP': # Not possible in glTF, but ClampToEdge is closest wrap_s = TextureWrap.ClampToEdge else: @@ -102,7 +103,7 @@ def __gather_wrap(blender_shader_node, export_settings): wrap_t = wrap_s # Take manual wrapping into account - result = detect_manual_uv_wrapping(blender_shader_node) + result = detect_manual_uv_wrapping(blender_shader_node, group_path) if result: if result['wrap_s'] is not None: wrap_s = result['wrap_s'] if result['wrap_t'] is not None: wrap_t = result['wrap_t'] @@ -114,7 +115,7 @@ def __gather_wrap(blender_shader_node, export_settings): return wrap_s, wrap_t -def detect_manual_uv_wrapping(blender_shader_node): +def detect_manual_uv_wrapping(blender_shader_node, group_path): # Detects UV wrapping done using math nodes. This is for emulating wrap # modes Blender doesn't support. It looks like # @@ -128,35 +129,35 @@ def detect_manual_uv_wrapping(blender_shader_node): # mode in each direction (or None), and next_socket. result = {} - comb = previous_node(blender_shader_node.inputs['Vector']) - if comb is None or comb.type != 'COMBXYZ': return None + comb = previous_node(NodeSocket(blender_shader_node.inputs['Vector'], group_path)) + if comb.node is None or comb.node.type != 'COMBXYZ': return None for soc in ['X', 'Y']: - node = previous_node(comb.inputs[soc]) - if node is None: return None + node = previous_node(NodeSocket(comb.node.inputs[soc], comb.group_path)) + if node.node is None: return None - if node.type == 'SEPXYZ': + if node.node.type == 'SEPXYZ': # Passed through without change wrap = None prev_socket = previous_socket(comb.inputs[soc]) - elif node.type == 'MATH': + elif node.node.type == 'MATH': # Math node applies a manual wrap - if (node.operation == 'PINGPONG' and - get_const_from_socket(node.inputs[1], kind='VALUE') == 1.0): # scale = 1 + if (node.node.operation == 'PINGPONG' and + get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind='VALUE') == 1.0): # scale = 1 wrap = TextureWrap.MirroredRepeat elif (node.operation == 'WRAP' and - get_const_from_socket(node.inputs[1], kind='VALUE') == 0.0 and # min = 0 - get_const_from_socket(node.inputs[2], kind='VALUE') == 1.0): # max = 1 + get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind='VALUE') == 0.0 and # min = 0 + get_const_from_socket(NodeSocket(node.node.inputs[2], node.group_path), kind='VALUE') == 1.0): # max = 1 wrap = TextureWrap.Repeat else: return None - prev_socket = previous_socket(node.inputs[0]) + prev_socket = previous_socket(NodeSocket(node.node.inputs[0], node.group_path)) else: return None - if prev_socket is None: return None - prev_node = prev_socket.node + if prev_socket.socket is None: return None + prev_node = prev_socket.socket.node if prev_node.type != 'SEPXYZ': return None # Make sure X goes to X, etc. if prev_socket.name != soc: return None @@ -168,5 +169,5 @@ def detect_manual_uv_wrapping(blender_shader_node): result['wrap_s' if soc == 'X' else 'wrap_t'] = wrap - result['next_socket'] = sep.inputs[0] + result['next_socket'] = NodeSocket(sep.inputs[0], prev_socket.group_path) return result diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py index 67db4c3c4..b7ec88c0b 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -18,7 +18,7 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_sampler -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket, NodeSocket from io_scene_gltf2.blender.exp import gltf2_blender_gather_image from io_scene_gltf2.io.com import gltf2_io_debug from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions @@ -26,7 +26,7 @@ @cached def gather_texture( - blender_shader_sockets: typing.Tuple[bpy.types.NodeSocket], + blender_shader_sockets: typing.Tuple[NodeSocket], export_settings): """ Gather texture sampling information and image channels from a blender shader texture attached to a shader socket. @@ -84,9 +84,10 @@ def __gather_sampler(blender_shader_sockets, export_settings): gltf2_io_debug.print_console("WARNING", "More than one shader node tex image used for a texture. " "The resulting glTF sampler will behave like the first shader node tex image.") - first_valid_shader_node = next(filter(lambda x: x is not None, shader_nodes)).shader_node + first_valid_shader_node = next(filter(lambda x: x is not None, shader_nodes)) return gltf2_blender_gather_sampler.gather_sampler( - first_valid_shader_node, + first_valid_shader_node.shader_node, + first_valid_shader_node.group_path, export_settings) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index 3a438eeab..9b04a32dd 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -17,12 +17,18 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture -from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import get_texture_node_from_socket, from_socket, FilterByType -from io_scene_gltf2.blender.exp import gltf2_blender_get -from io_scene_gltf2.blender.exp.gltf2_blender_get import previous_node from io_scene_gltf2.blender.exp.gltf2_blender_gather_sampler import detect_manual_uv_wrapping from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions +from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + get_texture_node_from_socket, \ + from_socket, \ + FilterByType, \ + previous_node, \ + get_const_from_socket, \ + NodeSocket, \ + get_texture_transform_from_mapping_node + # blender_shader_sockets determine the texture and primary_socket determines @@ -133,11 +139,11 @@ def __gather_normal_scale(primary_socket, export_settings): def __gather_occlusion_strength(primary_socket, export_settings): # Look for a MixRGB node that mixes with pure white in front of # primary_socket. The mix factor gives the occlusion strength. - node = gltf2_blender_get.previous_node(primary_socket) + node = previous_node(primary_socket) if node and node.type == 'MIX_RGB' and node.blend_type == 'MIX': - fac = gltf2_blender_get.get_const_from_socket(node.inputs['Fac'], kind='VALUE') - col1 = gltf2_blender_get.get_const_from_socket(node.inputs['Color1'], kind='RGB') - col2 = gltf2_blender_get.get_const_from_socket(node.inputs['Color2'], kind='RGB') + fac = get_const_from_socket(node.inputs['Fac'], kind='VALUE') + col1 = get_const_from_socket(node.inputs['Color1'], kind='RGB') + col2 = get_const_from_socket(node.inputs['Color2'], kind='RGB') if fac is not None: if col1 == [1, 1, 1] and col2 is None: return fac @@ -159,26 +165,27 @@ def __gather_texture_transform_and_tex_coord(primary_socket, export_settings): # # The [UV Wrapping] is for wrap modes like MIRROR that use nodes, # [Mapping] is for KHR_texture_transform, and [UV Map] is for texCoord. - blender_shader_node = get_texture_node_from_socket(primary_socket, export_settings).shader_node + result = get_texture_node_from_socket(primary_socket, export_settings) + blender_shader_node = result.shader_node # Skip over UV wrapping stuff (it goes in the sampler) - result = detect_manual_uv_wrapping(blender_shader_node) + result = detect_manual_uv_wrapping(blender_shader_node, result.group_path) if result: node = previous_node(result['next_socket']) else: - node = previous_node(blender_shader_node.inputs['Vector']) + node = previous_node(NodeSocket(blender_shader_node.inputs['Vector'], result.group_path)) texture_transform = None - if node and node.type == 'MAPPING': - texture_transform = gltf2_blender_get.get_texture_transform_from_mapping_node(node) - node = previous_node(node.inputs['Vector']) + if node.node and node.node.type == 'MAPPING': + texture_transform = get_texture_transform_from_mapping_node(node) + node = previous_node(NodeSocket(node.inputs['Vector'], node.group_path)) texcoord_idx = 0 use_active_uvmap = True - if node and node.type == 'UVMAP' and node.uv_map: + if node.node and node.node.type == 'UVMAP' and node.node.uv_map: # Try to gather map index. for blender_mesh in bpy.data.meshes: - i = blender_mesh.uv_layers.find(node.uv_map) + i = blender_mesh.uv_layers.find(node.node.uv_map) if i >= 0: texcoord_idx = i use_active_uvmap = False diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py index a42544490..aaf34cd53 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -13,11 +13,6 @@ # limitations under the License. import bpy -from mathutils import Vector, Matrix - -from ...blender.com.gltf2_blender_conversion import texture_transform_blender_to_gltf -from io_scene_gltf2.io.com import gltf2_io_debug - def get_animation_target(action_group: bpy.types.ActionGroup): return action_group.channels[0].data_path.split('.')[-1] @@ -40,213 +35,3 @@ def get_object_from_datapath(blender_object, data_path: str): # path_attr = data_path return prop - - -def get_node_socket(blender_material, type, name): - """ - For a given material input name, retrieve the corresponding node tree socket for a given node type. - - :param blender_material: a blender material for which to get the socket - :return: a blender NodeSocket for a given type - """ - # TODOSNodes manage groups - nodes = [n for n in blender_material.node_tree.nodes if isinstance(n, type) and not n.mute] - nodes = [node for node in nodes if check_if_is_linked_to_active_output(node.outputs[0])] - inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], []) - if inputs: - return inputs[0] - return None - - -def get_socket(blender_material: bpy.types.Material, name: str, volume=False): - """ - For a given material input name, retrieve the corresponding node tree socket. - - :param blender_material: a blender material for which to get the socket - :param name: the name of the socket - :return: a blender NodeSocket - """ - if blender_material.node_tree and blender_material.use_nodes: - #i = [input for input in blender_material.node_tree.inputs] - #o = [output for output in blender_material.node_tree.outputs] - if name == "Emissive": - # Check for a dedicated Emission node first, it must supersede the newer built-in one - # because the newer one is always present in all Principled BSDF materials. - emissive_socket = get_node_socket(blender_material, bpy.types.ShaderNodeEmission, "Color") - if emissive_socket: - return emissive_socket - # If a dedicated Emission node was not found, fall back to the Principled BSDF Emission socket. - name = "Emission" - type = bpy.types.ShaderNodeBsdfPrincipled - elif name == "Background": - type = bpy.types.ShaderNodeBackground - name = "Color" - elif name == "sheenColor": - return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Color") - elif name == "sheenRoughness": - return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Sigma") - else: - if volume is False: - type = bpy.types.ShaderNodeBsdfPrincipled - else: - type = bpy.types.ShaderNodeVolumeAbsorption - - return get_node_socket(blender_material, type, name) - - return None - -def check_if_is_linked_to_active_output(shader_socket): - #TODOSNodes manage groups - for link in shader_socket.links: - if isinstance(link.to_node, bpy.types.ShaderNodeOutputMaterial) and link.to_node.is_active_output is True: - return True - - if len(link.to_node.outputs) > 0: # ignore non active output, not having output sockets - ret = check_if_is_linked_to_active_output(link.to_node.outputs[0]) # recursive until find an output material node - if ret is True: - return True - - return False - -def get_texture_transform_from_mapping_node(mapping_node): - if mapping_node.vector_type not in ["TEXTURE", "POINT", "VECTOR"]: - gltf2_io_debug.print_console("WARNING", - "Skipping exporting texture transform because it had type " + - mapping_node.vector_type + "; recommend using POINT instead" - ) - return None - - - rotation_0, rotation_1 = mapping_node.inputs['Rotation'].default_value[0], mapping_node.inputs['Rotation'].default_value[1] - if rotation_0 or rotation_1: - # TODO: can we handle this? - gltf2_io_debug.print_console("WARNING", - "Skipping exporting texture transform because it had non-zero " - "rotations in the X/Y direction; only a Z rotation can be exported!" - ) - return None - - mapping_transform = {} - mapping_transform["offset"] = [mapping_node.inputs['Location'].default_value[0], mapping_node.inputs['Location'].default_value[1]] - mapping_transform["rotation"] = mapping_node.inputs['Rotation'].default_value[2] - mapping_transform["scale"] = [mapping_node.inputs['Scale'].default_value[0], mapping_node.inputs['Scale'].default_value[1]] - - if mapping_node.vector_type == "TEXTURE": - # This means use the inverse of the TRS transform. - def inverted(mapping_transform): - offset = mapping_transform["offset"] - rotation = mapping_transform["rotation"] - scale = mapping_transform["scale"] - - # Inverse of a TRS is not always a TRS. This function will be right - # at least when the following don't occur. - if abs(rotation) > 1e-5 and abs(scale[0] - scale[1]) > 1e-5: - return None - if abs(scale[0]) < 1e-5 or abs(scale[1]) < 1e-5: - return None - - new_offset = Matrix.Rotation(-rotation, 3, 'Z') @ Vector((-offset[0], -offset[1], 1)) - new_offset[0] /= scale[0]; new_offset[1] /= scale[1] - return { - "offset": new_offset[0:2], - "rotation": -rotation, - "scale": [1/scale[0], 1/scale[1]], - } - - mapping_transform = inverted(mapping_transform) - if mapping_transform is None: - gltf2_io_debug.print_console("WARNING", - "Skipping exporting texture transform with type TEXTURE because " - "we couldn't convert it to TRS; recommend using POINT instead" - ) - return None - - elif mapping_node.vector_type == "VECTOR": - # Vectors don't get translated - mapping_transform["offset"] = [0, 0] - - texture_transform = texture_transform_blender_to_gltf(mapping_transform) - - if all([component == 0 for component in texture_transform["offset"]]): - del(texture_transform["offset"]) - if all([component == 1 for component in texture_transform["scale"]]): - del(texture_transform["scale"]) - if texture_transform["rotation"] == 0: - del(texture_transform["rotation"]) - - if len(texture_transform) == 0: - return None - - return texture_transform - - -def get_factor_from_socket(socket, kind): - """ - For baseColorFactor, metallicFactor, etc. - Get a constant value from a socket, or a constant value - from a MULTIPLY node just before the socket. - kind is either 'RGB' or 'VALUE'. - """ - fac = get_const_from_socket(socket, kind) - if fac is not None: - return fac - - node = previous_node(socket) - if node is not None: - x1, x2 = None, None - if kind == 'RGB': - if node.type == 'MIX_RGB' and node.blend_type == 'MULTIPLY': - # TODO: handle factor in inputs[0]? - x1 = get_const_from_socket(node.inputs[1], kind) - x2 = get_const_from_socket(node.inputs[2], kind) - if kind == 'VALUE': - if node.type == 'MATH' and node.operation == 'MULTIPLY': - x1 = get_const_from_socket(node.inputs[0], kind) - x2 = get_const_from_socket(node.inputs[1], kind) - if x1 is not None and x2 is None: return x1 - if x2 is not None and x1 is None: return x2 - - return None - -def get_const_from_socket(socket, kind): - if not socket.is_linked: - if kind == 'RGB': - if socket.type != 'RGBA': return None - return list(socket.default_value)[:3] - if kind == 'VALUE': - if socket.type != 'VALUE': return None - return socket.default_value - - # Handle connection to a constant RGB/Value node - prev_node = previous_node(socket) - if prev_node is not None: - if kind == 'RGB' and prev_node.type == 'RGB': - return list(prev_node.outputs[0].default_value)[:3] - if kind == 'VALUE' and prev_node.type == 'VALUE': - return prev_node.outputs[0].default_value - - return None - - -def previous_socket(socket): - # TODOSNodes manage groups - while True: - if not socket.is_linked: - return None - - from_socket = socket.links[0].from_socket - - # Skip over reroute nodes - if from_socket.node.type == 'REROUTE': - socket = from_socket.node.inputs[0] - continue - - return from_socket - - -def previous_node(socket): - prev_socket = previous_socket(socket) - if prev_socket is not None: - return prev_socket.node - return None - diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 49cc77473..13e4c0e52 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -17,8 +17,11 @@ # import bpy +from mathutils import Vector, Matrix from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name +from ...blender.com.gltf2_blender_conversion import texture_transform_blender_to_gltf +from io_scene_gltf2.io.com import gltf2_io_debug import typing @@ -61,13 +64,14 @@ def __call__(self, shader_node): #TODOSNodes: is path still used somewhere ? class NodeTreeSearchResult: - def __init__(self, shader_node: bpy.types.Node, path: typing.List[bpy.types.NodeLink]): + def __init__(self, shader_node: bpy.types.Node, path: typing.List[bpy.types.NodeLink], group_path: typing.List[bpy.types.Node]): self.shader_node = shader_node self.path = path + self.group_path = group_path # TODO: cache these searches -def from_socket(start_socket: bpy.types.NodeSocket, +def from_socket(start_socket: NodeTreeSearchResult, shader_node_filter: typing.Union[Filter, typing.Callable]) -> typing.List[NodeTreeSearchResult]: """ Find shader nodes where the filter expression is true. @@ -76,22 +80,47 @@ def from_socket(start_socket: bpy.types.NodeSocket, :param shader_node_filter: should be a function(x: shader_node) -> bool :return: a list of shader nodes for which filter is true """ + print("FROM SOCKET call", start_socket.socket.name, start_socket.group_path) + print(shader_node_filter.type) # hide implementation (especially the search path) - #TODOSNodes Manage groups def __search_from_socket(start_socket: bpy.types.NodeSocket, shader_node_filter: typing.Union[Filter, typing.Callable], - search_path: typing.List[bpy.types.NodeLink]) -> typing.List[NodeTreeSearchResult]: + search_path: typing.List[bpy.types.NodeLink], + group_path: typing.List[bpy.types.Node]) -> typing.List[NodeTreeSearchResult]: results = [] - for link in start_socket.links: # follow the link to a shader node linked_node = link.from_node + + if linked_node.type == "GROUP": + group_output_node = [node for node in linked_node.node_tree.nodes if node.type == "GROUP_OUTPUT"][0] + socket = [sock for sock in group_output_node.inputs if sock.name == link.from_socket.name][0] + group_path.append(linked_node) + linked_results = __search_from_socket(socket, shader_node_filter, search_path + [link], group_path) + if linked_results: + # add the link to the current path + search_path.append(link) + results += linked_results + continue + + if linked_node.type == "GROUP_INPUT": + group_ = linked_node.id_data + socket_interface = [sock for sock in group_.inputs if sock.name == link.from_socket.name][0] + print("ju", socket_interface.identifier ,[sock for sock in group_path[-1].inputs if sock.identifier == socket_interface.identifier]) + socket = [sock for sock in group_path[-1].inputs if sock.identifier == socket_interface.identifier][0] + linked_results = __search_from_socket(socket, shader_node_filter, search_path + [link], group_path[:-1]) + if linked_results: + # add the link to the current path + search_path.append(link) + results += linked_results + continue + # check if the node matches the filter if shader_node_filter(linked_node): - results.append(NodeTreeSearchResult(linked_node, search_path + [link])) + results.append(NodeTreeSearchResult(linked_node, search_path + [link], group_path)) # traverse into inputs of the node for input_socket in linked_node.inputs: - linked_results = __search_from_socket(input_socket, shader_node_filter, search_path + [link]) + linked_results = __search_from_socket(input_socket, shader_node_filter, search_path + [link], group_path) if linked_results: # add the link to the current path search_path.append(link) @@ -99,10 +128,10 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, return results - if start_socket is None: + if start_socket.socket is None: return [] - return __search_from_socket(start_socket, shader_node_filter, []) + return __search_from_socket(start_socket.socket, shader_node_filter, [], start_socket.group_path) @cached def get_texture_node_from_socket(socket, export_settings): @@ -122,13 +151,27 @@ def has_image_node_from_socket(socket, export_settings): # return the default value of a socket, even if this socket is linked def get_const_from_default_value_socket(socket, kind): if kind == 'RGB': - if socket.type != 'RGBA': return None - return list(socket.default_value)[:3] + if socket.socket.type != 'RGBA': return None + return list(socket.socket.default_value)[:3] if kind == 'VALUE': - if socket.type != 'VALUE': return None - return socket.default_value + if socket.socket.type != 'VALUE': return None + return socket.socket.default_value return None +def get_material_nodes(node_tree: bpy.types.NodeTree, group_path, type): + """ + For a given tree, recursively return all nodes including node groups. + """ + print("GET MATERIAL NODES", type) + nodes = [] + for node in [n for n in node_tree.nodes if isinstance(n, type) and not n.mute]: + nodes.append((node, group_path.copy())) + + for node in [n for n in node_tree.nodes if n.type == "GROUP" and not n.mute]: + group_path.append(node) + nodes.extend(get_material_nodes(node.node_tree, group_path, type)) + + return nodes def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, name: str): """ @@ -138,13 +181,265 @@ def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, nam :param name: the name of the socket :return: a blender NodeSocket """ + print("GET MATERIAL GLTF NODES", str) gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_name().lower()] if blender_material.node_tree and blender_material.use_nodes: - nodes = [n for n in blender_material.node_tree.nodes if \ - isinstance(n, bpy.types.ShaderNodeGroup) and \ - (n.node_tree.name.startswith('glTF Metallic Roughness') or n.node_tree.name.lower() in gltf_node_group_names)] - inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], []) + nodes = get_material_nodes(blender_material.node_tree, [], bpy.types.ShaderNodeGroup) + nodes = [n for n in nodes if n[0].node_tree.name.startswith('glTF Metallic Roughness') or n[0].node_tree.name.lower() in gltf_node_group_names] + inputs = sum([[(input, node[1]) for input in node[0].inputs if input.name == name] for node in nodes], []) if inputs: - return inputs[0] + return NodeSocket(inputs[0][0], inputs[0][1]) + + return NodeSocket(None, None) + +class NodeSocket: + def __init__(self, socket, group_path): + self.socket = socket + self.group_path = group_path + +class ShNode: + def __init__(self, node, group_path): + self.node = node + self.group_path = group_path + +def get_node_socket(blender_material, type, name): + """ + For a given material input name, retrieve the corresponding node tree socket for a given node type. + + :param blender_material: a blender material for which to get the socket + :return: a blender NodeSocket for a given type + """ + nodes = get_material_nodes(blender_material.node_tree, [], type) + #TODOSNode : Why checking outputs[0] ? What about alpha for texture node, that is outputs[1] ???? + nodes = [node for node in nodes if check_if_is_linked_to_active_output(node[0].outputs[0], node[1])] + inputs = sum([[(input, node[1]) for input in node[0].inputs if input.name == name] for node in nodes], []) + if inputs: + return NodeSocket(inputs[0][0], inputs[0][1]) + return NodeSocket(None, None) + + +def get_socket(blender_material: bpy.types.Material, name: str, volume=False): + """ + For a given material input name, retrieve the corresponding node tree socket. + + :param blender_material: a blender material for which to get the socket + :param name: the name of the socket + :return: a blender NodeSocket + """ + if blender_material.node_tree and blender_material.use_nodes: + #i = [input for input in blender_material.node_tree.inputs] + #o = [output for output in blender_material.node_tree.outputs] + if name == "Emissive": + # Check for a dedicated Emission node first, it must supersede the newer built-in one + # because the newer one is always present in all Principled BSDF materials. + emissive_socket = get_node_socket(blender_material, bpy.types.ShaderNodeEmission, "Color") + if emissive_socket.socket is not None: + return emissive_socket + # If a dedicated Emission node was not found, fall back to the Principled BSDF Emission socket. + name = "Emission" + type = bpy.types.ShaderNodeBsdfPrincipled + elif name == "Background": + type = bpy.types.ShaderNodeBackground + name = "Color" + elif name == "sheenColor": + return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Color") + elif name == "sheenRoughness": + return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Sigma") + else: + if volume is False: + type = bpy.types.ShaderNodeBsdfPrincipled + else: + type = bpy.types.ShaderNodeVolumeAbsorption + + return get_node_socket(blender_material, type, name) + + return NodeSocket(None, None) + +def get_factor_from_socket(socket, kind): + """ + For baseColorFactor, metallicFactor, etc. + Get a constant value from a socket, or a constant value + from a MULTIPLY node just before the socket. + kind is either 'RGB' or 'VALUE'. + """ + fac = get_const_from_socket(socket, kind) + if fac is not None: + return fac + + node = previous_node(socket) + if node.node is not None: + x1, x2 = None, None + if kind == 'RGB': + if node.node.type == 'MIX_RGB' and node.node.blend_type == 'MULTIPLY': + # TODO: handle factor in inputs[0]? + x1 = get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind) + x2 = get_const_from_socket(NodeSocket(node.node.inputs[2], node.group_path), kind) + if kind == 'VALUE': + if node.node.type == 'MATH' and node.node.operation == 'MULTIPLY': + x1 = get_const_from_socket(NodeSocket(node.node.inputs[0], node.group_path), kind) + x2 = get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind) + if x1 is not None and x2 is None: return x1 + if x2 is not None and x1 is None: return x2 + + return None + +def get_const_from_socket(socket, kind): + if not socket.socket.is_linked: + if kind == 'RGB': + if socket.socket.type != 'RGBA': return None + return list(socket.socket.default_value)[:3] + if kind == 'VALUE': + if socket.socket.type != 'VALUE': return None + return socket.socket.default_value + + # Handle connection to a constant RGB/Value node + prev_node = previous_node(socket) + if prev_node.node is not None: + if kind == 'RGB' and prev_node.node.type == 'RGB': + return list(prev_node.node.outputs[0].default_value)[:3] + if kind == 'VALUE' and prev_node.node.type == 'VALUE': + return prev_node.node.outputs[0].default_value + + return None + + +def previous_socket(socket: NodeSocket): + + soc = socket.socket + group_path = socket.group_path.copy() + while True: + if not soc.is_linked: + return None + + from_socket = soc.links[0].from_socket + from_node = soc.links[0].from_node + + # if we entering a group + pass #TODOSNodes + + # if we exiting a group + pass #TODOSNodes + + # Skip over reroute nodes + if from_socket.node.type == 'REROUTE': + soc = from_socket.node.inputs[0] + continue + + return NodeSocket(from_socket, group_path) + + +def previous_node(socket: NodeSocket): + prev_socket = previous_socket(socket) + if prev_socket.socket is not None: + return ShNode(prev_socket.socket.node, prev_socket.group_path) + return ShNode(None, None) + +def get_texture_transform_from_mapping_node(mapping_node): + if mapping_node.node.vector_type not in ["TEXTURE", "POINT", "VECTOR"]: + gltf2_io_debug.print_console("WARNING", + "Skipping exporting texture transform because it had type " + + mapping_node.node.vector_type + "; recommend using POINT instead" + ) + return None + + + rotation_0, rotation_1 = mapping_node.inputs['Rotation'].default_value[0], mapping_node.inputs['Rotation'].default_value[1] + if rotation_0 or rotation_1: + # TODO: can we handle this? + gltf2_io_debug.print_console("WARNING", + "Skipping exporting texture transform because it had non-zero " + "rotations in the X/Y direction; only a Z rotation can be exported!" + ) + return None + + mapping_transform = {} + mapping_transform["offset"] = [mapping_node.inputs['Location'].default_value[0], mapping_node.inputs['Location'].default_value[1]] + mapping_transform["rotation"] = mapping_node.inputs['Rotation'].default_value[2] + mapping_transform["scale"] = [mapping_node.inputs['Scale'].default_value[0], mapping_node.inputs['Scale'].default_value[1]] + + if mapping_node.vector_type == "TEXTURE": + # This means use the inverse of the TRS transform. + def inverted(mapping_transform): + offset = mapping_transform["offset"] + rotation = mapping_transform["rotation"] + scale = mapping_transform["scale"] + + # Inverse of a TRS is not always a TRS. This function will be right + # at least when the following don't occur. + if abs(rotation) > 1e-5 and abs(scale[0] - scale[1]) > 1e-5: + return None + if abs(scale[0]) < 1e-5 or abs(scale[1]) < 1e-5: + return None + + new_offset = Matrix.Rotation(-rotation, 3, 'Z') @ Vector((-offset[0], -offset[1], 1)) + new_offset[0] /= scale[0]; new_offset[1] /= scale[1] + return { + "offset": new_offset[0:2], + "rotation": -rotation, + "scale": [1/scale[0], 1/scale[1]], + } + + mapping_transform = inverted(mapping_transform) + if mapping_transform is None: + gltf2_io_debug.print_console("WARNING", + "Skipping exporting texture transform with type TEXTURE because " + "we couldn't convert it to TRS; recommend using POINT instead" + ) + return None + + elif mapping_node.vector_type == "VECTOR": + # Vectors don't get translated + mapping_transform["offset"] = [0, 0] + + texture_transform = texture_transform_blender_to_gltf(mapping_transform) + + if all([component == 0 for component in texture_transform["offset"]]): + del(texture_transform["offset"]) + if all([component == 1 for component in texture_transform["scale"]]): + del(texture_transform["scale"]) + if texture_transform["rotation"] == 0: + del(texture_transform["rotation"]) + + if len(texture_transform) == 0: + return None + + return texture_transform + +def check_if_is_linked_to_active_output(shader_socket, group_path): + for link in shader_socket.links: + + # If we are entering a node group + if link.to_node.type == "GROUP": + print("Entering a group") + socket_name = link.to_socket.name + sockets = [n for n in link.to_node.node_tree.nodes if n.type == "GROUP_INPUT"][0].outputs + socket = [s for s in sockets if s.name == socket_name][0] + group_path.append(link.to_node) + #TODOSNode : Why checking outputs[0] ? What about alpha for texture node, that is outputs[1] ???? + ret = check_if_is_linked_to_active_output(socket, group_path) # recursive until find an output material node + if ret is True: + return True + continue + + # If we are exiting a node group + if link.to_node.type == "GROUP_OUTPUT": + socket_name = link.to_socket.name + sockets = group_path[-1].outputs + socket = [s for s in sockets if s.name == socket_name][0] + group_path = group_path[:-1] + #TODOSNode : Why checking outputs[0] ? What about alpha for texture node, that is outputs[1] ???? + ret = check_if_is_linked_to_active_output(socket, group_path) # recursive until find an output material node + if ret is True: + return True + continue + + if isinstance(link.to_node, bpy.types.ShaderNodeOutputMaterial) and link.to_node.is_active_output is True: + return True + + if len(link.to_node.outputs) > 0: # ignore non active output, not having output sockets + #TODOSNode : Why checking outputs[0] ? What about alpha for texture node, that is outputs[1] ???? + ret = check_if_is_linked_to_active_output(link.to_node.outputs[0], group_path) # recursive until find an output material node + if ret is True: + return True - return None \ No newline at end of file + return False diff --git a/tests/scenes/22_node_groups.blend b/tests/scenes/22_node_groups.blend new file mode 100644 index 0000000000000000000000000000000000000000..cb467af47886cebf6ffcc9d867f8189cad3466c4 GIT binary patch literal 1184324 zcmeEv31Ah~)&FDxMivE8h=3Y}V%*sYMzW9q4`q{tML;1WfuKOr5D-`5f<94^+Nx+> zC{~TyTCpzZhXH}=Yt_0{MQi)<{au>6x3w+RYX0ZUJ-_#6Zf4$=0O93bc)4?D&N=tq z^Sk?;duPnVv6G9&PCIqw&_P3|(WTEYjQOu^Tl(EbDp|!-MS|JCAHE1 zG;q$eX%8gvZ-2NW$AbnBzA%YDw9)?j-o1OD!F_+S{cnHRbB@!}(z;*0X3am7__t5| zIoB177QLLrzy0D*^S|{;{M#@7C!TcDc}e`+FaF)TcRzXUjW;Ie|LwF0q^72Jy?piR zFWPDLli4N>lvh;zCaH*nLIdekUpuyTN_h;}+A@>!T2}*yAAb0VvhwoZ6%-WwEop|DTttl@ltMxR%@96UK^KZHC`s=^tar&Y~i<-uc9lNJ%mo8_vRxBMmcI?$! zvXXLIO#|u2AAkJJ6&GFf5#x?uRaI5fjOjC)CQX|3^$|xLaW2KiW&%ld)mzo1~nm2T4&u*cV0y{)rqfS9{g*T@?0(Q>G?~z58aOsHbLx_%OW(C)?RI_bb=NuY=Q1#3 z`t+u}+}t-ibm-8(nc(D&Hmw2EG>I^Ih@hc3{fn$^Xj8$Y4{^I~6s0!L;vJN@qkYmm|`|SIpZR@@8 zU%GTzSo~2A1`QhY>*Tobz!xYq8)PiT1L~FAui$I^J&Kv(Gx~vqKL(bVBt6IBkd;E^pj3LdC`iMEB_J;rm@h{ z_#tNexeU;_@cR=^IN?@8A~`PH2gMQZ=-k$AW5G8X+BtLP#8n2k91I;gbPL)3_TC37 zXqO_ntuGoo_O^Y|)_awOva+(c@t;m*AU{9jMHv8+@x#yl6 zRT&6Z_qqP_FNW;5d(r^|2As3MFb)?_X=!Oh{5`SfK0vTf;vZX)KJK{Vri8;~e?42g zcyavr+ptgK9~=HhAAR(M{e^M3c&dN+!?5^ATld>L{`7vfLo6krPv5@z;c(es&sJT0 zu_yjvvDe!E_KLstj&9PV2gZ;0y+LdD=TI3)kER@uebuP_g>kreR@c?VhribLw?q6L z@94_Q%B`_b&KWr`la0=ZNM)dF*RIF%JGgMz?2l*H`u(o>$6EK>6aH@R=oo)xM?Isd zcv|tdLk17oOyyuWl>^sxae8lZIM2WL2gc#zxMAH*O|xdQEwIxLD2adb8f?9zD=NC( z?Hyftx!sRsEf3yda zCr$qPgn=jg$X*WG1pb6Q=PCLXy4J5mxtPa;I8`<&z|`Ae*OB@ z@E)xL-u?^rjQ=ugKd5T|llZHaI=GMSs;fNr(b@aeGF$(z)X3U^{;5@bq_X|_^57zdd_e@_H#h&R%_^3HlZ1}VN zO(eOk^898x`@;kOo7VrRY2A-*p*FzZG@srDwio3S(tJN{j?LofAnL=Z{7M^nl4&(anr0>v)s!;g4BN+-<{K1`{;nx+&Ob&ZvR(abkTmmU(NBk z{@---`XZaMVXRC6MK={v|Gv`THec8^)iuL*Ib7#kl|MJ?}eTP5ScgCIi zb{*GP!Z+T;>qFHJJ0HyVbYEZNZmZ$a1q*h?if<(Pb7!#~U2OHAZ7(9pjpz9~!u@6o zcg8-_&p8J0DjQc`eN7Y3adgb>;kJsmo-P{ix9VPM#%R{eSux|!^(r2G-FR-I`mV-w zk?@ZHIm@qEUTfvkjytY(J-5|x?aGz!x#_Sa_hwq}P-CnAd=Cisor(|=I3ceE(^T>PL~sHn8)%uF8ehsb4Bj=4l?|^(|YIE z(ds!`I$l4Ewf|pCbF66PgKph{#$6jv+;HPMHCLqhfmYAjWRTvw_9Xj_@1W1t@?*uG z=@(U2Muq=P>!@$PnbvD~?jGr<;j_QmgsW(L*d_tj5=DEJ`x5?9={=UR5fA+;V1YAqh zX{Vn)r=@k>jX$3GKhK-kZfJGgRnd>{+He`rRNW?nBeSztxZ&5*d-1IQVa&kgVD8-W znpUm4gxZ6Hs}JCLN%aqxzdNR|==wGZxR$8gyu52#inSYmJnR3!A3m1@E=ScrtZ7<% z!%b~=EWnswdifQN6DLi+>zHGX9ZxEbYR{Vn#Q_QWCQSH|8-6Xl7ti}Y;O_Lr4!fkJ ziPwj&z3zJJojt#|kM_5(#*LRs8`VY9M)_?b} z?5eK3>YAntmn>~MHx4@x;Oym(95Lbvo8r>B&z*Vh>|d|Faox8%cJYS&Yj6CfV&S3} z2M-y#G|@1(>CR}acmKRL>sAkMAbXir7hl@6pfuY3Al~&J<>AbnoL%-j;F|U!4<0w( z_mivFT=&m-a0lkYhmZJSmo8n7hulQ=Tl(%FYw~Ohp?==uva8oz+f-d$)8suijEp^( z0s3C+>)|k=edb4JXOFrlnlZwSG{2)m|{S=`QYf|H^h2n8)JZV%gnZa_Qxk z%|vL75FPf6|M+p^{%FgC=cU&e0hkwzDZGxp_c??F95nMa&&P+I`y@A=xj8Ykb|-y%w7ADZ*MhQg!%gdG9(f7PBNtd}fQKD+*ytpJEz`g$ zr=B|dM$#+WSwvOWuByDQ*q$TG%jJ2Q9By_~M%DuKzc$?b?6)qHNePPtMWfhOX5a>1>FMtP@W> zZ`Qf9AEWm=f9Lfxds&F*8s&%Q8kbyldE>;1lkcMMx{jj6x7W3}R>y5$2uw>$KlB)~ zci=I@#g|_8F~8r56@M;2jQQDwImM|#`qo!T67z!z>8R40et6HGgGP)TS;J$7>uCJQWdWFT|Is1AY$u}9N;@U$ z+_`gRM#fQRCNXcP1t6L2qy~~2NNOOdfushK8c1p&sez;hk{U>AAgO_*29g>`Y9OhB zqy~~2NNOOdfushK8c1p&sez;hk{U>AAgO_*29g>`Y9OhBqy~~2NNOOdfushK8c1p& zsez;hk{U>AAgO_*29g>`Y9OhBqy~~2NNOOdfushK8c1p&sez;hk{U>AAgO_*29g>` zY9OhBqy~~2NNOOdfushK8c1p&sez;hk{U>AAgO_*2KJK%#!s9wW-6U#JpZ+AOTSxf z7#k?w6#8XmW{&7+oRV^~q{Bb)4{yIk&&^qHSib*HZ(Dvanca<4BhxVM{OI2c_+HtN zvO$AKm6w-h4;~bxNnRv1kkmlC)WFP1hEd;v+K-P1^mv=vk#1?KorzW%GbhblylhhG zvS{gJp}RB|VvW`uCGDbzpJuhD8dDU(OrlAZUlin?B>v%`NJ;uh4J3pH@?Lp)V(=HrQC(i>I(WtR=*Q3M zm}fM8xX0tL)_1OH2}Z*oEbIJE|1%Bak|KNjMFk}Vv*-reyF)$N@4Dv(TJ43u&vA}+ z1LH-2S6N(#5ulreHClKIM%F_!$sUp(m;@A~Ui82&107qf2cYvns|gVWcu*ErxEORj$3 z9N%EwXMJbVL*%cI=-apIO*Q_0X|p3eki&c?1t33{IuRX5mJ5BA%k$k2Dm_6?$bZ*T z2+{*O@XdNa@j+gQ?;j36(1EY<7m5$^z_+@SlMi&@GaprakQd@}rW17F+wh3ugFNuT zNB%$uzJSCBd7w9pBdkmCfew5qhmZ%p)t#JtpaUQ1AP?cyozxY_mqnK--xY#i;C_`q z&_k~}F5m|}_!|XB$c26(2Xes=dhq+C{6H@Fb$x>$^x&_QdJ4Hnw--O?!M{QHAs2er zaYOu|2Y*2LAs75Q4&Vnp_|eWlF8F}2u0PO&AI~8d>2~AaLd0m#s(`<=Ymfu|0Y5K1 zn4ZhldsJJw<{fz?^*){YSYn!*D4r+F`to?sT=SOI-ef(l${BqBgl<-QXHHT+;*aE` zO=5lWN3tP*spO}R!T*$FntEbDTt5^V-`Os4&cC)ualKYx`SYK1hDD~A_X*8W*d4`x z9-BJWFaiZZU;1i(lxomdhUhy`osCaB^fCU}h11IV@^UN}I@W1e0*|0sC(u39m`^L+ z`+I(B^$GBG{#e7N^i96Cs*j4q@1O9Zqc4v{kLSA&dE6>9zz=u#u(Q_@J!H+dk@)N5#4qEB`>eSh@B?1J5Agz56|PhD&M@*-_$#S@ z2!qSrM?Yu5_|*)me}ox)*ZNo2Db=X%MomK4`p0s4gur!BcPv4Q4b?xEq@4Mbs(%Q# zmS1Tq+Cl$72Sx+5baXM1Dcz=2KT-Ip*g+2V-aSIr2Ez7opG6`%b+N zV?N-_A4u=ji`zXlF0%TZUn{+5NuM)I`W*Oy$*SFlk90)xk!Q{i_c@S{KIaJ13jf%l z%p(rH%v(hGlRrYr_{IWt3uPW*5W4$zU8u6Yp&;mcl=&m5%(KSA^*Ii?TGXs>tlB{L zOkzGE{r!p6R-a>vud&A*G`py>9uPm0fUL9Q>vOXHbClIrq0FPqY>l$aQ&F_s%wj4Z zR22NRYQB|0?FPzEq_p$%nZ*Um7B4NWU0k)yp#QDvE^C1_-*45t5x!sQ7W`O5=L>O1 z8x!lOi5%;H7F{ErULN}MpP}aEMHLH6S1hTuNs8?fcq1Q2dBlhLG|~l3fp=gFvzPNVrvPH&eg9f$Y*MKjNO%)F6!0!~^@V5xw@Eyca26%k|PRASZc;cPkx_BcW zk?=;kbiB=r;>CM>Mb*-Z+M0_qCs&nMEQdZ?!@r^hLb7CC2!5mB4L=^yhuD~Oyb+HV z-lng0@kTx(;f-|Zcw_x6_V%1sE2~!28jD)DZnJ7>C?B`;3*PWEey!%`@O8odj};!i zzbIdSu7`EJ5sw$%SXXVW_8j?$gg4R!yshyYWd`{@Qu+fu-wReOUP4XwY0E2?RFu`u zTTr!1*Fc1@gFgbT>*Ma$-Nt;izT*GKGr{poJv~8sk$#9kzFIf^apa#yMTb(N0%Iio zhdvujzn|_SU%Y$?Y>)@`dF(KA(!AQLswK-WUS3MFOYPIkGS->xqNW?Kp!rBE;=rsx2UFSMKz>H?`Mgg;DggEeV_}M zzR6RH#?G5kGS60q<4zya6Um4EfP1*~wI;rmg$iHzNT-+nKo>53t%)m>c+BsNNa3EwCECHz=Kqs+l) zUcR=^e-Mvne>tUf$4AIVr2Z1=LfV0M;F5Upo>sA}yrPByZ|xz{m9c=L(fVGN`L6h@ z1aJ5nc~n8Jt8hBrh|ddeb7t$}jeJDH8|l*VHZO}8@8YtW#nskqw>9Uwtk%)_@5<8h)?dqFonFI#;&hdQ zH+=I6HQ$9Fk63!W7j!z_h{qG}H(M8PQ-E)VC-Lh*qPe5TYB$OGR?9r{|A$RFsy zmo0pd7vd|lhP~he9r!AR5AwkGWtvl;paUQ1AP?a$(?aDli*BOc!yYmq@qr%oLN9lm zUgifq`1cAwA94||7eDC1UoZTSi}rk#NBThz{@ub4xrpD3AN1fipH=#UT%=pC@5n#s!JjSs zkc;x`#SeP$R|-GmBHdp6pa=g3;fGx0KU=HUNI&So9}s@XMgG0`K@a}D!VkIVAJIPP zXW4_xI0?3S0SSW+e0n`b zy8ya=U3jdbb~j9?9yXnRC8=Z5xes%*H8T%a<74>#sbUXa;$oYPNW%D>AIsKT&Gvu>>ARSc4G#VFHAKAMgTxrj!Si50%wM()Xu3L)oUVv1V5&9R8}GJU+oi&-5sd ze))B@Sf65aN;{m2a!2E6BP*SM;ql9+I>5G-IWBS)_aU@P466x}hy?L~AMgTx$R2RD z!rQwQ8QTvF;l*LWZ!#6|nNrA)mI-(#3HK0TBc%R?!|y7EpP}#@nVOZ(KX3d-+1f8R z{1i8GlXyPkx0kYo_IP8I>jW-Ey^Sd+jp|(U-SkaM(~ON_Qp)<^{t^8l`bYm?)p~*{ z{UrKD^z&IV-fR>fQJ{UFNeauS887dDFG>BxYR_H!$1^1!@dMLUKjxq5)}J93Zy)s& za!@~A<<+gDK8;-~^pD0!l12Sv(AW3U#MVEaK)Pf7>8`!>kH8D~K@Y%Hg)2$tf8K#- zv^$U5*Qq->{5k!;rysS8#@+N|hw%*TH4%PQJ=Xpz{O+XomG?p!Mpx<|OHyC6e%|e? zz5EY!#qTvOp2P}r{qs>jW=ehjS(NQ7Dfpmr{`Ja^$yi>ISzN|%ep@H`^NqtuP_W=o zfEv;x$4`TF)-R8&5dQ$tFPCZlt(SB$-FjQNKhg1XUJGJ}^9Ba0pyA)6<|!OZBUx28}d01lBOMdCv3V#}+x59U7^zZ)J$-h#2zC+35baMZL{s#Sz?-NC|4a zlm2J>rOvQ===qoP$;AH|*c^E2QD`~q{O zTuAv~J<%y{h01RQ{OTBc!Vi8k{CF>Q^!Rn7vhUXaDEzuwby%fc)n{BE>^`?AygmZF zfS><-g&%NL`J6w-Fdp3*$}@$xpTCR4{L1$Xd2or;vwI|r`PoSAxdh=^^K0AujBL5H zjZ4$`=RJM^Gq+z|gWUk`GFJ3}`Um?+pYJ4!1Af2@_@O-pt}4I73XS>qSa_*$e-*A< zxAQ)_@q{SlEx~V-gn=KzcrK6OS@?A(<eWN2 zg{~0w!RrG*;064UBjAegf%4tvqDTwyb8kOymC^+2w(XlQ|M)L_{!_G$@!Lo_1Rovw zWR=uA?l>x6m+}5DvYOqyv!HGp?N+Csa=w&F4SaRQhST#hKDxhQ&C3J1Uez`E&d57< z{$06a&p29W>xMj#U6FV9Hy`Bk^RJIf*?R4(D@KnvYS{A>%wvA$q3a?1oMjzD{LDjP zgXI>Hth*Gy(dDvF^LuXm)AoxVz9*mgzkBM9ye)Ul-j;g&3EPNv+e>TzH*aQ-$$9Us zJvxulkVp9&`gNz?`75eEY@jqW-0;skx1Rj3<8rSk7+gSUC^)U;mfX9~{Auo4*@r&) zc&8^GzwO0upZm7t^U-tv{>$9+vd$WMcc-2^&Y$0TjB)%6&j;SVcl(P^cOO$a#N4sz z-#ZGP%-Wd$#Seax_sLsd<}Ew@XV1Oy$p1DJeffIs(9N$jY`NzgEB)gxTAX+DS>tm1 zpYn{QuT3TAZhhdmioBCXf5`d>y5rucvh?xPZ+qm8T(o3c%|qvGBN^Me9k(fO^G6@# z-aY&omXUkYXSZz)Jd&2b+xKAu$*^RykYgWNQa~~af&vr#;+m%(we)MxX0-RX+}QbI zzpl%B>Xq?%op1Sf!=k6AH&kEpiw3*yr+hgJLkvsw1)py&NTIox-EliLH+N)S_Op8$ zK7Z*a4QZc!(%{x#aJ}XEjw$n)j#6*!vfQpivh=)W7SMTnxv93+j{8B=HjfL*126p0 zla^eC(#BF!jC8{^`Mm?}`lE4MT^`Qivu@!J9Z;8+)}ecM%PKvTo>W@JVaI0(-g(DS zxxAv&V=#@T=ypqOkrDO5>bLj&4=OJ$8?<21@Y0H5!^#JhXO9>$v~19@QDx=j6{7|% z7*bYIKC)ur@ZqE84W2iA(4bZHJMDt%MF%U|uIUb*$w~FY*5+CD#}>ADCCtzE-?^Nb zWW1Q4*PZI`%X9?io_tD)EnO-ts=dy)(xr0A_qoo$%zY^C^F8^g=S<_}xLxJ-DXd3f zeaaMjORQVL{sZe&u*cBtK{%d1^bYQH^4C)X*Od<1>Dy(2)zrC-N&TbMIvD&wnapDs zyR9d&^zaVjbI8H?++X1$Z~LjVCc#eDHy#^2))7_#&%c~ccGmjT_TQ`Z4fs~ys`MW^ zYpgGw6URUA`4!7!xfhYfSbw@x+=;(F1-yWtZ;`?exGKH)3Js%rhv(e~ox08t zeo-#)egxt1E_zmVtuD_b9`$}CmEMm83||WW!sEwsx%{tmk*l~#qNF9!Jk&qn1^i5@ z&%pIS=i99<;xuvHL;K~1pQ?GhzLA&?_yI5Ahui{JI`#c|+No))e+aAkcNT4$ET$iy zvxfRLO*T^UJ$4A=Ip5pUw0c5Q)9Te~?CTqI7T=^QNS_xWQ?%mFT=&>{;TNE1;qVJd zu*4+XAI5Jg=?MMlF_c4>W~f=dfl0FmZR`f#>+P##VeQl*e`;D<>T1UwYkvffn=nqo zxC#4IFrI?lCdN+~FTozuE|tqI&;L%PpBgvuNWs0Vn|WeaB7Wck88^-E71vp zjFQf}Wrsc*VLaz&;m1vVyQDG^IWPS98O!y;FC>8}6VGAXgnl(SZi)?KjGOFb(wN%O zbKHb+62?u44dW@;Jz>8L>~gX01p2RNBF*KN?FnEHb#f=RhjK6L<^ZvW55L}h!HG8O*;Fr(XlRXrC*Y(2a@$<5WQurmlJrwW)e&!;DpR*peJ$opwfBfV2 z%iEqN@$I327w|)S3|v+HYkT%k-1ngW@y5?N?sfE$Dq{!jUyOT!7w|)dfGffW%J&-g zqW|Oi=VlLea;JmL9_qC??V*GZ_E7y^+|2I~9q#l09h~pDL4kV97Aj;9wep?&wlYmi z?SICR{g97rh8`z7Are`S+Xk{K(<7uDEpzhym>_hLs$KBd+lp) z<@5Rj+YeQLx^CM`_lE3;nqD|0uh*#|`=Q5%9h*NR*J(dgePxwpKU87ZEoR{X?asH^Iif)^I z-OlB2Jy2MYuIx8B9h6qfwNxKTdnjl!k{{A}h_WU3AVrtq7Ous?Nb9udnlvL+e2~5 zY?(b2x6f7^&3&-^^ftSB`4676C*P@w{hU4fcYvD9Z^<2h3z+?Kp3UCp)VV@g4dVYy z?Q`^hCU#g~D&H$Ap1ZWFG#B`R4t$lu2YKMTwTqJv zbl}?{e2@n|{hU3}fiEC@kOw|>&R$3_pab7t;e$Nz8OEKC{DBU9po2Vw`*sQO@m^)r zL!A3GOX?-)QSS9}zg59bpa*}W@Ix-jp%*{s z!Jn~B>Zg`|y?h~l(1YJ6{E!R%dGUiD{Huf?a*=K?e$a!zUicvw?UP>akbcmEf4A^M zF7&ULKk$Pd{N_g0o#53_DZc*#wcc(nb9?WFSiF74 zllL`44%QKUOWfowDO8f!ZiOA6i^2|J74rIvb5X4KXgKc;ezW&5v7Ku(nsld5rgg^N zUe2`vUce9K0k|ryG&;_GOED;%8T+|!d=8k4=e|k(1%A*2aJ9nLId6S-;hDid zQ%|IG-@@T%KljZIKgAtPal&12`?;5Lh4y$O8T<$gVe{%z)WgyrsE2x9qCNKw{UQ2C z^9z~hO23JI5&e9IjF)$dkNl#4oJ9)bbywbBS(5r!OUG_)iaAEb13yqD@1uX{)}J93 zZy)_5tg!3Z?95m zewFCl$}+Rt%fH)uQpN3vD4_z3AMZUueNNPK-vS5t+&9EOK>9D7`}Uf4?i<3+bKg?5 zbKg?5bKmH>n2JI;Nhu;bh}3Omkyqp;)LHwxR%3t%fbQ#7;moUG^ zJQwpt%-ighi0w?Uzai585PzZcbK?7!OaHT~W&IE2p#3sexX9a{+#h1ctu0)m{{ddW zFR)VK2V7NJllw#30%rC!06*Xb{QOd%fvcV8KwNu`A7CfvwZ9;=uT~%FABbGEew@G$ zcmY4e1YDE*L!gni+FxXCZ?r7@nux;WPNF@M+B$vKtW z_WYEZ6`r@#!AZ2g>H%wI%B`(3$I852eBUK9Zd&a!&WS<=sP~YAdT(ClBCqa*A|+DR zvD?sjBwqVN+RMIL;062wm&>?G%7?-&ztAwAm3@7DXD)@ytaZ{iDfGS~GH$R+p9E~) zAHzSl*0pWxqGX5hzHwt3|Gekzd35Fi%D>yZU2!M=c^1G6`1z$i16QSb-XGFoCm=~N zIIQp+OgCY?>4hK8%k_Bff?qaa$3JiUkQQ#g-0)N5ro`VL0=$49^a5NBBeQ^NSfODw z5@vzIVb`wNb><7t6}@@lvYpG$8c;NX>H*gUUQYl%xfEuH^MDXm&(%7aVSF==e|)Z9 z=XZMMD;5IGI=DWs^Nnfz3y&Ym^}s+n9>UQtq0QPHxz>Sr;q-Yxq888=}Zg;=l-g>@&4r!aoPIuz*H=YE9G zwYr1wRO?R{(v^GJ_m7kHC-Hq($~fv;mvIjZiQt0cD3OD9z`WW;UK>8wt&TLt`qN#z z8Al0Tz%Ou(jH3isr59d*($00OtKX^X3}Kw(hISlbp071`s$Dnff&E;!bLd>RbBNw; zP5>D=*KM_nT*aOE=ehwe;OCe6>{<_@xc%sR;fM7nZok~{3#~ux$HeZ(sL*}_FW`qH z0N2p^6Y8IwPa^ftey$tp7tV3R`6LMAImZ$He3IhMT=&>{;TNE1=zrYs3rVoVB-|gy z&su+y{xrG%6dS}?e{yiSoa=`DAEr-@Ut-_?F}|W|X+>?##hE;?TkeRjg@Nl^z&}gu zQY-IMcAFc-4?Lj4zOPh%eg9CtS5#b0TeANH>42TQU((e)KIi@q(1CA@@IfB<_5B~9 z17D-?K_2)F!?~{lbl}U_r1S)N;M4bifDU{<;e$Nz_37fwALzihO86iz#OF*W=)hMm ze2@n|!?-?``#5e#GU+Dhz_(lYAP;8E5#)jIj&vs<=)jjPe2^F7bLJ0p z;6wR^Jn;4D@`5!fNB%$uKF~oP!d2Zue7v6m^#bfBnz4wYn7yX3jb{9RL8`6$8HW0mAS!QvJ-$?qgz1$-% zaus(w*v}z&0YBCaJK$;stofl?W}p3v%PJ(pk@NjhD$`*ARy!T2U1;~R{7^!W+K%NY0AV?9dRcR$q)w(IHB zWrfuex%CPD394Sh52UDZjlXlt#y60I_SK)}A}`-8Qt1}Eo{h16XNdF3&KlqB`3=bm z6d3TE?N{aRDEFan4DrvqeYNCq8%r8v{pn6|C;s>bcmcnFsqh1?N-u23^TdvjjyU{( zJ44~{SFr1OUavHY&BZR{ePc%o|Ge?zGJ*2H%mu&D`waI;!>73IKgIYIcmY4uXW*)G zGIxyKuBWMK9(@P9SJdNE*!9eI(KE?+!7tmGlgdAD{GeeTpL*lh4(xiQ{RMu|3ve}z zhpC=DO!aNu4u1CN+FN(guV~L7F5gMN!X8u)_`MLn`vpE|FY!JYVf9?S{|#@~)2GXv zRQ`p>FI@do+{jJh`CR|lt_S^TqS*E5Na3BPy3b`Nyu;g{pjFR4vg^UP3F9dL-(~(H z<0*Ze4(nzZPazj~rmKErEtPegpI_JUX$l!BZsREPBso7{d|y}9U;28wjC&AC7$5C8 z*w7LK!0BL z(JX;2-V(DHR_A8%Iv?-?eu2ZJTuAv)&}ir9w*$j$lewyo1Y7@I$t&d(munAM+0+mN9N@`yQksHmwwXF@v~1FGCx~SGf^VkYbRd?!EFI@o6__6_*PD=)vCi?s3mg$oz* z^QauRtJc0VS&zc{6zqzzZnaA6z;t^ytXtV5+aU8hZm)ayru|dt-s@9a{`LpUUJ1T= zq?*V2k9Av5vd7|njrkSiV0<3vZQ zLEZ=PI;~Cd&wG8CMY7zV6OG&aSaCborz9B(;Q>G31^mz+1J?tcS+DgCZaewsg`eB{ z)Pc@RYsL@!fEVyX9KcnD&!YM_!dCxkictTyry0g?>BsM6mr`BmMSg(7?C_rUMG3pt zPgVbTpS{#SvLg(nU7gB5@A}7eJ{*3En^TdPj`6FctYJK~lXMl$c$0=%mfI`#@9^bz z(93#I*^R>|@earF^S&7HH+aOqcfdQ=xQ(isx_l(SMGQT{3PWXMc=lqTqVP@w1 zRaY%vT)Vhxnepd)9%UI!1DVZe$RLnuGU);GvE3t`%*zhvh%%pLw=etVFy2*E^nP5% z!La+sdswf12(UZny1?UIK4*G*>LnIrZf%r#w!HTh-*=phYx=v5PmwBbpYvnc?TZ}L zchgN?-MT_0NybYpvD-HuAXzlt4f?9SvwW`aR4(X!Z1i^fUgO<%W4AAO0Y4y)@}a`o zInx$?kL~1VMO5M@S*4E3p!kphANwxmxjt9;tqqQsx>9>RJ#~Hx|Ge94d--=8FDY)M zAn|;zf7UtEQlAs`oN4n%s(o*51m_!vkw|Jdm7@T)97m3yh8wJ3G8Hxu{{U&{X{(gM zzwVMQrsHut!u^SkpL1WvJq*tO87N`@9@P(WFpYNFqJQ8pj}iCPInz9L;_8R^czk3J zQ;^cbe?!h*U9sQYKT-7~WfA(lkQ8-QJZ)m>#Z@b6jnf7V8lpdJVR&r|_-Dzur1Bw! z%U<}ukbQ1nOTYPV<$Fh!;@I!*8|~~@^S2JNt1~Eu%TFeSkPhra_Di~ggux5vesIu% zZ;S9j9@tiQa`J%=e2u~fdEhgQ_h@7h`tBX*z?V_4^aOd}TiwaY2RiWigb(t-H>9I8 zouC8XD&d2?5T7$X(1EXB_#iLDcb`@2fdlBkw_Eri4}7aTIr%^bK2ypOB4^1tcOGG81taK zWr)5Yhx5t&pa=gf;YWQ#x%1)&J^1~?54k9RI=+Y>^x)qj{E&-s=*16u@HYxS%-}Hw7O~3y6BM~VZXY^b9ztE{QH9| zQja!xccR-G4$EZxrqGYezuSI1=1!rN(lnzxrBCg1WIpq9!SCT)UgvWf{Nnqrdh=}# z!)Mx9T;-t(H~(Q#;#UL5|EZ(Qz~vbn^F2OVO~kP_9vq zQLgbE>d+pm$)GNCEY03fooJgz-K<@?BAT_x~yth zZN;iu5J%w`#>~-N==-!T&Sho*J%Z0v&OK4h`P}XRKRn}d&3b_zpcnI6r5EVSEbU|U zBj6i5cE;GT^ClIPjGZ>2U?SIf(apT2rL`3`i%XY)a^Lx7qL+&)3f2qz?4TDK#zgJ> z$Ek7+2IvKPfL?spDZM~n=J`&&*fmmJQ?YV!#YGSql|MBO9=l+EN8=;CWRgDE!RPh2 zuF{V(O|;Ix%v~?g1N7qeOM4*Y#w>U0rFnT-zM^JfX<0>-2`P?=y17u!bHRU=UOpo| zuwK|_hw_5=pXzS-zh;fQUZ4l)C2+mc3-o0!ilmp7RZCVZjaDtjjF_mK=ZW<)Q1rr2 z-O7veO!ek6?03v=s-M6;)FbEtdNFU1_66nUf=GHR))ygaDNfTdSRa(^a5Yq4gc3X!d)-W z1N7p*N!k}FH|F}jj{eBr?k-uptfI6gmR{O0CK69(L5xhctg&AHEPCPFtQX}%?QSgN zP=9ZCy+9ApOJJR}FH&yIAA9SCJEQ8V*z!0-cruF?FRxxwiY^wJi|Dgnc1F<4p%JBo z2+Y3jdVwCG7jwNDmqK6W9o~8=Td};hYU#Y{nyTvPDiI~8(BjFQN<0-cwTojuV3_q% z@1d7&(l7BFv}m1Q#^<0%y9+%)FTNisy+B`}hd*=5w24Lb;oL=4HA~9zbpQBUJjT0- zJy^AHBaH8V@tNz+rujD<^a4FVFaBGUUZ5|~!&l>%pmt&#ypWLA7{6r5xNZ%}k#eJp)AX`*@$%UEqe;Y&Ikj|o)D4oB0B&FYUj)6RYdqnC{_XC1 zfgYe2-)+*qNV(Bv25S&Hqj}{qbu6vXAH5hsFCFwmhY6d{x$6abfL{E!OZy__Mi&{> zOFW$s32Tl1=ob<6LQ6gV5lk6#*4V-ldxuoD;DU;>*ea7Q zG{$hG{)p{ZqIKp|?s|b9pcmgyrG1fdqstHJrM9MY+46-|HA{7pu;G%pxI!YieYqRu zh590HcmEQ4Y+c#E^t#^{z4Q!`N4)YH z??MmIi+QiKFH&xF!6CgYUbeipbXgfKz34RI!V}`+3Q1(WOpKtHBSPd6ugsU++g<1Z zdhud(kkoyR&{A@Wef#olEpRIpxpMbHcHb&1xQZ@B9PdVpR6o1}e_ za-+)+=_R&tF66Yvc=y}y!q1Pe#{_YP^UZhN^#VOWFL*Bqed#hodWmPXu65Sy_C(N2 zhMwp!Ve^WP%ia2E=mC0x2Wm-qgZv>s$ahxSKx=(IxGqm;;?tYq z~tn3Sy^|m^%fY%52QUtJT+bHETQk=1@r9_goZ=QD`JCqJqT_c-i zqyGG7Eqg8fy!fogKe6mPD(`yH@>w5jUkH0b*cbZ$DR%o}X9&AO*hzZX%fdeH=cLzn zXRMu7XpAf*Ef&z%P{h~w)pezPb_!mA^Pn8-Lg9BO5%a#t41@R8O-kuU`|8%CusIp5kiGnGbH%S;@F*>o z1`+02g5TaMOAn^_cpk5xb)>?hQT#}9vi=nxetT{BS^MgwJ}1h)y2g!PS-8OWVPDApIAQ@%cB^wy&<5N*BWY ziH@IV(T_)D;r7*~@bk;A58C}%;rh@%LM!}fX#a{8zEh)r_s>rLmD=+in!KyD=X-Ad z3%-ZOmBiHI^ZzvzzqJq0ukkn9`6)l^wC9-{!pr|SB;U$kqZa;&CNIk_FU9bGpy<)R zqCZ9d>id`K_t5X^`!}$k0CxQrZ1QKY*f0N-!d=N2V@OB8)$d#VYopV?(L6``SMmL) zO8+{EPj@VV@#Zqe*Kp=1O0Q;b>0iai^LYLGUaGwf^p39GZTu!W zIz2rbUU2rWzzg`9gB5_4ZqJ43qRlm{D2qgA^d zpNBA>a~yk`R!?YZTD@AGQR*9WmWnvFyOBy;!G?5PhJ<+RGvLSJ@M8%IIZj_tnqmHR z-{3dv>)%`UlYu_&?P6Aj^S=LkXBgRy*5~>+l`@Ea^%!DAe#6NCCgEt>!ZVBu_f=Z( z&e)-|X&uv2#fA&_F>b;*3F9VH&JnQA@OA!J!~VXi9-Bu;SD)+S ztoN0_)y7SN7w|K)W!xm?L*+yJ{z^;mv%X{u2XB>9&(MG-dMJIm13-|>_NxgQ|!^$y+ z@ynfvqlZyBrfc23R(L4gJVPGjiXQKgFxs|J+H(oQ%cF~Y=l;GkjJy>7(UUO!F3aWi z>yIw@F?R~B|EAG%k)-guMd4?5mwAi$zWe39ruf7blQXBP_5ZAMlpl#X&@(>#X8kUN zA7=>Z*59`we)H;|I?Bn631eptwG5tXtE!ePpI1s2ASGf)t^z`#?`ht=v)7bL0rlPz`e;z4Zw4!>+;xgLj zl{v+-myM^5`U}-jYrQ#A?3%*i*k%|4OWzQgb$SOwNAn5LA&HWUOG4U z9%o3$bGb-c&YZMw+9lsV)jZc<=HB1>wSL&w+u7fmyPe-#;;{thkDWE{P?y2KT&_3L zU;=#j-qO)8ZsvC0;a-{ga=zmR1-!nulzCHaUQWmFpS!*KdiwT(VRTt^d+wtrypnre z(|OxC{QaY64Cz;1nOC{vZR`1ioxj@t>zhx^+i?Hh=efT+hWMH1`=-@Hh`eqT$@(Sn z_az?Yzm4RsAz2F*f8A3nE-rYr>BZ+)?j2Xa{J(wkp}Yalowe=kA70-;X=q6Gy^%X_ zYybR*jq~#;4S9oqe&vwNi=WBAYUkSxl!k^Lj}LslQ^|GtjhF8&pfnWpI&x6nBb{gG zj+}G)$dl*x9(L-0d$;cP*Ny)6)*iWgmp<{tjt|G|x;+1`qK2BjyI!a7E&ccpV~W=P z;I3VpXZ0<5$K`uVMfClsq4dqDE%N;-{+86u^!=#*^8Kkz^!=#^=vz`J;rmmZNphFU z_otqs??*j$>WXbO51q4(WNhn3-;bIx=d;|qhd;wIa&MyVN2T9v=I{1>*g!HG6gREn zPFq(%GDs)w!(H>#qs_`~wD;6FsU>=<%NvwCJ@12g=C;bFpFj7{CZl0Fl_f|#CT-an z_ka19?Zf`@pKZ5(a+H@Ksw`rZ;xEX48n&i#8!;Dry4mif+n^7ocZQ|-y{(LAj#&*OVbX=!O4qWa!a z5B}Z~t!WfhEG%8Iq?KOewk*pBguA`xe^7a8*`Ni3hL=_h8&*E3JbT25p=E=HjVdcI zuNXCG!H}|w@{tt_hYue$Z}7a~g9fdl-)R?AFFGJl?W;(`eQ!x?7Yqq=U9V%l{rJ75 z?)>ef(eySWpA=zBmr9Fjuk)>RDMj&pquKYCgx5x=sNMc@yUKQQSbxTPG-$C-jdT2P z9wF@Iur3XH_Ido(gW4Uo^Xg6w+K`UFwVFC^>&+F;_a**m@*e+VS(na}b*m!f+vW0g z#tO9#z2PF|`#*MHk2XaP#^-^2H+lRGZ+5Nl9zT=UvS~dNK9wDXm;L;CtU%JVlXT(b zSby6|cW!oaYCTiUK10$-uNNu3`m@w}7<{idqP_1cSL5=^3it83E~oxN=lEQI?iHT( zYG^%-=U2cB`1!}kx{u(hOsRWkCx`ha+xxP6)GB@I+Wz;C67YCV z_|bYMEfR&+ecm^ImBK%I;(^}`8l#~6yV=PxH}~}EBtj%vsW4Y5{LCq`o+*CdL0LC= zO#I((w(O7UUsb+;wJQIWb;`Gd+5TiLRJi#T3633&oR+bi+f z@7b?cy%NHY*A0+vtQ+_qR_V9%*smu~DH_Xb25KF1-m&e96 z`7nwHY_D-Mts8J#ID>xdQ$y@Zp@o5f%jb;#sMs_K>7}Mt(~=I8S%gIITaO8Pfb*5441?$a_}n|6NL*JR3mDW_d>U0y)! zYvKF*tMwB2#g(Py6*b%ome63&;9rXz&g@tv@3*abLlP1H6QXxL5~Qbt9EMV#_I%;` z8`h1{>0%8p4wRW8gAUgwmA!^-MioFu7mQd3&jmP zUzViCO-`zVHw65E7w|JDDg1z|%AqyZ*%r!eD7;t3=%Huyy(S63PTT&><=Vo}X3t9B zr{s1|wS8Xr@jDIvdEuwHL-wp3uM{trBpiIVfFJMzeu2pfKj5lzmQm{-L(r|en5nTYrSFW`r~0#}3&l<$Qfrw8@Vz5hEu z2-lE~q3Z*ck4W*F?>p@_BhhpHv+Op7FPz=x?G?Yx*X4QHZRV1l;xMvP+$wg8XOW%a zO0rWND0Ye+$xiWMvQs=>vr}9L}ecd~Olq3Nf2N1gf%ry=(^ zvU8j}=862txgR!A8iIC?Kkxc#0i~hf?2~WLy}n;o-uYMb^HzM$J} zVjTkWO0>@@h}c#()vcu6W>7T=ev!1>OxkVII&aW+GgREI{wmmK$$bf1bESm0+bpKH zSNYUP`lqOM%rcMl#E{OMSH;sN(OM^+VY?6Pd~a|@6;mktSL%Ez|6|JEBL0TQRoM3* zmEXWO?)Gl>$k@&#)Q{Mocwh54Gm{=89p$3eN=a99&YspS@PQ6|8-x$?z+ctP$p<>{ z1%wasz(?l-T5m}ZALzihSNI?gd{y0?e4qngmgpJsz}L4+PitiW@qrF}vxE=wLVN`s zcufF&paUQ9g}e~ojC4C6=)ea$$V0fQ+YHM*kK@atn6%>}9z_kt7#U1` zAoWcD{`&~I9}Yj~y7kD^taSc)<2TCIe!1bNxRK(-^BKRrlr6N!8%f6kL)gr^6!oz5 z`~P8Qga7Gy*|s#z*cc`;tPk!V(I29J#C!n#Ci+G6uU_K~wC^)XVZ6VX&vh?J{lrR_ z+giMTy4a0~A1G7(n7_iUKMRu)d4&22IjEnm^7M1vThc!U&vOrVu6y+T;|ZiY)}QX$ zOaBPGfFJY#TvfP|#w33Zwy$&mb`hOqZS|L*6T$cN<8O)anKSIpmdb&1XEDBcRXx`J zs&x;X>rN*q)48)Hsjpc-@AlPR{s+3^_nH<@Vg~f>IM*jmjXur(GF8x{EHPl|Qllj?WgU33;D&YB-^U2PdpW)n2_^$J_zFqo| zHh6~R))!mC=nu>F>VFisvQ7bgBKg1%cmcn_1qwglYUR1^KI(tiwE}*I>~|0Ps{di> zYJSbbpC~}e=L{h*Ik3%07TL{y2Y*R z`fxW9@dIAK&$mqB2V7O&tva#|dQk82>#Xp7bn^*$@K&0-*d*bY?D|6I6+~s%$89J2 zA2*rnn zvPlB}yy~CAFY)dAfEVzCVu35d2g;8$eqsFF`@fzpt?GfwMdWzRqS(fv-2Yj2eZmL3 zzJ4y}G5%}qn0!42UUq#gwPPDcc6~mw>wBE+|0vG7;bhmhp6vSSZFYSF$gb}cvFoe5 z|H6XzPJC_qo(V<)x9fa<;a5}c+V&FJ_2K-&{*U#_>qT~bIKObuv8UzFAiF;M`GsS) z-fW#;czM?CxtEe%-@h;Iw{_c<&kY$qyHi8nrB{v4-*H>+wktW!^%xN|Bx3bT+w0Q*!8s}KRRxS8g{eSi}s!x541!x%C66TmZJSE z%*+?lF+>bT;%3(ud>H0}>#cPjqs&8fyFM@0(Aba1LUxz5>$7Vkk*||>eM!5%q+OqT z4ToKyIWu0nzG)T9XeTop_VIqZ)^sF1|w<^Epcj4{&xc^|g zzE~aiSDD0wbikf$ucWKFJg0pg=)jltYn5)u1HW$92RiW05dP9r%DR6l1 zh>za|_@vyxu4E?VgKj^_3sy>CpK>5B`AgLoU+q z#SeP$?-hQ?MZPn%asmB;9{gy3AQ$=e;s-tWkw3^qy50EMZUOBa-W&P;>um23Kk|Wc zfO3KO@ZOf!4R{=`?E1pIH|nj*nJIqY|I|F)_fc%~b;Qs5WV=4d!Mcn812=hX*RId& zy-~ZdTM)c}AIbx8Rd};q->0^9PYTc9WP1;RQsM5yuJ3U7l`L!BQ@88u+2Lq|SH8T~ z&A9x-uFq}VOmQc^T_5lQen7xc54W>jU!M?O92WfgQ62t)Ov-AqTdWgNEdjowSunsd-8p|EU+HCwJH8tsvm}L{zdx7&)oVmdo1qP=pP{m z^)t}uB2WLGd`s*q@Ev*h&Fm^-doMqivd8+4yHYv#)*CD$L9f#7iQKiJDd@SFrM?X@ZXc~+r`I3 z()gH{m(PQ&^YC($|6SgTKkT>d!|dO)?jt%L z7qeqLVs(+)PcQuXc8MppSW|c4=(+w?pGe~|85jL3HM;VNciQF$?sIi+{Y@kCuB#!Ky2RK3_A>Ws@Ho`T4ASEn1dWuqq{+pK*NrjQOAa z=Xcig+bg?g-!baBktZ8pkG!k%CnGsrIN>x(`&s{6T=t?br|XAjPcTLXVcUI;c-fv#cMZ3r6kWO=o*YwOe?2W^7e%ZBG&O1*W zmGjH5d*}Ri=J7e7&pI||%#X5i{@in5&Lh|N4yL>?LQEb@-Cawm;Tk|aoKAgO_*1`y6%-u6u`9D(NgH{zF3E>wi;j z@|V;>vJ524K(Y)Z%RsUWB+Edu3?$1yvJ524K(Y)Z%RsUWBz754XIbG)*rcD-N3smG zzcRp!fibTqI&4>iriuJv1hU2BF#pKR+u>jcX{|rfli)c@v(>)d*uRfhTvoHVx|YvT zVq56ebT_p?*ep3ODeD<^p2sZl>z|YJh~)ev-`~}~9IvQYhp;*IqH(*=_N|%p0O`Q_ zJ$^}7a~|h8L!blS7U6?D@ayL&few6)I5(8YlMi&@Gq)(cKpyz| zb~)CnQotQ_;L8?1$OB(hHzyzHz*i}JkO#gm(wyZ5bl}?{e2^F7bLtax;0p*JD74)PHGA}z$n=UAcM;~XNt zv;&|=JaV`1cAwD*Zz)%8eI4=)pfr_#qeR_TmRU`2E5UxzOJRkMx5c z{9A+{auI*PgCF$ZZxnvWMZ8}8pa*}3j9(xZ{Chp(2R-)zg`bfuMwa99Jynt zXHw_LbxGs#q1zrWGeebg_G(+dW6F1L=*n)N)c0Z2 zt=?A0F51Z?!jf6f88Zr zj01lk7U8!3eOUB2=zq+w)OtMnC4GL5`C_&<-=!=YpVPRM&vE>Mex2z1eqW^h(bADy z{}Yh!>B9FnseZ?o68?Pv$K&SEenAe}FL!yFW0VXzkIOi^$QgEvA#`uKj2o@*!*1_K zynG&)_^#)1)u#3__~+ezv2@lS>yCfAQ|HO>UoLft=YSvZ0)EITaJ9numkM4-DZdWk zIfWmw4(Z44J>@m~%X((#{#^Ax3~>sLqR6N3!*WUHUu67H{#m}=DQ^3n#JXnu22qw! zpYJ8bMN?9#nXp{C_$&O@vXAsyzy%x2#<K4+<$Qx%=*Z(@#E)_D&xnhEQ*Gno?qm#uFprD*IXiAW?B|JD;g8h% zeen6G&anTO(0c@n{{K0joAokJfc$s=96YbgqTiuCUwOUr`DI#Ii{HG{`P{#!h4Ejl z<>#uWoawny3*V-N_q^+*|3nLat%bkW!sdHU{=>C!KP@~^3vblI4{PBkv~YtK4rt*w zwD9{{_+u^nl@|U+3#b3lnZHA|aE2B>UJIY1g-2-Nd@X#I7B11k=WF3gEnK68FVn); zYGLDjXZ|{C;Ul#0Ft)!M7BTDX@M&eXyuY2jg7 zI9Ch%wD2@7JXZ_Pdc)E`TR~avsf2m{V-KI8g(;|>$JoA_(mtOEeu*zAFUI!Xe}=QY z_2+BhiCTDyGmP(E2ICj|&0zR7tv`6v8TP-Uh2PV{wQoAgcVLAx>|5mw`!9Be1D80% z=4H;X?{a6@e}yv~SnUj(S8Cyp2lRM*HRo3F)cZ%RKW^4P>iFyUY5l9I_uqPdt@r18 zdVCsw7isy4lpbAPoaq}N8nZn5!(py3c4rUk&s#gp@$S#~BBdYmf6VtW|M&k*&A+ie ziS2HK28y^O{@LxDdX-qs;%iv~2zlIha5C zOc!}|e=JnxK<4{(9~C*mD&YC|WLZp6>ypuYC*YJ$eMlSO)+M1oukQpXZhHyxOx{8H zfXgG#|A80qGdnB%fUC+}U4imj0l$34p4M;RyRP3vk01BTr@A1Z@asZr3W@1}AMgTx z0jbZx^+4y|tu5j-aofee)9Bjmy{4*piT`~i;064E7jU)0);Ce;irx?0_0^if-;Dcx zQT2#t3nngGA?+x*+7k-Mn zd3=d-hwI-4YFyBtZl-JJXvaOLSQB-B+SO1Hxv!ME^Ca&kss^UEV#YB3#CQ|qPwZ2} zxDICzseS(!Q~(fLohy?v?SU`2KD(&N#wlyck8k(f>gX z+E3qMZt|vE?OX8uQ}DfNbnl<=Uey|Z&cB6Z(f9>^v++w;>%D3p(nh%PC-mnv{#4xU zVEid~0Y9^clnW^zswk9e^9Q^aj{`podwze&GRSX+pL#DIEq>jo?7NL$6n^}js*tl^ zhwdJnSEzr$3-|>NSNJ*WA%ExS(VfU?ioxLztg!t%N52sT-6Mqf1|Pn2gy)bWzGZiA zvsfveKSutH=0J-b30>aW6e z>vrBpH=mFPZ;>w9ZBm{A{1C=-c?{3OuQOqlLhs~wn|Vi)_;%WT^z+7#+hp`V-uOA^ z4~ba+fEVzCQh_VN2g-LF3m`4P&%OQJb5Ox$`eL&$=k{|Wm0|Fu&^2ec-;0~MJ~-Ta zXP=SpxIuw>qi!4ZUG!6KM+WzLveG8cXso(a<+x)9rx4m@lIol`=+qxaMDev=%-Sc{# z`V6Nb_omNo+d8vhVE&BU4;v^A4IgBT8S!w%=IsSrZ!VxT6r7TEdu~bJth`fK_p|cz z!i;VW59Rwuk6C(m?iC-5ebRTsX}hkx;Euw7_x#7sU!?kW?3#I6QPY`s?EJy|e=q!X znvePwoO8mNi$foZ%{cCjDoY=npOK4}Y^!-Fl%LHXeUN+i@KAmNkEG@A_Nn{`yK(Fz zOA1H^>7;$QYo2=4DsT4OMte_TX6KCcx-M^S?#R6CXZJLG{?bnx(mwm7;ZiC~kTUF^ z|2gA7e=5vd^ZM3?yH9`5sx$fwJ6t;jIqY-2<@pZgGaaSg+G*UbQ-U|SeA-=R!7DFM z%uOXZaNG~#y&&!>AH49LPvZ@R(#8@}jC8{^+18s@hpqZ#Un8<^t3PRJX&riZw@!iy zr6*NZTq#eZ@4VxvT(;=yF_=bEsW#5!WxLeCpz_kPK??>AFRd6htb9;;_J|Qf%LWY_ zRaRbJF>26)A!QZiBP$jTA3kc{;CaIb4O&IN(=Mo9lu)Y5qk0kig>q)qAFW+5B+Sq1 zm}fM8=;NIAHYBa3SNVC}jaOcNd9-2d$tPL1bg8tc`17rFskr#Q!8|mk0FA--8?_rZ#>Wqk^G z0YB&gxLRRL=X~{F>Mv=|x*GT$R%G9|k>k+^Vtvv5xvEdhYTvhUX6hGdXVOi#vdn2< z$8x#+pX`bsb0@Cj`p4%i?Ur*zo~GQowU@Y;^@Df*{nqM`KA1n9g7*8Mfb+^lWN_lsZoyb7EDkhSu!Bll4)IcpHgMDF9r*SNAL0d{e%2u9z?UWX zKwgN?86W7t2Yewf#5aSRAZyN$D^Ef@^0)OD>-aq0aeNg|foMG0VmLBnu9`Yd<`A0r*o${~OOmaPkcY+3o5fABH z9Kj3XVa*uL8T$+MWSPCT7S5)2J;{#p_v3n&-Nt^Vo~^#Lb$tt+woCV;*W9rj*p&4H zlH_f_du`E9ri7n+bjzAa@CE)*9#B3EE>miZ`Da@~j8xcr|9xS&x$i)}{Hg?;)g^kb z9;m5#v8u0dma;3=n#q@Xy|d|;T$V{3mH&C_N98|h&8tb>1$%Ar^9%k68#=(N4(PqM z4iEX#VZ)!j*Va$?Eh=rVt!DgLW7dklV`uixre8XL_Fh{_{F&4`_tWwZ)t^tRJ43y^ zKI3~=@*}i8LA0BCC)_Ree!BI-S>F04*+lz@_7Lr3o!on?eldh_6pj^Hz~kq zjDz~_X@8-#_ObpgelKCyKghIWjh>|TtjUe=CA5!_gXc3*p6s>N8qjSV1N?z6@P}-G zR})U!YwL8~UMB6ebqWY2JH_X3A9Ui zzZ-Vm6Y<`L_~hDa+GvdafEVgDZ8MUdS^rs{Q_ODt<)+=K{&}(X2XatP`9961 z{zKuLbog);p2ruk<|%DXF|LPlv`@cZU!iQ^a8Bwx@0r>3OSc~=CCyc)_v@rNsU|he zDGm=dYr+%HV_#tZF<;=X{%XS?ov@f;e&=PmNQ4flrV_o(nD9sd2+5Mkxr8pa8I zH?eo0@RaS-{9U0Q6n_3x|Hyi8U;Rse{^*&fU)u9$`1955I<=uLAJg&q17F||_loBb z;pfUtE)ga-c>a>!zts4fs*#^Rhkt6$IpLhH*_`nIy>j7zi$vO-@F(v0%gWSyXK(!J ziNDu#zSSey|G)1a>i^X%&YmP0zpcFKj-Q=)N#$qneV@Mm>A5={`MdwOSKrFd|6~)* z=c4qKM)~hh(Q7|ZvM4>Jp)kq)wUYI7lfL$$2bK<8^3c7TKJ~<})b(2Bf#0pGJb3tJQefZ1YKku-wJ+;HN^Y^{u=KlXX<@*zNJbKuc zH;!Dp=#|UHDn>)9!!*$D51>{|a`Fr=7@w0jC zUiW|rSAWO-RevyUnkwSD$hnz%zW4KU3>>(gbjvUFBRu#7FukI6dSd-%q6IM|`CBxjlqj;GUKq@sWNWr-xkRJ1srp zBmFR^hg{(A^Yh^1hxka3_8f9ie$vt-KGH)z;G@met>@WIl^-Z zeV7M9{ivDd$?k8;xexa>Y`@Hn>WBPRE|o``C+o8u^kX&-OOhw^WLx36t*?VW@CE+r zTpqxy$(PKN-PZiH(g*&)7x+Uu@T$W!FSd5$7F?UH!n1jvvpr9i`m*Ved9ntFGXD~P zPb&qekEhQ(S=wDf^&4vNb`K!TI!_kuA=<|Vw~uHy(JrE$?`3;yid`r~`?5Xq ztg~A^(zIj#QAzC?w4}RuJ|PFsXQDirCz}rBb94p#fiLif?0{DjmU*(kWqWanKRr*D zpXcd1Pqy(K&y$7zL!5cC-*o25BD}rNlSO-j_NV@PZU?v>a^KJKzPHwSU#92ag$fgT zKYOEccT}CgyUe8h9A+fWZTB~^9(Ef?n{ea!V(ky)p#G{Kn;@@tpPCm$2li^6wKy6! zp|rnrpLCdSKR%{psd<()cJ&ys87B_sS?;2~{Yby`c|s(QP;qy3Du2^|o-FtRfBtcXKk)iom({d+ zUi9pt{yHFmziydl3BJG|>SOR~_@lj&zqC2zlEO3fJZF3F{iYPad$= zp{nu3d7eL$e$DGol1=STI)7cTcQUu1;Eyn&1H770joUwRcbxRREei7;CcWCf>alzi zC;jg(%ywB#rV(gIs{%9gY_?14}<*=u%7{R z?5gH*V*gND*P%9|^LE?GeCIT2F1r61?_0oby`S|iGA`t1b%S*kEC=&~s{={$-n!Vx z<#iQL?S4We+(PND{2>gzF6OE0lq|I_25#cIirseFU!l=#T@3I`TNh(ePycl>;0yfu z3k`oLABLJ+)qL(-w}dnurNY0n!r_%9A8kBI$A1S8j|uZ%GcSJ@Jx4F#{j2ZvemaAG z>GQhn{i~DabtkQ>h-iJD2k`uXFYwpk=NY`3+oW|AJ6L?FaLvDuuG#A<=BRok>A<>* zlWkQ*9Ge;m@n`L{K2c|^(^qb@2ThQ4#nR! zi*9)L+WStw{LaO9t-pNBTTj1f(GIF^+)e$ciUdEXFS*+E5H{Db_u?N;^t?ZuNc$=7 z{P^J#F>!p|eJZh9Ze`1&(o2 z>3UC{gZ?{Ha7TW2c(D<%qc^CYp+7Bn!{GSP=*ZwoM{MR`(e#vmvIAlF!49nR{+F;1 z_vLla*oQ1_KQYQUt#3L*{pdS(JE-3-Gk>i@UgCFz8n8Fnt)F1{Y`i|nZX@Z<541y& zgLtc%kRP^=vzkzSFDL*X}a&MEy&* zBS;>}{SRezB=JWQ$RwFTX2~=>z#sSmf4Eif%3;OVLtAi7eYI4D54n%RHh)(!PuFoo z*n!{=*F!nvGj<^*rTrz8tG+|C%gm3>q+e_P==pmpfg+PSs%bifh`;sfhS0A5lfofO zJ*cWVK1^(X?OocA!r4x{s(MyOD3$WvtG;poy|;3{mkeG!)U#l$XW`1BRmza-IdNp= zP?)N?@9^Q(7Y-f%_KQ}I46X9K!@XszSFIR1|8UQ!JKQ^L-rU1IJ~u`mH(i<+gs<+(e58Hwx% zJ)Xt=7U;)7I`nT~91Hyy*l!f$T8NMF7_uX&AA`P6wcAd*A0x33*`Lk*RP5GI<@eQF z*5|ULV248v?C|PoN&OgSEjIb?z&R-c;vaCVgA^S@kif7&dy)j_mB;L(|?~g@CE)FpE3MJpFKljA!9GpN3=iWAJ$7JntSgo^_9sXTL)s0l65@qWUZS zd%Dqns4VY^wvO%DkNOjQfxkM}$Kci6gBm|R_eRZ^2_J02wU2JOMV+{lZ}ibw#&a`= z!5_l7&X?h6{&rU2hW&_ldXLSzMg7wG!+3IY{<`3M$jle`1E}B?;pfV2_WTit#9vZB z;%+-Vrmj4H4!`F+ZP_vO{H<5z8|mm91XRBq_`q%SJVcJ6pL}E>azX{tzNh;?zwj!z zKmNImmwf#cE$5+E|7GPL-%{=W^7X&iNHVUOarDu>Kf0i@(|_Nu_jp@#|0gycdCtv~ z8;3rAFZC%>`Uh2-XSY_4R?%x;QnDsg`d6tml>TBR_jV=AH|cBp{oi>Dmio_b@;*On z0j0lgkG{%+D>hDE@r_d^RURgP`l)r5-Cy=sm0$erFDMWF_YPfl^nc!a#lUVqy?>+1 z!^W?C_Zu5;{=*%cJ~;p53sfE!JpFfH?cevc2UTA9#{-V_Zan#@&pdnm*S3E7sQIVg zcNXQh_M`dPcMm#Z@ehu@f6He+`0%1H{pqBIln3*p+^Qb$ zUwx~;@3x0GZn*Ibo&OUr8L3?L`V;#PKJ=>^kDJeW^F4n*XQ=XL^M9oAFsano{I^$Y zJnnjMkIJ#p7dRd}!4wyZ+C-%B*+%ZsVWr{E>}2eDINtm;LCf0Q;|e z=jE?E?khX?AOGraZ5;W{jgzFK@b`52J!ZOoPuI+QsOslw=f@8|-t*p}?B>WZYu2nC zT7FM=wyM|mI6{r;soEUhlN~zj?Q71Di0Y2Oiq)e-W8?Z;vR!%qbC(Y;n|t2eqX&nM zI%@gcyMj$qGhVSXy^WxoO#yJ z+VP7S_J2wJR#C;Y$8S5B zP-?O>dz6cO;Jc$wbH3Ci=ZJnE74eX+w_)-Pc}VPjPZ#l!?i@}Bc}VAePZ#l!uFmNo z59!?R=^`G|ZQyi}hjjEkU7BM8To4cGrZ^qsh3OXTV5dVoq}!Kyg}gA`*|Y6*h=+7l zP6v5N=YCHY@sJMX3G$F`WQQn!h=+8D2YCpO>=1t6mcAE@a*FRgKEe4!eDLVvM7UCV z#7BDn>(TNLUR=D89`TWW9;b&~=yh>Jdc;TiVNMUZ(3_SX@sa*IP7k@r|Go|`(2w{? z-{AC+3;fd3BRjp< zBYmCILoW2YG;g17C(rRPz9@0R%je<%;&)#P_-fmi$4mN4%s%-`D#&!zhgwOTFIN^h@t2rt&{e{iysOmmt@q-bsy>ZtpYw6A;O83jBdD@Q0+4 z=a9aax@qJ-T=OW*{2iw3@nhAG4)7!2OEq|u`Iq>6S}8z%yguW5Q9@BKGn+YN@8;1z z_kAYw_fok%MEls_FxpMDi)g3Q>@~EHS-+R+e}~&gcI&tDc<1Mn+OyWM;Q53cJfGDh zdGfu~)_`u~7~l_lfj?veyqd6lFBQ0KFD~&%-%G`F{h5sQtLoN%ULF1?A2s8XV?#Yl zmR+=RO^3S3&h=iTa0q6{tAJ{GUVPG-0Eh4;%L@7rVSH(g1O0aAd{I2=XG8d46_2h{ zUjp@d`R9CF=l_))u0Lh!VG7Qgsjl<-M+#Gai$B5li}26F`1<BTXu;3NB#=F!pjQb%@pjp}PkwrTw@ zZPfV;+%K4R$NzG%_Qz*AsJ|LtOpsUm@gkFFo=4a7Ps%=|1M34#DD5xZCmniUh)oBo zv}zt5+_2x+3%{2-vcvugjb{5okUWx`HjmDvCPt^{LFJL&&%hV>tKY`uf_c?<-*au0 zuR{C{Fn{b8mShzkIR8Eh|GWBqk1u>W zrEz+)`E~t%9sSqZFVSz93hx!=28t7@>;|I1d4a!mB zo|`m(_B_a^XNNItALc=(Tu4!iux0Lfj`_W zcr{_`d#OD=o4lUa4S45zo4j)u40P8cc zp8?{(UCmm>_v)~}^lfTg3|&u}3+wO9>oVDG+-2s^*C!L!u|P=^7xRK42lImK8xrKz zo?T=_VO`8!izDGCdg#)Zc!sWC7lVDJ;l|cg(Eif5sWmb5OU8m^0>89%F(&o&Ul#+u zz+d%lURS~8gRt^?ZjbWSQ-HrsuUE2YT@$-8{%C*c?EIyzi!uC7|8+6o3;g-_@N*q` z4%=H-aib<(?MujR8S5(O`TLCeb^W>u<_r8azGnCXuZ9A>XWS&yp`0*$iwfPz7qEZy z%^U`Q987ccx|k~?-@B!H&(wWMZ3zj&{?cjunbgyNT@&~Me`rtf92(H)srGNfy&(ZT zD!fUDf3H4Jf%EjO3ixgJCJyXlpA7w)zbj^uZKA(7t@eFc@9nF9>FwXm>e-`TbN+lK zao0doVEY7Tp1&U0FW?LO;f}y7!q1hPTp~jIh4@Qa*L2(SY+aLoNY4GiIbE~;!N0oV z0eVIv$Anj#RQ0I(nd9QeZ@GtjdH2J9;5#R&=ebrnQSGN)ReNaPuJ+AV;%Y~$y|q84 z_S2qFduUVmZne+$A!={!L(P8LwJ-nO!3!S$=*KqQ^_trUC_U|`T|KsE@*6jW`)Pk* z?E3zfye8aFd%sI>ubkZ<-B0^J>L)Ewd04RIRoC{vb-&)qvUeYN&&fZWcgOuZzi;DF zpL%xw2`}EOa`F#1eEBC|+PdZIKNwuJw(rAR{&DL`o6kRa>!P>5cW}!=f4p+h7d^9| zG37($RUdirkp01dU^X}FUf@abY`(H-b7R#iZ|gs{GVkuEHvZxpS8ts4^Pg^{vV>T_ zxbi)(gCB0;{lWP?bb9U&?)$W-huWo3t!J)Pn(Pn0&+Z<5sXlz(W~$vC=%BrfuV1%c z|19;HDtCWy9ia>VV1M*3ymfucvOl;N>3YexmjH*Pqcp- z$Zvq{=gUbYjAl0uO>gVKlpdHgn5(w!9y&b8z1-sU*He90k1kt z`+*PadLORY`-A_lI=PiE{GWNn_on0i;MMm$qV4kDD~uap@f>-GzlPF{e7#*^PwxV0 z`Fq0&OR7u%;?$)VpFg_#qBUbni)0()IdF@}N=u9T!~Nj?5FhuAFz#<`cyP_o(hG(z zEpUrv-WT#q_ow%F=k|0x^M~tc?(DP++s%0z8=bAoqMfD53umd3yYz$bAo~XP4D6c* z+c$V0hFt?YE6v`9eUo{A_wTWN!*2b49ep(LJlWqJux&Rk z_yb?y4;cinCM^5A1DEZ^CI0mO?)*GY*ZtkA&+-25(0>TGU)bOMbZ38egtzQ@CE+r4|BO-Ud?^~W}$I;9&!=>ysF_ZaLqUq$)x5M(qhocbg6 zk#~Q0UI&A9F%XCKnOOgVeJij&(|7jKxKYhob@z9FSF`=y*L+B?yY|^_e4FRbe;0yd!ALDYtX){^^gQpG*`Bw9u5*#^pzg(q=dp|W6MTWc z2G_^n)!gDyi@bAhwD>#Ngliw&a*K*^C*zQ|zx&P3bq>PO>zZ~};PU?9Y9G8iy~k$V zqJHW1r|j=;_9Xyc;18gJSA?G{H*H-E+P}2@!Qb^fTNmT^Hs9aT#h;$P^{RX$U9f0%{c7ib*m9s(-TZ@N_FH`JIUn3|_qYFk(aUF)vp;x|`-zY?jRQ&herG*r z?=PJXqWJ#cRF)v?jc0$L^ZSGIdyMQ4-g19%5Br0I4{^H_0ofm1_6JWZ`AgIrevj%f z@z43T?k74g<2qr;Te4`$vY}N&-uU48L*C%XDx5Fk&gwC#KcSq7#gFQI<(21O%>7^g zY4#_}CnxL+OimwO$Ga-I@Y`wpqi!($afe3j)`uT@Nbf`c>bJdUKK=Uo`ug#$2XgnA z+2g(CMT(q^$7!n-DFu!tOBG zpCPrjtq$V*4^AWk(11u+wcHBI2A!{|@2kz5tu`1@e){dJzpnQd<@3BV)Q{rsO96c# zUvP0AE}h43lh$LxGd%U(5fY`3)qB2I+hvE3U%2LQoD^3O5CpmkfrC^(>@Hn($8xiR zKpX-3W)ObdMq80;{i?fA9Xs-OV$i;tZ+uhyg{Piy+Ts(=TzbL@XPQD7Q{WAW!HT&t}3`_HMKs9MFm zf17jBnCT&12CU2NhOMNj-nEyWalm7jr(RYUj6E>+)9+ z=pqDy_bhtfYH{Cu9c@WGb{S9AdHx<|?wM+cdX!2$+p2eV;QDpzRG<7q^Xd5>P(Rgm z>(M#&%&VUsW9nC7RTuOuFzFf#sTvqiKin^+MLl8Ctyh;D3#s0qbSk!TanCi4mrA0) zQ|o!(RB?41q4Q?lze>|ssKYZ=goKvjwADQ;N6sG}?^!muY#?# zp)HSr0rS0T%A4oWJes<4F+M|BSoxtS`e?SFEaH^m>ins?*XMDTw>EGk>7RkLvt=2p8Y#&!TdbEmWiXPU40%?W+nXl}RczGriMk0E9}=HalLR z&{N%z-jVuy=fNmTB^s_dVXtsFyg~i!2KeCSF&^sI&G?}epTFC#V=Af#yxKr8T~(Ea z=rKc$=Nzm~J@hY^(sQHo?Rk4$bG5E7s0>A8hapvt)bZBE-lkm^hiB7$4{6&Y{kr+) zJg$>o$cAgKnHyl^#mV2TgP*4S5?$VtFFIN0oys-c^X3h=&!=-wzUV>qJ9&WO*vG^p zkLu^H@d5K5M$hN4ih$?wOa&*&@i%_gl<)VOcYQG>M|7qU!yMDgp4 z_X#R8l^y?zyUcj|PtAC{e~k&F{GlCi%imN=`Kx|ETK*c1=Jo47s{G+;LfIo1c1Pmugh!Ww#T(Q$H|)i!)W>2 zx_o(!$~l!O`gTFLwXL=U>L|?JQ?czP_H_ z2D_U~Jlv}PTh?`65az&!*ltFxnAXR3cJLAulb&BUn zKQ#*0MYIQyQ`U3VE6W&l&K`@|;nXi}Dh*2V9Q)m-BP-2U9*#?(p9E zMwGj%d2Z&t;&E+1qsXA#)&H}-a(4igI~XL&i*g4!WtF>ODR*3w$Z^XX!d4XaqTB($ zEai^qMR}oeM`gz6a)fe*evQ*{{hOx#tUBckIja7sy>fOSWkSiufpP{pWtFqKlruoC zT$C%W|@ZIkCKJ{O#=Owitr?IB_cp%?i zmpI_pb>p{B{G6pu13%*1V6Deij;9oAT%rH3=kH8?qTWTHysrP}XKc`Z73BUR&r|Cm zDmXuX=QmXlpXxZ(2dU+tEY!JgJ#SfPHP@pdb3KSEKHM^ZFs_F#@pFg@0zWDXc#i^y z>QunF%WYL%L_hMC%1?F;OpM;YHqWO&8J*`taZJC6^62(3*`>Ux(GL%DKBW9cHr)>$ zGiJcA*dQp|8&RkPqlPHm5%Hw?ZG} zL*EqZLq4EyUQT^9Btr-EK|b_VFXHEq^+MlkO|rKCqV9n{$cMfO)`xsR-w`=07|c?J zKFEhY|6+drSZ|;&X9e>@Mg;mGANqz_AMz3C%UQu-PYCFPeCTViKI9|Nm$QP|)ww^& zhrZrR`1xbKfxes-%x;c8$cMf<>q9;QeK{)_>d&PEctSq(O|d@YBhZ(#g4x}u3-m!g z^i|jL^T&DveK{)_jJ4tZARqcBSRe8c=*wBb?CIPe!9 z%=(ZI=sPlJ{X*jdbO2AthrR~uLp}n1IqR1f8+Cy`$cMh(ckuJadINnq>z9`}`XC?r z>Z}j>2=wKwU-ohIK|b_Nu|DJ@(3i7*+1Jqr`OsIrjGsT&8|cefzv%BHD4i%TkPm$m ztPlAJ^yREy_IK_N@}bXvCqI9zH_(@}emTI=2l>!9%=(azKwr-KRtTOC5cX4}HDw;^&X`LSJ9b`sHPgKFEi@I_pC|0)08_mxCOAkPm%RtPlAJ^yREy zdK`U_4}H~l^Yh1g1ARH`mpP6;$cMfO)`xrq`f}DUFL(4oKJ@vQ^Yh1g1ARH`mxCRB zkPm&stPlAJ^yREyXpR6KsLvoD`Wmbc`3UsotY2PX)CKw=ANqQ0{QR-rKwr-K<&};; z$cMf<>q9;QeL3rwS2_A1ANrq9;Q zeL3rw*EsqhANqRV%g-O{4fN%#Uk-EhK|b`=Ss(Hd=*wBZV9PSpXOItlQ>+j92=wKw zU+~yMALK({^?m&OvED#m&iVz9E%ZS?^i8ln&+j92=wKwUj~#eI&goG4}H}u`T1kLfxeve%L1b= z&PQKJ*QOhob}5Ijy}kTzTUs#=a2P5-?2ICmlGX*kPm%z)`xrq`f}DUCpr2cANr

U-cvW{PFofU(WjFWTP(72l>!9!TNBYfxeve%j+F|kPm(S zNBQ|CARqb~tPlAJ^yREy-r(qieCX@Fil0B$ z8|cefzntdigM8?#vp(b_(3i7*d84Bb@}X~v^&ub7H!o-Xa=N1r@}aN#F@FA7Z=f${ z{c?t*5AvaJg7qOEfxeve%bAWo$cH}vq9;QeL3rwzi{+HKJ@i|f}cOu8|cefzntypgM8?#vp(b_(3i7*d6T0L@}X~v z^&uaDzMS>TIgUQahra43`T1kLfxeve%bOj2kPm$mtPlBszSrigUuc~Z9cbSnANu^O z`T1kLfxeve%Ug}QKp*5o-!SV#J_3C?>la#QM+fc?@}aN6`jC%6U(WjFFO9lDALK({ z@2B|rW4(dCob}6JIr<kahftX~EleUJ}*6RZ#U2=wKwU(R#%K|b{P*YfkndINnq>z8GYKFEi@Vb+IyK;IE_ z^Hng*9et1weGS%!e1!V)RWL)2KFEi@-s|}JW4)oid=<TR{1vBF4gM8?lV139(s4rgy^L9rc!9%=(azP+z_ZW~HMK@}aN6`jC%MU%m?FLPsCuLtpRT^7F@f z1ARFs@Zuw-Xx||p`s%C?`3Uvpt6x?-_XqjVH^uspk5FH}`eluy5Ava}`e}atSZ}B= zU;Xmejy}kTz6sWce1!V))i0xtKFEhY{|0{kSZ}B=U;Q%X=!1Od8)kjTN2o7f{W9+8 zgM8>~us-A?)R(V*xyaE6`Ow#UBR_wvH`JG}e!1Au2l>!fXMM;=s4rjra*3l4@}X~v z^&uaDzMKdRNZyvxxC`Ow$P`*I*3p}u_e z%ex(YkPm&>2L$;D_2sKyE_d`nKJ@Wr5BUi7<*Q$6mcHwhAKw6*uNKbHT0Qq$U@M1K zpvvWx?Kw-)VcuS{SZuOKD8I-b@{5SLk5T%N2Tta2m!6p;Q9=^RZ(RY3Z#z-H3E{hk z`eDr=+-7?(&9rtgN>JnZAB^tlloW@~wUX1@Avx8yUi(U`=~ zzUmb4qkcQ}2sj7inf@+{51g{b2Oe4DB) z^A~23mfYTxlFPo$Bfc&3)83a1_$QnAaBW$g@IUdSxeqE^G|r3r{+{yFeN-Qf-v49X zV|G?O|DEplRFZQA`H%(+d5=fZyWg{EB_Hx2ALSc*WBLDRd-;bv$VXBv2P#00p|3LYX)=m@uzU1!uGTH^W zcs?N)=hNiYpEB>3p)Mmg3>%*=gsPJQhwd^2%mK368eOk`m*TCl|#$MM^>YA z4G~(qv)w4Odd!(mx)%zB>uhVmO%v4Wk!gfDnosBH6jYC{8` zzgu)tO8m4;EIf0;^5x#}VRPr^>q}5_Bki@V=W07p+^_65Rsa3c?Dst*5tZUfl0OX% zJJHyU>YHT)q{-Npt}SWD)!$?6H@S+QPu?>$YaEj3>cu(8Fj`$bW#Seur^t)R>vNAA z^5bHK^Kg@{15a@U0YN|zXpX=PZx@PCIavLf%@#|%epGwetLrphcg2bov@g9{+JQO< zuDY1{s8#k(iL1W1SxM4wMc3`C9aj0_w#z!JylHaiHq)*}C1elHQBmBfA9^!l9q0b^WlD#!Had|eC!5_|Q+CY3$9rDSfaeXgtXJnK zefW`XI$&@-{LrZytG&PQKtKHmL-+~9WV_kOz+eBR(SBpH%gAnqosncWhxdjqx$19> z-Ru9>xQ*W#xBh$MR-fVPf8^_b;_J`yb?-CgJJvro=iykIumWg=Itl&%gU$E_ETAWR)x<( zd;-6$d^Xq)E{o4$;j<8*z%MJGb$*{Ii_g07S%^>ImzB>dzn7N9=Y;TCh)>|xiqBvi z@|xV^kQWb)4xW!a39L+K_1fJiku=vtLWKjmU&)_o`cq^)EzQPmeqL~Ej!)P}=*BBt zeno&FAP95~0yKZG#`E{gs8rGz!?v2gN3hTEW~R2)>asf~=!QvzK9cT(E@T^rG%~XO zoueY+hcvi}PK-lBCR~iqz|MeujC&^C@SC=RQc_zHbz6-?R%IO0Ko;QUwzt64il)58 z56#~Leq6G!vacv}2IH1dBW0u&> zrhFuov)1RtZf=cHGQNe&uLuwX1c9zWfGn({cC(jiyC%b!K7Wtay(G`g2_%uO$PepY z$WBa|zZc2hHn5xZT&Sqstn;t(f%$rFxY?Q)tV_{p^dH#GurreEW<4F+Cr!wwPvd&rY-e0u zM*W?{ZjP5Px4fl?#coc=ra7*iDa0a05D)~q0fEqN-lfStOSH#z`u?Pz+AHXlY@21l zEZuIVc^cvT0?4Y_{mDwt0O<;T=x-)_KgDj2IVu`{%Dc_xX~51%vYSI3 zsV$)+?zXa0z;()3IreYmuTWX$1j6pt}&T?B+wvohS7-(|7*T?B?s& z?H932ZTxr!g4zn&$--tTj z;rY#MXC&Fpgoin(Eukaswz8Y+VmBM;0{oKNWh)AMVK)Q6!glkXh3w|DhA+DCym&4% zok1~!#Vw>JqhiY@1~PFWqjY)cZ9Tq4ZGQ80ZZ2HtBDUNTl0LdN+tfQaU=jufLYA^KRy8 zxM6o)U^F*w2=g>xXC&FpotUT55WCrep2}U)&x*oc*v-JNu-$xMe!F?~s-YqiHB#;7 z8{)TJ~7qELmZdrbDMOX&dDJN2m*pY76f*u zNZZ|aWNBVV$`RPfe7&pJ1;WlqvYSKv(9XtPx4+q47wBIj^P8hMqHVU_Fa~_En}J`N z-JE${;42H+%`{PC^#%DhaZa_HZ^X@Z#?{ZYKiAx+^qbn{E4yEC%Z^ptmhMbJ7Ab;& zATaF_Q0-!^LVdjDen&Q1pY7cQR`dmj^K&DSseN^SI>Pqd->mxBi+o4+Wy#->g`JUP zHv`9L-xWbcTo~82o85JRRk525RE$@&twou(qOccsGw@5Zn_I05Bso(`rqBGl-;oWu zjOHQaK6;))2gFZB&d}IW{0P6rO0vHhkD$kJ8b=trx87&m>e0sak2P*%9$$YQUq7C& z_w)6NaUq`WpT0W^xhUt!dsT+z+N2M|sm4DmYRGqd0J(Beu3guP!d~Ksz9S3#sGP^K zh8(l6x&Hn&myfdeoDx1QvVgzqT2a^wK7n6WKJlEF#i#!v>Awlta(P5Ji~%3`1b$ih zM15TrpS{8-C{ix?b6qP6d%-90%gQI(-Lm+s3ZE8PE{_OXQ5-&jUsgWrY(JI7=dkc; zkp=!-*NWos3H-A1S!Fx8EI#YPr$v^_Bf?e`hfm;_l~14FXUgJpLin`E0)MV+MRE89 zep&f!@Ox=ld^Utni!7H%gsmtJpTMsbpTYOA)|-BYla!oheI>5Og=a2Wxq5uqJ>5$tj)ufD+Cr;Mke47KM9ZtdX}zRR>Opb|q65CjAPg8(&)=6hIbAX1-7 zYL~a={-pair^X$F}FFw(#l%%^I|tQ$0r@z&J|>lBnSus(;b1(Zl1kkUb{K6e`p54($|aA{-k;( zPP&ws-Hd&f$YxBjn*-aL#AdUb(=(8CWsW+DpYm?A{YhbGB-zdMu49hCPGcOxuwfkE zsjXGq`Fjnqn*pM7)7oS!3VUHU1HZy{^PPF^=EZ}f7YwcP<{lHzWVSP@cJpVlrOz5m zmref!bDw3ddyZ$w=5>4c9xCN9d`9DbTtmDt|7GGv^=tG9_0oCyj%*Yi2?+v%!1P35 z2XA})j%-t`BQ~&#+12aCVP_=S%^`|tXXCDGH^96l5)o#8SH`^IkKi7>D%eR}ifBTOBwVzejk1*n)9M&pg zHv^jxllc2?95*^6haeyb2m;v<2<>KXwx^e9$J-UpYd%i{byYTvRF9>t7pMN_B>k4; z=dIn`-g@!o`<0Sirq|K3osncWhkI3lpSbJV&D7s~*wU?clRG-N_3o2@2iNs zALTn`o`$}TKiTGKbb4R^0hMR-GxM9>aC18ud4~(T8FogJ-Q1D+&0;qLa^=<(heAXSSQaUC3@;GCVlCCZ5YoXHxCvzsr<7b0m7Ez3S`5ZcZ*^N#!nnPVDA5 zCfV@JTuvpTARq{IJp!TK+-!bxv+u|%2z8s69m?i*b6Q_C%O_p#PhX;a6}MlzS!Yq@ zJL`93b^O#nu$y6Llw~(J#BR1YNNba=DC~vZ4EzfBH-E2?-TbDZk@JVgz~4mYcuQimf~*T z{mtrKp~$}e2c_)m&vr(V-5ib^P+LMr+)bLNaVXEz*hkIN@UN5k%?3N*m((tYG2nyU z4E*xi%_K+f>(BhV`}#lp(5XTBhi-C1?(MV2e_;Gnwjp10y@=rgRy(- zZ!~W84CDGsjN3Siub<7=&*AHD;p=ZTE;Qr)5OPt@JH4;}ld?ix%Wr`}%YFD2q@3N~yO(rhvcehB4p+pTI9GpLov8;@XN|4+TF7F92Pz;vRob!wxT$E0>7+$*4ch4 zi_g07X^{o~T-S=?@Cp2~@>yj&xGX*=ginhsmq&!HC=Q>%FDsuuzt5D#XG8e3$O3<^ zYejMR1b$ihZ18(&S$s|jpB7mzj|f{)96o_xD?WpDFaKrw8QS01|Adu;W8)*sdKM3@ zSUq}SJV!0h#9xm&$=|n3+ExVJFI4|abDuJvhBDNiE4a0XSNLw)R#}zEf`A~<)d+<1 z_W(n}5JQXg;$Grd2;{}x=JWSn98X}MAzkiIU#EP#^Y`fP)H%IhsE(xmJU8oJYL&je zvC7Vm-*O!G^>@Pg_Vs5w1NJevqx%lWlc+7BBkr~uhpfstq=7ELk1%w9RuuM9|1a(9 z5B$hJHds@HfQRh+`u{q&-8`zc^&jo24vsD-)$JdtcJn{9FRNJ!T}G=*#cqz5FSop< zhsADA$EG>1&5EX669fbSK_G&FGPP=zm#I^;TYL|zSH&Tlk8IN?pLtf$BE!w)HN2WpO$#;VZ#y}93c?9t01 zIh+RrJ0r<%4)33^rz7sRvYYE-Hyh{z{G#PJ#MFwWys(>rUtYVJlxdrP_`?|R5kEA45BRkjKLMX8 zA7$~`D|~_?<$^!gwW6>Wd;-6$eBwDTi_fa?X_4jfh_DsK;S=~})QvCj+( zpB5b8&vmUR?8Wm5{Ic?icDF1(>%yl+mdhi;RuqR%;Fp!p2HQ_%@i`%UT4aGg*R`TJ zd;-6$eAd|xE{o5G@M)3d@`$h%#o-h9W#zNV?=xlbIVF5rWPv}|wW2tD0>7+$`utv6 z7N7p#$opr=mdhi;VGQ_S4*|bcdt2?!tO|e z8wRD%%W=pflE)!oXTUzjJri{Bo3?@Op4ybC+iD!LA>)t+vH-WFcG-%;Ub2sA{vPln z``BPj5dt1s&fgzDHN%lP`c`1-r~dd;|yO7~CWkdTXV-sy43UU?4$=DtuZ*wa+K;%gQI7^RoCH7CsB{3H-A1iTXM}pH_AgymjHzLZ$uZ z6ZmE26YXwUd`<|Th4=)1S^2E8{Ztm84dJs8pTI9GpFZ2cW$`&Bd=}yp_+{m@!S6F= z@#%j=#;rm^+iyRCUsgWr{9alXpS{9oNN1k+PsXnmpTRif>?ifS{@mk`OIEMQHw>Au z%_iUZKUxTMz^nWEs#lo)6d6xTt0S797u=fT(@tMe2g4|{q<(F~DqSVe& z0`P+@jN5c%J>-$e_?o^${IkqPB#NxZ7$R(qAX5iPK z#W*DJYxN!oJ{w#<%Hnfa__WBfIkf#&6o*gXmzB>tKj&rfSr}vUeve1FDsvDcgy0lA$(e7*&Nz_D~iJ>@XN|)gYBoX z_?!|xEwXG5ZNC-8;S=~}<+ILqa9Mo%AC>pGkS&`-+aJb&5A`kZ%gSe!-)G9=vsd^8 zMas1~wEb2T_JU8~mz7VS-%HElvnqUAWZ4|rek+Q@C-7^648=3l z`b@OT#fpEcfo?%S4IjujWKpu` zC;|9E77UJ#j6?P%k3+)FfPGA3L3DI#9I`6okOolwH?2*!qOh0Vcl7rR7(cR)3yniE z|M781%2WJ6If!40jv-PxK{-{cHy37I54mfCVA5It6pt%j%j1gcjN7>0xb;u-^&9#6 z$ISacXuR zpTI9GpFTh5W$`&7d=}yp_+{l2^>uzet?VXv8^WiBO8fOK@XN|4+TF7FoDx0@@d^C0 z@>ym3sVqMIt7P0NB((kK6ZmE2(`P%lEIxaM&yda>_AT(s$|v4u%Hp#sd=}yp_+{l2 z@1mu|hA+p}amg#_pmiw{>cJs@N*v&l)Mu!Hi`)JFHVjN5K`Pi94C-igdUn_QVav5{WTyj|K z=44!2V_K-}N@77k5a=!hlzCOF?4a(smEGK{;=pdk_tfFG2U)t^Omd99H$xqXQe8Va z2)ohUFr;m3ySXFt_l`=QzXv;`EW5cOb~B2Na?{#mD++sIHv_-Cb~DM*-!owTF@Nvj zhaS@JVkS><{WJI}qIk3TGMiMrpTI9GpLov8;d+ree=SrtAlvTP1*zZJ#d6ZmE2)93e@viKYpJ}t6r z4sE{`#o-h9W#zNM@1~fUdFSupLD%x+5BZ+SW7=$r+l07846)M zQ+p%%+Xmy1IzKQtXdH6S_nuoB8{VV;_8WdRpT=_Cu;M_?p=!%VGFrV=>}Ki zL=X@Jx&ndFZf-SyFU@XNFh%Ur*043Vo9+2U39?96-D<~g?r&~4(;A#6N5p1U@hZ^2J@+>g z#(jNbm7O2IGCs2sW0DQef~8lI3j%^bHzA<v!?>4SfA>zW&dA{cFaBc)EZ6y%&~?a^C)WaY#&dCuF|91x!*IN8MpXQ(oeS){6r_ zD(5ICVNA#~@rh5AkFxk|2%jPRy50u|wrfRUFZcw0S^30sUKXEI!ly-+&7tkLqBwj4 zzpQ+szAlST{|H%M9I|C|X#2w$@ZtFcep&fMyIU5Yy}~CbQm)OR?YE+^7kmQ0tbA74 zekzO4s_@XN|)o!?8#;&Vdyw8*kKwEb2Thfmo6p}1*VRT-afoz9e$S8jdph?j-?fUFzvqUVtrf?5Zbm>k)PJG-^V!aT zeT?xZVzndd#s5~;i-)MEwaH-&_=q39UYzkG`#3DuB!`Y#_Vwa_mEUf@pyzb8$5QSi z)o#8$x5&hV8WaCsv74!m$omt!IWKmJWl~NG0)l`bkc5CTwQ7~))s=GR@7b!;?PiJv z+s{s6`Pt?O&IDmMof}4qZ1eXJJDWR4MZ*s%U~qI~{@yXk^Y>t9B-zd3{Reg$V-<#5 z&EKnv-3&UFo7N^N+8TjS3n@NtIzsLMz{+@bQZ1KI9c%E>E=Ec%FHv8!7yCawf z_zL~P72fOWJ!c(9_m1*R>1;pbPZsS3|{tdqVFkk;SzWz<) zLMGl1As6Mm-T8a7bghE-&syb{KU_HZ<~#1$c<6iX-ne9B)nxB~eD*QfuO6s}+(*ki zu7@u1bBGE8KPu<$yzACN5u)9lractmNf(W{Vc1A!B19VQto7G&d9YwHh14 zvx;ZFEIy}%&q90xzpQ+s?#|DrmE8odf27Ri3t>V1=(=GH_~?0~=M(s4MUfnQcW>ugJv#b;Icw8#Q~u4_ec_ym4g`K+={To#|h!ly-+%Ok>8 z6o*gXmz7VS-)+j`vo3sEWPv}|wW2tD0>7+$HuxR2EIucMPm3&$L5}(EWb(Z=3s+u{D&T_FTcOJ-kBO zx1FLYaRmWEpvw_ZLkTh_S+opbJd#`-FgQ9gCV6b~m?Z2B*vB+3LxqQHn>|=v9MF@CkIhT**=rKv=A7hdv#mIpybLRSW z`)Q6*_RQJnU&=?*G0EL2zI~r2Y|C`VohSyCx9TIt?)4utZsT#|*1u!i>XUr^`+WTe zeEliD{-4Grd34bI>p80|7v;R@nB-TFIcM^`J$9PBcfr>-zV!zePM#xUk_K@7*XG{# zTT$3c{Lq*r@S}3>mW_uW+C|M@{x3ZydHuRKtMX~eEVxBk$;)laF-dvHw}`X(wEb2T z_7XpOOp@_y^^Old@ywUS=aleik!5pe`>iMrpTI9GpQyX@^BK>Jea7#TG06}Qn?u_l z#()pcC-BS4C)(h$`0N!vL6LH84sE{`g}vYt_+{nOXIrW)KC8l~MV8H>?YE*hd;-6$ zd^Xr7E{o4$;nO0^=Fs+AQ5-&jUsgWr{BBbgpLOBWBFpB`_FGXLK7n6WKCAqWS{9!Z z!ly-+&7tkLqBwj4zgBz(W0Iq$&!PP>$x{a}9U5(aSCKI5c9%+cR{8FXgbD|ApOF6} zbDuJ{W|yPve!(p}R#CgRaQPJhf`A~}8hHS$wqernB_851$<$4p%7K6IOG&YH0y>l#iMa_6Yj_$jaMe}}aNg2m*pYHUwsSyHLc+!RpU!ZrJ1XWApFohIM>4ofJRq`(R`@C+W8& zyLDXfU0o}V_NK|9+f2LW%E%g?qaxy`yb-(k}KGXW;Y-7{tLJ~ z570N4_4}XwJOy_12lCp@Zx|fCU}&^w;p&ykqgl)vO0}Es$|@mSJdH#BC(_?+_)jWl zte6^lvo$b>=z)sxK9lz4Gvy|F-&EeJ|84AE|7XT+ z{M@+pUmCaiYrg&)zWzUa{dau*_r`@}ydOd?%6YqMU}oz#<#1oVlV+`+T(;sX8|SY$ zb@GpM_MfavIS1s*4Y`l{ttjk8IR}2xa&98M?W)cFUpQ${_a&@Y@yg0&dmm=iN2X2! z&nP!}d2YELM&_4UB(}%1UJt|g5zlDfLV=JMu3f|PUlyNJ!eII?K|m1basd&t%C;=x6H52J!i;rXeO^aK5370zAD4`duQjO)LNub*RF$i%o6$0uDZ*h4_)v!dzi1t1Vx76+ z#$fFEe|rzCsBvhkjUm|~&sDAq^77nr>{T z`HbhqJ~JhJT5z~LB5XxrFZcw0S@}fUTo#}H(K7ZNvIYKJH;e%v_ym4g`Gk#C7N5Ps zCn!>`%Ok>86!wBo;Fpz8*ve(`SrtAlvcR9~T2UN6fnQcW@y=5gpTokZMV8AW!d4WA zPvDo8&j!D{mc?gX__W9Zf39mqargv&t@sSaDt9)05qZWc$1aHHqm47@I*cXR5Ia-o zgnmD(zs20AjJdgGDO*@@%Z5|jMk-WxC9xnN2y_(!d#by|-hE~?B^=`lfoQ&WpBIdg zgejW&n(slfmr9y67Qzxqm;2L~DBs)3-hDbhFgVOu<$%hw`I$XO+;Fq~N3aG=i`9S7 zUkEz`_A$64-7g5D*O;HU+iI+`D*gNcit)CV@C2q-H033JXzxDYNA_`^vC6=1-aEJ5 zJhIjsj%KdC5Q=du)mLL@3Z2kpwE8x4pJnbr7tbYlG+fHweQ|_n&qLHL;nnR8H{^$M z2!E2BbUnN)@d*NgfFRHu0ol8+IX>C0&Qa0uQ{HX1cOUGGB)d7xIkg>h#9h~JcK7b9 zi`{IX3-C*8hplMJ3%eQkrP@hN3xb8A`RA z?{1m2tq8h|`hO+;&CPATr1BS@lm6xqi}rAAtE@_7K|m1bY6PfR4EvjDUUR%(!Sw&0 zqOMV2DfSIRz0}v&$97p(Ak+JsNy0wO#i;MnXnmv;Kb?Z|ozmYNkw~^;(mh5ZDNJ^L z{NUp~uV=vY6GyL_(3*uf3!9l-956Vjzj@F1o?96k-lPBa8-6vPFm%HTOJ~1pNJ)0l z-wZn=$!_jMe{)0ZW{ZHdHra~8Uf9jRFU@XlwRd08-`rcsZeFwU(s&*-ou-jgkz_ZAH->gL?zZZ0_HUH+m{A;I$JlNd13uWzz%R{i&fMR8WFfnGbZD$+ z@yM9!bzU}f;n1q_o)bm~$J8gwvmB{*^F3KoXOE-p#QLE0H;1;eUBMH^>^F$H-{N@>}Gud z21ma6&7tfhANreNXC&Fpo#=0_irs9%pVlT@QP>N+8Th5y&6)d~kMFGAyyU{6!E9!8 z!Y3j49={g9?ILG%9a3E;c5~dOODlKr^I|v0G0BE!k)kVU1pz^zyATNNW{(#xCE3li zPA_eq2GvXL&DCgbH}^Crz_pomdrL{W(QbyFQI_3Y7rWUijcIMN6@|U9n}J_pyZOYt zcJpZ$EkA$An>+W2cqX%*!Rucv_Qu$mLMQZd><@|EoXyTlE{kF}C*#r@(?Vre5(@%? zKvy9U+Rd%LO`dKydx7nm4Z3u@dGm(bD=%y=BxX0OK4v{Hg6#d2{^m&jvdwR9o(cD= z)88DKr-8ly`})SzoatMRGy7@KyGA7J%x`W!-x>YQurreEX1#^G&M37dbi`eEo`(Bv z@`l*W2D$*hq;}bg!d}?Tz^|~~yeY5UeEQ(Xs_}RRv!6+|n zNoCNS6T3Mbo94J?DWVcb5D)|e0YbpGn++mK{msqhXc$8KUbN2F!5o3pG748=Njv%Ua>qs)04urreE=1$Dh@Nbg&%^}Mu z%dQ*7fDd*v@GERLe?7O|JhaN|IbHq9d!QJ{(r=2LDRe^D9ramtgT~16i z$P2$ait-;`b7N2$D(;^G}xvmw( z;S=~}<+IA~rDgFsA$(e7xjZ6lMRE89ey#Wn_9uPB^fR2KOedTxRUv`n!xxhUtI9*1nmdmtcJ zZc-UXnYE%RFZxk|U#s^(@QLzK7N1kXr$tozd;-6$eBwDTi%7+$*4ch4i_c-qt5Izg>3H-A1+2HrmviNKWpN04Yey#Wn#vy-T`Wf<$L-s6L zy&~ssBIp*h?$>xX$IcWwq5FmEA2#FfBDZ9QbC_YqNJy+zhT9-ll82|EM!F=0SQr^X>0 zG7f0~)qm64WGf1LX}pETA%P#+$A!irng8fGq%QBlIz~GeC(}!2b$tDA`TCC^d+gE6 z!}W8Ji*nxnIAoa5B;S<02U@Uzch|L|uovTyz^~PNAjTn4KFZ?LpC{v1AzLnw2!}D? z1E0VzE1!7I%i^snD9K7n6WK7F>I%Hp#wd|G6=JR)pGargv&S@~?R9b6Wl6T+uO7Wi{r zD~iJ>@XN|)o!@85;%uN9xc zIOLS+XUH)QIkIZmaL{h%Tl(m;Fb-i z_&aGEB~_vd0)jxdBcR&FTIEQELb>CR(fVxfCa7Z!C28+RmCPQ0gkMXebklYma(?nS zB$H1;rcLLOMF%xY5|X_4UTB-fUd|?~L2{EMNZzzW$GV{d0W%^TvgE zj9Wo2%6X^9A^q1%IS1xpxpvEY7y~|xa{#|q?}6YG<)bVq+FLrgsmv-1)sn# zE1!7I%i^;td|G6IKi9RQID7)XtbC%rE{o4$;nO0^%FDsvQwx7!4b3*vE$Z~l^*oxxt3H-A1S!Fx8EIu2;r$rX{b6qQn!zb{| z%BRooGiC8PC45?BxjZ6lMRE89ep&f!@Ox=leEP4G_s@_m@aMW=4EXTA0{mL>8H_{z z#`H7f9EUvo4TI;e8d-6vH+Sw4$Vyfh-6*m6_r=Z>I-&c8>R&MTDdTBwS;`g`+_K>m z?_(%bb|tYOAP9670@N(lDhI2-t;QiwQE~8n$Y{OeC60xp!mu|hA+al$D_HaWe#s~-QzXZOHcyt-9eo5@+ z}JyW5?gWHPwlJw z)3GSuDRy&2N;bQ>^ZST6c5(~5Ig;gA0CqF%j3m1`oQFki2_12_mEBwyyV*b&;Fr`c zTT$2xyBYWuwwrhSzTQ_OM}PB0V}+KzBzz{D@A3ZlZ5KJC%cy_5*v;v-T~gVLo)fz{ zibr-Vixgc+D+mYzU50=%oNJZ+)J?bQZ&urK1^vxWKJ%>VQ>|6tw#F=4pJiG1686tU zq`NjV+k{Q~nt5K-NV1#5_aDNZj=0;(Zf=O(Y@iG9ie@{oOr{Z!r>cNn|3{$=A< zzhYeftHy2I&DZbY>l^v{?&iIqv4?RX9`A>ci*nxSbuYa#?+B19H>r%H?y#aMFY!a= z3HY^|cLY9BKFZ>=DtuZ*wa+K;%gQI7^RoCH7CsB{3H-A1iTb)MKI_6~AwGd$RzA`0 zmc{3U@L7mY;Fp!pI@?cW@!1eQ3-Jm3vhrDFJGd-9r-aW!d;-6$eER%8Qx>28ak5S# zB(#0|7Wif56Yr&E@!2bUhIHn6|784H@fpnDtK}VsJacf>^3@lPykjWu9(<|u_a3ki z=zv%E`PKI__bKCPX>~;N^MYG*eA?+N>Oh$m5rTjqFg+32ZpR^$$3wjC9EYqVk3+)F zfPIXyM>2Nc568-=O`#)nTa82d3*>#rUcDoUh;Dn9f$n4xL94@sxLNn zufLCR8~Yl!zQ1v+2lDlo@%4lF`W(J~uyG+C<5rN1a^C52$f~>t0&?XhmGQ7lS`mYB zNZ{A%JrI1Ne3ZrKu<&Wo)IOiUFDsvT&dcJnE_@c^6ZmE26ZLgjd`<|Th4=)1S@}e} zTNa-U;j<8*z%MJGKHE=a@i`@Y7UC25W#zNMc5qpI`p3(ATu5m9_7L#P%4eP5XUgKU zSNII+%<;Yg{Ic>{<@eIE_^b+_h4=)1t@sSaA+I$33@0hA&H75LOlj}JGtXQ-J~%$) zwZHEkM5T^HHV~sTuI?A|Ut#W3#?#X3{O0Ecx90e?(^u4)Vl7ex0YPB;AwbPy(f#+R zu4?CKzW?5C%|(%}$gi9C--De2`xrJAvFZmnf}gnCY8Xs89My*p}`Br@@!k3zK_U*7BU_1>N=$HO0k>M%Naet&3|GyH^(O( zzYdgO5g`Z&0$qYYXgBY8h-ukjd)WZcoSwA(_xk$!bem_#Z|-kyH`88!O^%4otm0Lk z4|emO?>)CNHoQmw?Kk{tKJ8oWhE;v;>{IQAqljQ04D5`u?B=@I%@*)!ZL$@Gy|9~s zUtzoX#{72kMJv~gFCHDdB%aGmXHxr{zn&?1=195@srQQAoNn8tmA~-3*v%mp?ctcY zoJvGNKoID91VX#H)&6^FcC&)8qjqzW-EPse-P_IUFF8%)0fWPQ??vB%I$x`p@4dKT z*G_iB76Qr(yBT&ylHDA>e^6UON8D}I-`o(p*+3WIm((s>QP>N+8Tb{pnaCU$ds_Fl9+irpN=BRiIb%C0091O$PuLSXx{n+f_C zHOHUYSNEq=kiEVAe(z;K<=Om<-Ry>&+sQ5@u$y6LB-zd3y5E|%N%Gju{z6%25Moa_ zCjG(~@WE~deueGk+jHB^D@T?O^_)4ha&Rp&*PfedHz(~~-Ja-3Y+XkEL&a`RE@MgM zE`Cnz<~SzV@Qjp22?zp$fFRHWflk=XR9Cfgq|ehJDJ{N7LAuE{{Nwu3Fj^B2X zGrA6GyvE$;jJ8%kW>-67=BxzCHm{!d zbEMnNn>XBEA^oY1b$m`pFu&Q&LDGFt9Jv=`%Z@S zwlz;fi#K7nzu65(a{{{=c1Duj9Hsz2ao3%vvD@SCo;>Djo9B~zm~!i4H-|7<9NK(Z z5dtslX5g1*Hy`x=3;5X?sO6`%Wh<;VvYeOx=JxOkG3`tt7Ab;&AkYm6P_u~rG|c@b*_1n|OKEm2{_DC~vZ4E)mU=2rXq2X^x}i`mV2KZd1lC-rem+S@;lMCLQvZmu37c5`|; zODlijd9j;AEZV~{b2*iWf`A|(2&i_kR@qPC&}v;^uZlx`qcn&3$!DHbwqdOTw>6B> z`fTqe36kt~D|*CcR_AqlOV=sg_B+2>^|629fqwcChVT=H$^FfAN8#buqVtSlH^a_I zvYSI3341!?uG`=I)Yi)<4_&(TZgTe-+DIr|GHmb!rcq2_Hv_-Cb~DMD zQli1X`#r4d*R9jDM7ea7x>9A(`4F~+UV zGp_$SzJ45EpU>ATe0_m&As*!%a#7AZ{XMK<*^eBME4RIJPV?%3AC>d?ix%XC>zPqL z%Hp#wd=}yp_+{l2&v{vVP6(fc_ym4g`9ytP7M~5_vk;%aFDsvDcgx~)O86|qC-BS4 zXM^phviS7pi`^d*3j4)%!x-?9y-M~F@XN|)o$cVV`0N!vL6LG@9uc;puorv+zpQ*# z`F*A=KC8l~MHcvTT`P*iC-BS4r_b-DW$`&Id|G6=JR)pGargv&t@sSaA-`+-8QT9I z){<3&7Yy}OSFgSx=N!KH>oMQUH{-Wgt1$kE`ZwC$Zs3Z-%HHh9Ca2y z<&DkXBaHg`#%OKBaXjwmhI7r|gPj5U7~B!7otVE@m2pUm@3c1Aio#xcf1RuRz>nD&sq{-!eDRslOVN`eJjR-M#KvmkpE=UR> zx<5@B+1k@~-OGET^U%mHtE(G^osncWhwmQLme3J*UAx&`_tFr%*+3WIm((s>QP>N+ z8Th5y&8_;INseCk!u)q)-OG#P*^QjZvhL-i4lA1S5A zLin_ZYM)Qwmz7UE=VkHP5Izg>3H-A1iTb)MKBt7wLVN3+fQZj*(-cn<+go3fnQcW>ud*?#b;IcEW{`9%gSe!-)G9=b6EH+#3%5} z%BRoorDgG17d{K|3H(~|8LWGG+VnHzSod<#dE=vl%f_wjw&zXh*7Ur8Z%AQ-(AZnrwP?)jp*bole##qJ_fqQjUf9lneT@5x z8avc>&=GgtaY%Rmp1)Z7mkf5mFRdL8W08->TWH-2@FV-!U`-wB6p!L42If9}mK5P?9%!FTg}Yz$60ybrl}TBNKfj@#O_0%fg5dTNgPz zQE|ls9n@79T{gR`=J6)t$fAn}5b;?4h&U>n#hZ1N`PZ-O_pPa}nR(Mw-5q9L_rOc_ zQNODC)$h}Fbyrm*FS4U72eKSUdkzHVz4%j%o9h+F$=c1+bAmQAx#HKc-Q0QI>X7@r za66+_yP5X3lt0x@Yid86?Pl})y+YP*MkWeZZ(r%hnioDqyBYb{uHD?}`#m+@ypMIe zxwvli8`qC++GIQNrERZ}s)k^)8Zb;bQ5!Yxw>s-(So3*YW)~N*6(cbA$`dcv?IcvlV+xL(UG^-coia#z?9h2iJ+50pw)Sa8H#SOq?gQ-wU@h&_0GA-y5)QH?Lc7KUbWzY1?joknYC!^Pf>~eb#PnwB_3I*8Y0dZf>79)8}h^AZHywVO*~Ps5{5 zcbtK|_|jQ(e;9?ezVgdqyx`8BSXNZC58Z=Lg!&$Uob5Glk=SzsL4BzuyyVwPdql`{uND z*oU;^_j?rLe$B!9&uw8Ne}^|N-RdUkdYh$Ncr)LB3*Wz-?_a_9uaqu=2j>VEoX7qB zUNw7vf-DzqcbwDrd&s{|?@wS)m-$G_p0&)Lk?e{53u{k2=SkVqy)mnY8V2qD`9%JO zwI|B!r0ki??Ab7J*(Uf zPRgEMX3t3WME-@fr^o%7r0iMF>>0_P$iJ}mEO5UxDSK8kdq%P+@~@LU)%SbHS-*#T z^SVtFwrhxxju;ly^p%G@o32E<;ExNr8>ODv`?Pj_rs=O|`8Iw2bTd{IiRMf=%YiHh zW^xXQda*QkqR?>9J>^@eR_`$A`@Nj_qjzTXuJ4Ec^OXNh8r;qq6fDoCTgw3P@6|d` zs$b1N-zUk<*!Pgv1jk|3cs{o?&^|`qQDX#=ClqJ(O|sqV zZIW(bvvl1zOSig(?_bXMui*Pv^8Kr%i{QaI!UgAXzlW@4{Xk^7aJ%E2-a{h)I`so# zPw8pv<)x-v3J<%tC-N_>J@K3;WzSq@PmSB|?TP#gYfqHdN!hcI*)x(ok$++B ziF!9FdloZ$MzSaJFRVR1Za*buPcO4)Bzq$N!rHUI?ck*BS9`*%SE})}B@FmnLP;T4v8k_C)@5vZs0vd9oa5=zbrt^G3%fMz;(szHD@SWbLSy z=&*-v-$VW&YzX1}`R^gUw@N*;_i63=Ow(V_@@@M3>1M1b9JZOSEC;e2NMR0$)_C4ga!Etppp3m(Jw2$%rDX#aBUiKbRD-zn($(k2FB>T{N zNaP>2k0ZT@Wc!=%A#LVE`aAzMCs|$T^d6EtUZQ+A4v4+N+hn`fy;i!_t8=@#C} z_pjso@8bJ6@co;li%`Ki!UgAXzlU_+9elnJe>&anIH&iJ$iGhgK-d#}BxTQBW={>> z?(K>E3u{k2=SkVKkl8bmJ&}K5?TPX_DSH+(dq%P+@-M7CQST;YPcO4)Bzq$N!rIg2 z_ES>!ENAwNWKZN@SbJ8v9h{UstC>9`*%SE})}9{sXOgmKEwg7Ndm{hB+Oxp@(xmL^ zz9;K{HVoQ*e+Bv1$)4&xx;^108dqSKmY8m71wQI^RQX4YpI&cs{o?&^|_{#q}Pt zn!ShA_-j`uYhL&e?;(+Y)IN^%9+K@J$9u^Ao0A*366QT*s}BK*z3O{qyVrZabPG32 z*Zq)ms~_h3AL08S<@+Dw`yZDs5(Lf>E;x_-J!CHH2O`Ub+a2fh9uoQ2sUHY?f{&!^ zS;*`e$)3o+u=d1ro|HX{nLQ)f6Zsd`o+z)AvZt5XGm<@#e_`#3dN(P1mNR=svM2H{ ztUWz$KP6?)YG%(!_C)@LwP%6b!AaS(mf16sJ&}K5?dfuVCMkQm?+uOzXv(GVu>1ZB z@-M7CtK2V5%AUE*o*K8^+Y|ZM$)4&xWI>KISigr{GCuNVEyZ0NwtWxz!!7~|;njZ+ z>3ve_nY~YI$JF%KvwWLAf4Uhf3c+mVCCh;<2hy1Xz4{)qoi)<=9`fzMeuo;*=XM6# z$8o=hbk7XN+s-KIxZbW#Zq^>}A(4O7K92MrlInAtOuJ&}K5?TP0+DSLXEJtNr@`4`rnD6f;UXF0QHBzq$N!rBw{Zc_HF zX7-F^Pvl=%d%E0yO3I$K%$||#iTn#|&nmZrld`A#zN{bDFlhJfTjXC@dwSfTNy?tN z%$^N%TJ%?te_`!e;C^XR_AF%fjAT#bUnhI2_mC^(ID_?j$Q7d-$3|AS`W#!+qvc`S z_mDqo>D~IGoDX@Y)H8dZ)~?K-{(6>g)8|h&V@1{^XM$M{WH~U?bD&q>L+;fk2OqTWr)p0&)Lk?e{53u{l0+fPZ^(|v!izo99Y!o%*{L&(3d_AGEaI4OJPGJ9&= zc5hGQUs!v(+@DFxo`uYwk?e{53v16R_e+zqXEC#9Bzq$NI@wdbhx}_f&S3o>a^3`}Q1WI2%Kz|72nUVRVQ zcx@BR_jJC8d`ECxK#k{fI|J?GxZgv1*?UNhzIJu8=7kUO9uoOS?c)Z}6b}7Liyr*M zMn29D-Y~U!Az$Zfjzi(p#6_3wAIE#h*6;9S%=B-V_mFEF-qn#mAM%^B-Ru6lbgTDD z*Za0~3-|H;@ACcc@%{Vx{)5s*py0f~;ezwlI;ea_{wlX^JyGu_ zWl#45!S<=9TnZ1nuRoE0VeRR1`za}V<}!O~+;(qI2OR=FLVlsyZXJtNr@`4`rn z9`|RGvS%@~XC!+f|H9g{!2Qys?CE9pjAT#bUnhH>yUcNRikRHDegA>`uX3DMierqK zX$fe1c|aQ+)kE5cr+II_%GiO7!My1^6&>a_c4C{Sl+2$IavPm3kTofdH$F> z;)6fPEnqo>M{?Kw-LnQo-UQMKe~>G(9K!p{|NhP3uE)oO?VZzg{ooIBH?thVqxc^9 z{;EaSUbAN)KKO%NmE{oLckeq_<%u32{6X$XmP2^Amve)Edh*GIfB4-*AU^nmT<+)m z{IUFRo_K<|KK&h@8<2xP$X&p42=5<0_hR2arICKH1N=eGV>yKP+h4zF@X<#u9{k4F z&+zqx9Q;9U8_OX)%Fo9hT{HOQFP#*SgFndCSPtQl+>ajmtHH1Q+baTc@CUiMHGckB zp5%5+4GrFK{eA&C_=8-53mx^S?1_uYOO zqvt35L9Wbl2=5agKT?#}rA4p@@)Q0bx0B@%9>qm`{?nIF4x|(QAm{#qpFfu0`M?8< zK6dMXU#98lgg?kFU^#>*xL$PAjW;fwn#>2DTlj-qk>wEHFMhsu@LT`>DnC#4_}~w6 zH?thV``&k6?XyD9ye2s z5B?yxjpY#Dwts%v;M=agx=9ZHAXj5Kgtz@`Ut9F2C$}v6Wvv#-7x;tR++XqY$MRI> ziuOxWeDDXk0?Q#h%9nfZd8Pl%>-hqIklVs?2v5r0vxr#J<=_u;WtKyDBq!Pv3*YnZ z0|RpK2f3Xrhw%RM$FCa{&%&a+ckBpo27i!qALr+f<%P`P``-KBML&Azp@1CxL2d!d zA-s3KjV11ALO27ImAotkB{AYE9n=IgFndS{)?YKmd88MKmX}Z0Xg`C z+yyL$@E}KdLO(o5@CP}MM9Kus_6q)!TKj9B@WtKyDD5s@VLk|8R zx0B@%o~XkX(w`{@e~@$ko1Z_HfASBP4c7niw<1rdU)_ig{vfx2lakgKvB!h2%Zu0?(u z%aDUV$UVt&2v4*l7m6}|k<6P$zQ7;ka!>H{$MTei@4D`~MU-AWKj9B@7qA?{`|4Lt zr*dM^uE!q_Jh$)%IgjNK9>qcB?rop^WIzu7Ah(U>5Z)sXU$l_^-uK>v19I>Oxf;tM zyeD?8AN=F*HxK^i3Hdz`xQ0K-&HXh$e=NWAf%67`{m&Gs+|4Y9@PxeuFAq1@f9wx(RX#^}WIHNb zL_aQ&pYR8{Cs_{h3jKT;Volc%{ven8EkA!O|Ao)L)E_^)^Pf%$$iW}vE?_x?N6#Jg z;i&(p#|M9q^H>hyQJ=$m`!kyQNAL%^Z7hfIsE>2Yhvzl*-{B8(HI_qoRJKrjX1^c) zAUF4S{QR*z^`$@Y@sBt4tKbiE1(rj2q949U*nZJZe)QLYe1Sj6ZDBctM|~q=)NCii zALPm`hwy&=-y3{h{{5Rv1NMVI$n9h~ghykvzyIx~!L8Ts6_A5J$hp7g=a1z@x$Bo_ z#I|mC_=DU6mP2^L?t>yvM4NXqAP0YtE3zEId)w8s2k-yhN-^FOY}dgb8Z`UU@CUgkSq|ad_Q|6c>1`2|FYpJs+#mS)V|mKMw{P7l z`u$FT7x;tR1uTc~DF10((aab4gPg~52#@0P+b%}A3xAN?#&QTx$;ks%e!?H*YAlEF zWP4S%T}c%A0)LR3`$vBMSRQg_I}83GS714W*GOlueFlG!+rn}PuhF&+%E2Gx$}ETQ z8a5Bg!5`#yvK+$WY!psV4*npA_dW>uH{9}4=%efW1-Z-nDs7W9w%@SkJ<2*e<39Ws*?$gl*9ZOMKK%QcC;mY=?t7*GbA}w}i+hRpyR6R<;%#d; zyq+^OJaXyi_=w~G`_lRI<6>5%^{n9b7979{1F{{5I5)9}T{{LD}Arl4X74oR0Ks z`my6&b@TCq^}@^ju*v7#pWXJg7hH79qE9Ut^{-uf@3Dhty!`pwKk}!a`gKB32c(ZA z^B&Q>tFYsQRGK%Rl=(chyRMt7m5hF$j&(o!v3U=2rl0Bjb>kP| z!zI~RvrN*`VBwzHe5l`sbsk%^Ho8_Qyw;Sui z>zaAzv}R5hIY9Lp)rEKtNmMW6P#5C))bFdhkZqCrx{$|Jt?R-QDR<-j{WRX-0-@=g z1a3UdCvL5|Z0Lu&u*`Mfwx+spGT%B&QKy*oLc8mFD6M4l`*f`P(T~l0kTd=0{&XG4 z-*kQvo-S`*i$%V~p^_{9{4nVlzf$AcOMR>Zr zc`X+C5{F8z`18Z0WBf{uYX{uL7yWC*Q_u7Zug~g2woN1lbs?TZ3XJTGAL>FppL8Af zRb9xoNPS(%-@{nfg(oA|<8yx&Ur+;?`M;I>oFP z+FjQ}X(glIr(@lZer(=@oasmRr|Urert^#Nbb0eyEb=7|m0a=Xhe^lyl^WObckxC4 z8nNFqb>R(JUC6eHdWgO~4JfHe~RTr`?QePMHx3JyUh0E5hElxzTV>{u; z+TDoZI(BB{ntuHzfZ@yAN|;IPJR5nUpsW`#NgxmUi?+^`QuB@*nZmQmwoNX zspt9e98*7F@Yf%^aM33>$ocC*9gsef)PKP^;Lt%Cn8sQAY7MEdSi*x49e zk@DjD3&r2b!p{pyFG~MUM4Bm`6wh3t3#I=zBF*BoM0$}fx5@OEzH`vNgHJBLa>iTbx|Gs}@t1Nqxxn`kxv2;1Bm-nm_mj%Q)=j_(gdB z^F&V;eb;`&)bCFxm;Qoj9~i1Wc)$ORFhZen*At2&efDdgQf`&Rb4kC_;BWUlW&3aT zJY`V)Z5PLb9?$ub_tXBb&Xa!JoG)Y_fA0;>zu?-ZBuhWI@*C8=xB@%V9x9S!abW!R z5;JMS{?0zbaV~m>c;5Nj_@hOj?ZRyp=GkWqCpJgn7p)?Uc+EXleoJ3oD(3fB5AN6m@PVTvK4y`zJ>NDs^`jEZp?*KY6eje+st4v<>^L{)g9iTVa z+5EZRmF@rCp&P{=H6GF>Oc)dw)m8M@%HHmG;?bMp36q|%=?)Xtbbcs3(0hPRy8O9c zda!9OtQiEwZ(ft-xp4zKh%qegwjzGC%AsBNF=3OZ+}YLD8{#I=iAAjagO``J?%cu z_4~R!9s7S29`XnE6Y@tqUy1(EUO*(2jvK`ZuG4@R)hE;f6U{2|JIc4KY>^%1Uy=E7 zlz(52pC09xO)~9AIn>^Ve=4)!hlJ^z!lba_pYF>+FDXkt$Pe8|T$Ij-#W~7%$}iLb zt?EB<+yA}hyt7A$L))KOZaz;0MD3||zvX9bSU+&)$m-FToHsf?F}kIlzjoKre#3pz zdq89Y(jf*bIsSn`;fMaj?;_(k&)3NhjweN*3&;9(Ixew)@}nQi&>e^T;OG12KA-QO zkNvfQv~V2lI1hO(4I~Rc6sCR*|KvwME^%DsUq6OyBTUM-Nf9XWQ%v|*cB6L`#M?8) zAF)SfdKd*GJt5r=e-$_@CT>m(1>CGV1ZVwV1BT?~?ioH+Ea%V$7_MaL8d`6K@n z4*k(Jyh|ZJ2va==+`hweaH#Mz-A{2jou_H;p??7{$BBdKo;&!nb<0M-ob)b;z>tod z$Plst{V1=#}qz2*Lu9j^H#3vck(xu*%`JLNao#_xB&I;H(i)?07WQ$FkG{di0|;CX2E z{JY=lY#S{!sff$sgJa zh=cNn`klDm^ZiaP-_hQtI-phk2mPY3%2LZ%9AcXFxnyNJrN1q?`%g??isi zxPB+M@9-QX-S0&I0$e8D@2s}zcOo50^*i-=sXlA>r}~{d=i9p9nZVrpU%^NrT+%Ph zFUS4P+%nnUtg^d}`<>-$+w?nEq_p43dh2a^%4hw&ACE}~JQJ=l${M9ag8X=?&w}@u z(eLE)cX#zWQ7^)H=y&3J&-FWv{7JgsiS~k?Kh*EU^`7r{a`}$-cGCS$v)oL&---5{ zZl3}1U?Ck@zmsw%e7_U3@aEn>g~5bO{?5`d=;koe##NcUYamraO#o)A^zFK<@!M>GD^- zGwXMDnPri^r=j18`iL@%o&~pN^gFry-Cg}o)Qd14`klDmbNx;uf0FKZqP?K!5A{27 zz32O#T)v~dopis`EH{(xccT5K+h;&LSV%|K@1&dw-|s|z&bWRjx9{*AB;D_HxqksJ zlkRuAAC&Dl#7E^geP@ewB-QWK*ur{mzr2VSMg?brBTl7v@*M{7&v~ z7S56V&I_1};@jKwJ6EN&-^qIGZF3%2L3wr)gzZ2JczTe5^JKEbx_dCsUGwFUO+Hbmj2E>Df zbY%Tb%9-%}PUPo|>vwYd4$nc-{Z8~Rz-7|?&Rm;*C(@Brzf+Hw>a%u#=bz&^7tnM0 zh^+7CiGrK_hW(v?&iNb0$JT`P-j%;yUHR_L^Z4p>7vj%RbHPi41A$;}&5Mz;#q!dC za7&oqt@)CYBZ_{0s(}G+0`0p0iy1nFmbN;*su5uiiN=oD^t3=k`Df|Cs{N9h`I&OuZNVj^X z>?grB{rCELnac;_g4Xkcem5`|(9_hTbi!K?q-%|QK4+v3EM&c z>)DR&@?quX@k_)i8rF(Ll}E&TI7@^TXE|Q=DF6ATCwJwB)o&b~kc7dXy(==J4}P}g zi2ET~4$*V$+n>3I{h>Oz!1;L_#x`GSZ+<7LJkqg;lh5pr%&>5Cn*FI9N4br196_Rd z$GLOh)kZl!G_v}QYsWWiUf)%t%1%n9!Z}D-|7!79H_P!$xEy~2yJJDO5klA_YDe{M zIbJi%an>Ktv0H3ipAByq+b|wB3tIS#Dvuy%<2nAiS&m1Gp`iLP{ZWo1Ke}}b+H*`} zGSK@2LT%CKgt-7G$X>HtIe#?TwkT2MkuLEB$aX=@oOp_p zMocsD$TK*B-a$_2o#9pDwb@lyDNeYaH90Z!C~CbQRUYY~{zHBL*{Sb8AV0cw%Ni#O zgfRLcHwDU*MyP0CqCM%NUB>X4?j>EkI;Vk!_J(e zozfxsmGZ5|5T$1hU!L^&zt!J;-ya8sOB_<82j_bVWn1aHa^%vDW9!zhwN-yFU$8VN z?LsHi-*B9>#lIUxgm|xegg6%ehyIKbM1MIk05irj29b1=yvd>#YWzqRK5qUN6A7=aTEb6}Dc4*g5suBEbK?(gey;r-8>qEF(`26x6mBhTIR!c2iS?Gwgz=J@5X039NU!`k`q&oSzTy;u_BhvP*u+ zbm4rQck4!bOWKHSHpau_dJpSAWBU&0Qo>7Fb(hb0Z!o0WqxqZ zoScaBZr#OW8;c{|3bpi~m+wvDYDf5->>4Vhgp;bl3H0vNjzGHs?Fg6#?F*d8+Kz~@ z4Gw*uL+yyB?<}w2cEe#G{Q3P?iSG^%54zC9JuX~3!tuw;pN{WyXq^5z!%k_3Xgg5+ zw~BKb>k9sAW;=rQ$Mf!98Eij6TDBvss|9ChWYg$C43z`b3)Ii_;;I*Xd#xBQ_Sy4} zackHotXnglcj%3J!F&gz>ILRPaZ=*vhWSDKk`wD{!CATa;!P1h>E)#4eNNoZnd1@u z_c>zcy>163==nN**y}S+V3%%PcT(Dy>`(0n=#6?o4A*NvZ5)ERP@G)NoEYVbY~Ox=<1LvSC|jQ z%Qegka|FmFFZPRbXuL$Kh2sA{l**OzP&FmI6f|C_T!G#l>mTMqak7;;VSa*~oPyJ? zU5%5a=d9>jToXv5{@F5AO9>}MgA?ej*FPtn^rgYipY_(klTO-{SLF$Fp*ZoF6Xpj7 zlI6*%IPKciI9a@Y-KGr_;~O@l$;)uswR`sH#K_p#y476^HVGub$&HJ1DdD7Sa00zMa>86FPOf84m>-x)azbC8 z+Wl5;99_M6Y-HR{T9-rF($#ueRma8!b#2G1bQ2saBge$4s)S6xsN$veqbKS$qCj2ZYwryUR#Xt zo*(H*rhSs1@>0TydzZAY8b@Kh4NjWN6Xrs3@?GYH`GI|y6YCees_`1RiIPNla@|xp zC7k38PN28JNppF^TqsVy&zvwn1}D}7vl=G@D>h7wOsw0m9$|OqCc(+JscK3%DHxnU z?~a@>7mAYym=op)HstcedSG^CadgxY3?zZwBsh6=s+JN?iUudpyCWyeh2mroLCRY4v&qFjIWL| zqaGC)~RC(MQ7=hqz*km^DdD7M za00!-31#$$KKL(O?_9n_z29Lj6ekDp_gc&k48-M$^?>ZE@sahLE?u{2lXX7_DM_L{ zxv1i$gcEm4mIG@1g!Kj|ZNEcdE)*vRGAGOrtizmG56J4AM5}s|;N-GOIVGIr3{IeT zM^2av#mT|U3G)-=vyuZR9ybf9Qw{w*E2YQ-rz*GPq1c@R-P~yij(ItC(IA>i^~)1@z~`X z#xD)Ong?QSc4MEv=YJ>r=}ImooRl?A=sQ{H9sEvK&-c>y!1o2rhvEhERhT14GB4KS zvW;<+Xyhcr%N>+#uDBkR{%E*KAgr#%U-#$Rj-D3F1-V@VXOf-X*VZq=%Om!dOr5 z+2VMX_!|&^^c(R1rGI8QOT~ZgC%+eJy$4FCBPJl|{wdt-*L@D`wbx$xJ@?$R>96~c z!b?z``|i8%_Wk$YzrNpo`_;v<`lEBYe!u|-)SvmxXO<{!;Y051^V!dSwu*C~efFt8 z>silg`A7FCU6d9|2c@}l=-ZD#P+aPq(uQxUe2i2p~&bnUkQAepiI;ZP&pVC2TCA+lB2iSsmAU~b#u=n13=Se>b z|HvbctRH*qvGo_d=tcFHzVxN_kwJFb4h2`AJSELc!qxNu>8aB$Ff>71_9eaaU~1LXtRf_N~~ z01m?B0pcbdPd@qN`l3aP>Pwd{t-t!!udc6Lxw3xlx#!jkg@S+mq?1na(?Iz|wjjH~ z4#;=irT8h21f!*PIdIG|$M|8Mc;bn^zRQ=NU4Px{URPhYZe4wBY^=U^?b`ZlU;Enn zvSrKsyqG_KzHcM47coP5K=J7D>iX}u-@f&B914GV%2TrQX{Vj$>rHWwkB`@{zWVC= z)~#E`YU@|k*RNk+|Es_HtNNK|o>_m{%UhFL5`|BV6@Q3R+-E>p^$}6v|kB*MkmoHyl zKmGL6eI|(m(*~3V{SWa|9<|DUaX(M_dFrXB)`y0M>gSzzUVY=njrHrUyRQDxkAAd% z+ikb`X}I>1YLkoRttto=3f8$*ZVG=pK-<+{xd@5B0aNs{ti0mK;OoQ7kX3Nl&*H{ z={$-sw^Q8o43JBD(z8b84#i8?$VOy$Du)LK2K;A_${(ud=ov%&bWDE~H{BD@WJ!;! z)v?IS(koy2Nd%YfN6*uKO)e)`YYjsWNy#2xp zFZAtCx}SdfD|}lMYg9JV^G148+*IySxkGVCeN{Ol^p-Xclka9aguS<4am5w&VzKC# z`(zI)n<#!N^I>y}oAQ?OnCuK&BhN{1Q65}nh9Bnqvdb>pPS1R)RPvuWVt{Nw`A>OI zWgfLt$o3QuZy342(@jr3h}%{7z{+u!%T_tiIV-dsQb{PTSVi38&Ah$AF_ zRQ{7K&~Bn*gb~#h`sPI)wEazQdee5QgD$%0BA-v>#WBZ79;hvF*kSXCgGf40mtMhL zUev$aU-61pY!^Ik7c6cU@opD+o>-jIr6;==EeEjAf%`ML{`e7MP@tP}fwLDc*)Xw* z-rjC_W86D){5G0uO4?lGC%D&v@;1mv((NV_R1oT*V;Hq_?tg&R-|~MVE*hV?S)Abd z3qsie@7XvUf4>D|ABTn>&<~zlxR7wJj1zeQAeSRvaVL*|5SIZ`z3&-PaKKboHh<^uU1b$^Sf@<>OvKL&Eb&hX-C@5YUG0nuIs>TbgGYGx$T_$wa*U9(yPviC=+J|Tdqg@QS z{AWuC((%gT$ePjdFU3U6?kpUq)v3a~pQ9miOFM6hPgJ>f*?T?Y; z`Vj7MeE#BKJIS3_@cZ5F8NY4OAA`1z^S;~fs0_URRpR@YjpC2?>&%J2-S8{jQE{AK zPKlnK_!IG${z05SC60r?oMvyoeaL#7&wEhHaiZ>T5mg@PiM@XC^Ua+qrsR3AY4)f3 z0eZKqAN1$m=Y^jS@ZuWJ3G5VU@mLW^RC%OBtb;z=-!D40c|i1x<%YeK@Zwe*{Yk1H zpm*zeKyqBk=Y+WcC$NXh{NOz5{uWW?kq$9WS#lEB{uq8)eBf|7C7k38PN4U6?FeU2 z@m(R;r;}n#a{A#*j4{ix&snqgVAHi43$?u#jDsSW-2g;8(!TazaQo(5bnrh8t-AAO(YM&m`!hRt3^~rIhulqmkY#rbQ6 z8~hct_NCtrVExe!a4!n>s~|1s*H}**@8NxODBsQ>uJ&0wz_WahRWRBC&>QVV^W7*t z?>;BYh2rF5eomO5ASd=OejDr2BSc#_FWM_&AK%#K0~05UhiiStiEZu`4Njmp+KX-1 zD`74aCu^7!qg;{YiS=|~ZGWX++c$?edC{=DL-xyT^S@u@JdG0?uYlgc@rr5o&0#(i zFPAVc%n|ZI@?t$5Sm!0u(8X*=mMih?+eWBcHC(v83e_HOF!(1p%-oTtNKS55cmub{FQA@vb-yGs(+hQ*zoVedK#>rXl zj+`(Tij(!s3G)-=WC2dQcCjBy*Mdy~Nz^-~!E#DC$r+qLZ-WyaE7rctU@jCV8<`X4 z2WFDxiS;s#4mgRv}TqsVy$eb`g1}D}7vJqeEAQ_62`1Z}AdgqKv zH6@%B3{IdoIH8Pgxo-}0p*XpNIbnWaATCd=2W0jAP!Oh_n?!l?+Da`YoD>aCpf@;a z`yC2%p*Z<6bHe<_{t5d-#9v9J9C&g`DDdQ2`BEq zH^xusJ6Y%*{7$x!-{M=P?Sb!=m=DDZ=BqGAkmUNudR(?KjuMTWWO(^PrJNF8at1HZ zJ2WrM2Y3M=E^~x)=EZt^ws-f-8YBk&b_^9 zz8v(PX>L*Dg$BtmpA7rlnCqKiUMJR(!8!ph&;Odu8AS8NC_Km`JmeqZK{!~C#%2E8 z0oe}H!^;a{tg|`YzBxnAkmGKfe&3v3d&rdd>uZV$2)h4n=D|Xr%ypb>-<;sS2>KoY zSf`%$2bgY+{xBTTI`_2xI)#b#=qWDjNkK05iorFyPku>;)=%%WS4z8dQ2Hru`lI#O z=?~{fj~;)kbdW!i>oyJKpVCfi!PC0*v@SgT(J@`4HQ^~-3ZL{v+`3C?qkA^_KyhIG z_iW#sY~P%0-<)jUoNV8mY~LK(KPTHaC)+nC+czig@1KrioE3tre@uDGcoX0J(mA=}{SOb0xW@+fKe;*K{Z9~I zFYSNwN6L_hzqs~4sofN`#{rMLeE7%@pE~TlLGB0Qu4lLKfuGa9ECqHWCcmxtUWc^3 z73oIdKN|1PX#F|phxO+QW3Bf;>6!Jd^KI6*p5phuaCh+e-O@#-sr9Y%)30xR`>Atw zjDPlcF^;{P*SF5k+2NFKsW{HfQ;su#*qMBWIRBV95B`dp9sPC1Snp2n9ce2o{(ErNyWM-LruD7)`2a7j@th#vA}#VH0*NY*bi}^C zwf~ImJ6ui)FEx!9S}zKExBgyFTi=?w04K1A%lzOx>iX1C<&loq*SGdL*)>#62`BDF zxBBfHdap;EKyQ49g?!e_6NlEf=K6F}v?;iW3$KQYwz1zPcCz)Y{eA)W5Bxmw`w1e` z_!_y{b(tSoK19z4%0v8_eOTjBKbM1MIS_S!#HjMnHumua-e0k%`T^b4hDcTaxJAwWG`;}6+l?eYntPoOEpf7N{DWKyTCwZP%S( zE)*wwGbcv5A~~_1)~T;QzhY#~y3Ly`6`kee{qn?(ZC)pFa_n$1C7jeWPN=;Jy@Tz| zY4$&1J`^u5^THg#tdbY&X`MPRk!qp%_dg+C%0pgCcyUL9?2m z-~@ViLG{-UcW9u3sxpm0}ILW#Co~C9^U_i%9H!<%B6&pvcU=THaKCkYn(6_ij#wx6Xqw#$xPh;ggD7h z6;i@U)!+nr8=N$kC(MQ7sI&J{wKuAwkajaAG|mtJY&gfYxpj{o=zbwUlsDG&q6Y1}AJCt-r%uC{Dh}oG?Ey zr|cKc#QjgGJUO}Iemf=OCk7|bTj!+Z{wK_Z;^YqIg!wTzu^y0(_)-VS5Uwmw;@kg( zIC*6yml96O1}D%PoKQx$-2a5RP@H_3IbnWaATCd=2W0hqEfA)in?${HQKgU)PO1hc z&>Nhz{SJk>P@LS!oG?GIC39juAggoITl=3-d2(5$m=aEE1}D(FBPYy-;$$0h!u$j| znTh+K5GPwJUP?G|R~zFetT(}RW?tem@+*B#2 zgp-`X3G_yJ0zQ0K-~WWUP@H^)IbnVbPVC2Hdv^a5;^dY}H6@%B3{IdoIBC2833H)1 z`5JS={1}{AkH<#a#R92t#5b~&34AB}=}IjnoD?-q{CQcdcknyeMt+NLm9_`IS7JUC zFPN{w96^%nAM0^hHQqK5jhtk7xufFp{1xasQ(e#C1$u|(h4}z4$S0RM!a4I|JwDsJ z`=3xf^wml(CA^dkUZ8hqUU=S{$qP7vJ9GCxp}BL{G|iWT-ZRauYP`@O8RnB=zY=r( z0j&FhbwIF=l*{wK^!-XGJjf$FaK;Z^rP3pX>js~pJoKgsq#p*>cz{Z9@Qd&2A&Y7Z9IbxUC$GTP^5?%cWc zdGqGg4?q0y`VmJQQ9tUaqtqXr({;N4+~+>m-w%fNrD?Sf4EDq!Talkm`_SyY_ulzK z4?WZmpVoLk_Sj?VFM3h7|4Fw0Nw)tFA{}b;Qw)>xK z*gWBkuNxVA>HPWDZ-HCq*OTJ1ckcZU&^{KnKN{mO*Z66yE8AFKR(Knf*U1&{e|T`j z%LVt_s3o}ni6`QPzR#dEP(qB~-r{`4^2HZ!ni$`_dg8)$Yc`5GDz=Nkh_G_6miY@8 z(V216_z|TK{-#Uc>bI;O8;y`Aq@f$vAKwy#Xs}l=?H}_$-6+z=Z(RGwc<&1Gd@%1H zQ{5o2Jz=k@OpihOV><)x96XK*PJDv_^<25dw|`%eqU+M5~uW%C6059i2DZdx34&U zk@yS#3Ys1Lb=g>dyti>LYn=~K*Jq9@4=rL}-O(3&-PaK z-@?xWa{;ZRuFo7*9_fgEeP`eP%lgj#$d7K_vT1*|x3WK%gJwApb$#Zj^3XH(??Qb0 zpE_LQ_nEC*iHN=b-Ku7P|2rbqyZw89(pmeCmH7ZK$Pt%0!gE?O zdc*op>N^s5U1NOF-zS{)!+QdEbL(-xp81YMyeFXVNd98HCvdOi_X5|n{(d5CzQbRy z?-QQW?C8HIVEyr)z%8}Thp69yM3qPW#{M0NzfbTxwD$yI3rVEt>2a%;-=le^{n_5i z{#Wz!z+6DPsNaD^l}9>a|Bl4B{}p{_f8SpQNII;Dvxv|^&Lq;@zRKCCLYx^Ug$d# z=-uf%60`@=K14eh?PBEB!@qs&fpje2^3z-Yp-pQpId^>B`qk?;j*YH?zfNvLVt_tL z=;XcWK7B)Sm-uV?&Uh==hqX`1eZqekbejU|c!AcZp?$hHiodG(mLn(r;{VNd_A&yc zcrO=me!0@vC!Ep{{1r5N`|U&4AJ4n%wQe6q-RC>1JhVt=pYYR$i|TprkM^N$Khu3f zqn}65JM_jnndaC9jT88sFc*rGck*+?{J=g@_xX-0k91%iZ#UL`T8|p``izrCesp(~ zGdO|Xs2Ak=hX_;q4wbo3oLtA880AXC&I4Bad`Fc>%Edn6d(IN|LcIHg?>k&h2`2@O z6KZcl?_hg#ntj5V55>#%%nNe_J8AZ|+UGl}JkpWOKH|1cMd zlUr|-?KS2H_R;KYwIxJUd88wm`e$mWrZ{QDG!u_JgA?ej*FP=y31==8Cm&}{m>=Yo zW@oikVmJGIN0mo9lHuh2L+&NAo!5wGW*(IdPN28WNken3ox)rwPCm(;Fh7tvdvs!C zY|MTW&8YH7M>3qO8p%n9>@R7Bn9JE}a=kqjqK zE-s{mlbXQ^^fox*_wQPH!dxg$%FGG#1N*?v1FP1ppTNZ~+^F)6sPdxMBlkt{>fGySzwLd88wm^5opRyp(W~ zGdO|X1}Dws33H)1`5be?{J=h{@oL#bi7JnDB*V!*Q{|L!QZP7y-UcU}-CB9VTqsUH z&zvwnu#aYEt9`zs$|D`gaI$8qni5Wm1}D(FBPYy-;^d3W3G)N{MBV2*syxz>3@3j- zRZ9scp1}$9?#Kyqp*XpNIbnWapQ!tMN0mo9lHuf@DR(W#PiA(%xNL9&y$w#9+b7J0 z;^fQB3G)N{sC|cUp-VTad?UIf`a6G^%B6&ps=*2LHaOwz*4ih`h2rE+=7jlyeUzOo zH(QM=k8~tco;7mAawF(=Fq?1TNA zao(*PRUYvr^Zm)XN>y=!m}aJ1G&q6Y`2HlQwbqVhE)*vZ^LN6`59DCyft3^EqwCjB z6mcV@8&$p$O%m;st17jWaN-%9KyQ>MGM{-KuD(w=bD=nSggIe;V4uYi_xX-0k8~tb z@08wIaf=u~X~Z-WkIDuo&>Nh{_6g=|Yvl=Zp*VSzIbnW~SJ8HBrgav_FC7^}X!dUG z^RgT^tovdyjW1n#5L-Fz$^THfKvM~-~XZfh|NJlcf z+*&E5gqNDZ3-k`n3-h6P!TcuX2zH9P&v#ULq$3$#K3gfKgctYH#&`;qFVH(QFU$vc zfn8kY2x~>ihtc{F~>5npZv^jw-hu^{QZS^y&KH?MLuIbFwXOz zEgAEESB-92dg;j8QTPbw`XU2Dc4G5*m!f_Id*q+#+#pH{bNzVtac)1s-NolmNEfMd z=N0^Y+1y#bZLtm$d^yhTr_R|i{@LTjeA{H_{WfCcqx_s5PU#jg=lA9*e;xVBXNdEU ziSyvEXwLg(y*oX}=Z&tO*kG|bJ7SM2k8omdA5gwI6I11sl=nsLIriu2vEJ?42TkQZ zKOf-5HJ%gL$!c;QgoPVb9zltD;T@@bQkGsiZJSTuBfPIe8|Qo>2u-~@V4*N$}d zbR5*DlcM=FeG7`l&hRJv&fbGfhcUH=C3#;{{en0S;}79C{9=EMU|@~=jWjjM(zjCl z=lkbxr*Mtj?7GaOEFXG5AIL`dGuJi^J{>s2qCV3<*YGV}T4!W|IK;Yl*w@Bf=LG!> ztTW_dy&hiA4$m#ZgFM1RtcVBe79m{JQ!cM-qKB6k!dQ=Wx_xq%I!hh*(bnr_B7V63 zI;^6C)%|yqZwM!I9Vgo-C)+0{+b1X6Cx`Z^nL9VzCuiQgdG$jMIYjK4w7t3!@C<`{qfpA%0!(cc$n`SP>tuY29=>g(36tB;M1)z_|FTc^D` zmMvT6?;SLM{`~r}#~xch{P4qlJJ4Q1crNw$u}{!``|VqIUAJZY!hfFjCOZE322>TI8!Y@eKLpPX!;oNS+*Y@eL->-l`PPfoT^PPF$u7sGHUF*igF?-ISq@}5kmW#@16dAaIgsT*mIGN1 zWI2%KK$Zhp4rDnnlX8H@8^rL6gK>#P;sZH-T!8Lx6!$Tn@jY>@-w%@)zrZKHVLZ3- zL+Q9c+{5_Lcf>KJqi~=$P9)A(j%}D2I6)jl{2@MskNCcz#cU2nPwBoEGGg{ndhL z-d|CB68_q?ClUVB)t+3wN+eR4#Cys2{r7P17LCbn+O^A9(caf*jc?dYt>buqPsJEq zW1sF-p`~5?FyTCQ?$9-O0{O9}c z7f&X&!)aXv=!bO?3YSYg&3JodKlD9BZnxYI{WrW0!h|dH^Rl38>eK1`_B*c|KJ4}_ zqO3`FU4*9n&`Z}1i>bX!oYEmX97n`ox=F0tQ6Dzb>uGlM=P$GVn7{1)F1Q{9oZOo`O)1`&fo-kW1f54b*PyO#mSS*iBYaJ z>^#HvL-#qEnsV1;Jzu&m zw5|vBU;Ta$bD=odxQFcjF+Y%rx}SMed88wm^5nFNr#P9}?Ubs)3H0vB33H)18D~zI zAJ_-`RO7r`H>!Liz9jlR=Tyom;iP780=*4R#2P{L)5;U(LUA&|oG?Gqzj*(?adh?O zv61l^w;#G+?~GQeDdEH&HpWp{Z-WyyyT%D~p*XpWIbnXlN!0z!qsk*4$<#Z4Q>mqd zlbpc`^fowYE>D;X#mN@tg!zGeRO5A~?T1d~Ny)3Y8&WckVsHYz4NjWN6Xrs3ayfIt z{IuX?X6=XWbMl@_E+w244NjnUM^2av#mN=S3G)L^qV8uNRUYX`q~0n0eWj2RPCSDX z=-rVM=0b6DC3C|3z&=s;Gmk2dbR@&c?UiCmI4K*PKyQPS=JpA5p*Xp9Z#jO#{J=hH zenCQ(6&7RC%N$ znet?NrJNE@Y6d6JTj!+Ze(21F;^dRe3G)N{SiRJNuyCWwH-eJoNo@Nu`R&+yD%F&5 z;w~}9PgrkoLiyZsKXm3oaq=nVg!zGe^nI#vts6J0d?T(T>Ye*5wUls@GdO|X;H2$$ zD9nZ8q|BT!Kd_H(XPc@gsyxz>Ouh4P#m&p-%!%~1X(N@rdQ>ntf!-ZCVJ;LWpJ7gz zALxsHs&U?}8&w|hCG!1A=~tDU;si0xOt)xo0=@D5NlXceB7XXQ=*)%UHYe@I-e&|%5UGS0j(N04lcgV>Q1RUYYxeg8`0W%5}&$|>QcX7B>NL-WFXC|)qX zi8+FuqV8uNRUYX`gqQrYcT`iti+e_6JcY^^=pC9D<^#OIE-rI~^QiloN0mo9lG+cw zrg&+@G!u_<8ZY!6KJ-Sr1v)qFi_7yPO-|q+Zq)tEqsk*4vG0dYb1a>mixK{eA6L;h zp?SZU=Zks2?iF(0FXjUyUwVE&^ex&_se>BdXA&+XC74^S|rdus5qtfRb0*}Uf zqV^p7^YmEncI|_va-W|M@ZuWJ3G&Tqavp?*8&w`b#l9c9|BOvd-D%?pH7N4 z#q=XTjWvA8X4!t|4vjhUpFjRA$Dq|Ux|dy-d6eZt^n9Q^#9y-ep;P|?{R#9h)cQ%r z`a<5qyPyBSRW!cMt4u9jzj3q0wqO1VRRfm7B6De7p=XG{x)|vH>231{@h5Hte(sgr zzhF0TGsMa5cRnH7^-jrg_8AtVJ7RsIocP-fzmkZz^cfL%LG~%cyJDyG1xiccSLOOn z&97xW&2~UQNSs`F;pmnLv2)vn7n*l=?|HqR7dD*jxWlXFfvc4pR=;s{;=Fa^6PriI zx=oIsXZtku!@3QoU;J0Kb^txccy93=Lk~RP>U^>B9G|m!!sbDi&#|SjNX)Q!hF$UZ z7vnj0@8fmWzAIg%+tyw6!~Mkg(bMo8Pl|XaPY`k6D4EPZdx?`jp3)Nd)y(IZ^~ZDU zw#f&X^B2w!1lGj~jrYZ{OtdJEmk2A)a=hwM#&axJ`s*S|(ktbg(|^w~)*I|r-wd*mj{EjslbUkeJ+tv1X@M{RaOo^Lg zKCwQnJMgeS?(e^kRr0-!`!?xTd0krfiR1nJq=Y}O zi`2W1N;&tMAvq6hYtZc?C@Zhka~kEAzdkMNhxTXTt-ZZI?Lh-=)~9`d+n)=bBlGp; zLDwp?e4*XEKCO!Lm>n|B1B)H!6493p{%V>X{qmjlNBQpVY~2ozy1r~wd1w*)`m}z) zk4+W0-0L)2igY~PF3OW`(^1$s=yOi(1$yrQz46|m?fSILh2rEPer}i_q@%I!8?JQc zMwM^GCi^Mw=gfY}nPVG9Ce9pLJ+WcD;W^~dGb_bDy?pXgY7mAaInG@y*_R;KY zH5ECkJklZF*!$yT@zy`Ds#FyxjhK4*$bFSv{ZlnKf!=!k({g=U=0b7u2y?>xAg?q# zt0lgkp7m*y;AEsy>oZOYmYmcKPN28W32aX9S=IY9=0b7uD09O6Kql(?vQg!cj%3P{ zH&@)V`fL8OXUU2CreMDZdUxc6xlo)u#+)!eun*Q9#d)`GRQX1H36v+Lt(9D#aZ=oCm)56Ef|Hvng+AlNU1rxlDHxnUZ-WyyyT%D~ zp*Z;^bHe<9lc?*1^fowYE>D;X#mVE$3G)N{sK)El zzCLXd<;kZjUY~K|S#shToIr1bljib-xlo+!VosQ!7MwiI>(eH|$sLt)pK(&PZ z57<%bGfoPYoYV|Xpf@;??Gxrie_za8C{9jhPM9Cq$8METNXNN8?GE`pTb$p?P9Czu zUD{{kCzhPJn;PRM{`yd?cknyehTTMGaC_kU0_H>Uaw_w}96_=%4q``6RC%OhmXiQ4 z`FT5Xea1`Gl9!yp3-k`n3-h6P!TcuX2zH9PzHC%^q$3etCI@yD`ivKSejxHDj9V~x zf!?8cVLreM;&hoKoJU<>HmW?*A!aW5^--+jZzAxb;-wMOOgt)TywG>}&>QU*=-jkU zApRUHgpN+7HG|;(r#Zr%At5SiuE&|!}ER@iSz54*3)pc@8tb?zpO8wV|S6% z-_+G#xyydp87IzpzqEdo_jPlgp4D_Pp(f?oK2u&w%KNhR98-A@y)o|9cHS>@p*VSX zuAC>&{D2q9iTyecjrlkT(bioe*BOg#-Y;>oW~!VLPO1hc&>QW7w(nb*3&qJJ%!yI1 zNKQ_&HLla(#BSa&BAzAY=lSc=#WtQnoc#S%H6@(XG)`zd19}Jh8`I4DWj+)yk1{XJ z5$q&+IT@#2yBaUH6@?!sy?2Sf{<&wWmJ(jviN^RB)j!a?WBtQiC{7+@PM9A6Avrk( zr(L@mClNmpNuvJw!<73(*N=!>+}bM7^`J;-!R>vcU=THaOw@*6JPRLUHm0 zbHe<@LQZ+b%-UcVlCs$RfDdD7Ma00yzPB^=@@`SliocxYCVSZpA=EQnnR^!BK-Z0WZ-jaAG|m8|S>=_&K??l1m9E1%nglZE(`uK4C5tCx2p2m>+`^>j7Ey9U=m> zc9W=gK3gfIgp;Dd3G_BNVe4q^6Xrs3@@M9R`GGmP-mxB#Rh-yN-a;aLHwjMetQ1qi ziDz&Ey>(7n&iiF96emwHC(I8_#GF_U$VPmrgJcL-auVNnhvL0)>8^^G5>CnnC(s+5 zP)4_$_sd);P7aXYX}Qb~48)vR56J5CIT5Cvn?!kXZ>5|PPO1hc&>Nhz{SJk>P@Ejd zoG?GIC39juAggl{t?EgFlLsr+lyFirIDy_BIbkjoCkHbp%ukS$6RpQ%F&`A+*}92* ze^Pp+QcDRZ?q$aK3G0pTPl9&Q+Of=q;^aBZ3G)LvS)QC|Jst~AZ08Ll9m%v${;T3H zOUd|&!3p$6c_Q<<#k^nULUA&eIbnWaALhhMohG38p&-dw=&q?tR= zgFM13FsFz|g~R)syVy6I%ONv7$Rj+D!$Ukx>En5$*pJ!_5Aq1F%Hb8@@;U`7otU@G z`-+<3K_1~@-$KOGls?RF<^3nk@F0)y3cMc`;%N#G^B;MiLNh$bBRr48Lp)94VV)fC zXJ>{7d4yNx@CtCv{KI@I-uKK55Ap~P`zj%xru1Rn4eyU-h6j0sSK$3J5KmKhn4iJ> zD4F3w9^rW$9^z>V58v_gemiD(kVkk`4zB>$%s+hZ&HJ*L;XxkZVc!SD)094Z7tH&2 znBhSl;bDIO#M2ZWz8~d%9?b9{kMKNR9~|*Cg@^A9c|QO%Jjf%wDu-8qYvv!mN8@$l z&F~_kMIh--YDW}3J>46@H*6Hc#ubU9*2i`n!>|(5WHTo z86M;jUX{Zuz%}y^@5^~zTQfY!BRs5|iFlgQhxe+y{;3%rcx}PM+5v^Z$#<<=~UbJIG{~)&YUStlI zQ!*};)7pnL-yVA7eP`SCUYHBTNsar}%nvx^@n)QM?Kb97cP(lNNKWG2XIr$VQ^HBX z-~@UH-(w-mwfEx8h2rFw%!yI1NKUL@W5u}M3v&|Ndn}nJwUlsD)HtE{SkOB-&OFU} zFU*JH<#FbPIRasl7wgwpIxi8|dr7ALanDZ2cNCt+3)Mf+yJP*sTqsUi0;ld{1H^w#U2mg~JR7mAaI7s_?%n4cgg*3%1gPSjLLyY*g@;iQlf zPO1hc&|BvOHV>?u&Ri%?9$`+HAIQjh$9j5!6W@9-$#7Ck2`4p!6X@NM6Xrs3@+fn{ z`~*3n5pug9*72~D)}@l+#7hY$?v}>;6KbD8Z-bNO`H#$n;^Z;rg!zGmWO-sey}$t{ z(bs!PhLdtiILR5DKyQN+HoMk8W-b&bHRgo*33Ad4>%AnyNi`*$6bw$Fx4}tsdBR*M zPJYRpFh2$-*57TY#%tvDUXtOYmJ&{i1}D(l;H0@cVJ;LWk25FCkHLxk{DSrCHf@*~ z->`Ar>WJ&TB*TfjJSF2N1}D(FBPYy-;$#-x^_KQ!j9*|X>M4NOkl9LQ4UP?G|-(rlP zu--Z+E!TTtE)*wQnG@#6;KX`BHsVViBtvl$-+C`H=yFOp$r+qLZ*W4n(Q>^P=0b7e zF(=HA%tgoH^2B;TR$s>hVcNOLlqc1ca8fWhf!^Sx?RqcFh2rF$%n9=YTQVos1F||N z(W;(gIH{$ClcK>1^zO(BbD=o7jyYj|f}HfidM}cbxW9jN&q>MniNOi<#`h<%w{*33 zEOVhaxt=*;ejq2ylU`Wwg*o}Oxi8|GV;e>$kle1_TuL}88=OFIlqcZBcaNS}O7o-q z@2Qy!#Yt&Met*LJAj6px`|;S=)_X~&-YKMnld8c9^adww*Lz_u6em|RC(Mt*iS>AF zv{gHh3P*f#Kk0vW@5cO{Y%wLA)HF`$J6Y%*{7$x!-%abiFdvGSYnT`22$Ec`SdYs# z#!;e?lN2vrN_cTEm+cFxSBMwr9hw*B1H6C_mpQ^Y^I|c!A!b zdD$w<6O$Kk0=IY8iO9=+SF2|Gc4cv7&FDDNo4KuXpuoH=UnTB~NrB#x5Bu%Zck?;{ zt)-f;E?=cqetGHq`PR*p=78x6Em#oKPf|f?T{S*B8dIPmnCdnE>E~O)WA_O;FTwkR zbSb9ibrGF=^gCpK;mhpa8Fae{%F1iCvfPiK>K$4K2>M|iAaASG(+s><)&Uw4(6n3! z$m90XJEd!;zuWUSeQWj-XZSsNv9^p@U!*$ZI63jR8-9}_-pON@IL_87$GJ7{p?pWKcngj7-24s#?uK{edTy4& zBAVF)vz%v$5}#|eD1~1-Eq-pk6FCi%kk24cR0>3Do*Jj z;SPxS4-xLJikV(lv!nkUv%Ywa-RoP|XR=?{3+pw=^`zr_Um^0$soquO_N$p+Gws~d z>`(Jipf}!Ev|X=(xlo);u9WRc<_G!2{ePTx?Z&rWL)`0*6DOxnc`4zfY;Xd-gX7RJ zul8Pxxlo);F(*d3A~~_|-!(WHSTV9@-R4b5N|){|>=zo_I5ctc&Z%-rIH_u!(6}P> z4vrH|vt9%9p?KNByf8;Fr{u+Y7+RlS9dW&eBZI8rKa&h^$+y!SpP5=ij%vU z6Xqw#iS_Wa&Pl{i`;w@C9+|48gcJAcjs7Na0=@P6r{#JL%!T5l%A7DiK~Ahc57s$R zQ{L>>Ye<5VXH?w3k?(t;?@V=b1}D&4=cJ*#)=ptA6essEC(I9IWW8hkd2o#DH6+2w z^DDWOa8fWhf!-ZCVJ;LW_cABUPmmMq&x6%Ge1vE3Cc()`l|o85DH@zWZ-bNO`Af`& z;^f=R3G)Mc%JRhe^I*kE^z|B&;ACl~m=aDrgA?d&aKdKS>K*1nadIDX!u$j|>4o(g zlHlaRikA{j$_6LU+u)?RJYg;rC*NgGm>+|a9$2p-2~IXw$|>QbYH$L*4NjWN6Xrs3 z@_pun`7t=L|2{aj^%@f3q;zeini5WG1}D(FBPYy-;^YD5g!wTzu^yO>Z@q>jIJvP> zO9?0L-NyI{>)nwP=0b6@lR0623{I>EWaC?}Aqh@CTyd{R$@q!E3G_BNX>Ok|7mAaI zm=os5;KX`BR((H?0Il65IQdj1ml9421}D(l;DoKC^>>&H#mSGD6Xplzl>OpfSg#=o zPX4h{NC_uJgA?ejbJB9X2IfL>@)PES`7t=L9*~XrQU}QpuH+=X^&05gov&1iDdEI3 zIDy{agfhD2dJW8l;^ZRvotDe|z(8D{SP#hR^Y9U-ots2?@{Nj@5>CnnC(s+5v|X=( zxlo*3%$zVkuqAV1Js_)d5^cSPBslqQrJNE@ss<;}yCWyeh2mrlbHe-tIq8M<8o1tx zZNDn2cYa){ri7E4!3p%n_b0HobhUOYbD=o7ggIe;AScU{URbXoiS|jYQcDRZ?l+9_ z6V@B$3Hb0`eZ2w$FKSpUGEnTgw>T|22p z@CS(&$!ziWlrf*vo!ltrr48^p2S)~7gy0?{*QdaFXLmQx%l8u`;>;h;Owydr*~4Z! zbJ~0ge?BMckLTE(lKElE$#z0-%;$`M|LreNd3{#y7cA%HSGDJu=1D+rjAyi+&&gaU zPImBf!~B33ZcpO0Yqv2^uWM05K(5~q@BZ5lPnG+Old2^rHG>oA9qgwf%e8SY=0b6D zH*;c?E0PoIZmQGZB>H?#Do^6;r&6BmU8(jNC+@Es>jlB8VO+P`826%nD)bJvBd3|q z$$ThYs>};>gfvKAth=c?FOlbS#$W#&R;l$FF9l0pavCrGJU!OCWBtQiC{FHSPMDt{ zC)V9los)>K{*$PGPOP|B_SZP6XUR#y-~@W>^-s(BoXmyd*=LTdp4ia+VuFQAuFp8BT5?h}IDy_eC$PB~BOO%hWHT3vlW#L8%nxK_y<`3P zP^|MgV*UA$nx}{G?A;{lory}Z z&p0Vqa#A)pf!+ou&EGdO7mAZ1=7jlyJ!N@f{rQmMB#!x<@s}spR=hsr#Ixk2YH$L* z4NlnXTD`+uC{C6zC(KWflirxm89ygCR?2+`^>jBv~=X1u-$yX}5KI5cn$w|@R1bQ2sG`CNf3&qKD=7jk%II$j(Ro|B( zKx;RNe(^Udg+AlN{heL=#4|X7-UcUZ9j(8^TqsV?WloqMm{azPdt*Ll{N>4aE5$zJ zq+rQO+290v>zuTl&&gaUPF64{%#Xo|^?+=|mpVv>aAkQC-+WFA`o|To&p7ccIjI_) zKyPqDxzTbyCv%}VS;d?%KO{##E>ElnWc7J^GDO>dlc;xUm2#hPQnloyW^e+%!AaZs zoXmyd)nwP=0b6D0dvCq z1Uc!A`JBW_eEV6DhEG*$ea1<_l9Qal3G~MIC$P74wRS9Xp*Z;~=7jlyoGedzV?L+P zNu2v{m-gJ@PRi#D`u4i(S#nY^IDy_MPr!%o>hn373&qJ_GbhXs@{2jKACHZ3K4<*( z&YT^&KI5cn$w|@R1bTy$w(~ie3&qLnnG@#6;KX`7HrlK_q(aW;^f`%b-xCpbY5yIC zKI6pI_SJ0UPUj;}g{;V{gGq(L%{e5)zNzMM8HH{Yda^m}+^*DFw--FG|i~LbuoL7nWEY#1x9~b8t^YS8pl-F?k<9N?PdGY;1 zKbMl17x|;SQ!g*xvrt}q=g!YBt%FB!VQQpkUYxs4cyzq1D`xtq7kw3}{J!!mW zp}g>i>iX`yyvQHrHC+CU_bikbeluM!nwJ;(qr6iuFW$3IUiepZ{aIdK{Cc^(mX{a#qr6j>8{$0+ z<%Rzz=jZeCB7cvru062XeWgT%P;{e7X5W2>!7CS1lgp#?|DB$H7m)bKqlE zttZF#N^h7v5#w^*YyE$n-%p8lho1bQegYg92`5|bPs8yO^>Dc}qSw9_=fAI=HOpW) zS*@P{*zax#PPQ_fM7!tppV8%|{S?PV!pXMdB%>>algjGP@_F7Rzx(VsS*89H-Ey%Z zIBAq{Lj7m7dtN{BS^NYzJ`!I3y5q%h6bLiCR91hM@v@|!fc30D^-tZb{kIsG>t1^$ zyzo3kwEN2S$8nKx@|BJg$4}J5a8gVqVU7??V_2A@eLvT|6bf!n~c4s*8VK2$Yj*EnocQ{TQ zKl3-c-Pr!O`(%2B3oMkwPc4s(Qr zegf8mlhX~s$wh{fXm=SWm--2CTqKxmcj=t1Sfa4dQw>-TR#6CWmdbchn~zf1SeY=PNLm`lZW~V za9kvu{Fvj!@e^a|IH|0VE#qW4KLP8($;F1?q>(0u)`)n<&pKpl%B*RIxJM2$lyzN@zV;vU>CqL;par{I+qbHAppMdr7CtDkWlhX_* z(e9upfe&5FegYg92`4}0IC1=BIH|6WU74SN^{hLM4Z+D-hLdP_;N+ox0vs0!C!cVf zIDRsmRMy9?&QHK=vb$gH_q1xY-iF|0R>BGGWTV~lcCs<*yk>p^93KfUKkayN97RrF ze=6%`lfG?fKLP8(%jt&T1U~AHqli0RD(h!g=O)< zdWB!y)>oXr@~NjPFFTjM?oD)9u%ds(cdB0*b-T+K`mI0o(hDE|vZv4M-}x`~-Kf+5 z&aSgK-}%Rdzr(+Hjn~yb^8@xBsz3LS?OLC|UZbc=kIweKOYfz>2YwGc+85sgpZ&Mi z&b;v7{{8%W;4h3jyYCzI58M6Wez%i9|FC$G-rz^!cSNop#viYOtZ>qiP^H%PMtoE1BPj47bPAlT%w1gAN z7t!u{`Qo#j^L2bAybO&#)g4DMPNng#vX}&xZ;7N!)yd>$3TaSFGcE5v}u!8-|lcMVwq@IEi+baZ>bkiBEA{ zB%B;MP8>gx=e^xYYk$Arj`(%2%jPfMw+@`#J+J?7vA=&aXe+h5* zl{j%+B%B;OP8>fmKFgldT{eHzV=e2>{qH#6x?wn(Rm90whLdP_hLc6RcgID-$vwx3 z<0r-^#<}YEyqC=%^;i#1K6>7`VK}M(zt#AYMuwAUcZL)1?$WyBxJWqpHphwMC&uUf zgXv!Husa?{!ZokU<}Y5ihIQxu51jXI7)}}$anj3h679}#vPe%H7YQfd?l^J$#P}rU zwIYkMZ2qXndg#fIo}b<@oSas~$!Ug@Xm^Ga@9q*kaa<&veBAdh96vEWrE!Ki@}xEC z4-Vtrqg%ZsECt` z3@6d<3@3~HiQ^*S{)IDTS$%Hv#R=~*^^)MGvC&Ku{aHw-7I6>)N!;UwC9B~Ba{2`4}0IC1>M_`Lg| zKOSFGXA*gNT{eG|wHEu6=RW_zS;9%Y>G8hKD&piU!%4I|>`&%fUE*UM7YQeyaGW@P zB43R2lP^z3-NU^}FK#^Ib=myIYu3P@y!J&8W;YBc_5VxSu1D&nMmr_i6!PBz*-ZzmhQ&1-hf*YT0? z@-vPX$5G@g^dQwne%bs{kG0_Cxwk&px?y;kRm96yhL>pfBjd&Kk?<1dn;b_mPRpLt zT{eHzV=Z`j?a2p?8-|y9>3m@H&7)i!8D65@kBk?`N8lyiS$7;o{BL&qd%a1-u76!N zfAPkK)}xi`-%xlj;iY)fpT$tGgcsUFM!SP=i8jCS#z)@3-$$tT*LgudADQDMo{wv# zLzv`nBZK<@M7Iq4#H{c}#jA?GC-yKmYVMd~N*AeGkoX zk#O<}!%57S0D}9AiRiVj#d(@*XU#Ggye(?3#hT!C)gcIsBqTTcI#%DSA>-b1``K05; zaTJr<@KW7>OhH$c@m@h!IL=3|bp83o*Dp2%FZKOG|Hbtu+I{8vB^EOBI{Ux{_yqsPUuOa#eX)hTNzHG-R1S?(sRF#i-eP(b(}bUqPL8mJPzOY zT?bCSpLJX$ocx^Q#PJh(3@4R8C$Yls`>q2gUvb{p5S;Wf zoJ6~?#EIh~;pFEXCyt+aoV+8V*S^Mi&TD5}$gmEaeD!&6LvV7M;UwCf;bhSc-f@v| z^1knPKXQhb7$&19l|Lu3!teX811B$^pKb_F&N7@tyEB~lu$SzI92W^E?{}Oye&%uV zIDFrC9XRQqpKS51ba;p7#^iQ^~3$z$++-*w>RBj>XX!O2C2lW2E_ zlSO*sxJWqpfaApRli{TL_awqOQomj4+;G%`c4pMyuT(F4|2xkwHUua2gG_(o?YB!pFHnv2u@BjoJ70J zIJxxPuj3-&T7$C<zxhJpJX_R zb_YEPeCS#}_v^SwIQd1#iQ^~3Np*eflIMn_9>K@1Rv-IE=UW?slSYPol9WRyjvV|UHIpnMbFVB6!gWiVV@DV);M4I@}PaEJNZC=G?}*cuU#$Z-=6zYKRb8r%r`E>tb`Yy=Zy24ah@|86z4o6 zUVlD2&uJfgj@yrXwey@6Gvh7q#97Wd{{A>S&sqN!Ul)JXu8&-yhd%gGoa6jloaf|w ze+_@%?PoZ@7vW!FUFQC6<>xuQ{V|X059x=;=R4i*pKA7>XY<&;$UN8BM~blD%IC5l zDbwftp?byd=v|cNvCi}Qc*poh!(v`U{Bfe=`tIh+=s3r}<8vlj`)BuB9~Am5Zg#}? zfIkYFPLBjRu7aM&IsG`lTleqxKH*(OKMyP~@<(|M$7#GL%8B)(9^cJ&I+T|e`J=p3 zFE8G+P(MF68sDSN%ZvO`-ptEuL_Pg`f{GD6iq)%ZT?Zlo#hS{5wi{d67TLJN5G7JqzW9 z9lw8XCoeDZM|m?ZuMzdk`!DRh{ktrAd67TLi|;!cESGrj=a3cALTXNpLe`x zp}epk_3u37EFO<%vK1jLAj8AJ%{UayiNLh>wH6m*>F8ys37&vi(l$!Ltp~3vHG7 zL!P&fcE^5a_Oq zPNLoO`&iNCrG0V7MZ(E%I!-dWVmPV1jaBx`u%y2i$H~g}v8+!nHUuZV5>B{}744qa zGk+F;FOH9dm)~-{IF15ghL_6QSY^DtbFe=cMY-3#K2clG`cv<2h8@Le2`^lKqTN@n zKaPuplPCXsJ5TNSiE%WXRNlTS<77$G;PtFOTN{FtvkWKE?(+I`slOM;MZ(E{<~VWu z%;Ti;@q#i=(kD<)qVQ{7*MpPBhTvqD;UwB!#z`?8B|gP*k#O?mjuXdEp0>>%qzChTx?B-2W)PBEDxC z?apwrc>d9Gk#Mr*IC1<0DvX{~K3=dwe=qC7$=QbBWGll-v^&Fz4|{3daa<&vY&%XI zKl3-Nwhn|$s#>*TqK%mEHLvV7D;UwCf;lxL$B=0yb5>EcmapL%i;WWAU zR%L~3!pU-n?oplf;N)~ea8iFh)1P>|%Q(5z-;3iS;pC4TCyt*CCzTblOK$2!H4;u% z=kLXeKHCtSY-Ko!b_Y(_8<+Zfaa<&v{CmfV1($0N$Dc3lrWnQaJ8 z8W~Qa-GP&b`g?I)B%J&Q$BE-7#?sfF$_m*sPL^AG)`OFa4Z%q-!%4LJN}M<@5>Eca zapL%y$I0X1@5OMkYWv6f-iGK;GMq%a!~P`3+pZ-()^U+=Qv1iIKXLp-KBFg(gTEKY z$&cpe=w93(v?fvAYhSlE1Se-1PNLmGPXZshmi@grE)q_jaGW@PqQf00)%CF}^Y^lz zb*Hf*IGJTQiFOB09_sJKaglKHd5#muPll7q`q<^Xc0?^|u(*FscK7ua+sXDe1Sc0I zoX}1-+C6V4TlDvWzZb_x!pom?yf}^`r_+_ndf7scvK(^Og_qL}!At#xLXSecM7tju zFOHAEOW>pKIEuLArLul@b^cz~LtoA|1TR||UZUNPjF-C6lN>LBlej)Uej?1@%jwGe zL_`ZWotn1 z^yuk3i*<*7fTDfj2dMs0YiC~gb3cCnOPN;c=kD=)4qAKH>}zFt@)bChnvSlSRaJWP zb6;5d``}dnB=-aKMb0n9^(`L%PwX1)slT;h{r@+9|KI)ZABoh@b{)dM$n1q$Z3};Y zTL1XYZ#%cQJ^6gCwu|`uzq8Uf>YT5)`zreWfo^+J{d82Vwru`r1^ore56nvCjf3-^ z)4h1l<9ax^fIux>O z{-_7O!~O*Q1+Gpn$~pFy*H3R4UZOv)d)+GGh3E33-Iwb{;Uze5;h;tzVK zC*JHuGA;jCH7&|7@`DAw^WsMA7T*319&eAM$lrdyBx$9}j`{VoCe39fRm#gB9r(d1<8I|HH?mqg}{ESx2jMuywT-~;LpX}9ScD<4-` zseG|=|I*+WXB)x?^h$gH<%?+dBg+?#kHAZyE9OnaA1A-0!pqA1l5&o1j$hK#5?)C6 zgU$!tkMWN6AjKbd|I**%bpHFQ()nmj}|K7{{!S@X+ zJCIwUoTqKpp*?y^s5KR#E>r%Wx9y{%m>z=^Y&xfs^Q;oUS}he8KAdmH*%Zza9PX zXYG1X!pS?(xS&hn-!#{M$9`1s520raI`V{f5ammj7x|;Sz;nDO_>Cwx_|LlUm*nL| z{wOcTBi<9`r24sjH1Jz4Pk8rzz8vpSZd@N9xoJIi8e2DvF2=ZA_ga7V{Ju=I`;p}) z-wzJF)E}}h{P^%&Zl|$gf4z+j!OK<&FXXqP-B`_)~_jCF^W(QOMKEM8n z+5I&BQ}e&Vn*7DZ>O3^1{!2Cv^?&<+nElD`&0imyaYZ*SUMkilegDhb7y6mT_g-%I z^V`4w-(+?_FN{08?;G_G+x_8wH?{_@tYwko$roOJ*Nay^pFcpo{HO4@VE6MrYghea z-oM{7f6dEz^!R%1ex9g({v}o6JO9c9yK%YQPyHKY!{(ifk7yd$P+a9^hLdP_@Cy$;SM9h+ zIQf9%B%>?EI6qm*KmW4%11E2)z3cN%9J=wYzxF;~hG!h?DwjCI?fWPkIvVF5{$Vd5NEOTqK|nCGMq%aGn}{$cZr@jE)q^gjuXdE zygA1C$yfS^RlKY$n?LHY9-Msiym!NJ(x`}&UWSuscZL)1?h;NM7YQd5$BE-7#^?Qm z>0a-!J03^EHLuI&FJ8BXb?5#MoS)t>oSas~$!Ug@Xm^H_MS9}6NH{rioH%}Bd=m3o zkwsZHf7D|=^yEj+&u$n_W)*RAmfM_$=$6f7$#|kM+=# ze{z0t!*J55h?9#9C(-UJapJg0IQcfmiQ^~6XIcOJ%jS=ItOqBv^ZM6?{^VxJ#itc< zQvXz@Kk;^FI9cRR92W^E-|jeZ{KWVqe_@eu&FixHi`T7V-T4>iTQ>|Rvx+#`%5W0x z&T!)0UE)t17YQf#9Vd>T7@suG6`dq6n?LHY9(wXy=ZzbNllqrd<4+nHPNLmqoLuVP z-*J&}@^>63j-MExN}D>78P{d=7eyI8S*d^j`~Uj9cf)YfsECtZhLdP_;Dr5rsegaR zMZ(G7b(}bUVtmSe*CXvZ*Jbk;?^?&Y^9SdrHw-7I6>)N!;UwA}IC-cYisK^TltuFDgj*Eno?{u6vej;Ct z^OG-6M%}}`NiS|Z;&s{l#cS5UpS<=(4=!#PP8t<)a*^RA+8y-7`dR**YPGU|f5%0_ z$#*$U96vEW%la!@HhnU%rpGySS`jDp*E9Wzw>xlR{E6cPe#??y zJjX@C$=`FFIDVq9mh-Y+t1X*9>aiAoo3DM@gRO*Pq~B_$4A1;cROAjN0GD8gH#*&W%EZp)`FMk-uj?%!|+lso%f2qd6a7-!%MXL zk@4dANO+0!O^&0e!?OPQm(3sbSPNcWd-6f=hT)}rJ}~;`QLeoVFVXHt#*5=4@DlH= zJB}j$H@p44UKPV7FJRgHQ4gGSwsT-BJ`a4F@KU_#&tmAbgcsV)M!SP=i8h!0wCcQ| zpO4IO63@rA(jm>rjO()bqo_CI9GLt*uk1Sz=Jz?uzbWShi~3$KbXLNN{Qdhm-#GUh z=bPiabCiDL{BeG-^HVdsMmrw;`nmSU`4{}$@8$kDw@T+JG>^T#F^}utcX_+bugp`A z-VNE4t33C+V*l;%q4bv5&o+eK&r0){^gh}hdas9``*mC-oP58}6UR>sx8bC+Teezp zo+e7HdNq1qU)i}|^TRpY5S(0OIEi)#U+~cV7RN=x$qzVAGP+_osrBd}8xB6B8qH}uQ?km?H$3?=)#~mk*pQwl7r26;8iuLEo zB~3)uvHtww>suRwlSYPfmLWYyCis-ekfs?A|hKm=j11B$^pKSM7uMbEYcIlMZ(EXI8Gct8BQvHC@C?o70(Sv zJ!n6)dYpXZ{9;3JQh!kBQ79KjyEB}4cbDji<09eYCmkn_pBNvfCzTbmC7e_`Hyrg? z3r_BT=Xw2aY>56O!%4LJN}M<@5>9@~apL%i@o}6~R?M#Q-0#Zi$^CzDzO^AZX=FHw zc3+7T$3?=)Cmbh^pA09J6|$>5_q%$WeEhtzAvoz}IEi*=I9cRR92W^EKkYbi{A4(( ztdLE1h*4nW>l*lz`#*l(+Yp?bW;lsq`RRt>r zJHOZvoYenmra$p^Ux^dP zMZ(F?J5C%w^EkO(SsxqcIitL)*R|N6-2a{P`qyuW{v^Xmv^(ri=EtSP$2u+&PF{1I zIDR6Z(UaSi^|67Is^^BI9_!&x{>}N;hTx=;;UwA}^u+r4l5@X~i-eQc9Vd>T7$3(; zb$#squ-A&hmb$KE-T9;Q#)jaem*FJZ9XNUDxnIXc!pQ^2iQ^}R)NxW-A6xD8XS}_* z@?4(uZ2wdK9i^$-EoxRrLul@mFIp}PhZ~h z;A}(iGRyE1?S5puI6eX|fseZ5DB{g#_juAh>@=H^^0~Rb@rHc|xc<&p-uju3(7#2e z`|_ZDr#tyTe>9o4_OD$ntVhp%sh^#@cIF$G;i7~Wp6877n{l2q8kB#}wf_7s{H5sc zuNw`fL;EmvJpRa6<$bbZX1wK{IQ3n}-yeg)`d9zxtzR2|^Zfss&=dzA5>h4%Wn!n%J~G%qjm zM|lnZ&RD!>p*%l-R`>5u=H*5HDDTwEi}x&)=jW8_{++_SyvQHr&AhxuT=V|(^DK4$ zo?TvE=ds*?Gh5Grqhq{0FEH5weM|lnZ4obXdp***bulx70^70~oly~ao#d{XY zb35w#&~THN7x|;SnU~jyYu4qtyvQHroqBoko`v#!AG&`3^70~olsEJ88gb40 zFYF-x&gJDr{wOc}p~ia_>gW4f^}l<0d67TLYq+1gc+Wz4zW-7Gj?2r7{88Simly9@ zD9`oe_0!ACi~LdE%*$)UHSa&yr`Eso^70~olox*5;ynxXbA4O=yDl#;@<(~$$1C2m zP@d~!>VNO@@*;nf=gV^~-m_4i%j@BPI?(mqTTcRSTQ!GeR0P{!pW~XPBOY;^rZ4ORtYD|`g?JltZX04 z`lS91n_)k3TEYqUv7+7cdgjmK@5S+v@bVeQi{mH|W_YQ*jaA0WQVYcswe_q&TN{Fx zvl3po{zSX4Tz?!F2`9hqIC1>Ugx$JU+7 z#|vt!^Y^kIoSbe5PU`=x*cait6YahdCytARlizZjIDY1FLJfJff8ocYTJCbL_2A@e zLvXT{;UwCf;bigrqvIms18;Hc4s(Qq$iGxgp*%&oH%|moK&{kNX+Zf z{$AFDllpr%M30i;B-)+fWRadYE)q^Y<2Z5rWH_m;m@VOCNq;Zv!O7N!;N&dBNwoV) zoH#BLPJZ2S;`qsMQdu#(I)5+g!AWC7a5Bqq679YcCytARlizThIDRsmR948Y&fm*= zaMIfloLpo$iFRi=S>#U~7YQf7={RxxWH_m;kWJ@LqQJ`6_2A@mLvT``+4#~9Q2G;Z zcZL%moszucxJWqpEys!DCx+AH;#-v!vI!^49lA$#)`OF?4Z+D)hLdP_87G(edvRPO zocy-q#PO5iq_RSG$xWT8M#9PJ{JmJwvkk#XBg09wJ8;6@xYXZ^<09eYcN`~2c6N0eFZx*mFRu^~9=WjKj;2TmU9@5OPEaPogTP8>fmmX4Fk3fVGFmRow( zgOmD88=^nSa1!ml5+{y}gp=QOoH%~waq>9$doi4>+Wv8CLvV7I;UwA}_9rpkb}jL- zj*Eno3&)A$C-NCRc^v$`I8Ijl9o)u-;AEEJB-$PHB=Di@mrvf4zQ^vkNI3bw94C&S z3@6p~u`BcUvYvIPw;?#W$Z!(v4xBvH-;3iS;pG2zoH%|moK)7wF6Xr)YEgs5{cEzj zU)^^Rt?bhc!AbppvGFCHpq*^Ad)`jA=!X1 zUd}cIFIyR2qTP>-7sp57CGb&q97WvmQdvK{I)5+gp)a!y!Am22bZ6CrbQEeOfj%uo0RC0H}wO2cA9duuP8>%{P9d$dkPHWPtu}+i0 zq_xk$_O#zr>R{L%wbarH^09?ay?XnDwQUsFpL7qJqwa2Z)IDr>n=G?P-ygJF`hfh!X-EnQZ*GGj%?cPaq zG#H=<#*@LQwTGIGriYV0s>n7pZ*iQ)lh$N9u8r^Xhr@1%O=%DC5IQ81I(_u}Bt=n2 zOBi(zT0{2n-F^qC=uSP3v=%F_q!T&HQ?4$x6wyT<9IY%JL6X^X?xhhh!b2bc$ez% z3G39SUPYS$iXke%0Y)8JeLaA|E=RrE%_!cBj^utv(0TQ3DDW=v*5ePM%WJ#WI^4s6 zaX8V?gP{<~ky2o9IGq6e(@|Fs4__u-AST*&P@TridvO*))*=`^8yLUAW zbz`S>r(49vyY@`iuRCpvx7wr#gV8~=16N+n4^LZ@+Rn}Z^&EHi4lo?3ro~6-6AWpQ zFdU3I#zle`G?x^GvbC5^HNbW}8MQ!LfZ;nI|c_5u3@H>a4l2XSpqj%$|E9Ag@F=OWGHlY1OA ze*l#}9Pf){l~Pf4B{jR#{jQDipw0W^{=F`*Nauz9O45MmpFi%8nZ)4X9$t#T0eq?n ze(X;?$48@kJ=*Dyho!rUPFnr_Qkr_Ke|S_bpx4FPfw!qNKF`R0|DZp?(olq3#|)1r z{oP$clac-%3{)4OLN$) z=$mU@tYEkFd%LC{e-D-?_B>{G^TdL9(9;IfNhIRFDyV0X&WPhuOOc0daU!X}dIqQ% z-833D%5MRElebV0Vw@V2CD%Qnut%VFn z-KMRQ=(52+$Wd*(e@6rlR}i($r)lrY{D-uB~HTJ@0O}+t~pHai2nfqKb6IOMg8m=dYCT5Q(H#)UsGUVYi?wu#C^bc@Y8D2m z;`Hp2fM8`COh=^gprKqgFe7W@E|)&^iWYafp~+VSZ)33`eSeQgv`xyl1LfU4kZSe# z7<9cW5(Ws}X_h80sPWNlRDqodR;1M#*F=N&F$guy4gNGW(yi%aFh0b}(r&eT-6rS3 zKKLNM@D|sJZPs_YKOB@u%{!yZ3>oSx0EFBL_>u1Muti!;28PA3l>Xr^*ds1=V{}oi z%by((`40FgU4cPRkwJHNx8LrIOo|`lw8vcAKWPp|9gH=`Y`;I5q8V@^O>zm&t&b$! zvIK(|d8=vQO>M93-m2~1CgTJ=O~BN3$b#*VRHGD<3tQ9`^kjk*7_b{2**2DvoB*a3 zYsXow#Yz>Zc?CM%A?PDY>!U%&m=TmsW!c6muIb~eC#aLiA^Vl&%SfQAq7KBk_d6PC ztcQEu$@tZGe2}njdQ@l?M>*=Z(4FHN#sKRJSM^tKKg&^MLbE;KL{@OzM^ARK^tZJZ zcSe|XBd;%!zP;1EhY{HwP6G6Ix+jKiV;anvW{vP^jt{`X_4aenAFR|lhMdRKm)04cNFA zZ^mPw&>Tc3yeOnu^aW$3{$RA2lH0A$1Y{7)yyyxSpjxbRvBZgm;bQvq2T8yChrRBo zKe1)r=MP3Ta1XF)XvSV|293E)f&l<`l3 zjwXf0xmKCPVQ~#l>CsYLk6IiojxAqopecBq=6?o#F8=wfrCgu z`2e$-d7fg&aFtZ0jCs>bIJ^p|9nI+&l8Xhw!jV-&ymj0iH^Ef&MX|R{)?z^%C(vHd z*8PD5hX~pXE-1)0reY6M3i4lCs3;49~b|BEP3gg-? z)~J}KR?qt*Q-jp0qIR0%t&*0dhZ@sd@%nSe7D}6$T!& zjm3XJ7DMd?CFmbek~XqRs@KvMoESJG)u6tV824j*?N%&gihZa*A# zKb^q=nF)-7p79hADq9$pXfNJB0s}@y5^`pze?)#n^|0w6;;OjG?_^#So%B$8ZvZ*O zo(2ualo*Z;37mWqI&a%;&5RSi%F5#VRCNCkB4=|GIc{xN{m56 z^*CV%>TEUV9RSLj)ZA4xiJpk>fm)GqDF?^weATAEdx9HeJ-WxydmhuP#_j3;5P8Wn zd6?;zz^)C{TUFJC%IJOFgYGH19m*0{1$m0CEb0qe16TvhSV&)3d-}&@ej&+$;f0WT zND_3^pFmaNNimEbcVKvouduO)93NSf7=1ODI6az+vfAZ>#zo!B$-XpV6~UqdKBv{` zG+PJM0f9H9=-b51XsWtY*Yyv;8o36++TfA6mxxtI%{^(VK;Zpg2r)Vm)xYh168r-U z8-#%Iou)$DlffQlL{o!-=>}5O>>un*cgZaq48Z?WDECU~2@HT#G_FG-8w9!#vLCpT z0EU+B+F-{}D7cb%2^^|~<{JCk$HFdD{eTEgF!KQ|%qZo6-V6){Nu1%B7#`qVtS6Of zV%;LqxiY{9aN679g4Sz|IwF|6`-8h!u&Dz*)|J!Tmkcj~+RB^}6(s1c|<#4-e9iuzQ5M1n!kZ!n9|&!VerU6Ekz)99r{fnQ0s zQa=kVm8}%baj%7WA2B0!{@%#|!XU^*Icl@k+Nt|CfTaXc-%?ydrbqXN=q#uh<|0l8 z=F-Y9j7;_(%PUlm=jtV{Nd*rI1Cu{AQOhp+C(h<1>s2`$G5&ro! zV<)U$qazpK4%t;bazN#rQUxs}xKN{;KFO%9P)TD`ANB7PNTRs`Afa+ zS^^LeOqmg;d()@+0eRfHI#5M2mlBu_nrgh1=Jb3LYBL^;n)8X%L!j?NhUcKTps3hZ zNF2@1{&duYND3WP5M?EaT5(~5{7eZI98(IC=z@*_G~zHk+JT-O%Qt2I587%a>Rddi zT1VR4)7wF1z-UY`$iWaK8k5qYl&>9uIfn{9i5ZGPnR1Wv{21fVmDJ%1cecS~X$nHG zKJ(O9K_QVXhJzh;66nXI2jxG-JxI}bc^BdYwMKyMT`WY+7L>g;?8@lMu9jX=dI{6L zxdzT>0z@tBrceqY6=-)m;EeWNw}rKhw^8F=X=NkOG)0&s80P?0A!WPGB@yDxpbZWQ zJ3xSciY1wU+m#D;$@fnDF6z}nz0gc<3l6~l5sD#2VeX)Ddu;pVi9*M)e}t_w&~d1+ z__Vbbbnl#tA!{uBk+I#!VX&bUhHp*Emfs7>_-f_;RmHLGg02^O@X=0#K*- z`nxDmmy_Bzzu4>ycG(9|eGYcfT{Y}zF|EeG9SG|b!@y!${#{@Nb8pneI0#~7RrdzK z<2zAE?VU$`@-XDQrAL5{lB5?DblN6E4+$FL@(8m`qAcznHyKvIp0c2xl1PbNPmt@@ z5#-+C2tjRUOA)Ni8HT*kcw9As`qe~9PiGv3bUcc6Lb|vnB{7gq<>8N&Ut@50)Q9>i zO$ryDf~WTNJEEw!iHM*eq`Xi#FgxWwlz`m^TXDucR3E%IH{U%7mH@L4WWgm*p-)1v zy`t&*fFMZ0r9f$eP0L_ckEGMnA|t9rChG0fS9>p~8XOHEB{kb!h|C5K@)7Urj$YK( zr186Wl{8!EOzRI|3sZ_47`CGN+cat());%(2Qgx5DB6q30wp8J1%SrZK>Z7iCoWJ? z?e2nV0;I+pj#ITs9bjN!tux$Ujo{J%%6*_dVVEe1bcW0KJY79d&SVKH(}JR3rr{9C zSdhzGm)(NYPq~33Y}K=ej101vs8GsWt`!SUH{!{;#PZYFPynp>GO#M>K8#r(@*HO5 zK5!mLOMwJ8+>S@7TZWoM$O?Lgu|T4g0)5yJ{YFu=6oeQkD-Rz4l!ux`gF#mrYwrWy zR)_^vTZ||BX3vSQw6d5Zwayf~91woAmB?LfZj4XI)bm8lP#7`w5(F(42M&6CCp|ZJ z2ZRA!C!~EspW*|m20&49=xegks&WJ)V4OL((aC{Iu03F##lX z6Yfk9au%Sr7MqZu>*Z5JyLodq2izMOiQMD& zfQ%Fto%S8l*t|{w8+dR2s?Xt=e`9!!9X>pT^*NsrEKLjDeLZSlocdUK?1X z$4bH;(?Aq;uXO;P!<9KOV37o&4VK%K_PEywYJAjho1K%Xqp?jgxO-?CQ;>5DZ0izS ziACnQk}fpmRD)7GZTkigrobXX+65=#AwUdU33J>G7=}^*m~02xZ0@S^`ES&Q<2Lz! z=+sBpZsUc!Z?%$W!5v`j37}tP$)pI(SoXVo5wG(vV~R;1n0J^vuK&T(9}E`IhnG3? zjNR$}As3S4doOd<74@EKWj8C_6j#3Kbv} zRFx?LFKZ?+rV;RG1wes74=ZFc0a+o)Az-CDzIG@b%r1lz&;W7oWRs2km0T2yj3h%h zTQk83K&5=-^IejmD^9s*ZM%@*He1{!q#~0R3cXvk9`*p925G}AfhvpquWUacp!88K z?N+;3CM5^U!ldWock9(#gxjQfh-r&8ZK~fRP8ci!b~%EmfJ#m6a->a%seYl?zH>NW zF1sSWGlU8hnm4VtL$7DVFs~uH9@i-N*Y0A%kI*k&Y!RZcZBf_>SPo&Iz#z6x5QKPqIOQ)`x{0*TQWA@VYSOp%v2h5SBdes6)S^%w zDuo;igns-=nA)|yLv*x}Vr+~IAoK705_SyP>I8p$-fGF);OM}Tpc1rgGqJ9Dmwimb zQv9%IcL!k7c3TJi{SyP`ky5sGLGSC@_v;P8h^cAI2PjYJ<}|C6?^zCM!5)>u_=)?hY7PfRE1T8pP&g(--eGa6sk zyG0VF<@|PpXc;Ipa8^m^i>-4-uroo^y-2HR`IbEkg=16-@|#!4C<@h;0I@11QxoVU zXzOFC8ZP0|M5Dd#07L+$uB{1rYX|!g<)>aQfovCC+~?8qb0i!Y~`} z3QBGPq^Mz7$uS*ZGXu#T(n$>~4_Ikr#P6M z-roV6A1H9SD~tfQy^~#vD;<0{!RQsaQi+|U?21@13Kpsjze9P{pVEeiHln6SYHwjU zVLb;?f}6vog~(G<$CToj!|cl80Zh;hvPl<;IQE9YbNVCW6Phx(7+Qn#zV_zso6N58VhS+eVu>puMbf+X>m@ce5uUwnPwDq7i z4)4Sg&tL8d^U4*ZMKJ4yk>fycK$mWp?>uK;!S;1)Y zNFxi>gk>?8V`}Qq0VtZ66Ep-ExJy=6jmCRPODT99VG&`C8FWnuo+<@PH%NxDW6?z) zSg;Ff$568*ZMg86+q;18wiIH1kzUVI zU|Grj@rV;Ljg{Nx7Ro2TiN}*(jZ%}*D6FCg-X+J0E3{c1^oqi$GFLt(D~RWJz$IGF z2<`T}P&FzsfC`Q5d>pJ0Go}0YEN)$*TfiQW?Pcv@g`hIjR2Q|O%(jNN1VM`=H6PQg zPqnl$3fgw0brxYMf|;m5bC*HzYG@_SoEqMlxiqH_QTB7%l!Sboi#9jhi_!6K0o z5{BQzEQ2`4YC?AoNiVhvjURF?GTMs;iv_egE!dX8Xc?P}9zj7KD(E>T8M+!`w3Q(xPAueHF1d=RY<{uocaEDXo-O zT5+;yPjfU9F(&029Ly7J2A~zZ5$~kCBhZ=eJ_!t_zsSu_+DdoF-yrS zlv60PmE*$}_huz!EGBE-Uh+5rbV+jH1ALf{IEdv&z4!*N?c5y`dLoGyd6rN3bavcQ zOiDA}-BRLR+%X`-VW~!Z=90|7aWFb@rG`Bygj=w$BdYAauVVL!a*6I+5c4o(2kBkF zCh@>rdl&0M7|!ZR$pD0tXak6sJ9|+E{TrzCf-X%yQ|7-5!({PEoO4 zfmNEU8uklpGV-pZd90A23Qb`RyPA^B0%GttSt|)S-n(u{}p|T>A33DZJUx5E!>^ zQ5`@|Fj;3P*$y%FFcw8c(48PxJei}A?aC`?OR0kG0hkLezAB#szdJ=XH|yj&&vk%ra8s<3?dU=AlrAyZEc#Ufmdqn z?{R~!cL1RUXD$*=@7x(RW0TU&_H0{0MRS*8+qOPXCe9!Md-GyGsFRFoOA<~B(q;mR zN*;f45^tA+z4CZ6fcEF0ufe%Iabn)l7BM{^&3e##uxfDi66X=^jj>S}hj_J%kYe#* zkzmBz=1gyV#L-a$Pi*qZToo(?-vL&fsw~@_h0dsS+K@3<(le;yR20;|qan89xIjUg zL6_OdEaO9seWXs4CwXf?Xd74T!P?#j^wm~<>DHS^I5XkL_jh>~SwzrYn`TYP&$*d4llDtVeI?HZi|4M+=poXr(N1+%2k&P`;6$~l0 zz%OcrKYex?+rYPPikNcN}{JeDf}JF8`2slYuw0)@ zl7dw$@0?YGSD+xqF!AUOrZ8iKG^m5_Y$=I0_jjC97IK#c1iDI`Diygc?r7)L4}W04 z8+)Zv!YP@^GqqvqdH9V8D_TgXP{&}R)6(Aey>#}uJf1QY1uFv!4h=FVahNog){i1B zZ|cGw0;tsdR2clBh?i~-xfjx!LXNiWzdKzVNhLxt9#ED-PNCM&!#D^=hD+%p;M@vy zn_mTuBZHb5D$u~I33ntpQU%B90x00h}!c~78stN9K;Lzl;1u!j1v2ekZ z#tn|!%Z68Hj;MBA^31RTfG;;52t-NxZs zO+%Mff>il%+FUfMU~-I|oKYBdwBUuQZCz%@>IiH4xQm6vulTyo3Gs~jzr&6!^{sU`M}|95>L@!A z`>fg4Vn=0g$W0pr&|DZkvbokdAj_0SXe&XRHKD0!7tATS8%nkU8TT!tGiy9(sh}6m z8Dt}?E-?iuRlckVJ*kZK+msK4J!9>;5)pD9j9m&0C@wF5;-y{QU$^+4FKdx86HrkQXGSn%21z1478$ji^_IstZk{` z`ErYbC>0T7MvQMww~>QV~I%@7Mc)&v-@m)0_E0-?Y9+>;=|G7JT94Cj8!A|izM z=14kPZpcNz#>wPTJ!-iy8H}=OK>}339@s>ftIZrkMFA4~#5AaesWa3(F5;UxG4@jc zE;#{kBWlTT@QZ?#3>xt<7$Yz?nvF1ggC_%{Y1%jFp1|CLd^qeAu*pJ}E2<-p71EIM zUeooQ@ZqGRyiCKuLnR>8D!;`GeyMndYd`7Oeru<@uc_*st?w;x;!=MV$||_Fz`O(M zvm1aa5=-ua%zllv1kzyLXSEySlnPB_W$w=iUW|Uu6Kt$dT67MBq&BqPRJZ8L&+!~?P{5V$_@Ei(w;M#N>olF2oR7edrdYkPdZyT{Yu_EeE=j8kl+ciOwLg&&$Yu0-nkEwrfHrSM`iviw4K?qz5Z-b!~9 zkcmhPvN7>k02skoo13WC7%i5Q0v=Q@YQ<^`gv^}+W)xc5bZC!GhCDV$URh6-6I=j^ zqnNZdDi}_9Frm#6Bw%@SVDrxkgjon z1{>GVs+-7yfStod@7$s-3w$!sJq=q3e%ZoUE<6On+rb=y?FVwfbwmn5qmGSNGiqXA zGJ>TYoRTzxLJ5;dfpE163j+#2m#Xu4s!)rYV~U{GM_ z!Ec1P8Tfy3C75)YhoA`NvhQu=k)UpBQ%ONRfCPd_NE<|R6Jn=ry=n*^J z=@BykL0{Q}g`5uE6io5K+q#yIL6~&3m4;roGNE(qz@~_h0#*;<{EG~z`U-0W%pOo{ z#aMN4@!Za*K>}zaCn!cmfiyA}gQZ5Hf#Pz@O;2YoNZ7L!5cw;$nAur538Ub!up=hD61l>1yVwVO=4mdTr5gp$7;i07icrx8mTNpv{svQL z;FK@y?5V?$x3bcktj~)3I+A2ks(Q1yBbRQh>@)1*Xnk~finHg-4?va%m(G08YPX(> z*R;njHMfSdq=yHiWan3=J5-L~hy(|NfdicAQh=k1)?;DX)m8m$hspG?ywf2!u8;^3 zU``Jj+0kPb)PijmHrhkglIS5UW@>=aJcKkVfVfne+L|+|6yr`~C^@+jmt(kR^OiIg z!vGQmN&(^mLMroh+Uz*{H)u}~p`c}FBVk+#-h@`?!65Ray+5qu_vjGqV8=e8$6Ryf zu_(k{#bNE^o-7y}oiS{}7?x)ZF)QrKqaC3U!Kw!gX-by#xB>1`lCi9mZh1@t(l6R4 z%}Z359q2V@4|&iOF-B?ZacU=Tc~&SXBgo|2MREk0{B)6wAmvbUBAorOmMDk`P$*hy zFHq4|D1tbzpn?#58vG!R>(;jE4dT^Xn97D0X`-QOhZM-;7v$rldIzH&Ltjb@L&;JS zIWTbobUCLWO(#v(L+5VuQGlW$gq1|pt- zXsXpey+U-6mGy>roeO=m#7+{DK^yx{qM7Qb(3++bU+6O|w4gQkRQ0?J9#VwXDwQUF?TJ$)J{SY;GC27Zq<4Px4l5fs<(<$3*@w`)d z%%mMJAMk_*9F>*}vTbb;vo|5z;lgaV@Z=;%U8%S#8CRtrscPo%m{u*YI<*yA+2~M6 z0U*pIJnYcW3F(0;|5>bu2pm>Npa5sV$2dg7uIa5oh+sqEzAMQaVbC?7Yy^BDFlDTD z>R>DaUaDOVR1;dhLjR(gq6&(6fp(TyvwAK?W_sp&iH}n$FsA%M^9uP+%Mw9;>9`!t zfqRoK6y;PXg7zQ_XP|AK;FL5GfFq8!Gj(*Ub_7WV0t9@YvwuyU4IzHiCzq(M->vm) z&_F+nDtjV=xnJW z;9Hi*w2t`$ZNTyH9>|Wo{oTf}@k|SCYfUv^Ln!Le;06dZnoLlV=cWcmXq)>#3YcD#0)?#)JTqnf9VkU$X>$*F zepe_&{ffn82d0n!d+{19ra%(Br6AR8I(aCVE+e?V;^pAn=n2Ph+ZF)6)z~dt22o|M zyCU^anc5K(qcQLUdS%;fa+TjWv0Xbu5kU=2L2ta2-L6gxHw2k*8F6O7itBOvbidlVO z+$@4&rr_K-PG?|ygu9^w$g$cfk-MF5+>tECBW=*~YO>tb6fl0mSj4TPs-9KFJ?01U8_^K4pLiczd`?>v~3qkc`4 zpZa7{8oSaM_gF@1mK$pr6a{yFXGlW;Hd#R(|#9o%fwz&Q5F-9Kpw&Z(Cq&)Vd%;f^dvn&4~*u? zj3J}i451aeWiE)fcWJDHP3c!`PufkhQYqY{ei!MU@k`&RU1?i?oi@vNFEnwQd!%5P zaL|F<Dp)>6lX`=Hst~$J4pF4b9R#=EA^ctxL{y$+wgP* z(+s;9vx(^)yJp-jppkD$*#$a}X$RUaSj*uHR=_wG1P&PTS(7>lJ4lpd4T}~ORY!|N z9wFevFNR}mchI7y9TSLrim2%bbU<#GnjeBX^)8k_aPA}6K*ACgU%-e&esjSX6o#-s zntfvFkQU1pFcV&&YHXd%C#es(Ut=c|ZS2fzGzgFfpyy{jrQQrxv$i85f zVyy8I7P>YxR!;h-VxRlc_bZY=Nn1?VJgl2zk{6)q!3-eSISQWnBFcN zmWb;GeY3^FjbX%~VFp5~H3wTp`7ydQZzJ*Na^X=`US;`u&iM}gn=Wv?hP4(S#vq$! z8y(H@h=w6h{~@5xj~gA(Ox-|0H)OtO-HiERvp|PTL{czBB$~P}5!W_KEoiI@`wr5` z9N&e;a@$OcqpbE|?iwDhnpm1($s1NzF#|A?-VtO|#NvUqBp&VMDTG6{o`yrV9#R0x zK>|PqSxlhX!e?F|9~C(?qe1@?lV|~03&;mxf7wfrYvvQ#Lr5ejje*k%Rtbh?iHPw5 zU1ckiuO*XzeSd-js4r4jfDdAd@qjLZ`G_^E5adjGgjM9#x4#Xl)Cu6M^NU=J?4HFZ z*c9R}nP~>0%kkIo%|*=i=b2ZNWN+A^B;1yhZ!n@3B4K52k)IRohv}9SF!sExPO((N z6+JgC&6J`zzy;RTZ@||mpopCOLmJ=iX%)C|H@K<$8tf&?j9YEuKL5wVf_&Yc1j!KsbPbEjEqlf@c6{i+xz~4_JRN z*SKF!u7}D~+=9BxL*+90fJx8Xu*bHmyl69E2cn@C2h%RQK~~-l4TEG+oP=}_d{HNb z;$aX>J9LpEn`NM?CgiDBf|S6btJW=q{Z|0k;6fW1$sxVb6$> zDo8)h_N@-uVClGaEJ8&#qLQwL{6%oEBL0_docT2xv_}R?cWQ7F*a3}|=YJ^Zpc&=n z(rucQ`rE8C$b1FcuK9+x)1wnU9z@^4!x6&b-q^C6P&=1)|;b#KXQn-HifyQ~(r*c$~7yY9jN#r%yKP9{FMda2VSH*%VQS)*5ZE{q?drV-}>VdX<;%QF}QM!sm8gN1|u z)dEaEZx%3J6DT~}3jH$%7T)a;H_33S_y~(G)481Ux`PGQ?6IisrspYRSqBDzQW9Ya z+~|UBXp>|lvj{AdYfPbg$5>qGAYd1hgjCj%iz7@ipvxnj2Q$>#-|2P+dXVKRK*DB+ zlb9ciV|W2aEU8oIzegtsscMVUWF64w6dBwjZyvX-D&w|q7#pP7*I-SllPrSv@gCpf z9GDfimQ!=%>4QKkfZ7;j68fT27+Ox)b#U(wx>tM~iO1;FJ0t-IQ}Uxgwa6}+L2dSU z4d^qa9G6UwYGJFCWk?Ms+qo2hTx|MBXX=xRDY$>z!Z6VXyuS^TKkS_H{F1Dp2jgaP zds$Jz+3A}vR4L1!m$RATr%-ukSyhJl&Hz*)6JR?AYZ0*)`@9j2+frE1d*Uu96*?LD zNs=2$IhJh7ktF&YqlBRj!Gs+TiF7d`Y=Y$G8xtBPV^|u&7GmpD++!ldq=d$>f$IT` zvfBqx5<^H;_OR2NOY6ah3y9Xv2~=~WY4ZIcUMP|ZeYn8^+X0wB>O9f6(xRXNI}{<=rN${VF)ZAY(u~kLD7YtfnJrek26fYj`$TbgPX^>RmFL_ z9XMd3I*aph4~?<2x-1?mw>GSeB!xUN?Sxe5D0{79cpH@EO*I)Jqk z-(f1`JA6PhI6NdWhHU#HSU92jE@O?~i}64@7prm#Y@^I0#0T`9;uO{6DfaI0`alA~ zE+#MfGI*lr5K|{nXcFn$jN zcBH-0_Z7?O&W?)ZTM+~mW{5-ZqPCC>4KD#%ZJGs}O#2=%&988jNONAsacOHE9^m2O z?kkv0w8n|}`&`+Lo;I&dFY9~~iDD#ZrycrqfAT$tyR1q%{=61;oLGC2zG-w<`g*jB z8dKuEJsiIR0&Lyn5%v^<|F!QPlHh?80czWL&Y6aC;``05ArK-x?EHgsss1F*()R{~ zj;U=paPLPKQ1eE;haJ7Nqv<9*Y2_qXAR6D%k5QU?fOBn^yLHaV$ln%Hw2|iiz`>np zFU#23T@WvM0cjnR`jJ)C)zh0o1jsaR@G?ZDtW<@tTZO$?1;IqZi3)FQ2RCqJ8-vDv zGPhLt==C1@K|;1{m4QWlpqioq!a8^FVZ6%}!e}yqypU`gaNFo;TNqVYd`gXsn<>g( zy#>zE-4Ag->YOyJ8RW|ydrD?TwY}pB2V*#Rm#l_>NgU*3p~!_|3UY4e17FvCFCwDt zEDw9ioqo&SIKpRWxp6t{L0D`}&%1aIig*D%XEm|X?hk-Ie!`OGg|=mt*OeZ(B3I+$-TBMhbLh1@PJrR{*FQwnr#UOq#X)0NZ^ zpy<*;de5Y}jzrrG@k5%nU$wQ3F}io6^_=@2tO~6{q%FVfCKfkJ>!n;|HB8}ZZqhOA z{Kgtd`7Qq3=FiiVcbd=0Xqr#6sf8lCP9q=@zOu*gq7XR zJ>eOWJ903;#~AE#iwPQ>_|Po5Asre44Fv*f9n4w|uQskNKnnwf3~sd!IDBpEg<^~lb)@)wXwvoEN(bj5T4AXVqij8(b1Ov%RiQSYN*tAllD$tD5{$La z>C97j*Duoe2{rf}1VPjzMO17Gyx4;VLoe5&>JgpD3p-0*iB%0PPSB6&suZ+^j2=3a zpI$1~W*0BEAt>N%JBa)?ijNV*);%o&4qgt$`LGTC6BLNrIef(v-y(9=b}0pv2ycSk zh5CaQWn$@&?Taba6w_nmy;#0yXTHiQYDIvf(80Y!rU9knFPI0WeuR_*KLz+9!-{F& zy;Hk87|Ep{Q9)2psbEaDbd^}A>}#94PX(6qp1`>6_p4+!hlR#@AIuTV0v2|cKfAIa z1FK-n9KV($sT5QMoCH-5GSI**py3FXpaEzROl3u1INv%4Hhtl$BqUy$m{_yG2V)D_ zh%sDdId$e~33WX8IZwz_fvLu8%lAV3xe0Q&+#IeVR_a^D@aUm zP6vyxOn6`w$d7V@nZY>5PAxP^d9pR4=VuJ27!1uAIJUEwbR0(zoyt@OBohqHIM?CKHNRCFW zDi%E4(YaIXyVKVuV+yH2h4|WX4D3H2MQfZL4RO1AQvPH_fKfq{0{rUFi>h#@pa~HM zJ641N3g2p%M$({9Lu-PHI#d!8NRoR^w1v3CllCgC7P8B$J=MYpm3mY46 z-i6f5@x>nR1br_hnOt#UpgkoZ%*&9+OQA_hG#Qn_CI>f0o@E8qbQ^3rQm1_?bbc^R zX8`AGbTxJ6ww~|`vV^yzd^XKaG3yKR@}z*B29qhEcqFT`jRz(@qnF#;!iGgsGBmqR zMRY?^^as7RI#qRkN-=Cec@#YhGYPd6fTGbtuu$6nfMDl)i#0d1bIw(DFk54A=u>z% zpfHD^ZkVAQEY~3td6L!FUne^>+|lSsO<>v>^ts!FfmNpN$qc++y@jcYPgBteya37em>cno&;I@#CudzT_Hx8 z{tYz2lmwo^_;>--f&i!oXfDn(^~TKGDNFJ7V3V;HYKctRJ3H+TYjWnmNYXkuVqBjg zfWa=xY=%Sd(mD@p7;}QYD0mVm+hd^x|3WrM(YeT*}F@!dk*oJ+vh+sHw1ZyV!^>f>`VgB^Ip2Z08G z+ACQ$`6{cGQBo&2NSm;{kPe}oV(vzZ6lm14XYdU^xg;%~xwr7ly}4)Dtoe6YO1T`S z%)iT0@@MAX#b@GO-o}FMz=nk}7e!LyH;N=E#`33ByUUX=DL{3Ir@4%=>(jdUPYJVme@F ze)uBfLM)jGy-$YF?Hx~P?^wcayZs9FgSa-ZTH?qe+yQ)j_vA%R$#+9MJV88ka-F*` zKvB-my1gu=1a7@(y2rck0n;^t8v4jHK^sHGcUyDaoc1t^4~$@Q70VdI{JQyoVied} zY_sXkd<=VVrF*_Lh{J<=)U9^*U`MG1j@_}7XbB}1GFr?Z`x(2taGD6m)|l9^k{f|H zL*MEJ3?qAlv64tRK+Wa>yg|vk1x%wNuIHk1vZ9wh2pk(}2e>yVr{SXvqAhq}@S$Xp zsk4^y0b6}gL)>$f2R_1U?hmolV~hEi2Jj%&I)3*~^A#{gZSeUeEe#Mn#qNdjL##Gc zBl{=Ao+;$X|3cG&w~2!E4|LJ~2xzRk&jdlo2f;NA`1W-dn4r^l?D(lWjn-T5VTrJZqhLEY{&p@jFqBfEyCWL-Vg6A$uM`f#Qxq=T zHUvloE^EiIUZ|b$$Fs=A1dJ`FP?P#d?tz1#5(SGr_wV>x+X&{4hxMUCddNcN-Bsb( zh_i>mijgRi2C+t8rH@Op7#@-5aEepXX;*imJM6dJQUPNPMYMiljeyAx4#Q$oj*6Mf z?c(d6e2%LxzB!u0_;jvJ*zDbmLDuxM!;Go&tkSdUN7~}|ck$&9v#iJV`g}szKcsYb z<5WB-IY8`gdL|_;eY9| zwiv!#&hK=JkYT{7$Ff5&8UT~AwZl_8uuW6jAa!%>s4l%BLuu?M7%}&x$s_xXe#TK0 zrnK-qF&&fTciUZ*rTr8lc67A}iq!+NFaJ|u=%mT_S0WkkVg#ERnAJsuWPxLvc1-=N z>EQapWSN}+_88M8WNFL@m4S_xF+YAKEin{Guxp2rAvkxZ3|Nk_oA0~h*b68Ge(b4Y zPq)91dg{|U9#w5nx=jhNvi!_VFp_AJq9O=x_=8DH?;2FV%07+XFl7LH#0<$7mai?c5;{!^M%XVY>|o}jMv7%D4uMCVZQB#t zf)mF;4Vb|Ls7&uvQ%ry6xxs3Xt+aKLaMFQxRiCM59)*~Y1tN;Ze5EsFP;t67tMF-Bo$ zV=m)_V&7|Sif1toA0_d~Dns6lS_V{B^u~ks^)yv9?phLcC{eB}`rI_m<~sWyrVQ{W zP4nLr<6DXdRe1$1#;sCp?p~~MoS!^O#9~s|=q1i(G8J=^A*NwA*y5>>D0ra4x`hw0 z6ta?TEa7{cM@H4Q;i?G~l5QbR93ebZ+#aG4%TNonL@8ZUxgsuDbrW2Rh^ z?tPJZ4$m0Vh4ToMVL;%m^Ym+j8H*;C-~o@7VM1co8G%(NIJEWcMUZ~$A~v28^$-Ha zDvGqr)EG04tOy+-C{cD;dN_qZ7BIK`czZ$h&B(@ZQ>1EKgge=G7I>q*6WClsC!dn> zXDJF^$zpi2D8*!1yHUJ_C6yi`s|x)VwsW!BfQ1yw+qq8CFfhe?vfP1&wk(5Ws<|S- z-AfL9TRiJ8);k(aW;jEoO7xC%zHnUkxTDP578&Ipu|%_ z%B?Pj(yXHZ+u$u!}6*Q z7aU>;qerAMj-5H*zO+lRlA699xW*L4c*9bjAu9engq=kiH*r1Etq)H@TuhB9km1=0 z#6T?i1`dXlR5HuAJEa8eLKbY0L;`c#ZT8_H<8<>4N2FLhp>lzrg64P(COFaSaw0UZ z;iPTu;aE1vm+J^>3!iVr$^{_{A-;o($GtvE-Q6Vz#eHQSxkC~ic7gl=QgPggsilqB z`5W+IL(Y#pS8>=68RXCg8;&@=H)H`OLpQO%E~gHq7l{oK9YbQNxFUVhf>F9e0&w97 zds8B5jKM31u^9%IwzSfZ$D{OOh9%`EH#* zfZGqH1o8%@s00QztdtlPT}aXh>pPw#G^N`H8SBVWvLhwR+nba@q8O@67Es~ncbyrK zdr8V=c7#Cvp?ccg;-sv_4|y;PeIo9{lCbHlk58~i;88RT$_ZzSmdeoWJFv&`TO~1H zx15rAF~UpPww5eSId1g5oC00A-22TvW^ABs9eGzddGweZ)7kQAb1wWYDh=+E<>}ux z4N4J{^vVf5P$i|BB^E8mH-K^IGPxkp-aMuk1qXcgopuJWrvR}BMWj#)tqBH<_C6-x zCW@)AxIY8M(k=|KX$ND9OSeLy1SV<^ZnJO@XTmY%T7HfI`Uvw=yiH3dx}d{0F}1YC z-4T47r8J%m#|*MK_ldCkp>t!!AxqqZ9T)W)Z|7S`=)fg_!vJMrqf!W8_90;nz4Cmk z-r;AfsAd7YV7z7hlj2;lVHi~q`pcAfCCd`)R@v2{rL;-q$!wAXWON%ada=f)~=Yt0VAJ~^$8pq`+FUM!bff@O_F-beushXOdu52X?0A;?=}V@)7XF-F0P?zFHW z#Gt6!9vBrK6^OW2Lx(}6;Xzo-!k51d0|_?t2-6)Le1+3{@9z;@IfGhk(*S`>7i>i! zNrN{Bj%@MA9_lu{h~PV$(AsUoE73OG5?MAVGjR4TR#uo&r`%wdRTr5l|c6+Hlwkuf_jmFac_}!Szad$ z3l@N5usnXEiVZZ8O97B4lN;3Gv=|It1YP|!{+_}7nbOvB3X@WBs_NHrgbcV60it7g zUphR&0ef1sDbdHu2OM{y4AJLDvHOJ5)Q2`v=?+nBDo?_2M-!q1zG-w~{y@Pt>5J1Q zv|_Ky12DnQB|*zf2SIcLAV&hpbi1=_JwEB-2T0TfocZN*2KFbT~o=nSg=vA9)p5|njSu+ zju8rOKZ`Fl(z?@+$SLT9sW8YJRA%tqHJFe#<14S&)zM*Od<1>Wub_*zLNiJp&p^Zr zm_HVsouYn{!{p3CYVdnozo<_4!y=Tn97Soi%LR0> zE`uGcM^>Z;k3`LwEVfQDZzVtDkf4J9KWFa&XJv8y|Ic%`++9FL1;maeidaIifGw1zDGMu0vt?yrft9lB!cy$L z#D+C$OoBD2(b&7j8a0W%#AuAY8@ommlloeVC@5UVC#tXfhuMe2ioXL(2543BMhoV%%H7|`S zTe^Bt{~@O|Ax&h{{adLmZOdl1q21Wr>Lb*gTBfuxXOuByb4Io(#@RLW)-XHW$8DV0 zGD_dJtGA1~#^c>gD`Z-(A2Xp6CNo@sX%{<7CZW5QcP5XhWzg|4t=`n({hetdWAu;v zDuu?Ct?Pc&)0510;hZr71qpaFBV!nFXcOvT4Q|#6Ls#%NC%S>%HB?0M zb$9eWk9W=SZH5F3-j2AvffuHaOUDP-%ecLPT^yKbHjH#(vt+5NICMw~l^MT$80%TL zp_n*`*Iwi)D&G4Wu(d?HUBQyxDXZJ0FsuAl#nBu&`qY<=n)GPfIDq%DUH91ygR)$DRm+08(J7bU{g_|}*j8jq*wC1xf z2DnbSi`o>44HGd~oPx*$EmF*|1Q8t0P1z#TKDM)QlBDURiE*-QJv&#GUWq(+9)p2z ztifjJK%MihQ`F+!I1Q$KCTfJNh>crYGLOEwNLxZ;nZu26;>%_`J9_! z|13=|C1{Entj#lv&-!?Da*?8s264gda-m^x20q3QQXlrWX9;B`tBC{=#z8#+2(Fca)76h+EgxDTN+TWtYEWf+^NCFEk6z`9?GRsF$uj` zxRaFEv;#X*FV-d_XCXKOJ71Dq9gDCVl`;b|p@NeQ1GZaciP_Z(e!+sSaYst*o8#F& zj13;BOLB*<{nEEIElZZ0@-QYVGWBc*GwuPPZN@D|C&tZmpJ%whC2g1soR4kbme*M} zN68cm8&?i-RbNW<{?EukpYmxl?TtL=>WqulKyrp>wM7^a+t-UlOG&ULkd@g1>KLwK z8MB0>t}#x?EXw&D2$MYOObgm!qluFatC$wCXpxzLaS1Ca%g;O$q*xJ`@kLgBa17Cc z3Gq4W3bV|dAikUX(X&n+PXaq}+Q+CcSVfJ&7y(^f06Nbz)6v}P43o{1N$J5~^o+l(YlB9nG7Oi^js z5j$z8u?FT9_)y)bO$$H7N7iUj9#!Erur=SVOH^Q*-KgmgIg493kc;wTk=Z^=Tx7S8 z7rWhg7hbiCYGD_bXU4dB>l%E}X$`K4?;d^jl{cpiwNfSZ zSzyBTnWoQ%ciGfg^kiLPPdu?Qm?e^KPS(?Qn%wW4IeMlZq}L)lyW+F;xV!d_%ww<+&M& zas249+uq(a6KfI15c=QfPf53@o0 zqM1w?T(86RB=G|-GWt0?OvdM{-=%k^F5-L?f;p{V!%{9$;@Wn82iq@~sbl7YJG!5e z&r9)CQ0~06@61{KTG5J1T_6?}*NlU;t?&FN!ky((+K`locIgIgNM{l^3I>htuIxCI zbDPVV;ubOZlE^+UG^?d?W?Y`qoP8VB`BTdqH(zUP)9G^?fLxWp z`nKfkix7@RIhnID@fIrkG@^;}#V+$*qGlBBH1p3N6y^^O^M??bHVNS#p%l!6QLIDv z37S83Qi1j=LNsKQAt`0YXyAi0?uT!}=)eQ1G0xKgRsC(Orxt6u7^=&l2Ftz@I{!tI1@8)Q@I2d+}p?iR9qO&E5*(RQ$l4IS;(&G{$*^VEu*{u8cXdi*tj+3 zIZ25fa+H$0%311`R<-r+l$b6_)$LMRNv)(rXT~x=X=GkmsVA${m|rue8Y;A@sH>vQ z3g$rO<93s6dyO(k!|5e1-A(&QfXacA>ItChs6pO1T8d*@r`OzM(ON@HEZSJ~8ikodvq<@nm zTdCXKWK=J^R7gJ&h@!t)%YLlmKV2~b{+xU)jG}zL^ z%xsVqEHGNOJz`+hq$F4`MD0TN7{9(8p;b)58B3ai<%#`F*cCgHR%|czqs1!sp2GSRA}Y{I{i?0Z zZJJ&17zwE_-{+CD7C3q$dt+b3&C7TVEWzgTefYLu7H!5AOpP1^VMWQ+hw`ZUa+8FX zEpGJdpwb|7rN3>SS<7Yy|LSV=!vJm`voepK>@JZKV;AQZ(*PLsH?=!VXiack9*Ou2}D zxfE+vj1{Tj(A3}}zIn}Zb#qY`olue~Ct0Q0j%Fd8UDe>ujiOpEZ38T`(SV{pK}Pby zs)NV4@@O6E7phA^0|v+ru7(;-DZ@i zphikogolFcM5%vM2=Nsq|=sl}r16ayBL3LUhqO)8+%WNUc2c z$-0Xpk2d$1tAAo6bIwwgKT-88%B@+`)?yX}SbSSC^~vYUEH1l*!4hCq-GO3)hXT!F z>5|4agS@#$sZ6nI3Iuj_`L2;^oXXwr_HW^Md1hlRVC66;S&C}fXcC682kgwef=O=V zO+bdCvTNgZp+zQ%fhN^b0vh1OwCwCAt&GDWV$KwOfoug&$xIin7-aK|8q*>xge4Uj zyKE#^@+q5n{9WHMb zE210VDG4_Cj#2`mmb7+wm0E0lJBF-LK>Dui{_43^Vc!XajhazA-bDYk81 zN|!W{q=Es`b+tZ@@-d*#;(kEHO&1TD0(&lu0sQ+i8LzHe68l;TF?5!`66(2e>|Ap1z#*qBu?+S_xgO;c(zaSO&`RF&;4 z34{dSv_F)aDG0(+MNyzd(R>Lls?C?sH1(ruSQ^--JWIV0q3>yw`irafQlcyAmC{nl zdnpwGi77N&>UIIU+|3~MBD1igrKgECWXPB-JDe|y>sZKST&Ah|$|ijqqf$cKBew`` zdM{Xgt}WQTr7&b?1GVaV7oA@&^dv3LO+qO?*lzMDOxbaS@OGx;O9(}MqXS*Mt_m%c zj#R;Xh_!_{78h|&PEq6yUt~jiQDoChRAi09Ec%>JXS~UI+}6cTfxQf~&YXiN zO{thID}D!G89npvoQ!R`C^R!yaj(m)9o(|L^neYwN=PV{|s>3O_&PWo?!+}O&T521A=rS<1}Yh(~9MT6ZE7S|P--R^2qW{o1b zQjtX`?-5LPrl?J))U?kj0-1~5OqVb97?sXbIl`Ql*fY|VeG$Qy;R=T!EFShQwUv5c zH%K2e&%8u?sV7C1`LK934rY|uO^xk^7|d20o;5dzf0jhS2iZyqrQYOeCM)GE;*^ki z^K(wNfx&@SzU(fq#Y7(_L{)uiQ>D>zmfF&MXFYjIdvjQ#6-`*eam28MiGZWBI*2Su zBEPhlu!I*B&=NXCsw|i&JmNGyLW_$|;VqHA5e;V!Ujg!&83UtJU~{~c^%G&)Cv9IW zqY12ZNtCY6HW?i9%!T_8MysW;29Ane-0)-rYqSna7dsq-faP)BAC|!F^h<4rYvA$Q z6+98!pddq5XnByJ!?c65?Qau(z_%Ceh_|%HAnb4!(<9Xu;67TJfK;y%Z=L}&n~IU^ ziJ0>2K;2ZOokV*rI@e6`b*g{a%mv(E+`*_3i#FhE#i&+%ux>$)<|T}Lt`P(0Z8yrA z(iM^j^|#oYZL>4eS~3N7s|?DImL7wGI2G**6tQwcH$G~ybhs?Citj7J&-&E1qo(LzwyV0EmK$uxYtcUaRRdZ(FEmUyN55fjHx z8Nc7?h7n_?jGo*uZuI2Q7MaqpM(^72yh3syqVHyKH|*Rq5>cO4 z?S8yaLOfz(Kg_7KW_CRpNj*1FkHeg@QmUp*28;T$%Gl6^4v6wVPbiKVyH5C7mox{{ z@bXJ$kd4mb)E~~8U3I&wZBnS;#JwRjDz(Ofr%{|uXmB!+Hw=kdCfZapX^*w49mQlQ zTha=%FK|hcomtQrK|RVf#s<^$-R`@vnJ0A&E-i}TTUYSWJZ=DwRvU9OTl1iy1t;G% zauTViR%pl6?+JiWZsbxyRDm#aT$S0l;oCHJ&Hy&srJJ)`n*%TokE;`eOV`sX&^m^R*rgw#_GcDGt~nf6 zP(wrYZZ==U;z56wNXtgD=v8?r)y>mwb#QDR0YkB+ts%mX&B?@NcsdlKm!R6Vp(#Bc z2=hkMpQoKozgZqaQ#&tqHrs02E)%!MoTmfJn6krMdXa;MXt?x4aHh0Zu%c+uj5dx| zHBk(!*I6*4h-1<_J7MqV7xbAxwO1ON-O}YcVN%4W0Wb!0VGxZ_(JbZI25k=hS;jae zS<6swi7pt6U8n<7Z-_g&5{|)p#?3LxVmp5(RthW%Eg7Cs6Wi4VP0mu;?h6qv8Pcwrjpa5XXNP1p97;>Wp1d+=1o$`GJKxaU;tQF2gu3=F4R*}RrG?Q;9f%TB7s-lCi|FtW4w)&ytO)|C%2!MgjN*VQ;P z%JEo(>H>3Kf^=RqqiAC0eOmjChXOU3+2CmoG2y9hIm|ixadNgMBH9tL$kVx>(35rAZyAnkM^-T){<=Xf2@W*90pXu5G%+ zkeSmi!5IZO&(=96MdyBaeQAW#5AX(3tYN^gNAn`zD4)69o^cn`9}TQq^oenH_3dds zM6k0>3ueRQawgH9e5p|zf+kjoMx}@a638?$?KqY62W zo%)om;HGfMG;E51moJJ6EqsqU2G8sop{O`{l~MemzS`j*p%0`4b!SeCdbU`A1x_Zk)uhs%LX7=G3D5b%e-wXO0v%U-Nqf3ffDO^=Xo?K62u9U$Ms8x|*jD1v_I`^)`mC+K=fg~9 zg8NIq&gL%8Qb-KtJ0?zz*Tz|=RR~|ox?3?X5|ybVL*jBETVL{axwXTc<1Tw)`&O65 zN!FYy=6Q_HG^rxEAlCRDrxfy5LN1D~*t0HlaM@D24O>Wu`%hOyL3Y6yYs7C>Lw%X+ zAk)QctOeQ{yH9a}TgXizUM=$cj+7Fw1#)S$u_x$?Qf~HJT2R0?R?pg!Z^+Tu{66&5 z$^@jL7gmE!M_uMG)=xRIca$EZ@G0BkiC6EKSwnQT$}?5ROoL7WL~a%HfZ`@Hm#CrF zg-hfQ%(tCGOOr2lkQ`GJ2;zGbd&DmlRlGJ2eZ$eR@6)v1wdY1rBiEPl1qE6fVX8{s z%83!QHDWR;)%Gzu5-knmTj1aQdV`W0Nc~6Yb)2x#|8;>F%L^ECKf>(e8&mD`Cv$9@nkzpmX=cm!kxHf(LTfx6-l$}Mg2Hfdebzwddr_xdq(5rOefl*1zMr) zX5*?i?|9v#Mzl7&{7i#Cvd?*ZG&|+Sti#4jZnICNL#@0c_@gnt=lPoJz5;1LM zlwELT5M}?vjZDf~`8pf1*f~daSA8oPE(69w?bj9$vUqahH`u1lt~F!~vI8@8bRDID%7>vKl@sg6D{egIYu(IvO{nO5t`-MQZ0i^i_2LZ` z2@C6s;9&Zp;0>(mZLm@|(BYA& zPKpp~F=H0@FX*@@CCAi?5-wMUXz}A0%4p(`>!3_TO9Je2@vW@%(wV}AWcsjB`l&S? z1ZAnIBYHNZOU0XYXA2jJ#A>#qI#MEtos|KXI{>}oqVm)jjTGHhTUtl4vYji*qqNvH zgzDB6JN)JK%N9Or^De3Cg04FL9&)@4hffc%0`eGb%(AhgBTeTm2bd>~j=I%A->>m| zOMGOdn#H#}gKv)h{;i1a1tq2Io)|k^$L$(+vPWfO@vjp(ik`Qm(bkIr_(JP8dLc! z8d{Y;Ak1IL9bU8f1P7gYfq&LpCUs%PV+rr=lN<#rQwP$dtnGNYU=C*K`xe$Z3O53Y zlUAp-t1jAFm>^mg^1*urX3XCuNl_KY%^Q*{mr>6qQs1aoa&OI z=rD^JO=rp9ZowXBvjTxOY?2l+)&;6F(i#PA>hZI7V&Zw*Ms*Ret$)ZQ$BE5|h{pGI z1`X5c3%{|?xnUFT+p#=}H#kXY`d#Lun{J53QRBxw*%qk%-Gb zSk1W4l}&cxUVPGrILuBP31P~%r9BG{H}lr`ehWBkRWkzSm3Vz)(69C-Z?L zMpzsgqOoDJ?lmkTgqV03p^dIuwqIk0?U4I)?m(NIDov(d)40OaMa{hMi5huoiF6F| z9t&K@tlBhN)==l-pYf7%hOu>1r}!cyG}hYJr0eJc(^z~I+vQEPkzCz@aipCrY8-(i zbXxPF^(k}GScfL!C?*MX(XtHHI}0Xbf}%VgtJsd-or>OJSN#FSK^R0 z5%V3!j??XKjpO&O)A4@{Ty4V{ixJje#-d-?8m4GRcRK5oQCiEUZlSRT-lpERiE$9i zLk|n}nlwCgA;$%pyHC*fai_sh46aF|i=_`S;ugX zrBW;+kE(4L4X3++eAz29e<{U7jnc(Ai``sjn`%LC%Lx-C&gaYxA5e6{L>+o`V?CG6 zw!$;j=oCcT6!wTXqT-fm^yrvU>Ch=?i_&H$ zE|{r~)hfdjJBGA(J)U7E_qLn$XahmbA?-e9u~LnnJ!1BfDaX=U15HrVd_0w=G z*i%bU0Dq^Wbb8i1n!P`>Yh0M19oLXq-86!GUT8t%NSf*%tJgfr)`~PRR)1NJoj7u= zSAzXc)m~g}3ykI^XiK}>Zz_dQB2WjK4>Ft zhv~W#lwQF*Su#)WzmP!I>*FvZS04sO>AQT~5k;3R5Ut0@O3_Q={lyxLwlIzv#4aKt zD4m!@HR9CThkR#iyeLjPbExsXhA!PK0%K$|=f+VIFxfXr(?O?*6pGBTmpA%AQ3w_q z_hu=NSfF`UF|poMrpNDHOiO!bG0nRB6fV?Cvk@96+m@CFjAH5pacfMRrPO-XqMc|o zp=mmoRuZ0s7A@}RwYGUt?abxH$@pkpOd;XA4zHT)s_UZ-iR3EV~+xN1Iy?YO-??f*YN~1_o2pcvg$6?jG$wXB4HPN)$aIR@< zB&W!H=+fYC?#v!eg3;3cQjp6SG!eoy`!(-$EOoi)rKl4w9vi=1jR(5oLK~?)Na_-K ztT=!bym`kSf!ZPq&i2J4QjK7^l!B+x=<}cg$xuCEJi;F|fH<>PaBiq&6<^DC)8bI0 zdp($E3T2h33BDv~%3YYh;&g15D2md*^ILEC1I6($ zjMR;fjEzhKZA;Q;GfYL8j@(5A4gF*N-p0qy@s}K{=c47DY2b^l`+B|C* z6Kq$aE59{x%pK_U@#u9IP8L}$x0tlFbqHiG zNhhMN+-jw((Ym0^%ACSj-BlP3KWwyg<>VX#gUj;ocO9Y4v96regy~s7;N+b;`m;K$ z&qnC3f)!k+&@C)Lx+dt#d*j%;npupO$Uj<*XBT0y88cq0KngO#$GZqcmiSewS-w^( z5X|Q+4ZE%yS+JW4jznJ$N*A-1f{{Y4H%ebY5}%9Hi#-~}VnODF%tj+eV~8&bExE>XOZYFc-ueLU91kR{M%&}(D;Oz8}*<<|1B$kzN zZHCDvG_A8nB6yk~;;>*drOd&E7%Ga*X`}5!Y1VGEc6RF&eSXfI8M@N7Zz0I&X`@FM z*xeD6rWGs`#7^5OP(%%>v6eI2?AgzQt+%;C3!}xv&y}lOy*j%|E!Vx%t++hbLYgt{ z4a77SF-wuvjIo<~fYgymLUTeo%HtR*HVmiah7poP!OGDt3tmP@U*m_p*yyh#%RlU` zG%>MWx-M%B_m{<`N|vqCG=Iov=cIqg_xI-@E@=KAa?sJ|59gqx@6sHoUHTULkectS z@vi-JPPJ=)rRlkN<9iC(!Lf4+9XymqJ&G-##f%QRRN;FP=+aB)WV-ZLn%ERZU!?Wl zmry6?&WUvLQkp;}Vfdb+bawBYL}x!KN1b((dXpt1(a4hNqO7n!d?MUC@^{2|=?{w$7Ue$bwNTq-i0f4|=; z&8n{xhSkZ>;2LMf zeju8`HQ6HX2Yf|-ui5u!3LZN*q*3gDHM1$ocQ)jW`HLT$o^0ON5A&s7x{NNAu+`Ai z=^ZIWb~D<9R?o&pQ^Bg`ldrBcfv2rF@&`7LWJFcv2;|(g6F7i`oU@@`yYQJcXbF?e z=~|bHU^yQ-ZJbX|1!irej<$2Bh`IYxW7Mdz0h2z;7kL^lwy{RFqfuZAwQ2^QqW?~v z=1)3w7>OTGG}PAHCOsm-F?5mOzqRsIYlK?c3t@(3n}S{Z+VP8)6fCq^noq&bmFWu# zHoOik*qnKDmN?WZr}dotBcDWV$*G$z4w}2ImhBy8i#01#X7ij)ZsPkjR5H65qq)uy zp(_<7Nq{ILXQJVp4k)ovn3Pm9gA#hI$P!xQgi2^O)|60eeN{qHrb`I6HY=g{3aEsn z!l`*KDWQ&J2Yo>aB^}60h*PIggSzaqgj&-yt9c#a*m_KkJb^if_PD*Y@>8*sP#cx_LlfImK(8#OFz1F8Xr}pOB~tySOCLX zLbLTH3K}IulYA_0Uf3lu6K(MB=9flR7$HhR+W6Vzy{*(i!x_AODN(1T`8aba5n;`; z63V1m9V^i&!G3+fn$E2$C1Jd)PaA7PP29(_7oIxQHZSio0PT6XHlRu~#l$C>SaC!e zKuQR-4mcn?kyb*VFjEWwZe8^N6cHq=U)to3HQbRl(~C5!gHuVIQ>S$*v09LYEb*8n z-o-o7W}+=xOF~R=GbEhdS3R@B;+wf6K zVNObSg3>9qXy>_;Tfw)#WAk9rYuiCfql()uC9bu0U7$yhhOlS4b(>}~wQG8e>sHpW zEU;|}TQ8k6_P|w1ZnibF*^P}Ua*4Bhlrft_TnB5}ZT2p_q~no9;O0ler6od+P-mMw zafH)TkG}PtuCGUPFUDdTHIE5*rWvO! zYnid{;?!tu!EG9Dn%Hk!;2~=3Mzt(#tZx$Yhbn`j*B~?t-9DMwFyI3E8a~Kj*0J1f z=(RqDwUU%t(DHoiCu>$t%&azmqOMa+ShQHJ zIiu9+rd0FivsC8brSg_iob@OLDdaLvT(Q-7u&L8{c}1bJ<{2BK`=U_eN7om5^WsU6 zY0*hXwy!7(p5?j=p55t*~~SRfR7a1k+`t1Ox#y4k68Q@BwQEbY+n+BwBq2~IaJE^l>{i}0ZJT-8Hy4IUm=@rPP$!MoH>OX z)!e3i%1-1J3t)|qt#opb23aW)t*4PIH1uSnOXWuyxuY)USU zmodkjeZHqx*!?s>&+#x*0dvckaCSAC`>t}0hygqhWwtOHp4MKb}ET>e>(J{snez|vd`hD z_ELpK=6|C1S}5TKY(?zj@w9lr#rC)u{?)X@8W^zo7;R=p95j1{ zy#zDWw@Oq+Fs2LFG4;vBH9H$6QPO6#+GXmDTZB9ii@Dt3MpdvdDX zGpR9TW_S;xmeeGO7q@q9GONrMBo7h8p2{0!mO@}^&m3Y&OfjgFW7O12>Gpb~%q^oy z3%b5;oYiu+WJ_HOgeg{5tu3>pjiQY0jVPC^Ww?wf4VP)t*2QqT(KJL0yL!$*AnR$L zU8t7n`XY4t;&6vj$M+DCI0H*?kar+wRLeEI|_gboRyD6Be5E2G3h z3WczB^H%6H9hpxT46LZKkHa&PTen5o>2}_!Pr!v)uva#`MX(zm8Uk7 zPxDkJHICHjdiz4Fk^V$eo7Ua!&A!(z?aCz#p1w0+-aU{p1?|nWT-{q?4x>m?Up00i z0&ZIJ_#^cV1qH4yi;B;vm#>VvLYA@_`-){b%W0#Ei8{2r%9C`!`Nk>AM=n5!^^*CI zcFV@Hg=2MoRK;JmP~!pm#dD}T%}lMPA7LgN_sld3(Z9Q9ugI;|zS5xFG}dbez{LMvRkS|6KG?eS@Id;4JBDSWMxVP)g=RX*VE5zf#b;!v^L|rh*X4^0ZS3UVTi(B@v4cjWvrYiHl8oIB9K5S?`P zz_ZrUI+CL=X4d@BzSymdpR?`yNE$I;N*gmSwyfDVA|=1y-posHUw>Mvb(tY+`Y?UrlizfimMA3m5pk5_x%7 zG?V3YB}gv_c}gS6IDwL=spX>Y>6ADXWlO!Z#4Xli2~96-aj7?*=koV9&%feR5}@GP zLI>38o~ZNMwJ)Y$>6^QPKznogoNk}pvC&Oe zK@_N1RMA}%uG<^!%o-aKIxEldx0yPh;LEN?HRoD=NF_6k*9pxMTf-zaFj9|lMl-!* zhz1RK?yLAv6)Q33MN`m2C49mBi8IqH%z`3h`IR-k)NTc{7M4;pNOY#Mw_3O#Dta|u zOqVsy8ZyUK{C(CjMPTuGgKM1Ea?Z}VzThhWS7i*o0q8F7*Ujn3;kGQ-F$xz^6{vRl zL~0CC&{n*|wIaC9lZ_TKp(EaLyqw`u{bdVhw8e4T$}yuY9(T+-#Il9c5m&V=^HV`$ zQQeM#B^m>l^xCK5gI0yOdD+6+#dAj@U5D#M8HQmX+x^k9blJkuI+M?HeC=pU(V~Hw zvqq6xYB&{NLeK|<`Pxt+NgE&w!@hBbDOZ_QQkI7}A>dyp)EOZ&mx4*TnH-O@hZ*d% z#4nxN@IIr>PwkLVZET8npV6i!(b3g%UF19PZ_0$x6O)jH9Dn8UuPW#-K<&wI&oDI9 zg}yxdfs?~P{)UG8%%x}ewCdzgQ!d}~Ioy87$%5~d#4;PxePyeY>nj3b11a|ra zmnzHUaH!+RMK5BTr?@KL3nwS7$(CVg^-%m)l|22aPO%B2|F1a4}5LCx~6G~4BdQk3p;c(2W!c$34o8T&tRI^TZv+VMzH{MDP`%==|$$!t}HPT)QE+BQarTa)d{nry8J)rkcHS_F8-pXk= z>H{HBkI>suY&|h2P?gTOWI6F(Ks`Q1KJ~krbibj#`zKEkKdp!7a(ulO6MD*?tN2|> zj8&mESjl?m#+3iFz~oi}tlZ(B7%3n%u~$!p~=lGc5+_xHleD!n1K z=KF~60&=j5)T+t`LJg#SG9`J6dS6ZJd=Fnkq5At(Nz;ESTVkcFDp$VzuN-P$%GrzG zzM+P?+sNvvN2se9m&~YWt=JBF6)EJ%Sx?XpTb=bc)mTDbUl|6LsT%Jqd#dc4vPb!Q zDq zPrXyw-Mu{e^7!P^BYaA=sN}CvU-~zLKYw$o(;3uqus*;z!k@;u{*?St@_l=m1>mP2 zt?#|0AHDJmr{>>vcjUTHlmj2Y{$z{q-zwlz& z^=17MwZs|8@UW`K>I5&)HHr@88UGozj{NA~a$;6}ttNftUj0x1`i35qpqwR1i0uVGtF3m!--rLU8Z zzL*$g_@gFBuYXltm0I8`3&{^It=o(X7vw&z7*5#oa1f!G6OvYP)E`q7P)_tW5C1Ev zdr`)b*Z#Db;h6f`8(EGI)xvww)%xEnTVAGj-Lr>oab{$APYiW&4u{p)AHxAT-QyDQ zn>V*Lq3N$0bOYVN8etvMk^jK&x|Vi@jcDCTwKuVq;MxuJ0=@CKsrgm^4`DN~IoJZfTY?`EOCD(aP~2PbyEXp%VeXIn zHl&azg#pmF<+&Z$p44{0P3iyGQZ46gmWM%LFc?BE66iZx&bkwKcS3Ivb|Pmxlbc-# zH`MY}PCDgb7}yo;26hK~fITVYPe^+>;YJXCBtAzGZw)0#D8Xpr>VexBN-~!C#)0wB z_M%jK^XB?tpFljdq%#prB3unrz0*3d59m+n^$sV4di+cQQ!!7Y7N+yu6?;GPry9xA zf>h@I z1&8s54kz4R;0VGU367#XNAuQ>fp#n@9|w*HCx8>dN#JB~3iuf~6`V%=rxRa)%x8cz z!AfuzI2)V;&IRXz^TE%-1>iz(5%>kT82l3a3j7+Z0+)bG!DZlba0R#${03-lyb4@R zZC*nQ`z_{csjC`V*_xE&I$GE7plKFTyHwt805^i0aKD+lyan7!_}jqkyq7y@jhd@& zrA4a$-iqHf34bTJ3-jIJ9?bVzocZv3?Dv8D!2`75Jm>{_^YoWGKXmx%La;{ThKA%s_O`#X3Qyarw;z8ZR173c+e zQ=T{IZEs?F%hL2Q=51QtnxGfxO^A1>!*>a8%w! zKOw$P!DrwVi+c>?WIlWjz5ri>ub}rax3Lzc3R*Sznl%0izM-dA(Bt35&$rP31>Dbg zD7o-&@E!OM_%AIz$7t|B>n9WF`?btWsz=rPL`yqK@*xMxKzWi26`(SiWNGJ(mZy*B z>EjBgIe!BeX1$*^l6~;A5B0PU^`!c#3v1%O7Vvt?!;enJ592$u zb&~F3-K0MBBCVd_1LE-VPa(hg&^ya-4RJdB9Ze2>lHOsxWGX9wDPev5eM{I4EFK>V zHYEOyz{a?3!gDL!H^u!x;_b(Cvt$~jnMSL4mrdSrWuhGOihH{Th4#1}QXMeb; zL5w_uhBkbzmPb8PtO*U@F*;`k%&g zI+y|e|Bag(zstkEKPm_tr=q%)-y? zTXJ_Ht&-GN|Hlb|Aj?WESsj7IDqOXWBPHSeneHJKY~AjKjZdz(h{BkPlBhw)8HBK zEO-t)4_-)G!(Wm^jF)?nFn;d+K{u3}9^9V2!^Nr+h6wewk8jJyB!MNO_Fg|xk*ekb;KJ0b92Y&a)Z33vxEvI!Z zr++S|cc$(uplST>9VQb0BPLeTN>RDHC}%*e(H0FF%}#~JckhqNo?+L z(mNdc;bxzTANBKFk|T&Yof~?GX}R8EI`K~hGr+!JKd?XPY)d{5;CUc+%`f6jH1_=z zdjmL#IA?-J%(K93(3Cqe%;7mVcT|{{JDRaAADW5dU>eGNumGey@IvT|a>p=V9z#Bl zA)gCFOYT^tn8$@fa>s`@+%+yJAB!L+>#=1zkgI|JQfnS4F z;1X~txC~qlt^ikp-+VN0a5K1tGTuu5Zo_;#xP!X7 z6Wj&v2KV58FZeyU58MwP01twPz{9yy!ykA)0v;v&W8jbAPvFnsaqt9q5@R}9f|tO{;BVj+@OR5wF1$)SuMtKo@YgZF0p7$u zka*w1-`lyPoK>)hG2W7Yv?_qp&J+`k3? z0{l18p~i1n;wo zRXDBdxHdqJ$uaGD8dySv#mYr)dn_i^T8}z}?d5q=j@$3uMhqeLF z4S8(0+vbR$%M0me9Yfd)TJzeAcib z3@H1#J=bTYT>*LlI9U3Rj|JP7U5HHSLg*Jl*V-*zw}r4B@orB!-s8RQfceKjy#GMb z8C0e?7{4(ODZ7Y}7ZJxr)&_RO-%ikXChRUi?^tV`q0pv~sdD33_YT9##1s2F*tM*8 z*sW}E@URynt&%wxc8}rr;JK&8J2?D==Wya0Ve#d|NS>o`R~oO7r~2fVv;?8N`xWgrtyAUY*YJ^wqdZIiwcsw=C9^MOTa~%#9ZV!Y zlR$rSy97TTPVat#<@wSg8hpLcF0;54UTbg3B~DK+=N+YCJ=pe^2vEpT=!J^0z-Ity`sc4ZN`Y4o1c#ex3OZe+Pn}f(CF9mXa3wb8B*KNj+&iXtMlYhkvD^^pK^2xtQmHW^gc=4;FxhU=dKAw2)RS zI0UqT#b60&2TQ>+upF!ahnD>=rmZyc;V{xT-12$7)%Ow5)c=nJ>wu%c(dN$hpWHxw zF&{$vem~xxHcoE*e~9lUVoS^GYs6z>T540}NVoKUjwQW%=I`Su@A2RS>?iU(38;Qg z=6OqU3vp@g58)KvquTDzpr6Y7It`p&b}R2d?r9&njdoFNmtVaH`M;geM}#v7e`eVo zVI|MA%BCWdV*P@jbAZ;e=R!ZPED7g>pM!rgQhft1fPNvk2!Fo-k^^0g{g+_lqX<(m9FwpRjx9?nSDU@;SZ34Q0O% zH&Qn@ft$fCHh$h0ZY^sKx0T(`?o%pLRenRbgSej~ojal51@0#8dr0$M@Oyhdtec?U z4<3M)mg7Op58?hW_ych~0v-jAfj@#jfmJPn=!&w}TO z=Xvk~_zQRuY()P4TJ}JAiMU=adocVByaN6XUM;&PyoR6G!5h@oo8T?tk<9gNp6?Lm zUGN@wANvPo4}}jge+2%)y!CO}!zR}&%!ne@<(XD zkA-fycegm%Bf`7}ShM`kVJ-aiEPtFardwFMyjxfYtP6U9-sMjq?SF!HElKc`p-=f! z%-6ez^~%K?KFw}m@321cY+&i;!iFpiH79Pwb7Qax*c5m1oc(xi1~v!jUd0yW&x9=r z`y*&ufvwAt>w#^+0I)6C4r~v006zu;!5}ag3;{cWoxsk-Gmv>^7oJ1GFtBU+le~v# z!*1krck;3aNaxf&%bz2!a(h1fgtV2%;lwinj0B^A*2y(IM}sk7YDWo$MXx^Ph{-=W(U|(qaf&IY&;6U(G&;SksGeIMm1!j{Uo69iIAjyqn z-+}8f-@x-ma1*#0+{HNgbK2!C)PcrmjbCb$x8kP0avQiE^Bp|z1b2bE!9Cz!@Oy9{ zxF0-#zX!oX)YHS*|A6@s@F;i;yW034!JojN!Q;@MAl)bN{}lG8c|ODQS@0Zg&+~i% z`~|#-{jcC9@G@ckhTm5({~f%F`)lBJ@CJAjyanFI?H%wg=J&w+-~;d>w2#0)h~s1M z3D6q$Q)r*z{yEPtNaIWBUt#_l{1bcwz6JjR{|4WI|A7DE?|*;+E+ila%D|q)QO>gh zR95&JJu@D}5O z<|rR;$KgI6cgffHBK+Q90;sioXgqm4Ossf^SN9HK-yy8_(AY!A{e5O4?OoO3Uwe4_ z@Kk@9OgZYo6zXki#e2-{?-BMreEQreKJ_r-(3q=z!u7$liuaKjycecdNPdfKjQIBj z`w{2g>&nDg`&`4V4?7+{d_$bD&yn4FgKeS$&i(U2cA^3>0(UZD}Kg~Yr|!XfjsaG$_)E8O5P-|CWm81kd~JB+bQZV_m) zvZ%h4m$c5y(RxxoKDBpNcpvU(Uvo?ML0LZ$&wlY;O7_u4oi4Vt8HaIeC*Gwzmx1LK zpTQXw=PgaMv|Kr>htI=`iZ42}iL}m?KjtcM7&sgp0gePmkw2A3ZNb+=ti_-o1CFiu zlJ=_h_Ek6zf5(Fppr1>@wzgfU>$E(@Vf6n0 zi5#f3+&jTvc5LI`wtTI13iZ}NU-}vOI~ANkyE={cdwRt;U9^idJ@pZnL3v;BeZ%3z zb5!yz@|7QMPtxx=gS5^Bg*M{#*;w(fF4}PEdpm$S^mNlU{BL4Zn!Y!<68Br!qnl6s zXHmZWD!yY(>X@grEZ(QY6P}HK?YF6KorC#Ya9+iK;B!jrv~zv>nn3a)jU9T=U(&Yv z(0^w!f1F?O-`H2af6Vzg;Vu9df{VZ}D1*k0i>;pFLnsG3G_h{f)(deJk6pjAaPTX{ zvC8^KVE0V<|G&cI!X>1&3wgh^B1r~Vn6hvg;VuVP;C3bW4RNjpSAnZ5b`RH(kKf{c zEw~QsN4mcQ*Ml3tjo>D5B4L|wzZu*DZUwi2+rb^U-wEylcY}KI{|p`n(jj?* zG@q=fNLEx-CLP;Lp^kmbT}3@L5r@W*r>xG=nIRr{Y*>%Ndi@#vJd1mRu5}sO8_!{W z9)E{nUZaD*eJHQ?T)!q3jiWCR_AlT?@K?eNB#s)iKcqkOQbl)scBky!*>Pp9Z0R6l zr;IMw>XB5kW6=v}e|RFYmzOiQHIi;&YIub(o+kVo`RXc7R*sZ#jpS9_UyI@Uqgj$C z&DRP42J|<x#9gm+s-873)yP@Q3*O zwqo7nUjVL+e5`AA@Nekf#kBu}Uo=~&qh7f8vO4^4bo(D^AW65lcC~r6PZBEoBwM2W zfVWdK$@(D%-+Vm3@<~D|1Qz%Jq|NDmS2RoR1tp zn9JdnhEaciWz>hHx1cSg}(i#HF$X983S=U!e zP9=Fr4tWLoH{|L4vhuJq{RilNPy%iAM#FXNMkhdj)69o=QuDPNN1%l8cb!N7w8SQv{&UOszvOZ zSUV9PIW@N_^|L9oO`%Euvz+kowZuC$*AM^waO)TSZyvLxx9Zq3-YRhU8@Ppw3wisy9l zK12B@Uh%u)&nKLrisabTi6qjOW~duB87*9d0eHXAhIZw~c27t90A zl|K&$L!S?Bp)D-nxe))0NV^5JR`yR0ATbmE)EIDH1sGr>yYJBv8Z2Iqit!Fk|(@bk($!v&VE}Ld0+GC+rJ|0uc561vvNBmmk_=Yt-1=(3-qSd zTncS_+T~@HgP21GK_3KNd$DJR%L%8pcLi~(UarjI8cb~?A0hrbDuxi>5W)>1oUaeH zp6P@3T^Z;FoW2wDoZMF;CtJxHVI?uj?)CdVw$+t8Cs$SOkX%iZJa4buF}Z{1oy2ulq@ z;6?CP@Dg|#`rp7S)^>8?@0ef3|7*Ct4&DH7QipHxd>gz2-UaW0_rV9?L-3J}8$*+S zR1Qlz>RhP(e@vX8;O|rL8PK{S&Hv}vzW`r?uSn}_@K5j!VTLhpe#=;QS+aZh7w-QC z-$DOR<*vlQ{yKKW`#b4tjt!z?xt! z&@;a~oSk-p5}3%qW3+yi}zjMDSj`T z;+Gbn-hs;J?PuHk)DCf=6PKUXDGqNla+}ULt2p4*tPRb`?Ax1t->fcnpuE~2W&4!0 z_si&_Nv8c{%ftS$UBK%_|Cch}%1!k?tm1(G!~MW4{Xv%gPc!>qvo~aR&)-3rz1;FO zGsf@rF@!t}BJCZ)PGIMJW0vo&@Tol%-~XEx+beP_c*b1_Hxyh-y$s{IE7;A_pPi+* zyV;wv`24-Vdm8<1=EZa_C>{SL$CpfRPvZOudD1vCoaYFj{Eh@^8ySVU2Ks1}EysYd zU>q0^_5yq3HUZS)Zz6V$<>?syK6B$FXmwy8Fd5W?Dfpk7UmT|8HD1Fj=6i=3U|+Cb zeh%$%4&&1t#;3WIbuQ+)n8gQ)W9ZJP)t&vtdDK^0zTRPf;yeHx2weWCa;cp(Q(Dd? zLGOcq>D4z-KL?TDnV>O$Fln$Sh534T{Jv;$SJ+xqVavm8+?(>v$(;NG(px}Y7LXU8 z^XC%JJmPK6&u2|3Kl77=^9xCDA^sNPkGYCC=Hur8#!ls@N3w{qdlBx7aM$?TJ1n5w z3yFUb;akXu^poEQt;Bx@&mKTw56QRCk6d@L4Y$Q$330cBrTJFoy@g>}Uhc>oiDv~k zl=>DAG=y3`4D;d8jsQo3qX@6{+|ihi0mp*l!13S&a3b+ao_iAJlQEyd^OqHeP(MBw zNN(~o;y4xDg8uPprEcui;*fD6Gz;1}Rx!igvOC2{-;^RK}wpgO#Sdb^Z5zKlA$Jby@X zMZS&EVsUb1esS^}%B3@dtMf~ezTu5w ziw}Uy#v~vdy=#z-#nT2BRz|!@@2FK_SDGRGvI&l{o40`7V~r9dGJF1*yJzy z|4AW z$;Y*(eLJty2|7dQZtviyKc^Mcp57(Qd)VIx?+~VMINazTKz|5(s(*rBF)f+#hWYSA z$|~~^V(nw6C)jtu|3C64!mGoNl={&gmE>tU z@6?aDHUpaj@qG)RZ&CHDteldIs}Jwa``eNU?MI{~-M%e|XDi~{+S2+pZO-%A-{M)7 ztQYNj(2BN+bu@tIwqQH3J=g*K7z_l1z+k}9^ROehg*0{|jh%sH%ez1uR&jqAN_yLr zy-JRh-rvKps@KD=Rd0sf@F&@^WP**!C9&+^_a5~g(7YzjT?n@ad3JqT#sp6AsLkk| z?TPz9{QU$!!@&qJ5{yzfYZH1;mqq{ZF64hSZeze${9S7KMrRYc=0(kK?iF~wVJhNnosF!df(JKUHb@yy)>=g;n%3!TFP>owST>vt0NF1g|6$;8a70YU$CTT% z_aiyvk+FTH`&&m5=g~m2;$wIo3y!0V$Ac5BFY8p9(kc%p#;_;h=VaVZG50&;dxIZ? zb}BdxoDR+aTDSM7t!pgQn5gk^Y{gx1e7HL~)8e=%+I>vECAl}o>HAnK33C={o=te^ z)}Dj?B>IAMYmW!#V(-r>H?Nby;k@Wy`;X^i));>Y?d|87``UPLUu<*t+gzaiK#eCC zfD1`S@{(!9e-Y+i#PApM{3Xyh^egDU2CJxR_2Wy(*QMAm1D97lkmdaf+^+<`0i$tS z4Ya1}hkvyl<>}*``oM$9=2piKC0A8FoLr6nYrt>8wS>72sBiv`X9ekB&+`UwBe)6N z3^dl=!t+*e8{uvTcaYyZ!Cl~Pa1Xc_DD9J(AAV0h?!%vS=Mv(*A2*!_T-WmQ{o~04 zjPnoT_aX3bmHM^nPh%)Dycoatf0gZ#WF3po$E`<5^AzgfQNle&m_LF)fj<-Oaq{v+ z)idEq;(rSJ)7YQk`7Aih-rJ*DT+cy!o^UUKzhIW${fj(bWX$=$;!^n=a*t(k?P7UB zmy7gXBJG#|&-}2zg`ZcfERx4Ri>{9Ph;&7t3x6jb$-KE?Aht=(!G6Z;Rq|ND7_L01 zU8+63hTH2^f6C^8H}E6(H+lBw6sE_mwuUT{xZeivR6R~erO7&v@bBSwn7s#|TLvUg zFn=JY#P0{V%g?s-{{cX8e~AB&!26u+^l_K-llcAk2mR_DK9PJ<^;Dcs;cJQGGi%St zM+kd4xzZll;@sfy1#VwbpI`C(8k_}oDStY)FE69&>7UTQ0qMECZ!s^0zmTrYzZ3@O zthVlHm`i#8O*-}T&+nj5%{`O&7>!(%{QnmW!0-PUS9Ca2WqqI1sy>%0uG0RUm>>0F zy|3po{;FS0SMNx1^yj3jx8uPfSIyoXC>o7WEQkz&CyyXuR&agVfVKGmsrkJ-=A})q$A#I%ZgO@ z|3&f-UrL%glD=f`J&9v&@BycC%fgGvI=HP1dR4y^=Y^M(-qp&(Uz0x7>aXGfkmtrY z`tn>KNdKUWJmrl4Ko6(#Z?UfY{dhegUm<*Tl}`KWtoh$#+Z~#0Q2k1>A@OfyX}p?^ zk=kq7nEbs)-E2a6HU-kb=?85y@Ga>LgrgdqyhhAw?>;VVPM)^FU1QFcJbzUEdN%%x zUs8X2ojBEJisRqP(m$Rv7TO2Rg{^u2{j1*~pCN36c>vH{wJp!>s^6q0())9c58GF7 z6?Uk8i?Xr)tv-%Dk#voseaLe58GVm&Ao=lqLhYBn&Hm(u$)M_YlEI`sgtT@f@5-0f z{?Z9QFsJ>*w^+x%%R3=`+QUxx*%|BthE~6q469xeb_Kf;_wM9v53nb0KdF8{8IJo1 z=p(B?pbkD@PWyoMO<@f-3bz_CnlKMSAH(}zo_q*@@*#ddG{4S|vR1~=xN5DlbbiVC zyi``0-aRp%xb_0-XF9j)cTj||H}7sjweH0Dh&RSONxRp+bTxJOF6q`1_e3xW)Pa4# zWWum&W>4@RE_LZ!YN`NE?_(S(~drOZK82R8ivXiQ`~s^KtjQp~FEPNbh?Aw1r?1XaTL{ zU7>yO2D)+kbI`N2~rH55 z?xkRB-sfdJFSjyR$t`z9bv}0`_zhT%+g0G|>gt?ypCtdk2K#TpwcxtyZWdoE6A|C- z=K_@f?mytxgZxTQFNEJ!uaWCX-mmAq+#oQH-N^GMp#A%sdEP==S~K3t^ET|-3%#8@ zZ;hP!4&Kk5)obR&AKZoe-9Wm2;!W?td@ugBZv8#}Z%Njo=g^L!-yiAR373=HT4U@3 z&>yT`+w2cvei*F7jR$%ci#im4qq@}EUva5HzsvJI!oCka0IJ6id42?aSj8sfpD`7? z)*)(dA2aWMj9oJ9PpHp6b~8jSd`g}^1D_MFKQ~1v+!y$hJm*WEUqRQq`x^5FV;TAx;05A^yd0Am!5ZGo1dH z+=vnV9AMZ7#mEdmW+IT;)x_3pG47IJ7GMpIaaV@2n-sHTkldO*#+~%(>2>jJwi{;u zKPRa&>(vyvPicgii?ShcQk7IZ%O3jFq$QH?awYu^nRoK%LXk9(7W;J8+-iFKW3mgU`8*wsI|@Tm{0YOQ^zo?YOU*0>v`1rh8o3O$HETn|th%+4 zq1LcA_PA+cxT#6HqPVR@+?)Dl9{c7VwS`A*=}}vG)YcxgjYnp+wgieLOPyqFR*t)_z7DlX=3EGPljUzu|^cb*Rj(Sa(`- zaBI>qzU_vTjS%LzrO(%hZ?G{mp=>opZ3fNJw?J(Pt%_G3`TS_i7x$rI_njw7z)VH{)s38)ic5=1~GZYRSOmx(gYyS93T1_TYan&-+mK!vQ!5hamdCnMlG}1j~?Gna<2%{2jsmC>+D@akxua zszm*E!a7(zNjgqJ4bpNNH)r51oWtLFxBwU75?qEWa22juN2u3vcLQ!(hp183=rrV0 zZdv8Lact!_c6Z<|^6yzkQa6sIZX8K1XV#074;Q($#~b|Mf6XK5AJbpKuej^Y%|40f zg+Czv58)A{!2U7zPtZ%h>#3E!=vG?a=#{7*nk>xGCD|+)T561UQP5DDS%;Q4>NC*KS z_qry+E;0Inyo+g&1o=rJ8D_GVA~|Xb+{m7T`>eI5ptY4OKJP@+lc@J1v|Cgs12v~j#%tr$#j$f* za@j_!VchtngCEEpM6#z}(k$~r=6NZz?_;j<(DoBAd7m12GsZi@C**LbIs>5Is^z07gT8Vh?oDL>K|3AIf@rfJuJGMA6E z#Ko&M?v|_Z&vApUB*r#HXZfCNgH?W~RptXUB~-Qh8VMZOu}dPghG3*V4AhY8lk7 zUQ^Ywgei4}$f$-I&a=d$Tuk`poP2rWA$`aS!v-EPtUi!N2ku2 zL1*ZK{I1Xqx3B8~<{JsmoJn!EJv%b&|`ojPiNId19fGRKu{b1w{A+EAkP>Z~e zzB6DbZim5e7y%<;6pV&3Fczf5$Xdxb^uticqfUT{FbUZa$UQ_jk?1F5_73+`P^ZE) zm<}^wCP;f2-8RnRc{YCL;Qu|})LfqD!F*T%3tLI?bzTEV782cl(dFoL(MwrLp zgl&c8r0t$^3QiOD8QVMMEUMhw8cLfgdn4pd0l6de9O0ZN9dgF>0;-f_d7l^2UxLeU z1>}zJtHk#jTqmy5KHorp6QbZ2W=~`K2>!}#+cfnK{_es(+kExDP1b}Ls1FG5Av_}9 zue3|bW7|UNlZAZa3;D*)@!S)mZdyeBun6--hIt+O8`9^HwE+0K!cbL7i8 zQf9_o&TBp=%op$yUcqa4L;U1h7a3B|AE)k5K^kQ2^H%JbKsm|y{2gxJ^DJkhKG>r3 zcQGpq(eu$}IGIpu zALb2gOa9R>q5nx*1f%Yt?Z*BG{-vIlZ$|FD`$?Yu0wTjf zOy=%E126Dq!X?Ce8R1Oi=DJ`dmOWUB&4rpGGdi3&xQPq0=3&K;4ea0m9h~3;zTg5k z_<=vfgZPjD5<&nZg2a#nl0q^_4k;idq=M9t#%@#6+Lx;i-f24Y>FtciAtPjh%#Z~F zAu9wyHsUFBV8Qkk)cdm&fPzp63PTaXZe&@> zJQ!^S{=%Rb6vwUvd1dy8<$g1%hgb1FS5Y=sQ8uLv$(axHTuVvZmjd&A2)oJAuV+qc z4QE0+(Tgf$Urn348o#SOewo+DO*m-^vZQCN#0;w(&*h;4B(b!QJ7d-bv#!t$WFAlM`sj{%59kTKFs}p^p*Kj{`w)I#?D~PM z@%86<01UK;D}(GZcfp!(ce>N1%>G&L|iSV_+ zc_ezWLz#^E6qw5MG?)%EU?y&6!EBg={aly_^YOm`bs=sRK?&OK#pL-C%$MSJ8QAGl zcA))Vj=nAG3e=VM_R1>zI?CfZ%E~&UtaRhOtj2B)tVNcjYaMEkMQ-X`kGu7ry3*_` z$~|&pjQa^U82!NY_Mqy~dvF`Y`oLa$TV)@_qpjJG-vgL;BM-S* z7>Vq0K$hLoRykxJq#U+y;k%G`FS8en2aywf&x2~&%3P=!&QZ*d!ExN5AdV-IdkQ(d zk$M{WXP_l@=UKa)$CNd;VC9^B8}oM(S2Hc=QIivc3;4Z={u1hCxB^#^C3j?9vu`Jl z#Lo_ox|2LKWk?$t#cij*pT*Dae?9N{*YjRN6#wS8D|cgDuAto!x@#I?QhzY#Q!5?Jw|RSGEH=b} zxL`%74H}akJI@Z#!Ra_kx$!dYFYs}&Pt?I&H@LyiaZIhmO|<@wy=pwiHpaj^)cB5_ zY68bDHKAj-8sONYCUR_76C)=HBt?EQNDiloa|+aykP1>m8r-BMjCAPJLk7qQDTs3> z%rm3U0)dYGYF5VqHOR3^&F0vw20ON@+3}kLa^fx*ZgN8&2!Xs13i%*E$UT5Qs0E;) zktS6sgjyJiU{(~u&=*534ke%@l!DSw2FgM>l!Nk60V+Zzs0>x0Dl)2(Pt}Q64XEij zsMc~ER%`Pv>hN3_H+N#~Q|gh&^&Q8JHKGQXHH1d^mG|2ieG_O3&A^M>d}Uo^D*xp> zX^vTMZub?l7RYP~t)R8z6lI_JJ@jp%9khoI#HS;EIzeZ6%8kHX9B0&=$P#&7vF`@m zaoYoWLNDkIeK79}{h&Y317IKwg26BZhQcryj++rM68$I`jeZR3SQrQ6VFFBqNe}^% zFd3%6RG0?SVFrFf>6^_&odvTo%SYQb2mM@_2lE~IEel{FXOdZueVL^^OWt0jmic|IKM}=^vfRO33t!0!IX7#$psql^oT*)jKN%y6UpZ?r z-#CYJQC-D%u-ai$);Lb8YaMIV!d@%Yb;vkMuX(-WoVo$KzhEP5g3YkSkyF`*#mnWzxxyW981;x4w>8FcVis+l!Fer^EjSz2=|A1 z=SO&#n_`_+k2-D=Pw7+pE60$398SO`(p5 z9>O}tE$iVC`p1Ox#1juW!~7J9Pl@+4(*H!gsfH={3Hv^B?;GuYh~)w8-vgc>@cfW4 z*kgvA7a-rnOVn5J8s1>{7WEyxcgQ}WN9qU1W8(f8|BnrMGXDFBJ7y&@e}efF!~7F* znn>Myms_o+E&j~&7x)U_K=LI$w_I!7a{V3uf5S!Pg_;ojK=Rnk$E)fO^7AL}_?P3Q z+Lbh3#;;u7ZvhoF7ID4cj3Jlbra_;c-sBwzVe8Bxf{b?KpvKjokteT-E6b<)OVy?` z<^qSFQ_=NHYBFvGXKYOP^1DDURVQwIV#1+KK<@%KNM9v-ZT~c3p94S4{q;A5%`O$f ziw_APAq0TLA(8%8O{`y5lj!f%q{KCuZc~!$uZh=t^5Z?>zbAazlk|b_m^Oj|lYs~*#gO+zM@9>M! zhsZ$xJ&P{k|K4X6NV>8@5b@0huhg%!v0sVnSK?~^Hks^02`0Sk`Uf=!ZZgFEqW-jg zRC5x)T*M)_F8imx(XWtm8{bvI59Hil9`Ya;age*$q#Vi~7ddAldzwN>Q(g#$?8py= ze2^asU?zJR3ZhD%pb&8^jCm0#s()3(beVrP`)|c`sc%|Xit`StGL9;NpOX4_wG@qnf%ziS~cuqRn@?2k) z`z2(oCUe@%`5~ja{!IdqZdhjgi*`nnE*Zu7@ivbc+^2xoFArPcKz# z#pcA;`Y+-n^}ogp1nnsCT)^0(EqU2a_tIouw>@SZpd)m`Z)fPDduws9>xx-7=ng%g zCw5`%>65(yz4Tc0Kxk8m53-pJrESGcU);!8pdb2@&>sfqaSXQ>%BgCNE1$J8P(Ppy z!tG$}hk)E!GZb|g42Kag5{FWLzfp(Cy}qwhD{{E68M`{(HjRC48g~w9(Q`uLR?69E zx^y zBM4o_56cW$i8XHZHRLZc$~$wW$XkI7S^qI*MaxK{ISscmCi7x1vngjK?&X}foQKyi z%g=g;xySk6{*!w0!}KrtA@lUI2W*uQmt>y&__w@&=0|eU5j~G5XHTQ;{^t7>bJytIaQ|gqpsOz9V^_HAP>%<2xyX@BUT}LoWxB*rAQGbyKc^EHk z)C+QN@1K6hE(LM^lO5wF%B0H`3m5hc4gz7T5~gK=xEg8zkjmJMsBIDUjc> z+Mx$1J9*xvr_uuX#fA9)DVMuP^pnaS;;>hbQ1>BM+Rpu`2jC#)hu|q;944)q(I0`M z*d5c;AU`eNmKg`R8SJ>8PV@QC@IsXn_?3B_+r(bV*h%vF6tYhvmzGltGkz7~PkAB! zqWf+lOY$azQKv{g^yXJ2q<%5=naGiF9(@}7-%DDR6s zbxv9~r+HRHem61>`nX^P8`we0p1jNYhm-TE;Kc5bR~F63nOpO9hENYO?|`}6 z`BL=*fAsMnK4Bz4O^ACrQyt*U`ycrwzbC@Iy}ZA4gehx;QpY61e`5S6fuxWOl0yne z38|nt7g2{aMTS{jU6#oX$L!T=0@_CpU4=LpnnsukmgR@D60`TZl4Jm^WOQcojC<-DRxN z$X)-T_>pmPJbr0K|6@AYr)Z>so2H!pN`CYOpdfw=L1AZ6+Vnr=k<6=eZXEYToncz? z|8OUJaH7)|M)@cPyWx=`+VD~`SNn`A%i0tP{n$0aZ;Nt{ZN z2c-$K1nr=dRaxJ>s!O>n#y9(?xEB8pyAr%J=8&8vaZ{3fEJ;3=(Bd#DFZUE(#ICHf z6s5EjcBPCwmN`3CI`}qA(Y{LiT*jkk4$4_JMqkbuP9NY;aq?HnljjwnB0nhl&S6n1 zq1KT-exx%2zfcp%2_7B%K7dGZF25$0rDa#ZC!9K zd1CJKrCl`c1Yq349^i$@T7-;rR-3XI_e)?YX3JnXtibLrp{~Sy6|Ckt$Rc;Mw^!CU z&$A95U5291{X~x`=%>@Bti{hdSPvTvzwEz5zY#XUX4nE-VH<3R9k3I2!EWNP2lm1~ z*bfKbARGdz7o?*8Q*_4aK{Sx+4)-U7!3S7nP8fLQQ zb)DxMa1)~77TktAa2M{ueRu#5;SoG`KH*FqYaQsH!ZUbIe#w2E3AmLf0Q|rlzjIyy z`d_8Pr}n?R914QC3_|8Q2vEx!RRVIg0B z4ATNCXy66j5X(o-0yC0FKbZK(@!>2GSiy!}Wz6j89q4s%`qZG0Zl=ixb6;?Q8#_NA z@&#<4Wxy1K6R-}>f*jG z?wMo5%=}##@mG(2fy7T$GLRn$sGBnq?g7j)`H1}^i-TVUOBA@^dms9!!C$Fb$@|444VCU^dKwxiAmr!va_ci(oM<@oB6rMO_BVVFj#& zRj?Y?z*<-b>tO@@1sh=#Y=$kc6}G{4*a16X7wm>Tuow2hemDRJ;Sd~#BXAUs!ErbN zC*c&FhBI&$&cS)O02kpBT!t%f6|TW`xB)jI3U0w|xC3|L9^8iq@DLusV|W5j;Tb%K z7w{5Z!E1N}Z{Z!hhY#=(KEY@B0$<@9e22f`2mFLzz-9P~1=!T7Xy66j5DQ{M9Eb}u zS(CP++Q1GD(7_2l;0rErgCF=qJcthoARz=mB1jBLASon+MJkRJ-bU9zAcY9S~LMW85zK`|%} zC7>jfg3?e1%0f7lgYr-TDnccw3{{{iRDADDgpW=8vP!MnLfZNd1m1@&nQqdw*L)3px1 zO|_2D2|7a;=nCDSJM@5_&9 z(g|n^0y^Sa1b|emF zTN{a+$&|1A^tGm-&e1wChNo|iei}@N888!O@#ET(hO7LNB;9Fcwh@Oe#+=?9^rl@` z#>1>}6aEX@{&}dcjIk^C<-|4Tq~>F`z_*(wpW{OOErP|c1eU@wSPm;-C9Hzgum;w` zI#>@Ie7kG22&){FH`2p?CCoR%CfE#HU@L5c?XUxO!Yg zQr92B?kM_Wa2!s+NjQa@)7YJXvv3a1!v*r{BI+f$jQ$E-g=;)thkW$oZs5N;^MyB& z5e2t+zD*gp19#yb+=mD75FWu}c!Im9xPOKkNMG$aa$oTL5?;Y;c!S+r-;UZl?B1i7 zxvCGSAK?@BpWzF9g>Ud3{w7{O;3s~5;VvWdO!7nO7EnP0FYtCzS3+!v198FXqVLG1 z#dh>tm=AK`P6sDuKHv*3aDyLi{jrM&@p(>wnwxpOT#yj|0gwpu#E`_*RY{7P43cA> z0#ZUMNDXNqE%MS~pB_0GAR}ag%#Z~FA&QPlR@}<|ks#D;5RAX`URx^o4%l()fL5-2d-ys0JElat5Y2@hbr(T?eTD%z1^9 z{A#P5-zWp6Tyh(DIOF1Q8n%~eY1d1&43x!BIFy6(P=T~ogi25usz6ncF{G^Lo9poG z0m7_0$ox?a@}ed@<)m{h*JZV~tB;n2IMqR3U8o23p#e06M$j0VKvP$wr5WyU)$S+~Tl6|{yn&=%T(+)LgbwF7hnnb+t<*qxyZ$b5QN)NarndVu_fOHbn33wq)he^8v!G+lX`6w`q3~3 z#zK0`#-Waf3CNfTlOO^jVKPjCsW1(u!wi@SvtTyNq5RFo|2&tp7c&3dUz4$;FdzE` zun-pEZZRxDzZ90ia##T?VHK=Kj?5vhLBAH(!Ft#Lf5ArlZ^Dh2GJw*?ejc7BT_N7N zEL&UywY-0vgZuqnw&H&qv>>nMGsG;$xMw?Zc92J1pcH!&I2sZ>Y0(ugO1W3x<+f}efVRvN3Jp2V;AiO`STQ>!E<@+Y|2l}N;5lMBvzF2 z3%81!n;qN}G}Xx$bOu7sPWyhSA)GeZkv+O9ieegD)Edk`aU7tz*CT@ z1t234#A8>n3-U1^l9=ZtkQ9ry;H(%(JD%Z#wkpJ+d;mr)U`=6LHJzo{Frg_?sFNw@&;TbsX>m=^KXd zon;|Sf#h9QLx#*5&XKhJQRGNLer-CCU#Rv1&fyV;ygQj+nMoTq6SJ8{xCvRE zw;N@ibr{0R1-T&)?>z+f@{Qyr-m;z)%5y%qtRv2*9M49^Y-HFtdt{UQVU+yX7oe=L zQ&KDFo}m?T&(aE`7IB|v&vNv4C1+NpKWmUG`MSZI&lv9HHWm$G4iX1doFWbb9tWY$v@gu@~am9Y7?hA$dS3t zx;)o&&%^IL+|D!H)_2cGZ(`03nQfG;w>H3ELw7u-kvmFljGQLW6q-SE>{=kNCA5Op mn6<%7kvquU3wRd`kh{PWA1S-+6T<$fQmkB95#0U1zyAXuQGQhb literal 0 HcmV?d00001 diff --git a/tests/test/test.js b/tests/test/test.js index e683dde82..2e612772c 100644 --- a/tests/test/test.js +++ b/tests/test/test.js @@ -955,6 +955,24 @@ describe('Exporter', function() { assert.strictEqual(asset.meshes.length, 6); }); + it('manages node groups', function() { + let gltfPath = path.resolve(outDirPath, '22_node_groups.gltf'); + const asset = JSON.parse(fs.readFileSync(gltfPath)); + + const mat_ref = asset.materials.find(mat => mat.name === "Ref"); + const mat_out = asset.materials.find(mat => mat.name === "out"); + const mat_in = asset.materials.find(mat => mat.name === "in"); + const mat_nested = asset.materials.find(mat => mat.name === "nested"); + const mat_2groups = asset.materials.find(mat => mat.name === "2groups"); + + assert.ok("baseColorTexture" in mat_ref.pbrMetallicRoughness); + assert.ok("baseColorTexture" in mat_out.pbrMetallicRoughness); + assert.ok("baseColorTexture" in mat_in.pbrMetallicRoughness); + assert.ok("baseColorTexture" in mat_nested.pbrMetallicRoughness); + assert.ok("baseColorTexture" in mat_2groups.pbrMetallicRoughness); + + }); + }); }); }); From f2df9beb023cf0bcb2cfa00e258024cd627f5481 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 11:19:28 +0200 Subject: [PATCH 17/43] remove debug print --- .../io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index 71f6905ac..b6057180d 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -60,7 +60,6 @@ def gather_material(blender_material, active_uvmap_index, export_settings): if not __filter_material(blender_material, export_settings): return None - print("##################", blender_material.name) mat_unlit = __export_unlit(blender_material, active_uvmap_index, export_settings) if mat_unlit is not None: export_user_extensions('gather_material_hook', export_settings, mat_unlit, blender_material) From ef4a688de23434a0f061b19eb4106d45bc7625db Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 11:19:53 +0200 Subject: [PATCH 18/43] fix group path retrieve --- .../exp/gltf2_blender_search_node_tree.py | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 13e4c0e52..23a5a8e27 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -80,8 +80,6 @@ def from_socket(start_socket: NodeTreeSearchResult, :param shader_node_filter: should be a function(x: shader_node) -> bool :return: a list of shader nodes for which filter is true """ - print("FROM SOCKET call", start_socket.socket.name, start_socket.group_path) - print(shader_node_filter.type) # hide implementation (especially the search path) def __search_from_socket(start_socket: bpy.types.NodeSocket, shader_node_filter: typing.Union[Filter, typing.Callable], @@ -104,10 +102,7 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, continue if linked_node.type == "GROUP_INPUT": - group_ = linked_node.id_data - socket_interface = [sock for sock in group_.inputs if sock.name == link.from_socket.name][0] - print("ju", socket_interface.identifier ,[sock for sock in group_path[-1].inputs if sock.identifier == socket_interface.identifier]) - socket = [sock for sock in group_path[-1].inputs if sock.identifier == socket_interface.identifier][0] + socket = [sock for sock in group_path[-1].inputs if sock.name == link.from_socket.name][0] linked_results = __search_from_socket(socket, shader_node_filter, search_path + [link], group_path[:-1]) if linked_results: # add the link to the current path @@ -158,18 +153,20 @@ def get_const_from_default_value_socket(socket, kind): return socket.socket.default_value return None +#TODOSNode : @cached? def get_material_nodes(node_tree: bpy.types.NodeTree, group_path, type): """ For a given tree, recursively return all nodes including node groups. """ - print("GET MATERIAL NODES", type) + nodes = [] for node in [n for n in node_tree.nodes if isinstance(n, type) and not n.mute]: nodes.append((node, group_path.copy())) for node in [n for n in node_tree.nodes if n.type == "GROUP" and not n.mute]: - group_path.append(node) - nodes.extend(get_material_nodes(node.node_tree, group_path, type)) + new_group_path = group_path.copy() + new_group_path.append(node) + nodes.extend(get_material_nodes(node.node_tree, new_group_path, type)) return nodes @@ -181,10 +178,9 @@ def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, nam :param name: the name of the socket :return: a blender NodeSocket """ - print("GET MATERIAL GLTF NODES", str) gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_name().lower()] if blender_material.node_tree and blender_material.use_nodes: - nodes = get_material_nodes(blender_material.node_tree, [], bpy.types.ShaderNodeGroup) + nodes = get_material_nodes(blender_material.node_tree, [blender_material], bpy.types.ShaderNodeGroup) nodes = [n for n in nodes if n[0].node_tree.name.startswith('glTF Metallic Roughness') or n[0].node_tree.name.lower() in gltf_node_group_names] inputs = sum([[(input, node[1]) for input in node[0].inputs if input.name == name] for node in nodes], []) if inputs: @@ -209,7 +205,7 @@ def get_node_socket(blender_material, type, name): :param blender_material: a blender material for which to get the socket :return: a blender NodeSocket for a given type """ - nodes = get_material_nodes(blender_material.node_tree, [], type) + nodes = get_material_nodes(blender_material.node_tree, [blender_material], type) #TODOSNode : Why checking outputs[0] ? What about alpha for texture node, that is outputs[1] ???? nodes = [node for node in nodes if check_if_is_linked_to_active_output(node[0].outputs[0], node[1])] inputs = sum([[(input, node[1]) for input in node[0].inputs if input.name == name] for node in nodes], []) @@ -410,7 +406,6 @@ def check_if_is_linked_to_active_output(shader_socket, group_path): # If we are entering a node group if link.to_node.type == "GROUP": - print("Entering a group") socket_name = link.to_socket.name sockets = [n for n in link.to_node.node_tree.nodes if n.type == "GROUP_INPUT"][0].outputs socket = [s for s in sockets if s.name == socket_name][0] From 507df7f06633efb1b2c3fb0fb8a7b2e93c89b665 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 13:41:29 +0200 Subject: [PATCH 19/43] restore old group node --- .../blender/com/gltf2_blender_material_helpers.py | 4 ++++ ...nder_gather_materials_pbr_metallic_roughness.py | 14 ++++++++++++-- .../blender/exp/gltf2_blender_search_node_tree.py | 7 ++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py b/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py index c64ac795c..8a6c5f403 100644 --- a/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py +++ b/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py @@ -17,6 +17,10 @@ # Get compatibility at export with old files def get_gltf_node_old_name(): return "glTF Settings" + +# Old group name +def get_gltf_old_group_node_name(): + return "glTF Metallic Roughness" def get_gltf_node_name(): return "glTF Material Output" diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py index 2119fe3ad..4b4b0303a 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py @@ -17,6 +17,7 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info from io_scene_gltf2.blender.exp.gltf2_blender_search_node_tree import \ + get_socket_from_gltf_material_node, \ has_image_node_from_socket, \ get_const_from_default_value_socket, \ get_socket, \ @@ -72,10 +73,11 @@ def __gather_base_color_factor(blender_material, export_settings): else: alpha = get_const_from_default_value_socket(alpha_socket, kind='VALUE') - #TODOSNodes : remove this old compatibility hack base_color_socket = get_socket(blender_material, "Base Color") if base_color_socket.socket is None: base_color_socket = get_socket(blender_material, "BaseColor") + if base_color_socket is None: + base_color_socket = get_socket_from_gltf_material_node(blender_material, "BaseColorFactor") if isinstance(base_color_socket.socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": rgb = get_factor_from_socket(base_color_socket, kind='RGB') @@ -95,6 +97,8 @@ def __gather_base_color_texture(blender_material, export_settings): base_color_socket = get_socket(blender_material, "Base Color") if base_color_socket.socket is None: base_color_socket = get_socket(blender_material, "BaseColor") + if base_color_socket is None: + base_color_socket = get_socket_from_gltf_material_node(blender_material, "BaseColor") alpha_socket = get_socket(blender_material, "Alpha") @@ -122,6 +126,8 @@ def __gather_metallic_factor(blender_material, export_settings): return blender_material.metallic metallic_socket = get_socket(blender_material, "Metallic") + if metallic_socket is None: + metallic_socket = get_socket_from_gltf_material_node(blender_material, "MetallicFactor") if isinstance(metallic_socket.socket, bpy.types.NodeSocket): fac = get_factor_from_socket(metallic_socket, kind='VALUE') return fac if fac != 1 else None @@ -136,7 +142,9 @@ def __gather_metallic_roughness_texture(blender_material, orm_texture, export_se hasRough = roughness_socket.socket is not None and has_image_node_from_socket(roughness_socket, export_settings) if not hasMetal and not hasRough: - return None, None, None + metallic_roughness = get_socket_from_gltf_material_node(blender_material, "MetallicRoughness") + if metallic_roughness is None or not has_image_node_from_socket(metallic_roughness, export_settings): + return None, None, None elif not hasMetal: texture_input = (roughness_socket,) elif not hasRough: @@ -156,6 +164,8 @@ def __gather_roughness_factor(blender_material, export_settings): return blender_material.roughness roughness_socket = get_socket(blender_material, "Roughness") + if roughness_socket is None: + roughness_socket = get_socket_from_gltf_material_node(blender_material, "RoughnessFactor") if isinstance(roughness_socket.socket, bpy.types.NodeSocket): fac = get_factor_from_socket(roughness_socket, kind='VALUE') return fac if fac != 1 else None diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 23a5a8e27..3086f2529 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -19,7 +19,7 @@ import bpy from mathutils import Vector, Matrix from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached -from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name +from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name, get_gltf_old_group_node_name from ...blender.com.gltf2_blender_conversion import texture_transform_blender_to_gltf from io_scene_gltf2.io.com import gltf2_io_debug import typing @@ -126,6 +126,7 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, if start_socket.socket is None: return [] + print("Looking for", start_socket.socket, start_socket.group_path) return __search_from_socket(start_socket.socket, shader_node_filter, [], start_socket.group_path) @cached @@ -163,7 +164,7 @@ def get_material_nodes(node_tree: bpy.types.NodeTree, group_path, type): for node in [n for n in node_tree.nodes if isinstance(n, type) and not n.mute]: nodes.append((node, group_path.copy())) - for node in [n for n in node_tree.nodes if n.type == "GROUP" and not n.mute]: + for node in [n for n in node_tree.nodes if n.type == "GROUP" and not n.mute and n.node_tree.name != get_gltf_old_group_node_name()]: # Do not enter the olf glTF node group new_group_path = group_path.copy() new_group_path.append(node) nodes.extend(get_material_nodes(node.node_tree, new_group_path, type)) @@ -181,7 +182,7 @@ def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, nam gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_name().lower()] if blender_material.node_tree and blender_material.use_nodes: nodes = get_material_nodes(blender_material.node_tree, [blender_material], bpy.types.ShaderNodeGroup) - nodes = [n for n in nodes if n[0].node_tree.name.startswith('glTF Metallic Roughness') or n[0].node_tree.name.lower() in gltf_node_group_names] + nodes = [n for n in nodes if n[0].node_tree.name.lower().startswith(get_gltf_old_group_node_name()) or n[0].node_tree.name.lower() in gltf_node_group_names] inputs = sum([[(input, node[1]) for input in node[0].inputs if input.name == name] for node in nodes], []) if inputs: return NodeSocket(inputs[0][0], inputs[0][1]) From 61891de8f083d877a82b73ce78e3696606f5e811 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 15:53:34 +0200 Subject: [PATCH 20/43] WIP --- .../exp/gltf2_blender_gather_sampler.py | 19 ++++++++++++++++--- .../exp/gltf2_blender_gather_texture.py | 17 ++++++++++++++++- .../exp/gltf2_blender_gather_texture_info.py | 18 +++++++++--------- .../exp/gltf2_blender_search_node_tree.py | 14 +++++++------- 4 files changed, 48 insertions(+), 20 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py index 83dd0abf6..f2ae7a6b8 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py @@ -26,7 +26,20 @@ @cached -def gather_sampler(blender_shader_node: bpy.types.Node, group_path, export_settings): +def gather_sampler(blender_shader_node: bpy.types.Node, group_path_str, export_settings): + + # reconstruct group_path from group_path_str + sep_item = "##~~gltf-sep~~##" + sep_inside_item = "##~~gltf-inside-sep~~##" + group_path = [] + tab = group_path_str.split(sep_item) + if len(tab) > 0: + group_path.append(bpy.data.materials[tab[0]]) + for i in tab[1:]: + subtab = i.split(sep_inside_item) + group_path.append(bpy.data.node_groups[subtab[0]].node_tree.nodes[subtab[1]]) + + wrap_s, wrap_t = __gather_wrap(blender_shader_node, group_path, export_settings) sampler = gltf2_io.Sampler( @@ -93,9 +106,9 @@ def __gather_name(blender_shader_node, export_settings): def __gather_wrap(blender_shader_node, group_path, export_settings): # First gather from the Texture node - if blender_shader_node.node.extension == 'EXTEND': + if blender_shader_node.extension == 'EXTEND': wrap_s = TextureWrap.ClampToEdge - elif blender_shader_node.node.extension == 'CLIP': + elif blender_shader_node.extension == 'CLIP': # Not possible in glTF, but ClampToEdge is closest wrap_s = TextureWrap.ClampToEdge else: diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py index b7ec88c0b..160946abe 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -85,9 +85,24 @@ def __gather_sampler(blender_shader_sockets, export_settings): "More than one shader node tex image used for a texture. " "The resulting glTF sampler will behave like the first shader node tex image.") first_valid_shader_node = next(filter(lambda x: x is not None, shader_nodes)) + + # group_path can't be a list, so transform it to str + + sep_item = "##~~gltf-sep~~##" + sep_inside_item = "##~~gltf-inside-sep~~##" + group_path_str = "" + if len(first_valid_shader_node.group_path) > 0: + group_path_str += first_valid_shader_node.group_path[0].name + if len(first_valid_shader_node.group_path) > 1: + for i in first_valid_shader_node.group_path[1:]: + group_path_str += sep_item + group_path_str += i.id_data.name + group_path_str += sep_inside_item + group_path_str += i.name + return gltf2_blender_gather_sampler.gather_sampler( first_valid_shader_node.shader_node, - first_valid_shader_node.group_path, + group_path_str, export_settings) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index 9b04a32dd..f1600e0f7 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -140,10 +140,10 @@ def __gather_occlusion_strength(primary_socket, export_settings): # Look for a MixRGB node that mixes with pure white in front of # primary_socket. The mix factor gives the occlusion strength. node = previous_node(primary_socket) - if node and node.type == 'MIX_RGB' and node.blend_type == 'MIX': - fac = get_const_from_socket(node.inputs['Fac'], kind='VALUE') - col1 = get_const_from_socket(node.inputs['Color1'], kind='RGB') - col2 = get_const_from_socket(node.inputs['Color2'], kind='RGB') + if node.node and node.node.type == 'MIX_RGB' and node.node.blend_type == 'MIX': + fac = get_const_from_socket(NodeSocket(node.inputs['Fac'], node.group_path), kind='VALUE') + col1 = get_const_from_socket(NodeSocket(node.inputs['Color1'], node.group_path), kind='RGB') + col2 = get_const_from_socket(NodeSocket(node.inputs['Color2'], node.group_path), kind='RGB') if fac is not None: if col1 == [1, 1, 1] and col2 is None: return fac @@ -165,20 +165,20 @@ def __gather_texture_transform_and_tex_coord(primary_socket, export_settings): # # The [UV Wrapping] is for wrap modes like MIRROR that use nodes, # [Mapping] is for KHR_texture_transform, and [UV Map] is for texCoord. - result = get_texture_node_from_socket(primary_socket, export_settings) - blender_shader_node = result.shader_node + result_tex = get_texture_node_from_socket(primary_socket, export_settings) + blender_shader_node = result_tex.shader_node # Skip over UV wrapping stuff (it goes in the sampler) - result = detect_manual_uv_wrapping(blender_shader_node, result.group_path) + result = detect_manual_uv_wrapping(blender_shader_node, result_tex.group_path) if result: node = previous_node(result['next_socket']) else: - node = previous_node(NodeSocket(blender_shader_node.inputs['Vector'], result.group_path)) + node = previous_node(NodeSocket(blender_shader_node.inputs['Vector'], result_tex.group_path)) texture_transform = None if node.node and node.node.type == 'MAPPING': texture_transform = get_texture_transform_from_mapping_node(node) - node = previous_node(NodeSocket(node.inputs['Vector'], node.group_path)) + node = previous_node(NodeSocket(node.node.inputs['Vector'], node.group_path)) texcoord_idx = 0 use_active_uvmap = True diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 3086f2529..89e2619f0 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -306,7 +306,7 @@ def previous_socket(socket: NodeSocket): group_path = socket.group_path.copy() while True: if not soc.is_linked: - return None + return NodeSocket(None, None) from_socket = soc.links[0].from_socket from_node = soc.links[0].from_node @@ -340,7 +340,7 @@ def get_texture_transform_from_mapping_node(mapping_node): return None - rotation_0, rotation_1 = mapping_node.inputs['Rotation'].default_value[0], mapping_node.inputs['Rotation'].default_value[1] + rotation_0, rotation_1 = mapping_node.node.inputs['Rotation'].default_value[0], mapping_node.node.inputs['Rotation'].default_value[1] if rotation_0 or rotation_1: # TODO: can we handle this? gltf2_io_debug.print_console("WARNING", @@ -350,11 +350,11 @@ def get_texture_transform_from_mapping_node(mapping_node): return None mapping_transform = {} - mapping_transform["offset"] = [mapping_node.inputs['Location'].default_value[0], mapping_node.inputs['Location'].default_value[1]] - mapping_transform["rotation"] = mapping_node.inputs['Rotation'].default_value[2] - mapping_transform["scale"] = [mapping_node.inputs['Scale'].default_value[0], mapping_node.inputs['Scale'].default_value[1]] + mapping_transform["offset"] = [mapping_node.node.inputs['Location'].default_value[0], mapping_node.node.inputs['Location'].default_value[1]] + mapping_transform["rotation"] = mapping_node.node.inputs['Rotation'].default_value[2] + mapping_transform["scale"] = [mapping_node.node.inputs['Scale'].default_value[0], mapping_node.node.inputs['Scale'].default_value[1]] - if mapping_node.vector_type == "TEXTURE": + if mapping_node.node.vector_type == "TEXTURE": # This means use the inverse of the TRS transform. def inverted(mapping_transform): offset = mapping_transform["offset"] @@ -384,7 +384,7 @@ def inverted(mapping_transform): ) return None - elif mapping_node.vector_type == "VECTOR": + elif mapping_node.node.vector_type == "VECTOR": # Vectors don't get translated mapping_transform["offset"] = [0, 0] From c837aabb2a1f812af553baeec86e24960dd18cd2 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 15:58:22 +0200 Subject: [PATCH 21/43] fix typo --- .../blender/exp/gltf2_blender_gather_materials_sheen.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py index ac3bfbd19..67eab77af 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py @@ -25,6 +25,7 @@ def export_sheen(blender_material, export_settings): sheen_extension = {} sheenColor_socket = get_socket(blender_material, "sheenColor") + print("sheenColor_socket", sheenColor_socket) sheenRoughness_socket = get_socket(blender_material, "sheenRoughness") if sheenColor_socket.socket is None or sheenRoughness_socket.socket is None: @@ -37,7 +38,7 @@ def export_sheen(blender_material, export_settings): use_actives_uvmaps = [] if sheenColor_non_linked is True: - color = sheenColor_socket.socket.socket.default_value[:3] + color = sheenColor_socket.socket.default_value[:3] if color != (0.0, 0.0, 0.0): sheen_extension['sheenColorFactor'] = color else: From c833eff91e01637fcf2c8066b0e8fcfe27fc4e47 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 16:49:19 +0200 Subject: [PATCH 22/43] more fixes --- .../gltf2_blender_gather_materials_unlit.py | 25 +++++++++++++------ .../gltf2_blender_gather_materials_volume.py | 2 +- .../exp/gltf2_blender_gather_sampler.py | 6 ++--- .../exp/gltf2_blender_gather_texture_info.py | 6 ++--- .../exp/gltf2_blender_search_node_tree.py | 2 -- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py index 7b14fc83d..0d9c1cb58 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py @@ -49,23 +49,31 @@ def detect_shadeless_material(blender_material, export_settings): else: return None + socket = NodeSocket(socket, []) + # Be careful not to misidentify a lightpath trick as mix-alpha. - result = __detect_lightpath_trick(NodeSocket(socket, [])) + result = __detect_lightpath_trick(socket) + print(">0") if result is not None: + print(">1") socket = result['next_socket'] else: - result = __detect_mix_alpha(NodeSocket(socket, [])) + print(">2") + result = __detect_mix_alpha(socket) if result is not None: + print(">3") socket = result['next_socket'] + print("ici:::::", socket) info['alpha_socket'] = result['alpha_socket'] - result = __detect_lightpath_trick(NodeSocket(socket, [])) + result = __detect_lightpath_trick(socket) if result is not None: + print(">4") socket = result['next_socket'] # Check if a color socket, or connected to a color socket - if socket.type != 'RGBA': - from_socket = previous_socket(NodeSocket(socket, [])) + if socket.socket.type != 'RGBA': + from_socket = previous_socket(socket) if from_socket.socket is None: return None if from_socket.socket.type != 'RGBA': return None @@ -105,11 +113,12 @@ def __detect_lightpath_trick(socket): # The Emission node can be omitted. # Returns None if not detected. Otherwise, a dict containing # next_socket. + print("socket:::::::", socket) prev = previous_node(socket) if prev.node is None or prev.node.type != 'MIX_SHADER': return None - in0 = previous_socket(NodeSocket(prev.inputs[0], prev.group_path)) - if in0.node is None or in0.node.type != 'LIGHT_PATH': return None - if in0.node.name != 'Is Camera Ray': return None + in0 = previous_socket(NodeSocket(prev.node.inputs[0], prev.group_path)) + if in0.socket is None or in0.socket.type != 'LIGHT_PATH': return None + if in0.socket.name != 'Is Camera Ray': return None next_socket = NodeSocket(prev.node.inputs[2], prev.group_path) # Detect emission diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py index 1eafff3b8..c6f4100d7 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_volume.py @@ -59,7 +59,7 @@ def export_volume(blender_material, export_settings): volume_extension['attenuationDistance'] = 1.0 / density if density != 0 else None # infinity (Using None as glTF default) - if isinstance(thickness_socket.socket, bpy.types.NodeSocket) and not thickness_socket.is_linked: + if isinstance(thickness_socket.socket, bpy.types.NodeSocket) and not thickness_socket.socket.is_linked: val = thickness_socket.socket.default_value if val == 0.0: # If no thickness, no volume extension export diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py index f2ae7a6b8..fe2e9d5eb 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py @@ -152,13 +152,13 @@ def detect_manual_uv_wrapping(blender_shader_node, group_path): if node.node.type == 'SEPXYZ': # Passed through without change wrap = None - prev_socket = previous_socket(comb.inputs[soc]) + prev_socket = previous_socket(NodeSocket(comb.node.inputs[soc], comb.group_path)) elif node.node.type == 'MATH': # Math node applies a manual wrap if (node.node.operation == 'PINGPONG' and get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind='VALUE') == 1.0): # scale = 1 wrap = TextureWrap.MirroredRepeat - elif (node.operation == 'WRAP' and + elif (node.node.operation == 'WRAP' and get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind='VALUE') == 0.0 and # min = 0 get_const_from_socket(NodeSocket(node.node.inputs[2], node.group_path), kind='VALUE') == 1.0): # max = 1 wrap = TextureWrap.Repeat @@ -173,7 +173,7 @@ def detect_manual_uv_wrapping(blender_shader_node, group_path): prev_node = prev_socket.socket.node if prev_node.type != 'SEPXYZ': return None # Make sure X goes to X, etc. - if prev_socket.name != soc: return None + if prev_socket.socket.name != soc: return None # Make sure both attach to the same SeparateXYZ node if soc == 'X': sep = prev_node diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index f1600e0f7..d939cbdef 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -141,9 +141,9 @@ def __gather_occlusion_strength(primary_socket, export_settings): # primary_socket. The mix factor gives the occlusion strength. node = previous_node(primary_socket) if node.node and node.node.type == 'MIX_RGB' and node.node.blend_type == 'MIX': - fac = get_const_from_socket(NodeSocket(node.inputs['Fac'], node.group_path), kind='VALUE') - col1 = get_const_from_socket(NodeSocket(node.inputs['Color1'], node.group_path), kind='RGB') - col2 = get_const_from_socket(NodeSocket(node.inputs['Color2'], node.group_path), kind='RGB') + fac = get_const_from_socket(NodeSocket(node.node.inputs['Fac'], node.group_path), kind='VALUE') + col1 = get_const_from_socket(NodeSocket(node.node.inputs['Color1'], node.group_path), kind='RGB') + col2 = get_const_from_socket(NodeSocket(node.node.inputs['Color2'], node.group_path), kind='RGB') if fac is not None: if col1 == [1, 1, 1] and col2 is None: return fac diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 89e2619f0..6b6d6d283 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -126,7 +126,6 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, if start_socket.socket is None: return [] - print("Looking for", start_socket.socket, start_socket.group_path) return __search_from_socket(start_socket.socket, shader_node_filter, [], start_socket.group_path) @cached @@ -301,7 +300,6 @@ def get_const_from_socket(socket, kind): def previous_socket(socket: NodeSocket): - soc = socket.socket group_path = socket.group_path.copy() while True: From d01d799debc52b898f6d7dd61263aaca484f9544 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 17:16:49 +0200 Subject: [PATCH 23/43] more fixes --- .../gltf2_blender_gather_materials_sheen.py | 1 - .../gltf2_blender_gather_materials_unlit.py | 7 ------- .../exp/gltf2_blender_gather_sampler.py | 10 +++++++--- .../exp/gltf2_blender_gather_texture.py | 9 +++++++-- tests/scenes/22_node_groups.blend | Bin 1184324 -> 1299296 bytes 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py index 67eab77af..d5d285284 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_sheen.py @@ -25,7 +25,6 @@ def export_sheen(blender_material, export_settings): sheen_extension = {} sheenColor_socket = get_socket(blender_material, "sheenColor") - print("sheenColor_socket", sheenColor_socket) sheenRoughness_socket = get_socket(blender_material, "sheenRoughness") if sheenColor_socket.socket is None or sheenRoughness_socket.socket is None: diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py index 0d9c1cb58..6446c0b05 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py @@ -53,22 +53,16 @@ def detect_shadeless_material(blender_material, export_settings): # Be careful not to misidentify a lightpath trick as mix-alpha. result = __detect_lightpath_trick(socket) - print(">0") if result is not None: - print(">1") socket = result['next_socket'] else: - print(">2") result = __detect_mix_alpha(socket) if result is not None: - print(">3") socket = result['next_socket'] - print("ici:::::", socket) info['alpha_socket'] = result['alpha_socket'] result = __detect_lightpath_trick(socket) if result is not None: - print(">4") socket = result['next_socket'] # Check if a color socket, or connected to a color socket @@ -113,7 +107,6 @@ def __detect_lightpath_trick(socket): # The Emission node can be omitted. # Returns None if not detected. Otherwise, a dict containing # next_socket. - print("socket:::::::", socket) prev = previous_node(socket) if prev.node is None or prev.node.type != 'MIX_SHADER': return None in0 = previous_socket(NodeSocket(prev.node.inputs[0], prev.group_path)) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py index fe2e9d5eb..b0f3d2830 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py @@ -27,7 +27,8 @@ @cached def gather_sampler(blender_shader_node: bpy.types.Node, group_path_str, export_settings): - + print("str") + print(group_path_str) # reconstruct group_path from group_path_str sep_item = "##~~gltf-sep~~##" sep_inside_item = "##~~gltf-inside-sep~~##" @@ -35,9 +36,12 @@ def gather_sampler(blender_shader_node: bpy.types.Node, group_path_str, export_s tab = group_path_str.split(sep_item) if len(tab) > 0: group_path.append(bpy.data.materials[tab[0]]) - for i in tab[1:]: + for idx, i in enumerate(tab[1:]): subtab = i.split(sep_inside_item) - group_path.append(bpy.data.node_groups[subtab[0]].node_tree.nodes[subtab[1]]) + if idx == 0: + group_path.append(bpy.data.materials[tab[0]].node_tree.nodes[subtab[1]]) + else: + group_path.append(bpy.data.node_groups[subtab[0]].nodes[subtab[1]]) wrap_s, wrap_t = __gather_wrap(blender_shader_node, group_path, export_settings) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py index 160946abe..a73ef95ac 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -88,15 +88,20 @@ def __gather_sampler(blender_shader_sockets, export_settings): # group_path can't be a list, so transform it to str + print("tab") + print(first_valid_shader_node.group_path) sep_item = "##~~gltf-sep~~##" sep_inside_item = "##~~gltf-inside-sep~~##" group_path_str = "" if len(first_valid_shader_node.group_path) > 0: group_path_str += first_valid_shader_node.group_path[0].name if len(first_valid_shader_node.group_path) > 1: - for i in first_valid_shader_node.group_path[1:]: + for idx, i in enumerate(first_valid_shader_node.group_path[1:]): group_path_str += sep_item - group_path_str += i.id_data.name + if idx == 0: + group_path_str += first_valid_shader_node.group_path[0].name + else: + group_path_str += i.id_data.name group_path_str += sep_inside_item group_path_str += i.name diff --git a/tests/scenes/22_node_groups.blend b/tests/scenes/22_node_groups.blend index cb467af47886cebf6ffcc9d867f8189cad3466c4..33c8db3a1d9d7edd3689cc812ed2cb63473bd070 100644 GIT binary patch delta 149873 zcmd4433yf2)jynb@43l|5=|tLAc=s0UL+t*1E%ye&7Fl`aIv$ z_~1T!t=}5<+Veicedg}))$gBpTW#j4nR_+2`GJx@5{`^O#|{$`(j_L=EcPVutq)}Q!TCOvhk>)JTJc3pJp`jq#zb#3jR zdYP|%{p-8va(3Zz&Q)G;%B)$tz7j>dx}G{}QP+g_ib}u)diMKXRX!`EbN}uQC?PSK z{@rrxt-DS;?X<2F=S=8YHplO}<-GM>)dvpks%{$86`g-~|J}*ldfUofUtc$M?rTXa zV=nl+xjVe`Bd?r=Z@sN+ROf+RlP;`YH|N5qy)=ssUhtvkt?W8vL37un1%uXgUUHw; zb?AaooFQPJ^sTr3*Sbp=c6lPnL}lEx;;ZYfy6mf7*MSR;5aNQybxSVa+v|$1J-qAj zE5>xyT{5z3)Fpud)-Ahop4avAlAx>dvUx-toBs0kH@fB1(*wF*z4zv>(M$ZU(W@G| zPFiw10WRtqw6N8Ed3t(3VP3tq%e!(Z5u1vL*WT)#)AiG9PwVn7zba3@YxL5TcgVWt z<-01plh-w`sIBnEcD=ItFWwbh%`4k7w^0;UcK!XPVO@8u{O|Pm@r%1&UHyL7Azepx zy|-d4)$ht(SFc;swZWt8G3y?={Wp9uHcj+(KXF%j>6>rf)m5FX@0z}9cGr71?O$>8 zEw}Ev;>xSmJ-@1akMhZrZ=yEj1~1uT*1A{k-QVj9@9E=z<)#%Mbxr#2+^)y(sZ33t zeAgl0@Tf>%>pJD$L0z5qw61&P-bXzz-F5z&Y2Ng853YIhG-Tb{if@k8{<(uJB#9+?#T0SboGW zSRnQ#wS1H*rDsoV1}>QfJ->LCiVoz_#)ZV66Scpzc z17enX&y&2RS@x4mW#^0mK0dQ3b=&v!YW=7F_-r{}^&J^pv=2a2+D>U3L>kS{{nBM+ z9_8axe+p&21D{tBw{Tz2cjxx;GJRML8Jd_PtXn?DtF6`2&1DKpbKY&6<<+@|`gnUa zB2N;=-%%VDx22CapwUPM$!efPRZSH^jAW2@g+SCzV~CLq5-9|tD7mZNoDLd|Zn*V| zgS>l;RT;@3y$XS-+fI-SNUmltuWtruH+(N|z(}jwc^ZsRtD541KWhq7vh90$wM~jJ ziN%^XO%^^W=<*{!FVUkCX3L_PWvAVS-AHU!3A1HhiGi+E_vn zR*n|Un=K$oLV~q?Hxl{oppsSzy(mZX-qePf<7#g4`qr6xb3{SaUTv%Prc12~v{&u6 z3do_-a4oO)nwsja-^6Xav-vM*>)q;*rNQf)K#$&}lw0};w`@@=aLf96K?Xvue~mY= z&TxyYXS~7q88zP4+J0goI_R)_*%DILbaYjqJvW?9J=oO@PYw02e^SgGHnQdMBV)#M z&+Vbk7PCgmn+148d02LJeZ3dVQZPa+Ar(uVn_Ho*=LJfcG$a${P1W`MwA7Ro*83*a z0*dist@nbzFBO9&XH~^7in89{<(0*z>_{Fyf(*jvuHDx=GJ}!MEqcJ~JIn?@tH_de zLPe2^rE2Nx2G!9Zw6LE3SKZI6Y3i#n)LM$QmMjh5lGq?+CyQ$-Vj=gne%`>0@YnY9 z-l?rsjZ5~IL6=k4F)B5s&+nylF^BB-wNxiJSe?{$zfcHNmKquCyG8w}n8C?3kh-<~ zz2_U_M>osBtmzK*7Abpoi2LQ={lIP9&uhp4>^AN1HTdIb0(3P4yyG*1>=@t;7}lvn zs43-Pm;X+mMKb_p!dYy0^#HP)T_<+)>CrOhWI1KK<6P?n<$c`a`+GG$W5w)*yjcO3 zm^EEVv(YJRc4Z@(?d_g|wqJluT0pJ={|zQj*PL8n|5;q zJ&{6hs_SeHg^A^Zy{^XWr;o`BXXPLA({2xmh!@QVP>*82+_VF{uQmpsDY!{iKCC|? zFqF9M2Y44%#i|dfTmBjKjCV)(sm@4#Ja@@Vf;<)FV zx~a0b=bL&vntGP3_NY}$d(|pZX>(5vr#1(^SRBI^x9`7Oi>4-NF**aS{9v*e43=_Q zT0ccP7gBBIBgi87VzGrSZW}}v8S6?Kxv5E7jAygOmM&JaNTr~+9YPkt7mIDE%!7Ap(bOa@hG((G zj?rYXS1nrFqZW}$K~Gwnra8Bn%mO5%$W+wmh~1hsT}iXi*=%;^p=353qAgd`&1x2@ zn8j4T@Gvq9u$T=|ts{49)^wWLStpd0O`=SIvAykZ@A;9zRB1SykCikCC5?~QJdY+c zwng)F;2P+bjqXD$^7kvMS56v)b#0v~u|;bOD|IzFZ%899N#0nUY7ZiA=8d%EHIhNP z6(U*&k0pqa3=%5@qHY6gF_J-cC;Ak zSRoK~GZ|tegY+l_qHYC4jAW3_3W2EGK#&YbvMmAHeN5Dm)}Hc32Kj+G*;9QDUZ$<0=vHhSTe$J<0jm_(@gye;h=B7x0o zLSnJz^R`r?o*Sye<~1SFqj|GstwbcSc}+-c*1Xw*H&k+wz~(g}5$Gstwk%fCL9lsM zgq6HS^JWWCB^x4v{*jRA)V$fUI+y;4{*jRA*1XxW)-Dq09|;MY4a}Ae2P#2z?z4p3 z_5_{EsI1j8;_8}tf2?y!et$e)<`x?ZtOl}LcWCEScJvgta-!GTaN=87X$O|REjz8~ zZ@j_L>mfFxk7?^Vyo~ z_%H8QZtPTV;)GEBwsJ(BQjS2&XZ~AUyGwd{+x4l|h88_t)HHloTnpZ#)Oinjt+h%q zXTizM{DybGml4#qiz(`i$_)5ejt(SvW(ZNMEQ>nbXu)mFB zj=YmwaFTCv^iYh`8!`GH|cVO9Dpu6)ysgETXCxQgS5}3a&2dLb9@e^TYH^% zb*^Eyx7eRxp|a2g8afMUuXZjAp$#xHh;2ICJF+o2LRzP#(M~P>_O0yHEz~-dV&w|| z$(}DchhvB9qSyuRk`(2kCD+!0xG2r!W7f=ZfgbOC#0Az67e?nc%w;Nka;q<;BOq?H z9HKMbpw>O=+=?I4c69pmRAsA{*dl@I&@OVM4Y}7|7Cpr#jGqdS|x%FT2ZcqDMyh88EQSW)*&jdJm zqD|2l_saF&H%IQ!d93pUS-o^yI#cq&Tpg3nrIalWkRzR^Ztz;`OxV`T+3DQ2up`1H z6~|cZ%%VI*WJhEqgG34uE!Ytm$sp?$0#Vr!8Ob2M3W2Cw{#J^%7)mlo{S5I1qOSQX zyv0zGK|;+#)Xiszkqoj}ArN(|8Db=Z^e6J#k~+txAt4dy0Aseys}^n> z4x0u=Sjk&7Z??>aNMO^Dkm%IB*|JvB2^-inBqX{uZ?+I4ij_$4rom@~+#@sfa3BxD z9zaLU{N#L|jH1$oXcwvBDQO_20Zoke0R7yZx6tIg@okwmEX~Lq5d}OOU?ZRun?>Ss z=Fmpq{(HB6&7+x!^Q74LkfeOTa*lQb{c_b`_imvr0aRj302Pb=ks6SD;WlrD=d!%gZ)K6Lr<0X}E{D8T5f$yfaXWIS!8P z41mJUfKiTi293F~-}Jsh#bAYQWsu(L7j_3BF0nf}DX}|1-ffFgiQR!$R=PXz61xM+ zm+THGU$Q%(e97*>D=Xa{5Wi%1;FW!DcVMx#SO*$ws{`wl)^V(f6{qs=5=7B!!+M)FX?>$|(X1|^wvz4H91$7r$Qe(30D953l1wrI|c5bNQiX<-NR)6Kg0tqjNLY zFcm(zO~3Y@&)~rp_uT#7T^SToZ{2G7t%j|{2)OoaQDvQYgYEmUJ2nK#dp88bLV(w5UD zjn0wA5zV2ruu%QxcT*E;Rn(S3J7fswgL_<(-^R+GEZShrt^97Pp+PBzXxF?b!79~A z28k2`WzM_v^Gen$0+R0I9Ie-kWJ-D!0%fjwJwc3Qka`UTMBRLb7|9@^LLll^GsH*+ zS*#FWVOlPR*Mpt3!ta=j?k><@7yva*o)tiu5uX(d&5>oeA z^(G{GHE*`y4cQP0ta=j?^`}Y6%~n=pwHPJGs#g(K@=)_;%VH%GSoJ0(7Hi&Y!5i{Q zB(UmDNc3plY*}>C)a5y^gv4gen=SK7B(UmDNCY}snXPs$`DT5^2_ z_yCz9!UK7D$8tg`HZ?>;nL|s`L2k?6yw==VKlM(enTDyP-cXRIJoNFxv@!SRr+7st zig5Q?{E`)Zw$F4U*NgvAeJxx4WYvn7Iwpb z?mgpkDRSF?&TCr>hy^In09oKlh5+)kUSo{Fx$(c?BgF%C0=6_Og$ze>2(VsPiWNH^ z&Sl#63tnyDx+o;k2$2q0Cb#A}UTql76Yu6~UTfULb&|*D9(=;9}zQ*Gym1dw6^E5gXzHGv}im!`G z8Xm6FER);*8!oBQOgI zZF4bLRN}Pob3&mp=%dfR4oR^-c*wU)0-_oJ3G3iR{656*!83_*GGweKfyb^ZUpnH^@gx+=*n+$+=A?@^q0^FQ!LWaMdlEcAc<0Wb8mv9!#VIjmFD z?Ael!&y>L`JY5(1jqafjy}kXjIsO|y^hVT~23wo%kO>m&eN}F(Y`ZE2r0pNHvNe)H z+7%*NmN3Lf28k2`QMZ;MMl#5Hg+SE3#SkMIq*oyjb%Q@5h>;9Ze}=dVQFjJIjAW2d zArN&d8Db=ZELI3a-E#~vl0kYD0#WDf@CGb3l0h~r#6+oP^{+a`RnFaP5T%AQxj^gF z^brJqhnAPh8BXO!m05!@g(mn$su~@`3<8IJ#|+a^fWCz1M;Xe`5?kA{#a6faW_W8! zQYF|ZD8eLS&6_5)66&ie!N=nXi5;3ZTWAqH=5X~pY!ng_*)z3~Djm8>LaG=W1x1)w z?V2}R*3?7-8-;{KqV55+b=+V5{G6}S3*(f9= zHf!E&Wz{Q@z(ye<5u7C@H(OSNo25SZ^$tZ?$y+p^x2644BzU8cl;~86ysZ+6X5L6A zY;^pAu@er8a*#Y!Z&fA~Ci z@D{1IRx$9H{7|jiQ?;!+uh^V=_yP+v|j$G$e0Er%4g-^{S%p$<8pmn>TqN1+R#E*+1spi|#P@ z#;o5~>YnNB)YVpWzSzjuYV|UDDTkcy?+*1-Kl9lY*A}E|hbqtn%2!Wt2RSu{C!OKoZoxBuR$ zU-*wbwtNbr-=HXyiuMsHm~_oGsRP`R)v2fbH|HNW1*K|GfCYM8CBfDr)s>waEZ>rM0(l7PL2Gw91qXrR$1ETRC^#oJ0!Qw`N!2yQtY*30Jf`Nj7 zLQ!Fl$7flo=l*Dl6v^)-5?8^|Oo& zvNb=aao5nnrtv)R3`yNzxA-_2cX_qFgN9Gchi>pt>P+FAFZ_ab%fnKAPp$vMr_$x# zeQgbQJx24>kv9L@d>qc!Ln@t@Z63DSzI4Spe^_edh#e)OS}^IP^Id+8#6@p4$Ip;kdQPYSr^z|_lqMSF0APLG_*Ox(-!3~A|kl~TOT_+6WA z>U!QR%rG(eqM{eleg5} zTd)-JjL*g91BU18;<=y56s~FTFuj%UIu1@Ja!b>k07z2G0ui^)yRDSFvanFfxz6zn=2q;>YU-BTm! zW!moM)EIxdiv7|@S#iA0@_d86(f#hwRL-Bq5E7eJwc{ljC*n8RX&Ril98J^0?ubxFE9mr5${`7R%us;yP9g)lswL$YQp4c1~MI!!B- zQ@8q`-jqJQ5{Te092o~WK3QLJeV!qCIO!I(q+V1z!Bnw>R0ivq4RCe7 zLn$VOTl03>-zl{ds9q~aJX?c+@-!cjdU1%9C)jwXJpZq0I82uboU+}+s)E0Y-R$4E zfJ7RSi6=j$+`1h_mZ|5LL4m{G?AVa-A0J5@2v*Kpv%Zbyh&dL`5y#-LTl@9Y5Z5#z z^=O)=Mz?K3>X!}5H+;yoNI`%e_uRzPi)ktdnq*aUp!klIyTn~?(&RpwfV>hCt?xd~ zM9*zJZ;I>_(IT)+gJH+0$+#G4}kz`OmcdY-gfzK-QH7D6OQfNx@4&ne>m=r^ZOk>`rz+AzTm6NCfxp&nu))^@&`Zo?G>w@`Rw-W)B&ycJoEiM z!l%nGSvBR8DEss1kb9;)uxIFY{W?7@w{=SDDbIhO)VVv4NuA|$A1Hc)dwX~4ZQng| zX*yVH{ml9u4#TM|HniHoOjZvqaLhq`JNB>`aQZq;*){ZU3muJC)13cC>N$#eS=p{# zgnv;s-kj&ZXe5T*eanIuw4aU+aDowzp;X3}_1Z6YJR+?cukO2=8L8T_3by7DH;b_7 z*8eY?Gexd8wjrG~-d$SbjZD3sayQRNjZVLj+Rtq}BR!;&{eFsk-s0AtL|@$@I<;W_ zkBhLMYNI0jUe69*(Z0f|4Cc$_BMR}Cxs9Ojr(e;Y(c1EUX`eJ-&G+aq@jcKoiM>fj zmpygvGp_o?)LHI{RI18->BQ6lRh8taMfs=j);)e=s{fSD;#ss0?S8rPwuy)FLDCcA zW=VVWW$Ae6^JuWyd*p~C_`WUJ8>8!`C_Ohw+J1$!_4bpw*YmKM3A0=_T&`z@JQfTX z)4sh>Ob(sdwjD)yu=rr%3~C=D(YDi4weIDUQeE_|kVP|7wS9&QD&SOXpfHY)Dtr(z zrt~Wo-t(I$ry?)o7S&Ua+nWyna7dvB&4Flys5Zxf{qj1hW~HtkxOC^PUA$fRkYa2p zJ6k6nyP0FE>fEwt_v-I+lx0trx~A z)@`&0##UR=CLN3tX*kN#->&*4*`7@QkUDQ#`p8W1PJZXDc$1GtYXMm=%Qv`FPfK;B z%2ICms)~UtC-u!lm*=uyi|AQL^v z1M18(QhoQeb~c|v$-O8*dvkltOdTihXN{hn@`nkvtjtiI+A2-@*vl@xV&TeWT}ZIV zP=lCAtRklBwE6R{>e_T~Yr#qe5Vv}Es_&jAeafYmy45H5nE=!`&rJDs))8!nDjkAC zSnrz8OdaplyG4`yFJy#FyVP2rdyezwq@HQe?rYr{;}`WobaU<+-(5M$cQ>4sYWBBK zFU1lqBZC}IIWttetZYzQ*;6f3%9cIzv$C>#kAC#qL!LR|iw8{Ecx3%Ee%aecrzn)% z`}yx7jw$^Gny-*7<=tP-PK_?FOg-#Xrre-&QiCcP!(+0H79*LZ(xmQTyDSTSr(;{A zj3B|j+{Vd!Iu8Ez3m7bVXFjT3vM#<+1_!lEeO*Vpf#c05^AUa)4Grg#Ngeykenft; z2bcmdia7dI#Ogk}>c?)u4ep@jLZGWbOQX(m8R$55Gdoge)&;XEba=y%eUwc}(!wi=CFct)bd z-~GAP^HZMJztg4EZ%2BjM=m?${t z#abx0^9!lv^q7Uv4Hq9JdFaipnxCS_pqb>bh-WY_W$to2FG@Y`28{>(*fYOf}zJ zURW*cvrk#s^mNf`AuS(xGJJ4|ZqQzm#X{7kML$|n_racCbyc`l*9nhODtk1=S;#`h zy9qx?52i;VcrnoLc$)Y5uRs6qsgr5N5K})q+3h;P8<3_iKk^D;VCv5)_sWda{v(M% zEmoEWd~JV0Mn6dPl1#i2r?NCSnR*R1md;t+d$2Tk;&r;Bu60;l{6S&P#5ND^@vv~X zIt~MHi?4Q07K5{7VYBS_M^7d9r)v=&a%AM_qc}h4aq8eAL{I%R5G0+;RE5%jS11_~MxdU3$gk z2c0$Ql1rD)op;XVm(80;mviS49rMmXXOR+C&d!-L=3K8jXHK6;82VOBS$3GLtN5D# zSpFnRjn1^sJGb=z(YxI{H){Ueb5Nd3Ixe19aMT<#N9)hg+urK%$>hLH`WLCAd|gIS zho`3$F_`{&PyZc9)nT>8Q8nk5nzx~PYo)NT_Wp~o8vWmNc4?u`3t^?EPzb9zW{xga zN38^0$Lwr)pwvHK^Pknf(V6!7sQz2^f5jK)UG~L%Lp8_D(H?cw3UC}bFpd88sH1$H zum9;q45okH(|@D>NuTv5bIP1t8k{7fyLo>Afd|vS&FVd0^B*f1N~zJAW==|HpjtcU z3%qQkDm{TRpYO_M%Z!r>_tP=y%t-T!74l#GzZkbb=W(lFoy|(?ZPXi0<&bsE1Am}T z1Wp>84u)p$-s3ww0W7{pQXA0Bk%<#04x*LFPS-guJ!sf<2bY!cKQ1cI2*FgD;A{em zkKqYy{EXC~RGG|RspHeKolQlspRCBpCO7D!bma)vK^~dT@HokvEh#^3K+6vO z8E-%@ch7Xt3iyr_Q$sykCY?x!sI#9;#ctV`(v=M=Yr2BzqD%awx#HVZJlFHT8v6HB zx4e^XcVG8V`cD}^@kY-KRYIo*lgpNkq~Uxh8UOmxlP>=C(Fn~>D5(ss*l?NvRaK!le0@pgAQ4(BE@Re)nAmZ3dj{e zc$GRJBiwBrsaf8o&O5Mb9DSJ>^;J8gw7#MfDUbE&y}TZ6M83E_XKEd=9M+@v@_Mu} zRC>OyW(iL8*?ROAdKy|828>S;AQa>mq|4|*b7dGXI!%C3z$;RI9F=Jf&-*gEXi56+ z+p?S}{$>Z$bVJy=or|l9Fn>BB?pgS*tr|l9FfwnQTWnM)HaT`B7rwA)~ zi{{Oi#Y!abv|U1?Q}bras#+xQv|U2NTE5w8DQR^4G^)=M`ZBr-TX;}tx1Aqs(~e_j z#ewFnVVFdTLliC)Nj^yRTk79L2{aAcWx$Bf#2~@1Yb(WulwdY-au2@3AEe?-5;hiu zC=VsMmDllTBZ{yAhTzO)yenpFj$Y1r&D}ZKAD%2m$m0O%v2nrNN5Pq{(USP$dsK%> z`;II+!jLNOOk$q%U`Z=lx3!kIHrF@QxFUcET8Qew@ zuLkQs;f3=$yED$N@yRIys&5`^6DetNR0@kNnhbwLsI_64#5Az9Lt+}w=a}M^C#6_S zClWOH<1ieDB| znqlA}*@kRx(Mq&Kc#U?*Xr5)h>o#_!e&v6#n^_Mud0FTiDSBCmLr{9VhUPbX0vB&L z?EjsVvtgwER0&(CY4&u$KZt2`#1Q6@ghY?#E#&Z;f+mJH@U!FziOrffThN`Cz&w(W2u_p0 zn=Pvt*piQ$D8kCoqIt8G)$oW{m`4&4otigWsATd=N{)FXA zH(TbFO7K(L35gw=H(T(ZysGC2$y3`232X9Z3;yRN@YFVU3VCWI$_z_;r9DHhJ&@pKm zgE&u$jSor6LleKz+K{{P`zikLfvDsU8$ty>wKAnAMW0$>BM z#MrAe!vw6E9brBA0El~aCLLzJ`*4cB2LZEq_l?EyxJvH8wGy13|9t2E1C zV#uAFOZimq$}lCtwE`4n%hzM>QJP_5c7c>bHrMuJ%sp@ma}T3)-s8N!VBg)ZmZlG* zTY5jBbNp>jq^1w|@s;!DH)+$P^G0^IRCBwgJ!eZkoT>B4^pg3+J@q4RLaoZ$SRF}s z%Xvc^5}fs#ZwF##&TB{_dKIBM-lB0np`*TCJc2H_fpsXw?1!3%E}l+4hghr#=#me& z8OfCNC#>}8#^>_wrqgvM9H`B#zyumiIv$x&5>6k zfp;hsVX`c?rBjnUIJyZ?>%D(hutvLl|0nE*|O-01o}rpVzK7U7NSaCWx21)cgYhH`3Xwt@INoX z{ljODoNbtTIFJWzx|+^5bbhl{Qgl-3>d%@|NwXylX!x$}Jz6Eas0%+$qh&HR2RBeE zhXP8m$vgZqbFlFH#`}Cg%X!jid`PklmdmaEfG2m=#%n%C=V;AGlRKNVFYBq}R*?8a zDTqzri?vT!yDc5%IzFa?jF%Q3X&T=sZbdgyD$5Ba+|4-k%f8I;@fDf`Eo z^pgaI!;PqLxN%$Ja0B`O(68xfJT1O~=B>e$^i`@nYmY7HCEIqT=$jo{+I+e~0vvpm z1B@>}D8&K{&JS0l`D^9?Vd2Z5+{{#(zn`HhzboI*pr6kPT$7)!X-#+=o*=EkT7@-d zYZav>2q$dM5YO#2MQca(HuspvUvRYRUe1i*1S_(G*A^%$On+e1( zc~ye)r^_9gJpR=LUcSjF8d>4zKDwx1V9zVyXJd*TD195{^A03F>R9}dNE84L6e;|F zbD*b39_7qCor9L&VMD5FDw4B3gYjP z$k!(F`zP}HV;X&J=+=BK&|^Us47 zkCgmn{NlX+fO6j9Llbkwm_)wC@}vZl!9*iyo`15f$UwxurBV^7z%s zqP+c#aNa@wfk5W-KXxGG-|j0Cz%T0+QEw>m~KBenTF3G^BEmEV@p#kJt=RSDO>v2;|O6%ZMwB#p`LJR z8s4VsyW4qvhZU((Y<(B}7q8?7*U|c}5!a;OcyX6VLrdCgk+$zNi7&9l=b|~)+a4k=)Gb&ekIM+9J>}$uQhc^6+r|_~&=cn-M zeKzZ=#-^wD)f0ftnifA<*X;8c>gc3MRwJ1%YEy#9`3g4L<{01){d#{{HX^P&ZJQjKH=Vue7P{*Gfp%MQ&$RBojj$+Tp( ztk5Qh-$pWsg$1JStRvD5J`2gcRDk)H8}Yc1KQdB%cIvZU^D=nRd7Zi>_HY)Jkm%LC zX@c|I@>tU0EGi*U-y!v6wk$H@8_uE>VP1urH(St6HbeqvQ3;8~nm1eK6@nvYQ3;72 z&6}+jExAbGtTrLBS@UKK-jG)!fwS6#M4&CyYz1ng6S2Zsts<=CEt)r57AuJ^&T119 z)(gxQbm!}X&uV>^kTW$?Z;n7c|9~BRDp-4wjny&tCemYn=1EDZiI2F+14F;lLp4pK z!(?y?#_`~SCvB8sgG)GuhY>zhqXRX*CVj?(6y>3Xf5MK28d1dOX%Kw5jmIChCcj{J z-|Oj#6U=WbN1)}f@|pjLDCzGmsdqdvbdt&QBPm z4-By;ePHOJ!UIFNlm~|RlAOsuFa*|rBecjVI~! zSNvmL-70L8MJ!_he-#y%R4ildP$)#?5m_S{BzwM?6fHFEH8d#25bc_Wq|ACoGDxHl zD3e*wNCsK25QxgGXC#C4Dg>fD>(O^pm1L0mx#BHEc@AtiMJa{|HE)tO)|Hi=L|;Jh z&>aU6(QqcWSmj{By}TREJ&G_%)7&S;duQqBgD5qeY2K`Iu;6B#pKfSXiXp5Sm?UfC zzdor_pMjG_0F=5XNLiD%9h+`CH7_b?xu|VG1JAeA5)$2-w^o=fsR!KXOGw0;H(St6 z?M|v?5#Q)bNbJzO*+L!XC2*rJA(6d68>Z6DD^#rfmY5=}U6yM5KAM z1^>w_k-&|A zY#~MzU6H`zN)cA_7R{S2c$1gF;wmB0sd=*%X{@Ak@#3l}Az`Dk*|HiG3GN?0OX%a< zDh!v&5dq;Arw;12iiwUbU5%OAl14}xWMrm$L9GqH*VUM&@i8*dg~#!Hg;k7FY@Ulk zp5J6OhHKJiJV>#Amf_VH&4Ho`yIV+RF6QMJo0H|(moBB{m^p3*iI0(j*sNs*u*haL z!rH6&2Zbj~3y(Anrb|KM8C(!NY^)S>794$mTTpnwicz{AV^#8lVTI*bSXhpolvs`- z{~vmbQ{!pz4K#0YFX^jPf!5R(qhDQdC7mZt((@!uqZ1{*(P$zA&}7nz;IuZdOJDJ4!b^-By#OQ8czqx1Dk44k@=kESomfQ2tF z_#i&YTqPu<9$q+9(@o~2+?b3D`C`3!yI=9fQ7*MXLM<0t7OgN!V&Y3I{-m_^8XlSRNr zF&W6udWM?Oe`zz)G`v8IaxtY62&Lo$(a9Y8-QhvGVLwMRVnT5==Bo-8bo7he^|?2m zWniof(-d7KzyKQQXS*A6Yhs*YD#L&wJ3|(r!12!z-}~9etfv)O$ewp6n zm(kYm2^!vvc;Q!RdNYDcoZR3X^BdmaOa+I3j`)+`rJYToi!YQ=^=Mjuv4)N} zHtgNE(k176^bX+oTAe{{b-Y6+SN!Tjf|Z>w>S93feuPp?xLxz2MBa}`KqAdUnYm_XH_vO&~0uCTWZO z`I*u^2yn7ffKoT|CE6*dGFv-s*1Rb}jHpti3|OBfB!Y`ds}lhs2`LlSXNoWzEt)r5 z&`lCjM6Aye5}leiTNY`N!1^p9(XDy2WnLjj@>)bfBG$awvXZL=?_UxUJ2Y>$;0={S zB(Q%;NMsji+f+K*C`n|wUC91L5f-a<&6}-ATaZK-`e0>W?a>KI{DR`^{S zD=2{WXRi0EL#PVkOIOEwd9$vUExlC6#ON{}`LN7XijA7_LgMgxnO=9~OHyYn2vI&@ z5nV2eBCJ^;IOb10fwQ%u(@XQ)$`O4>$`NS!%zq10Y4cq>mDc^oN>d6n4KEkhf-5PN z2}ddBEI7Jc7L>fI!LHN$j(pn1y7ZaA!h$&}ESPUgESQo1&s;EDL@mOYRj8^g@+Do5 z=xAfiM-#s1ZJN@T$-_;7rtwu0;rKd^u)Ja-6pL`Qgkw459bVhun)DejyjrDMORny3 zyeKr9VS;M~BYIx^J7bJy7+7aNS)cps0sgq$FSn-`&|N#YC9jyUiBsR_cE`T+T6yGf zckurHX&ISZJDStAL$%43bTU$GO%7ejJ+Z&v+R&{{P19(ZxEZcs7qD|sia8m6nLU^{ z(5FD)x+oCA4I&LKxsii?E~L^-KE6>cKo1p?Fh(;>bdz8ptFM6?%`otgY(qA8@qwf# zBVJ=W%Nk^{6KDNRzQ3Er4ro~Hd@$Un#SVv{bg}bnZrvz+Ca0T#>9$g3S(lAN)66bcbJ%{7uiHY-H5V7X%? zg9Pd&MCCZwNCs(92t;MQVhL;xT?hgHjC9t$9ewddElxi4_86?qyQanozPs z^CoFy|9>aeJHYXJr`Bf)H)E{d(4^InpI$X@IuIkS7D!-vO-MwVw+gjTwm<^YYeHhZ z=G!%eZn7aI#Pphw=+(U0g6_Nojt3JG^$Vq0nJx1QF_Pm!MOev0&6_PNxk%u6Fd?y6 z^JWYFlUE|KoZqocNc3plY@v~ogf_F?NNiRKvt_YD1RR#12^)cSsJtz0?XlDczbB&z zD|w6N&6e2^2`oPo5}lgQ+fo}lU<1p~goJf-vjzXD1=Wnrdqki>8g>{3qP>oss-XgoV?>i`j{)(ZXKRfr*ah%+-vJaN{&u zD?Fl$CQaim32*!@4lfo>O0n=pw{svz9>;41T$4WIg-)eehVBsaI>2a#304V4^!#uJ z))PuI46JiGSYPgn6L}pV9$~%2=-il@KCPG7?cB>J`_~W8$kdFblD0Awv#8kC$^sPs zzptUJlX4oM5B&R(ue4bl9E{1Ae5GNf+Hdde1%F*+264stQKW!qeJ8AMzo0#clrid)H*kek`Mlre&_ClYT_# zp$9Yjxj}dOgMA)QbInithkI_xYX9EMW_*2=6gTE3f6w3FE020PR_^ST{&DV+yZo88 z$4k9Mng%ntG$b$}H~MZr$f&p551@z6&V9e4nvNvrx{Yi6%IWMD#d5ZOn`*uO_HTB% ze4{(sC8zGTzzDu9^u?O?YTAB1f6IH=eLj8M_cg7@H?$HC8y4sj!d$Kwo=<6H3`s2Il5+hWN zzh{pge9%8WBbTe6@z2ZzhmzJ@%^^Xn=kukj**i00p6QrMx>--4FTVtMiG}j|vI{>7 z!@gL+lD>qjk^-FcCEm=wjC_QAkxTfJg)gh$tSs`SX|AgHzj1{><70JpyoE(yC@V5 z-7qI?z&OeH`gTf~a6(+6LH>`$PSm@TenO!UB6%_gJvO)LqYCRV+)CkyDa<>fhRhL+ zSk!1{nj`uySNp$kB-)mDI)d<}V<(1lG)!6E2{pn_L=+y3m2T4p z|HyAXn@kh+Fv7U?0<9&V((6@~OeQhbwm-qsG)y+CB+q{#0I^8DF>$IK* z>4Z9oQ=Z~RRK;4xY(4#GO0M!3{`r0CjCPHRWwR6qxBR#MnT@!lkQggs7Ud!0KK`vg ztI;8uHfdZK z>dx3q5F;6+M;A^sSt>|;V%=!NCt@&0#Ub$Ax1JtcDopYsH=R1AVxAsq!5U@B@8i= zL3$MeQTG-@jAW4TJuw7Pcg7zHVkCp~Ce-D3Q*ttNCwG%q;X-W zt9*kXMlwjG5Qw@Z3^9^HdKCgu_ZCBpWRP%&#)YBoj6V~^NCxRq2t?g;3^9^Hf{#TD zMBVr|31TFJbSea*ZVf|>WRO@P5Ow`~31TFJWIqu@5OpgUVkCn^3W2Emm?1_oNUuU5 z>gK;i5F;6+=TnUfL){jJ7|9^PPJuwwP5TQ$jAW2bg+SCj#twVkCoP zKhr`p)U9HOkqiWv_RBN+fEQ88KhGo5Ot3+ z#7G8-6#`K={5^sg$spOZ#)YA76+?_QVNCxRt2t?gu3^9^HVue7|4gZ)RMlwjYQVc=Vtzw9g3=$~>qOS52f*8ply$XS- zTfz_{86@083_;Yr#SkMIq(>nTb!U7^5F;5R*i+-eQ1=`|jAW2bg+SDe-$@W786;K+ zMBN&O7|9^nJ{lK>y8fRL#7G8-6arDVf+0pSNUuU5>ON+Okqi=6i6Mx(`Trz{kqpwK z5Qw@h3^9^Hg1tlwMBTJq1Tm69Iu!y@_ZUNrWRO@P5WRhPhQgv0LuB{XurU4hRfI5# zAtFUU(p7o{F_J-g6#`MWgds*UNLZ~=VW@kHAx1Jtk3t~o&PWl&NCpXNL<>aSa||(( zK{^!zQ8zwK5F;5RRtQAh8ip9jAlZGy5JX*npCCpuNTd*mx)lsDl0kYE0#WxdLyTmQ zu&>62p>BSLAVxAsk3t~owlKs<1_^34E(~?k$_Zj5gLEncqV6$<7|9^9LLlmfR}jQV z2FccmA&9zF3^9^HB85QIRR#nxl0kYE0#UbwAx1JtxUU$3sC$bcMlwi`LLlnSs3eGy z3=;IyxG>Z`#}FeKq*Eafb>sISh>;8uD+Ho$4MU7%5FEGAxd}vF|2;FaG9bA{duIA( zfOad0T4(n=Cg@pA%=bO$mpC)u&dBA;KAFCK40YN3FLb(1)6%W(oj#e9GPu>@+Nv^V zW;$`Yw7M#DbS5fX_SofcH+!$lewi3~Iv8qpqb@8zOpc`ZOkag?DMGju{Gz=xO>&&J zdhbk&&-YQ>%X??eAG29+J_Mi2uY}=LjnA_*-=0W&IPb2g&J4+PdQwihMf^y0roJjn z%Y7fDd~`KySa-*<`Jc28Nvm1gO4ocum;IQv&8W#V`1k28ogwbsnoKYT9E!dn7c-Lb zrr~#GzoT#${_r^vHmdT5H~CoQP4DOA?=G=F*6=1@|B2W)y(C{SPFM2V_U_#IdmMlQ zj5PsM(5VVc@#hrax9y7*n1Cr*uL?}@=M?PZ`w2w~Ou!Uam73zuDZr227b!3SQ(y%) z#lI{2y^)a0kJXEUg|!(vc0~)RIgozf{jrR!>oT4F?Q3;>$~uXBvsU~HFcWb9kQ!6r zuNs$V+(fsOe}kFEOqbx+N0{;H&bI8&tL;<~oolJ2HpMsPT+OPAG46lr zGY@6LzwjA-$E?b8a$Ean=vZ3`->Wz?6Y{;s-0GzjN79{QzINW-6;pivhMj0g4J8f1 zJES4E=zxm*%X8%370mHP)g^rQ1Da~~4yFij+lb&;H~o;z zoU`J;5}XPb{aw;{~yZVq5Myj|EcEnyMr8JzGVQtuI=NBIsV~=+YWr` zYCf)L^4XlL`PA5QFA?l*pAeh9aNBkoTTbo4Ui2Zc**UlNpT?Hke_*$LL~Qo?_T>}- zCgtRY6u2EQt>M{C^;9QUQl;{3*Z01RNt%fOFeP?FkqNadrw{0Ue1-^SIDxN-` z8`CaUQS+OMaTU1-W@VbF*)YXzc!E>}qp4YNYoZeJrD))L!=mAn)3`Bt2N534u}?cU zMDlN3=s#>gdN$b7v%yCH zVY||^!Iqv4Hu^5RgPskp^lWg^b=gVj*YP#D`f^3y`FE>OWXL(kGOd?k}l~kxx=4C^J0oy`v$d( zLksPbFQt9*lLMk)kEgkD?XLH`0P0{*b8Xnfxnm zUxOf}6Va6NT=xr^r>NTrnOmu-K`Vt8v{HV4MYMcrGieDAU~j0Y(;)VnKk^_3ig@$t znUyUyqt4m&<5zbr{pn>LyM7!Od4_B4$a$TQzQ!RMswK1$g<39+C?HFm4lBfoFSQ@% zwfyC89H(Kbh2k{hABYoEv>%%W4pBh`-};uq9qBlP#nb60!i-}n5jYz7ZrSS<1Kt0I!7%qorkpz4a1!LsHbT<4Nz!PPq~U0#AExv% zN*^a_FrHHBY^;fUle9bPOxk48-dR2OC1FZeLZd`;XQR}Wgeg43sUxXg zGtA;pFB03NW$C* zMvq1sH%l5FCTTcE(qNqOTa?mDM!=ffruS)X>O@earVBA+3&M}Um&yhoErBgF ze~u5f44Yu1EwDpU-C#>~gN@d}esXn7Q<2&R7xl&7yS1Z~OOLN%k~+L_BGq9qkyL3No^&49;VWE8SS~Y5 z=F!k9kq3lAEdp9vi|(muEe#WF*yaFWHV0RlCAg?W{^+z+;(N2X zBc4d;l1ltzz9TYAMq;T$jKqa16ktjI4%QFDRcgHJnMZ+z)3-8lNI* zbeg1LyYgo%|2oazDNoGCtN8&RtbACL)Dp@gwS@8@7;Hdl32f;{U?Ui8*Dd;pDiLg{ zC$P~Q*d3{-BMSAzmojX!m#*WQlCA_UOtbH<`MQ#>1THLdiJZ4gxgE<&S`Qb~Z7Q87 z3Zf|d>g!chN(}DuTY{14d?qNagU_YeUgR`DE}elKdk(<%3nvR)E{e-3gRN@yoS;sh-^SA2<+82 zS)33=HY;5?II>Vdd?_7?-ErG)E~y}J(T~_k=|>Qjegrm5v+vT6z?OalHf(c|(2u~C zegrOB4i{8b#b8S%feq6r|4QEPf-TJwZ1h5Y-c5R8>Ki99O*lYgPb?Zt{z2J%)-+F9uT!!^ok(;Rf_PYrvU_tDZ(* z2flSn`HyK~$7DVA7+YwEd@1el@w_7!zD#POU%?UHTf2pad40ZloVTa@`@G73_~+$E zC5C8wG?m;Qp%d*9(2lF=Fm3D0^t1O1AE0A~#P)heFR%Fjmo)JpwMo+WHzlgAjO(w9+*&QjeIGskqyXv4Yo8!u+bvet~5rlr7?ny7QyaFV+30o zBiLw+?4{d2wlcqGC|+i;>uy7fGNma(6o$D#Zsifmm6lkr%f)mZt;*fdTB(X*6=las z;>1FU`BIM5__2LyVDEj*4eXDkOB>i$uYwyGQ>2ATEuw`M8V3KCgeZ7&a7BfCufKPM z+gP3I?{3IcoRW!OWqs7#rU(A{`H_l=I$ssFjJVJ;03BIfK_k_l2+JeY>yie4mNb4- z(&#PazpebgD*tcFf0t4jsaO*~hJCzSTvJiwUq)xw{1`U1$t+*Hjzg&Zy}nPypbU)Z zsD!9VLqOCpanM*CZN3dm30vo0g3^azL3XOp;r7`gDfaL3v#;o^9n^xXjt~{*M zm?#t0xWYiem$GdGa6=PSUGM=Rsp{enC5=9kH2hf7;8W%ARQ^AeUnakW5u_-UZ3b(S zs_QeVwCdWe>c(YYM{5nmlUhUZPIpyy|NDfPzh+DN^fJh6ht z_%vzDE&6Nle0gr;)QWBz-kBo9duX-BV=<}?=i>YmFQVe+X`~{`AohH=b;ofPbgHcc zKGhNh7zQAZQ>`5;Ki2*1l!^y4VFg^kEtWxZDrlWDFW-QerM{{zfSr6D3vC}nq1q`isM~%M+Mz%Ybi8dzI5A`QSZOz zyo#m_jA=VUxTPH-+^9=-LfaAe(vHAKWwLY9j=+|7BYG7Qqy2dO@j^7 zhzAy*U`tJdjm0Ow6DL)<_pRI;4<>E74YyXDPj^fCT95FG>MoYB@GUa_u_hLNEfX{` z*6wY+RGu64VrGQrgSu%w@3jk^h%e=CE5C5(mOor^guDLkiZz*dBpavOTVx#9dVp-Q z+;AX_afp8jiiKaxM2F;!(|uk#Uhk8u;Nx{6^FSmTP^ks${I;Ik{&VW*{!c2p=^hhX zU;Pslov*d%Mb_hjb$-QRfET*5TJ=x!46^e)-UKY~^B)WjPGqZqlqwLvHlz71vO)nasY=@kIlQT~NS3 zc;yEBL5th;X2t!~6R zL7Va?D}Rdek5PU|sf@g=NqSlE<-)kbmkv#xEod(UUwR?)vm2^X}r5l0`(_B~?aKV;t2sTV31{iR! zFBF_FWx(ZEIl0bW%f!=2k&d-L*fXH%vJ>Iq(@kc{dh5tSv*SxyZvjXnZC|%w@8Gtn z(eVW5k#>fp!HJT_CrKKeto&1yf12`7SN<84%1Fzav|ix8)C=5iZmq;Trqu$rR14TB zJR25%C-_n?;BPug#8E9^O0|Hwx=nS@l6!c`mGf7)+<=}w2*?iW4 z6*3cbcC;$v-d?CPK4L-EBVjOSYIF(7aJO41X>ggO z@fRhHu2B9}%3q@VFDd^TN~PPeCaD?}L8=BtK=9cBss>!C8gNm5HY-&Fwp0z+h&_8F zRRgwE4cLf1J1JEIwp0z+FwMS8)qJH;HGCTw&kS(Q9pT;m^1}M47J7jr73_d zO#y7Q6gDeO0c>dsV57F!8)*t)OH%+FwZ%?KQ@E+n6!=nlDf=!>0c>dsV8b>SNty!K z(iFgkZ7!+w0I;PgfDPLm02CWsDK@xhDEv#D|A)HwkC&>d_y5mpmU$q-1=DvVxQh0(L<5Rg`(Sz3i=79G0MDl|*0(99-BIMOOvXchb^0~Aq8tI#a1 zLNm1yytE3<(ke7l8)cGKp;=mmW@@9TY!zCiRcK|4vjUF81)XLoHqC4_{8}m+?O^kz zJ21$;Yhi2lyc46Ff9vQjjIErF#VG@RTGgEUfNk;YdpJ)}la_Je36c2b*JljgsF5MEh@8a{R5+m4b90PR7#}%yEB2$yeh%ZkSv1 zr$%z0EjivXoTVKe3XVTzmWJoIn8*HZGnoyqA(Qz&0Cw7e4^;fE(-n6v%FL5x7p0zT z%X}ZslTCI{S1`!tp}%o+08BE-gu%d% z<`1d;$7)}v_D9ve-X7%w4w8%__BI(s>}~AH5Rg$svy38|*^{9wqv)Gq6yZ-9MF>Ym z5zR7+XyzzFlroBFmQh4AwGq6GBAR6s(M)ZWiKB>C8AY^m6rrT@;X$*EBAO}93RsG~ zm}V(9%^YO-MPTV_3r7xJ-I?`U+M4}G4Ye)KzjcrmT09Rejt6>}OZFIQKUO#3Jn3q? zeQ>DlYJ5k!+7Y3v;ZNym_^DwL{`0<8IC&g^oBw^Ny@Y?h3caWX$) z%+nvV8y6N`I9TsBe#!S9_{b#r95j^d*~XtTNv5N_o=-IUor%wz7wkFcMSqZEx>=6N zi*n5WTkZd&_WxD;D{6n$9;Fw7B;Dj&P?yJy;ZK=ULO{9+&C*S1W>Z2}x(UtFO=xCQ zA{^-^G)p(3nN5i(*-dDbZbBC`Cz0iaoHs@S0^zP2=HA`Ew=Y{;d!QXm?aSevi&KBbp20tfm&b{>ad z*UK?6YG1DQ8`Zu-?Kjz@T-rdACS}p3Nm+E(30+u}hQEEKN!?rBNhlQktbnX{IzvDm{5|Xj1$s*FIJNS4U`; zV$;me4gBQ04Ez7M#SZ)YJN7l^*!F{dDHxnx<4yUX&!y4$Z5{qCgO#rPueKlb+0EA1 zHduPA9FyDRn14@>SxxPCs{L-YuU7l_?NR1RAW4fba%mAp&T>OQT7+h45t>=&&}ECz zDlI}Qs~piti_k1BLNluzK}w6zEGnQD~J$p_L_vtTYPE(kL{u))9>~3eD0eG_%$bq%;c6(kL`j8nH{GT#Xu$4}AP7 zANVMeGz!hqC^S6C4^=vHqC6awv+7Hw#^PR(|c=s@c9}VO)T(jp9;#Rgwmgl1_GnptefN{i4eEkZM^9MMRN&@3%NGn*ShN{ieZS_FSeriR$1 zMQD~5p_$q!lC%iT(jqid8zq&FNVBvE&D2H(u-LRpv1w&{;Q@?h>EAKNp0kcR#(q&r z>=?Ta0dkDNBv&$NFJ8$)bJ3AkvJrzzc98wrx?_<2MvmEU<(U3nj>#sq|3U4W)&8Q| zU$RFTWFSeaFnVbfM$e){Kw5=nX%(7Tbm&T}&@8P&Gn*XYNUPizS_OZ~>#@y;d7ATO}&zxi{jZ2MmxxI{4Jl1bUkj5k{x9KYke`uUXf$+CpqS? z$uWCf?Qf|4FKYj*+W%&cGRQ!Z7GdPlB8;5HhJdsP&C((?v)s^?7P%iG%O@B9l*?m7?;&GJ0Bv-QYP6CbNIR;yP9{-C?#X%jkY%DF#5}aSj$ZzXC7S|Ge+NW9;v?O znf9manmy*L2U+H~Ej()KL6+I^m}bWF>Oq#7(ZVA+Um_*TTmlb$$3;3xUz24XYT;2; z53$=yA;+ znR<|ACb#fds~%*Tueb1Ms0Uf*z7`&%zpDKMp5_&J=sPabR9};2_B_7XW4?NjWgm57 zALKCN`N7Fp_r4?5)Q?27v<2yT_28N2i54Eo*R+?w)3l#pqtSPq$|QYFmN}$_M^!z@ zGUvANSgsyqnLAo|<_n@>r{{i8TLc;n7eJvdsP;Yi5l8x&%y?ITIfGjte-|*JPQS zTX@V@53Oq#-=i|*Pxq6UgPHW+@RXxZuH?;7mT&Udyp5_^N=sT_~C+lmn%+QmYJu>wm z%S>+Ju~t3EGGA}u(NGVv%zZ69Mqeb6l4V|jhrZ(?P4zWdX3tMFd(2l4vdkx1c+}K` zEVHzQ$MfnzmU*IuN3uX7CCjv*V&l+vT%?oqHCg7679LggAj_QF!ehC5kY(;@;gPEc zS>}%|JhrL_S!S0{Hb+{ySo;S&&2jM1cU)Oc*4Jd2Z?^Er)PpSZSPPG}>Oq$IM+=XJ zdXQ!IKeaiI(F?VIz|))w4}Hf)n(Aw^%+1#01ChskeeGCnZHtaDbB`~LicvLnB+~3S zr&;WI^&ryBXyK8pw~3ccz{oO}z(e100Z-D`WSNIrcvRJcEc0dykLBt?mf7c1%__Ni zkY!G5;jvXc$TByy@Tfc{Wg*Kv0}p-2mE~l8O_mw@>1K~iJ;*YXTX?Kh53Oqz{t%b){^&rdK(88ngQ|%w{G|#|8-*II* zSznW7hMv*vk*Nn+X0r9zBVw%8*N$cOyRCDiS#n0HGgfP;CzSy>Oq!S+QQ>`^&rbU(ZYihd|YSXY1*r$F&&)p?^!L4 z?BIKc*!L2BBAh-}?#gOud3W-FT^+G!HgLpa4`&zE>!c!b-kdX zukB0zOYopYdpaJtHrl@9?9M+`|HK`Koy`lP^LKXVUsb<~9v8Zw3v(wp2X{iIj;RxP zL)y&wJG=9*sbAIk^FfKB0M4%d3+??Esi4fAzy~9S6P(=%G}N!={P`Tj;P33tUn|n< z$YT%N+K!ph)^=~_5W9H8XGy-fuypX6Bfd~Ny1nD8_Qz?~*xx^TZBU1?v8}n}OQl)u z^5-+>lseiw`0z`6!XayRI#?tuMvGJXV!%-U#1?IV zF-gB|LOUo&>k$im_^++)oXJb~-`U(VxpSDAdtvFOLFY_fc2Vh(LFYVX)?ZW_XI}eH zTbU~d1k}+aa|>g2YzCHDEN?iVUgloia;D{Rrme5Z7zxp(T|&NYv&C_Q2C z3Xr(?rqb1>>()|g7M(k22XmHn>da1o)(^i^`p?d-e5@=V>A^ScQ-vm*WvfcN+Q&p7 z0Imyn;ZIvjr`UQKgdca>#T89_8rHWa9YiW$R_kq%kA>RqMKG>e=m}q~U4xiS0m_4)<UWS3EX7Qu<_P1umxd(b5F@6q@rw;lt^jM@uL6PSS>| zbV`YHJucUVs@}PshAR7p;$Lj2{?Hgr4fR;Cv7w&s%noX5soe&}4VC?G)KE|h4ducv z*1;nCg6~U1F+AH)U$8%e(A=tMDZVc)g(%TdU(o1g|Ja`A>YylswqgO+^!{&YqP?*A zra~o1Q?U-sCfjOb)9tjCx}dG-B5lRbb+*+VkCsj_=RYNbD%G~C?jYqzhRCs@ZI#}& zown-oZNJD2 z$i84nq?shfUt3=-RnZr%#L`MDAwIM5H+DQRE;f=YeDO3iQVtg#Q1p=jh2l#qvG$~u zs@rKLbwMl9MOulMMz+$PPuW&_?FDJ2leLvN>IeJk-Vw$kIF zC7N34C&8v8Dw))xnf7r3p=Qub$;(kQK`sm_7k9BD7ugqlU)qZCaY(ts6`j#od|w(1 zVakw_@Yq_e5{l=cwdkU)MIUJ`RD-k@Yf)M&+fHk#3tEdVXsw>XAlSyb+MNC;`>|Jb z*C%b9Y^XF+rj3-W-cBP8^Nqy6*hqP3h^9vRX|U<_>5x`!D#P9bOeXjj z8|$giAWe<6G1%NS>ZQ6x#My)k2zA2|^;*eu!{&J6ymb+_oY)i z;DPb<@3j?ZCQ6Sd!91*gG>7oll;jhr_T*8Pg~kI+N}Rm>DcaE8!GwK zi8cURo4c95DP8ty^!9YVwdI7atIfpEmZx=QPaOM<{XOIR2T$$HA4a&i=Q%b#)h4i3 zB>9vaQ*5ZPuX!}j>_6xSdu19t(yx2bPxX|m?cetQ0g}^iUl3m(})>3$42WIu71fj zy?-gK1ZK^qzu2U&Cs`v!bLDVFcI9vjy~M-=TKbLih}(egMf zJ!rV%t1=<4$LF$!^Ex(bkRyO(#d_RPkurCHKF?E{zodsH>zRmtmp zr!>9;)nmrq*frjK^PSStQ1!cHg>xoZ8Q05}noDje{o5g~C0x%+Ts>p zyI#Me*>hBVf&gxPv|;)RQ3tWwCB2iqu;|s!T$dI zE@t;L%2PXFHXLYYKj{bB*e#`L6CaR|Pj}+n;UAcC?=5#v$v>@w?Xz;sbkOBEqF;T| zywOoUd9Uh^2liNZp6jvMY4&^_d7b5(yIz-0l1#&_++wDhH-1;Xd3=Gwfv0Y+*^@rF z4;*;g&MLpt;i9qQE=J&#Vt1S(uM?mP<8Ejf53hJw~*GIS(CUNwZ%hK&OmCG}C zsIlV|Mo58$SuO2m7AqkOjUMw~EMdQyKwTjgVquJu1Q@ zPf;YK%*wrs$R(4Lhr%$3kYXZI5gvJ}A|YkAU9HHKf3r1N3BXze6w~T`ZLt;LfuB+! zgv^$G6}b4{EiethJOYY|5h}m~7by@zX7+W(LihDo1F{hz#l#pD;gR1^B&1C5e-x2d z_GbZ^JQ8{&I*^zcr6N4?Qbj__tXy71uI;Y{WFy}3x7Sg!3Dd12B((Vw!!M z1uDP;mnaZIX7Ozb>?zx7tOj5s0*Z<4q5u!PMu8AA3;Gl|cCw8y3&7;js58<;paMMb zIt4<=Y`Q~%3x?YWYXMk^fMQxa%@$b!9=J?_5HcI5DRAC&bj1KnBcPbJAR||R2QF72 zgiOyp4mhSfW5|knBOt30QcRmti&TV1-l#}OnXxkzxo(DyF~Ox&@}jH?C-z4zOT zi~>B+U9TZzX3tdMmYEh<3BXze6cd38a6qfZe+h)lg4qfjd$a|n0hmWXF#*_t%)xAY zu*_6y&Fo`s7P_!eaGzxPF6UmV(@*B!_Ui8bF)^{PUE;z7$i7Z+wYSIOoCG{~zTDv!3Oa-Qbc(&*|m6JFv2BHl1F+x_zr% z9GYtG{g1A`QOT(TXFSy~<9TW${k-wntE=nsat2uiC3o zpm4%5PW)U4OWqIvffJrhL+pgdMRQ4qo7KUSINzxic(_zoXkv=a%C%v+ z%FbM4p%Kgv&nvIidQB=C|Gs*hAV(j;sY5tlPQKK6C);H=bMKeSt9D5W+N@ONT!mGD zJ{l?{L*RMgWK@KhI04cyTty@ZN1AuU+odbY(+0gad{A5V6D%mr z{+gv$1GQ10qB_LHiI5h`QGMZ{W){3K?D}$_fNuxb&MT*vU+r&e+i7YR@X0|^Gw4Q4 zjA&YSL3upu##Z)vlzmU$9bYs0!t&<9V_mhoW^lsN_c`yJx3K)Ne;0CclOER(Ji4=z zxqjL?Vv!vil|q5p1|O31Trrb#?CW^8bcwCB8bjx7iKAC$OO>dA;>D>0K*bSro(2fP zFk4!=#9qoKPt8e}8F_>h6R+Qj@Ufn+NX8uIOPASj8v$4?0MT>A#QBl}Jn*Xugiv9= z^j{X3?2q>tVO9X5RmH?YE5HNiD-c3qzQjUbKBW?nwFoID&X*M7kryZuQenPCXyB0Tb9MIzY3bZLpL$SeSpgT>7c z51P8SHHWxJdC&>7C5BjgtQLrsh$tq8s0bh8Hx!9b!+eRz3H^CMrV&z1%<~oDk(VkG zQenPCb(Iy@&LRiJu(7{i9iK-V5UF_h1n8g{9S(~ zAZrm)OcvSHeXdXzLSgo_@v?H7Ec$M}8kmg&6IUHE$$Uo`p6M>(&(l@FGC2IEvWi^8qA>E_8b<<}Rcg)=5u6_?Dr znGchCd*yfkTwduCn*9G z^7xLIiZiL9^0F|M!u}1j=?UBdI=<`DQQ4;kPJ`BlX%KJxz>I0ouQ&tZ9iJZ$oB%D- z2~c{LOnmZra?ErBl)EX%C(W@3c70;}VNwD#FmJW$X)YH`&i3=4MY!S9uQi$5V_^c6 z7BEcm)X(*fWCQ#MPJnpF$3=5sPc25^lwvyfxJm;ZPk{3HWOerXh!;J8aSWUQRoT13 z1gKG9aU8)e6CkBHs_!RI3lpH#%e!WE@FZR;lU~vGpYSwo`*hd%F{oS{m8)#mR%|bXn`4U$h~o|q7iu20uQYxCg$D> z@Fm|#fe5sad*fb3atPj&Os4>3?oAU*tN;%jsXz#Y+}oBI_bMs@S&NWjV(zU7kK9?2 zkP5jsk>jSM0hvcgG0oX#lP4i~;%Fs8DdgTHE}2{n#70CE6R*vR@W@>iiC_!4H*QsA z0hk;v9m08h~JaBgfLMWu(EOcLg9*}8-6cb}q zgh!53B&0&>P2`pRjex91NHH-=MR?@<6$z=3dK0;}KRGmX$p|T?jlIL08hgAFp%ij& z-l?brUM=E@i6JV$hq$)_5o$=id8Z-`z&rwqY3!8d04vIaPRP4i6% z_z?G1Bti{&H<1(TSwJR7ME#K_X5NbM$O(#sR3Y=mor+ojRwAI7m~$(@13#od2!))R zcPjD#Oe3I})*aPcjr%DNIw9fajfzI#RU@95wk@=uwQ|0X?*Qc?&O)}0`xMDXLO+an zVq&(f01up~Km;1HZQiG-1Yj)!iivr)0zB|w1wts~*=*$%^)w*!2q`9J+KTYVNs5G2 z$h3K%q8fmW0+8teO-zXu;DPQ^4WW=`^FBoufXTgY@WSbH>;P1N1G;N`0-=y&^FBo_ z04ottOuSElq`_y{a-X6nEx02EbXkbYO1vslLAxq@?dY5A9XKoEOE)Vzw4;5vxq4lBuVo*% z3*O_$ueson^2P0gPdxEN^RGwCr@e3d`0?-UyYIg59dN(_?;UZ(5$_#+^wH)^>&x>7 z@3YT7=KriOFBm*w!h|)Seyn_1`=GwQHTQh7JgMD2YiExQ|^g8dE}Ar9d_7Z=7>*~dk4SoeLI;;W)0rWeznWo`>Ap|WT%~WdatXi zjJeK1=IqDI-`jD|_jcWNSN=D8^yv3SkN&qcfBJO!hl4u#^%k?~LtR%7ea99%8-`83 z_Oy@a9j?;`PVJJpAN70s_UoG3LH9S`Z@=qw>3&_ayN1iY=n9VJl5MsCZ|v8#V+UW- zYsJV;`@O_U*nJDW+#-A7xh}W+cEJH%(A7-D&X;>+ zJR)+vN0!_dKA`Xc;m&g(5IkRo)8+%aZtnW74*EMW4tSI7>4{zTMnD0>nTYzi@soTH z{sZTTy$5&wt5f3HanhiP6Ji8Tv0cw2YAOwMm?QR1>ax26v-o6n_9r7=^kc^1=ZL+B zcFo)&=P(U(#9D#H&l=cej;Itzb;BotT9_kt4=c~=;7Och=I-BjO~X){Jo2*xN7BiKk%Zl`Fv~!gbwIZp2-t>xQ2xV#BVpu= zhfaO}w-270d|5_7_EjAbIubG*Wh9KKmOnB6hf>FGvBaI`nkGNro-RF@izWAHlWag0 zb091^)9#LaFi_Y6>gIY(vL5aO#{q8^GZ+qon1C~i!=PVYCm@Gmu)G;>L2kL{Z@e8 zy*VQ}WNJE~{11w!20A8_ip42#@YkE$1d)`mCA2Zbf0uPQ#)`+j0 zGShB)5}U9`(4Q-m!7um$?iF|7YMcBR_lj)}J0t0ynnn0Z0gv{h-Egf$dA?GfQa*w= ztA7Z-rMK%%Zr0E1Q)&@EE$~q(v`eKZ&-0&FK6K6Mv$Rr}&i7Br!IdsjjgVsE(upEG z@>xYf%4~bchn(DvDj|B=ltw^j5n4JRVb4rGy+4e;ZcIB6B3no8+tuRC)DD7s> zz9X7i@Yf1O*k<-4Ey7K_o74(kvN`%iNJne>yGs^QpHA#;}-prV(09T*6V5M~~3!DI`tLVhwrYV!I}k2VgYKcMX$&MWGTz|JDJn7EdsEYBXPY-pMVOEuWB*Ptgei!1cx0+m?|?1l?EO7Ya4 zl?pYp`dX#VzRprB5jBsfv-C;W;S|mWHD`92nG=>|_@EVC zcTXH+QAjD>ad&;)Cr5Wi;#P(JG}!Ip}u{Bv-6I%Y= zuFZoNraEJBt2Rtct*86P)<7HROeb;K@jcQ3ic_^o_9S<{<2jDgarw7$_ijsEqav-f zLPcPoJzFMe++4gKvn0+)Iql<1O#5!PyNgG3X0N(w-;nb^_vQ23&iS(WW2OC=rG1_F z2D#fVe8#{jU@c4mxm_4$nF4lQ+&;q0ePqx?{W|j4j&jqtBxhAe)oUlMos!O%Nk)F5 z9<@@FulQ-8d`t3?Flu5`z zIK}ol+Qke0#sS~(OMdJtCyRh$>OH|uRU+OvS6=W2-ZZZSUai1G>xqdIK?V4Nzh8j} zG`eY?24G$Qaym>CORNA79IrqKHQh9?24o{biitBnMR?@iiiA|tP4g@ulO^Klu6|uqVDiTuBUGqEu(+DW0c}LoNfDvzk@(^lt)4UOQ z)rco12B-iZ;D;25K$~uwCl80-7$L>PNvI+`az8~vs_CYAB_L}NQcS#4DFjbEK#5Rl zx@VpSVjdC2#BwXbBPS{n!A3XDs{z=EfMOz00Umg;0wEOLG|vJsSt@S6H`2svRDcIg zQXqty?wZ#EvJxT1#26Lfk%uZ0QcZWw^MFhvq?kA{Q-ntzrbtLdcg-6CSdD;U;+#wY z9(cF{Ar##;Pu7L*7y-q^LMy-n`xFSF=(c$!0BaFYOav;x1E(kuLeYKmGywAmC?-z2 z6ySl=6bPZ{zIinO8xc@UoOCI`1CLZ7gqrS~X91a9BaXf|(!{xzB0MrxB&4GI=CuH< z6oAYSXyPRtl-Z3 z=9)FSyu_s0;FslPDdY`!v zENVZYiSrd;p$!?jQ7MfW(RYzClG1*Fo!h6*od%Vvd?+hgEzXF zPuY5MQxc}Z_O<)x@<3+as83gqn!6QeB$Mn(?tI7d9GCTLo@w(+z0r+c0I(+NMPQ#j zTP7jAy>(REQEka{m<5D+4qv+4TmMhqP%&YnYmG3p30zHM?^0@G+h1Kl+jHNi7v8XwjzTwgX14pY-P|`m+U+`lk!^ zh?$UWk<`tI++%E(NlW3wi)$2mo*SAx-%rq%jD0uW$8xE*^cCo~Va8U#a>Ar;uD2(b z!@b3wI~U%8J$a14DYgV2k*PA!@r11rpRCUQWQ2c&L^wJ>4p#=Se9#FeBidOsqx)c;Jr|2%)AKTXH?#mEL%RIQrg5)26>S z_wR?52&JY8TO|-H5m8K>uqna^`G_JBY&2m@12Bz%V&a5N0Uo$sfe?x&Y}Ej)MnEym z*=FyW$@!kwuRQ2P^R+DSvWO?9bvrgMnQTxV;*6$iwZN-IJTY;)rT`z{;|fHe(R3{j zz&rwqiPJR&cwnwT2sKUD8UfjekYeI=O%WdXq#_{|P1h1!Ikh9+C~iJKpoz091$f}k z6$qhdx>gCmN(2-WfeLUycU?~)6iwIC08AsGm^fW~3MaZR63RB`U8)6lr2otrZL;L{ zvT2gyQp^Ml62f{uNAC+sO!}Bjy1Wu z;p{J+Kkfkg;F>9B{nK5^Ue50PYwGVf^f&gY;#29rx3fF{WLM!k4*e&RKjPW0p?j&> zxmWeI!_XbSks;yi?d;A!SAQo%|AT|Svpat_pDn)Q&>s(Ro?_&h3j}4?$3YMHLFv0^N#&}*VXMqj2(nC&4{~)9lKZGm%65o{LKgYlS_17 ze7PJmoge3%fMU#;MK5&i-}U~#%4ZvnnBIPNugXpGF^5ru8M7m~Ia~e>3_{MC&RIR| z<}pv}r{hja8d*4kc%VuDVE25d1uSRGdY=2JPoA|L!TQaX_R*o!yRMwt)^=il#?Ndw zX}!2p$^rbSygkyIutSwL)2d zrVW=p!@JX=ZTr@5;t?Xu%ifj;WzRRGa9@3{1p^m>0I(x?Q=X6dMdc&< zuuUvU z?xWxewISh?_-R z+RdC}n(LxXKanBVyzP?sN9)xHUyJax%eG79`LG8mAK`~>m-bt3c3*Bp%_A!9vh7kS zp4y>Qs5Ni9WYoW^*CKu+;?r)nykZv$1n2QPC?2w5+vVaNY|wcGP2QAt@x2;$>D5Z{ z)I_NWzIoFnKB~+1dba3K^#&QTUK-)W#7U*%JierO$cBxVn@ZjG%eX5Mlzd1>KrwMr zsQ?e`QXqtyH(uILk2G1|wxJT()rc)7&MuYZ*~63#&9L#(UJvcZG=PO6m=&m4!lYd` zGb+VXM<^9)VdLeT9WAvQQEL&EcA+Z8Q(f``wXpGW@%zw)BWfN|X&0(e9Mu+t{}QN$ zjhFM5+2!(3qm2R&pP4n9_?reur3P%goM!eJ-TmjDL9Kb~B_H%OzTZAizCS@R zWe`;(yqLK45_MzivbgnDB1F= zy={GGaeb?w*7y7mc3(62eEa3R?n?K8?Y&tcR`ds_>*Dab+ArMeWHRDduuu1juH7|` zaT>=|Q{A_F)n2tY4)t?Yo6w&R{D0zzu5S(H7lH7#L1VwCHr?zxq5Hv3PCZz*o?0PL zb|ai_E5_k`V308jR(G#NDUB`VG_%Wxy8pZ|F95J~R`yGk@;u-zcMLnQeN;nBarB9nZ_mi) z;ZEqf{ktcdNu$e?>^F|v6PeR(K6CiVyC<0p=X9|S>#xf6GQ9{#^T@Y4_gdQ5JvRBZ zwqeIxGS+t}9A$1-duQMWhaZz~c_1nr|!r*{E=NIm&0ir})hi#u5f z>|LYMZJ~7dM4+qb`HEdJm$3A$Lvs4e2raLuSP0) zP^lGEP-Ap8t1oP>u@9*V%4FsoUZ}CMZI?w^J!63KjMlHAvSe-^35XZxi%RshHCGi- z9?Ta*n^57}dMzlVL7@>Th!=0=DA6l?MiroJR!=FE0ex%HP4zsgsVvAO?+)x+bTwNp zZB8stR~4vZ9vR9(l{@Nscg|eBC!q9?8&E zWEAUV&QTf2V>TL<=1=unB$Ec2MkGU5v+ZVkV@#-CU5vDP=fnA{Ba?)hn7mXf99@h?~WyMlI8~ z#uFUm!#f+Ar?D@DQO1s}`ncivEi3VyBcuFgCN)FJ`#;-prI zUg2U@KzYojxrH`?Lf@DTSx`tW^v#h+3gX3Ct`fb%5>r@8vX3pm$ne`Jk zG$NTi$W$U3y2`v&v0lcddyqGa&x~aH4%m>q9gPxXqMC$7GISLg#X1?67ABAn(_`)? z17GK11s+nA3Qe3IBO4tsJ)Yia)6ceN%`d*#{py6md7L97wY4(?m+EHU(qtORwak%k zv^?vPxZ?_aeUlu0yn2%;IZNlrV|VDP+l+S#vf#N(`*u14FY_sFZ3pvho8sH!1NQa6 ze~ma1R^66!YILPCxF4*ip>k@4LNZIF$E+fnO%c^?Bp!a8xdVhoL!?95Q;_tNHwrGT%x!~Vz_Vw|w5BQf9QcccW6zVJa z7GKG$@Ou(-f1$r8VV^KDy=?hyUH!FC2g#0M+@prYwC;;`GnWMGx!={`p@)ryA2Uz> zd05Ih3;PAor}yUpT`8c^FT}(xfy(mi?IibnLWzR-Bea;hcW!RTT+xUg zyCF|7t9BkPA0)oAU#utp2z@(3i;2m&vV4s^sceLgjgd3W`q6P^Z>d)TJB!$2nzL(j z*gsb^B(X)(*2vA;N8ELC(bjqz(6s`Z`4dgD6H!<`?5C8C@Ud5Nrdf4s#9rUNp&HnE z#1<3T%JOU^B}hCGKekQIG*90avHON>$O5|&vBd=TSYauM^%v=>5R(m1Ql&b0~z(u%_?uo2k}I zGc5b}qG8k8+LrXonJ-vdmwi3(UnS14o)xGoO+vW4-7wYs{I2e!IhOEH66$sJ+v42Y znfNu%o=Tx)%-X=Pwe6TLf&^OOo&zfgB{&_##=^9KnPktQg2lKy1t}B@xu;uNce!bT z*$Nt2i!?}eG3x`*o$q*=@>FMGo2z*TPLK@(xVIc*paVEyuE11}O*~|P;8j}jtib^s zFu}T|ecuT+0X5Z3_H6~ULVCXArTW_G4CEm)49QwdT3= z!CQ#Up}7K6JvIT6)FHsRt%2@*7a*5pQG?s#A&~>`Gk;ykKjJoa00&I5UTIHoLQMhQ zqrlT!2k6dsyi9q?{Ds=q#aS~Vb1CN;t$_~UfVl#lP*Z@&)WEGqyoEYU9KZp&bZSp< zLQO!VX8@iR0hQ;@cf1tKiq_xhINm}(>|9QHc59#mIAEqgC***h=kmxew&v;i3;hR8 zuE11}O+c4Cp3@rW&UXPOShPb8ZjZ-=5mk6zYoG%-V5&eT)D)mg6VGqWbLTr=Mjiri zk;a`+^SR`!t$_jvAJw^X((UnFJ~%({th_uM3!l{v;3DLzB&u+GK$itx5P(IVJKyoR z25EUt$JXFNE?)UggX9S{a#3rb12|xYWkC4rv8hRrF~NRuYhHGtj(-Qt7374PfJl=7 zT+$lo&Ud_ox3X;wZZE)v$c+HJrZvz398m6!+bY~1kol11UDulD&Ud_zp}p|W3Awc< z-y|zE!12vMrX9bQ_g&hNJa1piiX0b6`5Xi55SMEjfXj6{tvj#l!_7rFiNKN@cuUAi8i|S?18aYq2FKP-_J$ zmxgHK(vVU-^$$vgnk)_d{+mkeu3KvIPd~TFBdVCVD5Mlm-KtTpHkFOE$V^6s92&(>$>gTpi20H-5w9!)jo3$-vv(g+ zWL6?(l}t|T72*SZS)mA6R)6~by)2V9R%sSWpGH(Mu~R9z65X_0I;>X%<0qLirp`VR+_i%7m7z_565$*Y+n5FV<--Vm8QR z=@sIkuPYP*%OcOy&*;ody6L|{H;t$XP27(w5D$Grp%9bRo!*sYS>0hT4a`QwtkA^P zSBQuHMWKjTmUZTSr`SycG}$@orZn|@({3CVhG)K|OlZk^&L<8n%X$vGX<$|&W|bx` z(c2j-KagF)7*eqV0Sezdy|G zt7Zj+jeJ?Shny9dxRBCSzR?9*G3V*hsGu5l@@+f3dqy&}UW+7>1*kL|`+=iskpx|3 zYlkX?ipgGZk)uMB!)oi)PuBb=+iu)MJW`;mS^ao( z8!S=Ahg+`=6R~f*H^p*4tl|W&_e!SjeZ6hSRz!pA)@*t4hDyR7| z09O%EpclAQJQE0qop_smW?P{W2_&n0D^wx@x=J@vpclAY1t1(Y;jxl_Sx+O0G)Sb8 z1YM;Jiu4khNeWahqXfr7q(D#Ed#6ONaD^&BIqbdLbTY<5#Lq(!vPgig zvg=NPUf@aQpkpjKIRVo1Cu;Z?0jx9kR38X~5wD_;h1zxK>#A!DE)opjZq5}}#}7ioy|fZVZO z4ah7)iir=c5`rf_tVAf8v0F9Bbz5z#WPw+Ucw*w-lZf|-@(`)nxF|$8v$Ga>dBhV_ z&pXYPxL$dP)69FPScxap^FVAwL^1J^RYLG3?pGorHDfQ+2)At>Zu?>2CEpV_-w$cx zl8*vBaDxI7>hRhX~Yu~ z$B6$1!e(Qi-2NcgbMJ$rxXYw(|t{-#Ti2$tk(iEkC0;GikTuj@@Yjv z%B=3z7-tW&G3Ei-h=5|^YMBB&@L2^y$jn*hdg3zM(v1L2ZWlM-6KUeFpoziro>Lxl z%(fki4gH&XG8XSjUyO)i;!mJO#9u2Bk($*vYJ{`DjlLLoX~Yu~vmXWc5T92dLN&8@ z))2SsZ0j%$z-j~(6H^`qc;N382qClWreZs9tycpwi;!YsnxhDhd_j?rGAno07<+d^ zUkt!n0f_60n3&cmzytrFKnR(QV-z@VtOeErFpq#@B2WPyi0e46=MXa6c30raJv=0O^8 zhbAD?&A#J@-?UdXPC(Sp#g)*X`;5MMSNBqGF&cY!_rE%Gzev?nDMZI42Itr)9K%Ng zw%=E@#_lURuzg`#IC+xwh-+1+lWPN7Jyh%VPkZqlYr93I%FS#6SmdK(2IIpc85e5Xq6XbNSC62lDJ24&ZH^gQFZ5OD za=43I10BEtxqO5wjDVi^xNx`>W&H*YJKOeHSXtN>b`z!YMw=6ADsisBZ?q23o$mt7 zl&3mGI!Ie?2WQ=k)S0=o3=$^b0#-1&}|D=&3{E^)hw^xjh9^0%v6 z10BEtxrl=r3_#hPx36TXZZw4~i(3^fP*+>#383P|= zFSnCJT2?LO9K2yf6K@#dY#Y9(mE?5-mGC5c+3~QujY!h@ECMDpaaN=N5A0GP!?c@- zWUk6xNtFPs6@W->#l&4n3h=;T3WQL2l0A!@24G$QqR3)mkrm*9;}i&?@FaU~a|paf z#H-T86%#$*^WLvK=!D1E%SN04Ozx2Ob#ttYrj5P!PK=!IdE=D_o$wHQZWar;N`$M? z#1_%>J#TO2Ax6o99~6nkSRRB9vg20t{UMQAv`_bhqtft5N3FO zz4X96LJy392~GS-G&$e%CMXX&;oeR{s<9jrX)gh$r1_XS=W@p78DM55<=-X!HgCp@pddzjt& z5_r{!*Pw|jBznH*9jZL&gvZrO_gfXZUj$5OVu2Olfrlv&Lg9J!?0azW{TRGqJ zrYH|O;c4~K0|PL*E9!wXadAWe9ym>b5Gp*Y{&u?&C-5o-9xfm?nz)pq=X>6f%7YFz z_Y|&3c>tynP)r0WzyXng;a>uw@Thuwi7N(Jjd%?oU`LAc7H=8wps-Bc-6o-ozi+en z&vuhg$!`)mZoK{`QhJ@-pvjFKlUpSXO7E~o*(>z++mfd|_;)$3EgW%!#_kpRn^cTj zba7C(=#ngRdxbg^uCr`>(>^}#C^;#ag+f@)RI~Ok_VIC*0*q;k`ngII|AFf)d~n=Z zZ`lXOrHG$97J9N61ffF4B6V+T9|C@{MIIb?=G)zW?yVI7+yaGSSb!^*t20+z2lO|y z{?m-!+PzQL(OS@BZACIPvuLX=Xj;Itpz7xfdMx4^ct>l?KkRB|4J|C`R9;{pSrHSH z6`WltZF0Ou0hMq|YhA~%8AA^1&jYd%A;rWGC`I@HPgEoW^*6P8-^H46048sX8+r!@ zn3$NMDZm3yQXqu)gHE`s#WKIxUkS)GLW+qw znj$>%6h%TR+|{y3yC@uh)d(miR-ytt@KgmtsBlvY?J~Ar4ah7)ifQ%A=EUGrN`z9l zt;JFwSkD5n77@k7Yq=tPkaHD@V8fj)B4^ZV0hvcgF|pi=@W{_75>nyT)|_rzk$C_% zBA}QUqXInebOl1l-`Zk`U#T|&G5Ndrx%62~3{eT5c!m<86z*m)sc?VGB5jWhz-j~(6Dv{y9(c9_Ayl}( zg<^lNUJb}BLW+qoD#9bbs7OeKJ6tUGef2CLYY|dROy3mYk((6>sc?sjUp0Tley{)G zdM#k{2rH)9A0E+^B)zCqs1gwDKd(F}|!s#2RjNZFxUFChrNIGUADeiJSs_hz$iI)NrHAS7oDK3D`8kifPLc z&0)T(RH%i!UA-SfzYM%;#1j+KIR*GIUsE8$E!^vR*X|fv^lrTxm|1~|D~_0Yr;X@| zbK=((38`?m%U;3kGpsu{WC2-=kYbv5WHS<1d3)VW5N){MMPy%TLoFcl2q`As@=}H? zxh(?!B@EZ!@-q0oxjA&dVXyZz3M}rs(R9wGDxSbh%>A0|i4%_3VE>}Ww+0^lX`lPJ z-Ry01v>tQH0d@m-wU8q)by1EBI62XBBz5sWaKG+Ae6q9n^2AS{sf|khAu;&jySPu6y?#U zDjJeVcABc@fO;AvQcBn+J#bVOX^0oIA7y%tPpJm9&6ZvbpB10htAU;cdM%=h7b{+A zo<3LUP(>=#RDw^{v!Ia&jXcs2FKQ^$YkWpEply1mXbCn=u?W3-n4v7cZ7T zX`WtHI#g{A)l`6Q*ONE!xh5kZNTiX3c(DMA^b%*O1fccJe(x0wT0H z5v?eXK3ma{L~_*>{(bc{NTigI5fEvJ7d4dWHNL1C&^A5C6zl)tdNt6qK(9q~@nZce z&C@q49jZvZno97~dKNVDppi!!;>GW#3erows1lGi3r^4ij6D$pAfS`m!vKiT;>Day zS)TopvQZ4=WD&cs81O$yV(hx8H%#0wt#H%U+X*2dzEx@`{F#rNO zsrdmAk;RFLoT5DXHASNoNaTw3Z#T`)7}BvJ4H79OWB^1O;>Ar&%Jdqqs|K{qytx{F z_h~l#YG7x9U5nV_#SBkbp8bZhp@|GnYyZdWKc7RMH+(}DMDie#7esIg7O$15&Ci7C zHC(C#ZKQlf4ZHF-W5}otwIGpj9gKCw3y`8a{18d5{AZHS892TaH~f3a3o6r?@3NcjJ&tVm60z|F{}wU%Tb2 zMDv|GV=Yk4Y6WTqHo)7vMl{9V|hla5zf9G0*`VFc(l;s>h}PkJSJ*863z% zN%TYqWcp;^cS21-w-%$z7_}Q&Ud^Fxd&?gHr*G{1azxlNR+H&40Heo%oXT_ns~Z?l^``L^4z{4 z2XH`UFxJrtH34<~DnTMt1iGgT;o@%JcRZ#m_O;V-yoJ6^bonaLj4Lj&12|x&0xnPo z^gJvmS-}LUPKyBb{ID-5S77SEai`Ihs|49i3!ppS1;`x4`l*oJDG}YPI12$HLgX?n zfDYh*OgOBc6KVqLvQ?sKSW^w+a&OOfJf;{7Kn+bmEF&R6O_XAw00J;qjtjJj=N7#* zDFV;p!@eK~a1k<#upUmR3Fy|lG!Kdcbmu!>iYu<=IUUQBrwsW{M~WL$xIA%00-p7 z9#yzKpj+nBWGLpj^BvFc3vxnDC3cHknxzzhT)cT(Mvu#0lCAc2%Y8x2Smfv83ONUs zB^oqwSpsL<;(6LX<#hs;cwf+8?C_8qS=9)b(8Ls70Ur2{0vTqsFDL-B0uYH*g(j}a zD8K{XRUm}oeL(?OD*#dClqMEg0Up?l8-oHb*(M)eZdI;E6Mq*`PWQMS6bG4TUr@kRB3w=rXTf^D=OxNR zn9;_dz)K@ugC-VN&-c8N@}LuM4Ek&6f)OyGi2*9W1G^Lmp=f7N;AIi7LK6ej^F42v z@}Lv#3<|tj#7k*f_m+JMf}HMgBNPXjXlGEs9(1CeL4j9^csWg6#?bRUZ?y8D6YUHNyfor9 zXyTHEp6_|PDi1pG&Y-tK|BHYLO{?4O)6eC6&l{sW=tLWX0xpYi6`ELodcNoFt~|sU z?+gmSS_DjK;yQ!^Jn&uxLMYl96nJ^WtJ1_Z2R+~O?pGdk;+;VO*oc4`Omn+0yrT|q15 zm|-;p$NDe=oKF4gA+A2s6=9rmJOPM>~n| zP-rNfDi4KbiMeT~Cw(H6gE)j%$aI`|0-3O%h!2GZ@kTxry0==upgLH5i*ePFxVqMA za@crR(IcXsjI$Na0Fx0PnQVWHWR?A8#lMx#oz-Vw^zCln*q3j%tv`H2+xl_#?}7i4 zLO3jya(yK|jncSX;#UrRZ}_0L>?c@|v%gF{t&0jT_h;x_y2HBwM4luj=1D*mDlB6CCUC=hH~xGm;$#JamB>1mPXj;6wAo{wxn%4mZz6dAA8jEK+OwOuD8*|G*L0W zB7Ut{MC~^x6>8z2dLwWf1uhe0npg|U@!aQ?3%#&ODb&Kuda@oSCf>=D;_Z?$G0hum zZ@-JdV}B>F6Uc>)N&$OXy%MmM2rH&}yVzZ%5%vYeBI>YRDPZkmmI5}7uwq)bXLGcF zP%NSjdzL(Q(dG4Oz*Zxyn3!rP$JfGU|+X8`_QC-ZA4fx zF>g?g=Qfm!sKaKaz+G2Q9)n4G?$5;A_gtEIgG3A-`>MQ7AQv_?1#Dig1Z*Y3im7|1 zeKKW)eNC~5I&5nSSo>6@fK4N;m{<$S@!`I%T!bC=HU+MI6jI<;Bd(a3g(}B$N9dIl zdIL5%$*1F@SL#{dW)W9R%tn>txjQKrdSQ!Gi1)2}EpTfQS4{J6wACvZj~%I4$c24Q z0sCG(57<1yib<0Dh`Y0L5q8+^uPre@TY@@)fL|id3WmS&nj!`c3!tN(`Ra-x5 zLmIGY0gJ1en0jyP?ulD%ccnrtY=CmqzTGxd1GO4a#We5sW-4+LTU!ZY4tt;+)n*}C zpk@(OOsmfr)}tkMHQ@4=gfWL*Q23?qA;?4e_U7-B^wbJO?%URk%4Jv%B#CF(4E27E z`dB?4Kk(>IlV9GpDd}E2e4}pb*8YYceh&_RztP{;*JV?TbV^&>1@<+5#BbogN+B;` zx}~D7kjZ#d8PhF3;(N(K#b3;V#<>0(D^IpygxiyOq14DY#EU};%wpcPw-yZASd!y! z!%dN$RJ_;9U%r9Z{Qf+MC3hn0=WWVHL5yh=y_hyB+!v^#Vk{V+1^%tW^atJelS7cH z^*4e{8f21<1Bab>F^f{Hm)TckATJLG-|evCZ@WR}x&EY%ASNwT8$h6ffK_(9}X(S_FY$3&ZnGdN99F6H(ei8Z9lH2mr<4p^=c4FDZ&nrMJnROoJO%;<^YvJndBMc z$9}ZC@C$R0nNrV!OcrEnk&Jk;$`tEmCaMhN<)P!}%!o^Ka=jL0@*tB(GU7G+Qk(t? z)vFw=Dp2QB$d}EC+vSV(JcuNBhcOe0h!@MERIf5gRZu2*F8R-9$Gz+u^+u3MgG};N zG-l{U8O3^;LsbUy@}%;)PsF8JTu(NHF%x7ek&JjzMzLPzFqMJ4JiC0sF~bVKOotAz zyj}@1d5}pX8S!F2Q>>RcTxB3HPcvV2TwI!4>uHclR{Jp%sfZH`qg1cbrz%jF=bN8- zQg`9^>QI<_>eZl{+$%q$a6zgSDm4Q5;lfLZJS{Q$&`CYvcRMMc5{304P^kU+uRIhTBsz6t&8s z8OY1C)i-}eJDSe|{#8$dOv1H4UTF#{%rfc3^--mI6_-*$U7oc*;&ZXe;0@KFl2S!R zO(Y{;lu@jcaj8}Uc|LvJ^nE^(S(I$Zf{ZL=Ql=Kkh!=NWArX`ZvcGdox$xt0Hr;DG zXEJ~4Eiars$;RPUO5I)BTvtwgh|wxv0u7|hx<*;NNeiAk-|?7>S%1}8=$8@Q@?oNj zZ3&V*>lgzazyVX_Db~*kxn)VubBlGzW)}8w&zKJ_`@yGAvbFQbN~lr%4GeVP*Z?zVGc=H3!Xb4Jb5@15(?|+gqnbENe&5D z3t+0}y8ttN?Sz_mZY}OZTU&3!asUU+6_~o?fGV^#=vLu0g^T-)JKyn`+@J>U(oGmm z5n>(7IwYE`#XtveK&COM!R-b3qVhD^^E|f+%K;oPLneU$^w<>OOA6Es%mdxSne;rz z%N@rZwFVdZVdB=>G}nrO4&Z>yK~RMe(DU3Hn)Irm62&}szT+`f;KP}=2OJ^8Ez#sB z1_~f-!eUl{8r&XlC*^6D1D(vnHj_5~h@2}%7TBe^jejUfgM z0ip*4B}fP$aNF9Hv6Kp>_7p7TLy+S~(HG^Z#!v(EVxlklN_;w+)DS}m5Nh1(zy52l zeb$7MaB}XN{rj)IXV1)w2Y8M1^IKpTiQe*1CIzafB|K9$v+bs0Jo6G2&3j<+2-qNx5#5f`bPdk zc}#W$Z-30M)>xcFtbsMeX%!-1fd(clW=P}QEu*EIs4gm=Glf^3I4?b=TiKdq4-*1o zwlBPIk_RX2l&RXkrs7FBHw6!CI&5EfH4|0u%bn_Jubh zPjozC3iHo->1o}n%s=;!?F;WN@^=eSA0jodx9FTDH76E{6!N++NL`vB}JXVFEfY9nr1I1cd3-iQxhFFmWPNB}~cub6gW}Q1hO zm%`~!QcigK3%CRmRutI2@E#*i-1Ky*)i31t6gh7ccnwTgI$-<4+e4n{%%n@zye{xs z@UTX}_Jy~PJkjxNDHKU_|0WerE*~S9&P|6;hxQXEGF7sa)JJn%A8;K^xa((ob1!S* zUlKPxS?aXB=E-@}z?;By%h}aC&zEK)St>oFK3cL=_Z|5GJd&kuxO3sl%je6Rly17b zKdCpO?aTVvTadCA>0{%kpS*C()4MO;oIX%y`TU6AKNbh_8pQ3}+N1g>nbG(eKhgH& zs(aB=rN+CzyYSMr9SQb%klzpKXBnBBFL(_B=9PEq&-k~EKXdoOu}epl9HJU>4v+V~ zyz=t#I|mka%l~d%_2*^F^M47?hMvDCzqz}S@zLifNxG>|h5CvoQ$V+Rv|HG*o}Sr0 zOX8u1OKaa>d2rPi&hxyYzkELnv=Gp^siI08p{DEiE^OVzej2s(SJb4Y%(0cq#Sc*P z%kOVk`T1qb?s#+L@bpt1Dm#a$>GZ>^wk8>@9F+Y@2II={>z`e*=8cU%T=mZRJFyqC z#r8_s@!VVHM##F`?FK}b)l{T_Rf(P@?kg?L8 zaqgi!R-JdJsk$S3Kuxj-Hj8u>W15o*YUOF_8#^D7*QmD@2T5w2+ty`kZ9`$-lfOp& zzwGk+?D7}K2OrC?QJ=)#a=X&o_hfq{$Z4zF0=To?^#z&^` z6egTRc*3-yPB?MeRQd6$-8e9GvfyHTRCM$lQbBPq0u$zjK&rV>dM9Gzvj;gha4~jX zI;O4cw9zQ<o``uShzL{RpJo>@$6a_kWe55n<1V2w!pL(sByx=Y%%YjfkMEh6mTCt*>h<-Hw>#g&1l^m`H& zPXR@trPhIM0ICU*Hvz@HIRfEkN&ZBkrI7AbD6eZ8Xd2QgS2`&;)fa?hqS4%o4sx6J2Hwrv8VGP;6@HUVq zI-baha!Z{9y8u+vE$8xmk+v_qjpT`rCvdXb(!`0AKvWZ4B%&ZMBT`)TK)hz zpqem-1Qg&V0!7HvHc@S9>cD9LstFzvP=H$q6d}*oM5q67CLQ;w_;Q$vFyZ!>h=RO= zNRjeXO;lTI9M}Y)nsEP1KmlGwpa^-6<~gah)H<*YKsDh_;M%_Mwvs10o}7t3|KrTa ziK9SN6NZt9g1nkYanAUD!d)-{1=tWMLY|O`a!V5jP6AL(xD6(t0Jjq; zLY|3-?oW#imC0SlV8FO7~a-JyjP@_;z5{ zx73MG2(#ASHm}bUatZXs6|xVj+NGV}qf9D~ai5IcefIXeeihgU^?MS{yqsvY+_V7t zC@7?h{Qf>DVAJs}@8o3gpm2x^=tW)se9(c`@zV+~v%EtGt{=_sjQGREOGjp^pAYbz zpD)g#ji%l@xe4T6$xq~WoD)@M?Gd7-2Q#(LYjj#y zhP(~vDbP3}6IIYhi5AI0?ep~9?7V3qfh?Y&fGxGuFo{Ls7!^c$Q2V?I3Y~YN3li8= zt5y?PB#u);q-TnsFRlpu-uaWjZ)H>M0(pi19QmR?fYi~S+V|hF3c&mWc)gKWZs1`4g8>ZKNnn)!ZbAd#c?2>HjSgCSy^ayt_mIQS{@7-mMEwHKZyeo82kfhIHnCIT4^MqtbK=3vL~ zCN$u!B=5+FpOE+&fIYvP&;U43AS1r$ptUy#5gW+}u3O^1p4lgPm#iU>@m&NOz<{lU z5i)|-^T=CE9^<*fD~X>37_j4a6B_hbme8_bVgOfwmiQTXJ-?fy##<_f$$A1Au0@~$ z%t1spGKA)6?C}Qj7@I{N+gFL75(UT*eiCpafeh{No=JxpN(nE2 ztr9;8Fb_L^H=)50UPT~dvFM<+H(pO(Yus0u_*wSJRstD)MW6u;h$tg>!Gs15%F>zi zm?2W+r42m(4cN+cKQ}O;0k9#Efl&lnd*gNFnWF>V(slwF3Pqp+4A>Lc8aPhE9po|g zi9Bm>yz=%v6B>B9i$DoF^2pRcEd20Ep9LvtmjoGD`1#5Y)|5oj{FL8Al=PaiES6Oh z9yUqqtWs$A>h~lno=J+#K<71qH-TyO(fq(5;O-+1PS%N}`N6sK+KMM3rJC?`jez3c z{RE1io=K`@NF6w;fD)5UVM2!qD8L5@6d_L~)hc|?OJs{6uM5Bg6P~RRP=F5-C_yx<-tPGrWA}OYyBo{9Zw{EQW685HwwI|^Vq)d4v;50o=2*)@1)PZ z08B8!K>`Y}BT$4qkrcDfd6U3vV8YS}+ZWzJ@eJ8HZQnC#EFb2 zl4ANfZW?eSnD8Kt?F;WPdE%z$k)Ap}zc}Z-^h@2UOh1_L9F6S@?4z@46BjkyWCz4|RIj;@8-g#_act^<-9nU1y)1L!J0XT&TYZn9*;4uP4$Wuw5 z{AVs|Di2h6_6xiO6BaDkzVMEdCpw-=iuvcfN#HdwVTFS23-3AdM8{J}QPjD0U|#{{ z0-`27?;@Z8PY@_Vo=l3|ROd|tZv+!~Y;U|QhJQ(PJel-KNltZM`jx863>5#m!karO a?dojOYnRW-){mdQaqSzYZ@lR7xBn0GeSuQ| delta 124619 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 z z=`WLee4J@RNlDz(Ye_t{sAol2<)WCyNT9%E2qz`vy<~)^KPEng)Gkg z8J);?6rQ87pNBAVB3LRA7-6ZzELscI=~>L%d3h421hgn7@#ka|H?JVekt z5F#2zgd^kzuIt?}|9rXFywO~Jrtpf-3vL?D+^fcVuUuFzSYo)|BYK* z{8Vt|to>J1=+ESAfBT6EfQ_7kAJ2y#KAX z27#RL7l7!qNhUwh*V5{b$p1O74D)xEv@+N`2LzVzd!g-(wvCr3w2v^<2({hmo z&y~xwlaPvIC|6ny7maiA=^*l4LYn*bgT{B;Fw+EV;3n+N!`a`oMaX?U;-S z(Ii6$`_(4{MBtqQ!jKzp6vOzQdd*x!E+#;eY`wa5r0)_Cp1P@7@{k{kC)XR+Gwg>? zfF|MHCJ~~GkL%h5S6#=C@+kULB#)np3C|>)2C9AJJs}?KxZ&PBhW^ITh4riwKNb_D zNjMJ_A|js@5~kd$Nx3*RiO)syn2H4+ulSU39;o(__mp_B^9#%j&sDd!L(IE;Qks2Gyf&onam5w;pX+@~m%+f-1Z|r{m}C)m!4fxb3JT zxu=pAFyQ3(R3_fz!%(xZA~Opfu>zokH&tXeh86acn<`W9^{@t;Ff9u(Ui~TIT@^Ow zR0Y`NuF40G>z&orGz_lL3C1M6t%APdw#w|z;iWzb4OQJ?Zl0m|^05p5SY7+$P_1X7 z@?)jD^*{YaMV4!rg)9uPP(X&pSr`D8XPk*}+TgfV@kxx}v`NU0GyPkbgY?XC>u>4X zDf{iaSfKi=-#2Ey+1-Cj-wAHnr+Pa#9{l2t`*z}S3&;002mXsX)j|L2CN}o{eODDz z6W6h+?~LB}`k4$e0VUZMtNs=`Sg8#|F9eX^u7gA4I+Qc zCT{f)`rfl!cq^!6yO@emCZQ7E3Mv(;u&EpVp;rlS1(k+W*wl?fCA<|>N(iR+g-zYi z{az)!6;v2+ufnEo6e{7Zpb~P4P5mcw-?8D$(}1r3ksr{^FLGE+F`x&z^$+!BGhcb- z6{N;n@Mwch_oIjUDq$$A`A}9gluN@$&8 zfA`D2RjzSquiyHbxxel;@c!MGR@eN79d3NqUduWis!Vd9kt_PLhv!-@;T89Q|7l@m z_^&@jm~a=9w|_+m6RPrAo@OWhl3(|Y&40l@hq5y=Bb`}zMR(uo7ChE>-NI@C%ZZfQ z#m|!$`MDG(Qlr1Y{TiJ4Zt@-d#c9;?+&zA%P=|NaK=6)7;!E-jmhyR2#~=Gv&bo4Q zlkHe9Bt(<2N)jOww~0t!<2-8XZ@sVCsqmGvr~(h4p(f!iHMNhtKZ^%D`7~m=I0EeQ^eez_SE|p?nra;AQm^flS5(XcBf=gh)JFM7WyIqDZ{9UM7+A zsDx+|Zi+KN1fC-x4CV7E0>4?W5XgB{0yGJuC_*G&x1;4ET+QcEB;H!DlE_?4h$dmD zMTo@fMTDh%9_5L?%CatFN}upd!daBsN8SzM!A@ZowbXAI`rr=zv$`6DG8qp}lF`gz zA|*(K-Y6)HMM0=uva{`&wGqDCv0=#? zkMSB=cs)zUXWOf{$$z2D%XW+ttog6)ziw_VEo{KaCs;lvhq@o{+TYccLD4a73r?~^ zpoFt58IOU66Ui*gf4Soj_qW~pckC*$9douoWQ{-xr&=U%ss(mF)!Ow#c{h;&$V+W`@Fq2 zWIucU%@~o>=Pa53r2h-&(s|46_58xCO)nbn&I7{fg`gp$%Ih$^9D-Y4?jM`~GmYfZ zR~hjgg;$L1f$phG2CiJ#EMPe-Y8OZL5e!bePc!gWBtJUuw*ID1(+hq{=(KmzPT0d~ zIxMz9@O_KKN97qTxyj20?3+_VKk8pOYo~gJ>~(MVQ3)CY;V~kOgl<}#iHH{IPlyhyZuK%b&Ty}; zH*AVT`SLrzwV#4^Dg8FqfIXF%<$({61FL^m~?*^xl zB|oWW<(S)KGq+Dqa+^8~h***R2C-q&O}$rskIYAIvlVljWaf54HXTlSM2h5+$gt=Z z-zu-i7R*^W>*;#gyhgN-in*PzO@~_v#ft2`#D+~be0(w5FV-t$Gr7sOz0$4KVB^8{^5 zoEQle(fbJvlWy|P5bUM?t3r2oZ)uQjAKUNFlRLqi7NH*B$CYZUMfJ-@8pa>3i3=Fz;-w!ErPXKe%2n#BHXeZz@!Q+SZ?lTkZS$4ug zK7F!B%u$U~jRF9d?}~YbyHcp6^6As?lG$(VIIvn!=ky8Hm@j%lbrwp$PzuJfHLv#% z@K}_9yT9J!xtr$Nx6i(IVOF>pvp|zx49r1rhhOFX+uzN$r|*p)GvMnTdd#gF1?SKg zldu#)<6>?0_&jq0M%?KBdMd`^ci?;>j~j*)o=Jx9_xE+JdGzfG;pn6PD#aDx>`ka9nfSA>;1cSyqQY5xts?FGf%OWh zoGd3)lkoZ}Omy}+Vd1nJFDs8$t@L?RH6EtU3C|=}L|FUCdtN-)!FMY(<`|xn>opRY znF-M(^iYIId_hEbimz3q9Y43;Ff5WY!J34Q3KOv}3JY^?@?;JA$j6bKSi z3DG2c>XZQ@aAyHw2w$~G2ma^vhEb893DqPFr!WyaC@lQNH!iMl`Bmdzk)(t&NzY7@ z)FgZWRpRTb1cfm-dZI?%2Xp1D|EXt3psW&w&Tkx5wW2oj<51%)wu^P&J9KiNYo zgfcx7s7df7s$Go{nYjETkzmVheL=C@`Uxba;gFaK&Ln&;6`HZUfpc!;lOBLowSiN8 znKHLgXooU|WeLCgIjDlgcbNYQYl4q!ZR!cER{6r@5O?ZnzA!1Jg^BcHPpHoYsUvQm zZEJ$-)(`xpE8`*w3)X@=tZmqY-UF7e39h?n0BeH(l4s;n?`2p=3u}S|``CqlToUug zq3Fs&iN%#CY+E@1u6T_=DC;u#!@YgN~ywDIwHgTvTEl5<*qS!Izd^ zgsO{6M~p*4Xy~{cUQ-`JeZ@5*#vvhOSg$}Fwnqph71x3o2epX#pyTLE>O&}>xa7k) zB!sGtgD)*{2$d4obr^?)(9m%?yrw>c+K8(+j6*`mu$F*0Y>yCXAuiD{4r&qOpyTLE z>O&}dxE8}WB!sGtgD)*{2!#$;To{Lh(9m%?yrw>cl7{Olj6*`mu!4X%Y>yDC7p|W$ z4r&qOpyTLE>O-hjxJtq}B!sGtgD)*{2-OLfLKugH(9m%?yrw>cQiN+Bj6*`mF#kpz zwnqrH2bVS&2epWC&~fx7^&ylQT)ki%5<*qS!IzdegqngY6pTYcXy~{cUQ-`J3BjcZ z#vvi_{tM!;JwhlNxaNR3baH{gwmELEQ78(yynvfXgSxpBFN{y&+U95M_SKik7yP60 zd1bc=X5k{o`vw$ovW|A%-N}ui;q2+9G@*3 zYoh`UwNaBa&eGL9I`^z_a58!7!K#;ikB>xE$kM35M29m<*kLgu^EokLD}U;NUla31 zq47`~B|MXGhOYLJ_xOQUYr#(b$OF%ld#uZKB#lcO3GG?Y z;AsAsgMml==pGf5FQH|Wu)k^^oqJ9=IGI1@z>?2+NWO$u%6V!Zd24OtGT2ETbHEH_ zOJ-ogEK|ZU79%o0Cnjv=&p5CYG#+M)39pj-sP>U}o_Mg6KjFY~kgYgT{ETUZTfbFG zIQ3Th$U9#=*eN{W0Ke{0V=GI-1ZW~oy9J2As(>(*Kj47*XT3uHCAfx3@W4PdkGKnk zgPHvK224OUVge?(W{y+yh+8il%;b+Z;Kv_syW7WKg3Bo39S1d!xQm2?nZnZz5WSM| zkbw!$B%EWbedMiOZXbWJlRw&k$wwTMFTs^5;S^iVBkps;!A$;KgUKm>z8Ma=SHR%{ zQlVsYPybCxYaMA}Cj_kIPc`UxG0>QKXIVs$d7xEEn^-uo&rG!9w_))|e7y6>cl<{Q zl`PSc_BD#8-Wb}SI>(-9uxdZQC1q||+F{R!J^YA!J}&%^*+;o|-`#x#c94Hy{&~M) zV9Qm#qG~{$@e-~K-0!i#{}`ZuC%aXzw-sKs-=lsMRl;`ihM?h&LiKzP=Y9{rK??hK z7JquqHN91fVs;_A&HX!PY?|%&?-XF1XiG0foBGq|>RWH0?Z3jG-%;6;`$GhqZ2f58 zT*f+X-`V<~xF1p}Xmhs;y!9Op-iOeHUirb}KimJb>i^B&(7Rq;IrSsHE8Gu%z+Jv8 zS%FMHq!+t#5xPG8eh7Ac^*mkoD+Uu445FQQ1rRQsCgFE%&2l8({T>@ESjumTOio}) z#&9_A5}ZkRB~kmx+bkYEoqktj=nu2Y*^CP}*U04wSl}YZO~R5(oXFiGF6`wuM!4(kDxG?+#T@|SUKy7%}ru?K7K#X5nxTi(o2|#Z3qi< z`OOg$XVtTR#UR-!njlTYunG~8KM)e8k{cxC?p806%d$AZN`h;GFcEvdurQb0AtCmy z^)j)%HY8Y+@KP;I#6BP_%;k4TrXIwyA$hEg6P`)fd$o_e2gQS({0<2{{KtCLh)C0f zXcBrTLL@#UA}l3$NQnLCdW~3SX@WHge}}^;k@~Qxu$JE-+4^grN?)iq42TR(fF@zj zMTo?oi3op_TO`C@Qg0H=4814GP)djuCSo5E7Uq&WB*b1_&(6-%G~t?vVHGEG9~Bq& z@>?Vx>967hGCvcZB*;&-kGx-r2Rr!<61q5EFO$gBOo%37l_o+YJ|-e8B{xVWpYh{# zXT3r!Gc>`PgteM55&L2PL5^!4%;mR8=;*!msu7W)3DG1RA`v3-L=j;rxkp0mL-iW5 z%+LgD5@Lmk*pCPcbICoDa3xv$>w3e`$khaG5|(g6Mf6ER!(@J^#7EWNc_EKUdT)}X zl(2+T`^c+^2Rr#~5_bNN_3X2GekMp0v5XTUB0nx9OeJ?p{ME@PDXC1-0u+}flkiT7 zAQ5_spfHx)DOok;p=CmurwP;~gbEU&s0@%$FqYpcS@%cJtB}V8O?V~&ualJp?>2y( z-zypaU)(FH6&i9&2dX*8-%(`g#ph(+eVVzjhw8W2Pk;46;lFI5p3lFJd)2ntS1v3S zuD>i|#ED(o?77L)GX2)um9uW$Tn&Tz?XEJ5Gw!u&6rANc0JV5Q2g*k&qPNIpm_#+> z+=B;cAAv9ZSI&BTbB&GHVP_OA@K#M?z;t-}2pA3ABLnOM%bUCYPn$l*{@@MlSa0Ng z$fi&ebCXdc&w6B&DY4KIFJ+>8sQJP&_wqfUwP*Pknf_f1bC zQ(_lHj26nW0Lv()(k|RsZ{`-tw7}CKv0zHHAY!y|m@L4ul~&XHFka8jjpqRk@H|Ki zm<|mH7!4dD12Akw*0Za$4TYm{XT3xNJP&BV&V$5)DRCG?j24cP1z2_iuhw}m{%W5> zWuomYcrl&@3EGtCyigH+w9qh#$}5fkL-k5-p==g-79=K2i=~*5(Zn$_0n=8B9kp5? zM1I5K%2~gzSMveLEi@7fro^gD#AxAIS%76!Woajx^;$jxw7~NqF{{I*YEaz+J%5*o&X8ibXdTN6v-!u42vk>((re0DbWB=02;6p zAhBRdtmj0G7Cs~ku&jFSV@jc^63znh?JVE|6|V&aJ}$~#&@gb}+u^3?-5(4W3#9@1cu$;tdgK@ysvKR*)2VYuz z2n$H8CK!i=P}OntC5=N^Fk-d9I3$FIj>~#&@gXb@u^eC=5<-S65aO^sLRbvq<(_d+ zi+En>IQY`yLs<9WRh@B22vr?NU(z^)6&_x+8Ha?>&~aI>Ek1-b9bS|fhlIfEB;v3= zLRiD$RhMzV#iN)HIu5?H_z;$BcvWQ_5<*qS(U&w1VR^=`n%L@=5E?oz>$Sy)uoAc6&(J((VH#&;~`E@d*;4?+_Hml3gU`3HAgexMuF7nn&CL z!of_kjbwAoz66(1!U0k9h&xC)m`S&huobf};gxcp+DG1X;=xY4Z6wA-4kpYpC5)gL zk$JtCu$68jVJjwK!mCii2LN01h`T{Jm`Qh$7!Em@;Hs2xQmpooccXZ4Gu=hPR?Na5 zC0R%br@(3-c{TB1C)q^8MwWmHuR#%qSnVV4TjIe^vWvtTApsLyGsmfU#BC4`W|Cbb zxUFv=e+e$5gmYOnkGPwJgPC*}30pA%6JCiD&S2F(@@^Inc9LBrhC}WpxH2W2uBv&& z-69;!B)dr1h^be=;Q~@I9DXNU%_A;suz;Cl8;RkNdI_#d$?A_6=c3>y`$$X+SK9~j zRD(M;N=8pn`>C*v#GV`?<*zYg9!$8&cNOK# z9nN0wEWBb*NqBNd0n2+BY8OL)2SS!SIRu@zCx@^E;$lf9cMn(YGIe<62BBE1+$qms zsrAVrY{&1Q{|V8tb&>>LF$eGn;)H#d*z|h(gG1PckFqc@*2)W940)A0EMWwSVK~jY zm%;h;!6D`i9;A}HTq~dvj~bO251}IZbfICg^}!)*XX`rKVn7-Ry+N&x9sNU|4Hn^N z2o9sI&kf1pWx}~An6R5v;zy)l5q_rN=t1(}kRKyO7;S=iYv^QC4?7Gq>JThY1g{Yo z2Ga+Juob_6PBPa36LQIP@Zb=UBKa(lVX^hWA?7t6uJAHq&BRXF<=ktrBKvHyVYBtg zA#BIQCfgD_fmd?J1&i==1c%YqCx@8hc)o(ck=zNpN}Z{lTXW<(eKf#i>w`ngC1iK* zcP(MpsKlWZEc$)D;P5|raELjLX#Y9S?1bDfCHx?Pfg<<@fnl)q!69tMXp_yvPS8#2 zuyhhDvTqa{&bK}|w`nsj?pIDayx-nsKk&67U4Gu z4x`C~L(FR=wvmz83Ambr1&ZLC1%|=&!6D`|Zja|a*AjG%N-V&His)N}hRHS$4q-$4 z*#2vt+zGxxE!JbgMf|P8!)%)ehvfJ&@yzdp-lP)CGtnabHql`rA(%hchW z1c2b+Sc~~jgHW4=!Y|Zpp2&ZN=LFv6 zu_)Ib^o3yYxgmv%G0QXQ#gV-EDz86%pR7GMgdX#`AqD5qmntQz_V?ET-?mto-D1ZX zY~(v+?Xe+j#Hu~P)hOXYoZvL}{Q|I`q+ zuSyBiNbMu<81Y~y-xEs@{Zm8Oj)|EN zO+pVvh{R(>gr#IpEV2HnA%;b2CRmfuQDGwXeZsFeXcAUPB1Gcdnr6dNvM1Ia z8e&l7X9BHSNUrmBs4*gQvzV}zZ-}Lr{+S_c#`H{pCSkuth{P=-!rNp+EV2HfA%;bI zCRmdYD@?@RBP`4%8)C=#&=5kIqo*c0Y7#s&M34w=2nu8QR@m^+kdNf)nIJQYCTp$n z{DFwDly8Q$XNIs5^D@DeC}FLm_R+)p#e=8GPFQ+Whm5D1qDggMK?}N2Rh8PZMnc%9FtQ+s&XC|7BkN3~zAL$cA z3eEUM9;`&U$-8<62eEAA&4z!4Cx$#EhaLvG@Wha`B#~YWIQ6H03(1}s!qpL0ss(pg z)vyWo@B-HI#E?(r>A2K88rILk&A$xbLLWl;70N9ZGzcwMoOt_CEdrse<3J8AW8oH7 z&*&a+A0~vVj)N~PKA;GK4_ukz?c{{e&~fxdBNKedLV3m|DBea*2pJYcyp7;Xiw~h7 z<4P0bpcXL>Iu5?H5JLIIMTj6*_b=(w!c7DA}4xH!Z(B!mnL z6^O(32%((fA`s)C7BLPw4!*Sb5K1R5^)Ln zk-5hhBap#Xy4S;aD2)6Jj_mX(9lWz84E2iLZl7f_Q;;r_Pw@p0QNjH12l_g;UtWm`K5duWu zp9O@WWVZ(!F#!`?!z9QUHIKNz3I{XEW)JfL3u_6knd8(v;{GNa%p{vVaKGI?{}NnA z3GX$idBn~5rez?^q?|r?MUIB+INX2m2?4jln7xqBFOtRU7jhK4N^V9>b8gZRyZcF?CC%ZkUX1SISYB>R$ zFI?R3p~r?uJ#6@>z7gLA9olQ)V)w}Lec@*(kK3($vG#aeYOiJ7mGD>Z2JcRc>^-n# z{#U+pCWc z|Ha>MI!wRew9vh8pMfjq)(Yl09S6sC>^oq;*vqebezIOc1nes^>@m-ym+9itIBpZE(IiSS5U;?aw3AO1c1Adx9Iu2ezob) z?iDj;d}MQt$~^ZIj7j)|PUwC3K_>*#M=k`m5k^e`50NX}sJTR=bty*6uZq0Q-L(I} zwF?_*45b(QPkmqgy~bVmj)C=j;J3dCvT|1M<_4YSC9dE!!f6tOvy;u)cYx!!oSlCn zY}pN+G5f#gRtt@J6AFE?Uy4#MLvIReJeR9CSE)CAD(qVKhGhf0FKnh=l5*_Qm1x8) zJbT%I4e7uz7Q4e}`Y$&#Rd_$RR`8EEW#Yij2dG%#!W-l>47#r@*D(99${pf%Kf^x) zC4*;%d(JDJnt}L(R|~B{#UNV3c4XfGo9NRyTo6)!siLTCAFtJ zV3p3WsRR8p`WP&JXdW{CY%NhT^6CD4cCmoRk>y7bNA}s38rh*`0cEFYfrZg5lQs6w ziuTBhJ#!iM3*Osf-&wX_W}p_&&!l~YlBpvH7If}~PgXvV>G-1tj&dJ9p>IBZMtDCw zmC64M*X4G~W>@L;Z#F#TL6lS6O!t5XAbp!x!1J<8J}LJ#7Uw^ zk$jxUu$b(oYvciWB?hEXKqDZg#DEAD(Z>r7lP$aHnuPlV_Mc3ob2U1Fn-V9Ef<^cV zg2QObZo2GHzKe$mkj)F^-IjY{mS#GPwpfwI7F%}HRmkS9AhK;&Py#n4x-D3QpCLGm zwrr=Xn&U`qgCn&Qw&~Duu_F6Sv0<}iH(f0cckXyCftwN?7c9cp2o9qy`{^2lPh39m zotX$YgVIRYro-PUHdI8PB{WP<+fC=Mx_P(gM zMmAG>B1vuPFxp~8_Bmq1X3KWElC{GIL$aCN3EOnIchOK0y;f+LOm@?i&1q~6+BxQS z0yZ5^Sw)KE&xs7@TXxe`$R7QAaTF^F+jKa46)UpO6B{;LcGFeOZ=^Q;<~O+$w&@Ig z+TYzbR79UIG)zw0OXnZXX_5X$(dk+OHl5L3{W3@bt_lp_lf85eg88wU?UHA8f;KHq zaK(yFUnn-5Z{1AS%<*O7nc4~6lsMfLEz;ME4y&zu>9R6%o6mqDoVmR@$!+Rz@+(+` zUnDq;PTNZ7KepLw-3G;*iCqBW8fhy0M!rB1e2Ks?IBhST|FS>9{M2UE!%yvmY&s;1 z6v?5AfyHUN>HOFHjeK)4MJfr|bf!-7_nZN+NeTYi`tx2rpXN{a$v1?R3%!N*xOi77 z;cpnDj!HMv)e7pI{Gt}~B~Pf$Lg5z*K~Lnr!W`{Nk3|940G@L+{s>p8aG_^?CcPM# ztDxUzGhK}yb5*3^9QtAs79wa|tjxYDCtxJmP1i6UmPHbtN%#S+_R+a(#G{jKcGEQp zWu0HovlmHb5*A{DMCi4G!dSAME?bEKv|_&iM6XT6UJDR`*9izi?Kjkw$mJX$!J34H zmoO1~y|6Hs?58V}$LVvzGYP-TX3Zn+2H{|){eHR%sZ8I5Y7!2SFcEvBu<*A1hPtX@ zv0Rs6O~T8kFcDi57Uq%-bv5#snF-G%bW`mk?_1)*PRoY6h7pmQ3DG3ZA}qDrP*)?A`I$gX!slS&rHS-nSE$bgsp&t%Rp$B&Yu0=6#AS8ECalf?OE=Y(3hGO} zml;4lSYgqUV1FF`aY@V{hq5a}U4!6q<%wH85<*qSfgD?gl{-{_AkaN7oF;^Zj)N~P zKA;u?fh$zp>X8sKte3#+K+?!WUsPpfT#4eA7qy6S&~fx7C8(szxZuP%B!sGtgD)+; zKv9EUa8-$MNC*ubm&0r71L_zMZ0!g?CYBH~EMy=K+asW40fB2oTMr$W`}fu$hCzVn zO6mfN69BjrwD?^ufT{q&la?r;8Uf%m|LPb8wFoXWbX*RvsSB!eveQ9eHY9`$3k-$F*=fpT9gsP5%FD<=LsgbRXaYzUa z9hbvv>VxWv>~k>=34x0hh{N^>p%OVS#sNzNzD10Kj-xNB525rpKgJ;;RCOGDX^Ddh zgsd9lkPsR=E{E6D2NeX_g)t5ZA;T&H;;=n}N`P#AjDuRlIOsU~lKPbu|i64O-lH1{Dk(fX!I`bsPnhc{c|RdKuyTnsDMLlWD-u&)jsy} zXX3%jWJ?{pTrwzXqXHCNHVL~dNQ6EjD2z?pQ|Esu3_h|nN^oULhQHvSC}gc8?NQNS zW!jE9zocY16zmDkB%G>iDx+ z#Mv@O!mCllxtZEW-h*a2gPnX&o&9JVqR0G8a1G+OL!(BPwgY`5%FMW z+O9hPLuN7m5?ncVPt7ClQQ=^wbyJS6#!rz%z;xo=G_IR{O|%LOj^X zH`UoMx4}PVV1jGX5P$m4T1VQGqQOeOr_O%4Ehb<>%Wz}fF=5m^;+_%?PUd^+>;sUk z_+{sWSE6LU`=M52=^% zOfvjjt9Q=|2Q&GWI{t1JX-vHPObLmHD@c_RPK4DwdKY#=z{`9~9e+oQjV$pJUM=!E z(cUJ)Am@AP#=h%+iHmCdz)Jv)9Pm7v#VvJ Date: Sat, 20 Aug 2022 17:19:45 +0200 Subject: [PATCH 24/43] more fix --- .../blender/exp/gltf2_blender_gather_materials_transmission.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py index c16fe2c2e..a0a850467 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_transmission.py @@ -29,7 +29,7 @@ def export_transmission(blender_material, export_settings): transmission_socket = get_socket(blender_material, 'Transmission') - if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked: + if isinstance(transmission_socket.socket, bpy.types.NodeSocket) and not transmission_socket.socket.is_linked: transmission_extension['transmissionFactor'] = transmission_socket.socket.default_value transmission_enabled = transmission_extension['transmissionFactor'] > 0 elif has_image_node_from_socket(transmission_socket, export_settings): From 83b7ec0e3527a0859dc8ac6c76109cc329ffa1ab Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 17:55:11 +0200 Subject: [PATCH 25/43] remove comment --- .../io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 6b6d6d283..d9b93e1e9 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -62,7 +62,6 @@ def __call__(self, shader_node): return isinstance(shader_node, self.type) -#TODOSNodes: is path still used somewhere ? class NodeTreeSearchResult: def __init__(self, shader_node: bpy.types.Node, path: typing.List[bpy.types.NodeLink], group_path: typing.List[bpy.types.Node]): self.shader_node = shader_node From d54defed8c143e8db4106514a2989d0ca78f376f Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 20 Aug 2022 19:20:10 +0200 Subject: [PATCH 26/43] more fix --- .../blender/exp/gltf2_blender_gather_materials_unlit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py index 6446c0b05..725263187 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_unlit.py @@ -110,7 +110,7 @@ def __detect_lightpath_trick(socket): prev = previous_node(socket) if prev.node is None or prev.node.type != 'MIX_SHADER': return None in0 = previous_socket(NodeSocket(prev.node.inputs[0], prev.group_path)) - if in0.socket is None or in0.socket.type != 'LIGHT_PATH': return None + if in0.socket is None or in0.socket.node.type != 'LIGHT_PATH': return None if in0.socket.name != 'Is Camera Ray': return None next_socket = NodeSocket(prev.node.inputs[2], prev.group_path) @@ -139,7 +139,7 @@ def gather_base_color_factor(info, export_settings): def gather_base_color_texture(info, export_settings): - sockets = (info.get('rgb_socket'), info.get('alpha_socket')) + sockets = (info.get('rgb_socket', NodeSocket(None, None)), info.get('alpha_socket', NodeSocket(None, None))) sockets = tuple(s for s in sockets if s.socket is not None) if sockets: # NOTE: separate RGB and Alpha textures will not get combined From 0d7a60619eeac77c48decec0b65c1d25fdae03c9 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sun, 21 Aug 2022 09:13:42 +0200 Subject: [PATCH 27/43] restore old node group check --- .../blender/exp/gltf2_blender_gather_materials_emission.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py index b92ee1253..62d501c62 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_emission.py @@ -20,10 +20,13 @@ get_socket, \ get_factor_from_socket, \ get_const_from_socket, \ - NodeSocket + NodeSocket, \ + get_socket_from_gltf_material_node def export_emission_factor(blender_material, export_settings): emissive_socket = get_socket(blender_material, "Emissive") + if emissive_socket.socket is None: + emissive_socket = get_socket_from_gltf_material_node(blender_material, "EmissiveFactor") if isinstance(emissive_socket.socket, bpy.types.NodeSocket): if export_settings['gltf_image_format'] != "NONE": factor = get_factor_from_socket(emissive_socket, kind='RGB') @@ -63,6 +66,8 @@ def export_emission_factor(blender_material, export_settings): def export_emission_texture(blender_material, export_settings): emissive = get_socket(blender_material, "Emissive") + if emissive.socket is None: + emissive = get_socket_from_gltf_material_node(blender_material, "Emissive") emissive_texture, use_actives_uvmap_emissive, _ = gltf2_blender_gather_texture_info.gather_texture_info(emissive, (emissive,), export_settings) return emissive_texture, ["emissiveTexture"] if use_actives_uvmap_emissive else None From 9a1cb313c8e174d77e155f7a195409af19ec1261 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sun, 21 Aug 2022 09:13:55 +0200 Subject: [PATCH 28/43] remove debug print --- .../io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py | 2 -- .../io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py | 2 -- 2 files changed, 4 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py index b0f3d2830..be3b4e7f9 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_sampler.py @@ -27,8 +27,6 @@ @cached def gather_sampler(blender_shader_node: bpy.types.Node, group_path_str, export_settings): - print("str") - print(group_path_str) # reconstruct group_path from group_path_str sep_item = "##~~gltf-sep~~##" sep_inside_item = "##~~gltf-inside-sep~~##" diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py index a73ef95ac..eee0c250f 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -88,8 +88,6 @@ def __gather_sampler(blender_shader_sockets, export_settings): # group_path can't be a list, so transform it to str - print("tab") - print(first_valid_shader_node.group_path) sep_item = "##~~gltf-sep~~##" sep_inside_item = "##~~gltf-inside-sep~~##" group_path_str = "" From 1c2163193fa00cfa8b3e9ddaec350bab53a2ad57 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sun, 25 Sep 2022 17:18:32 +0200 Subject: [PATCH 29/43] fix after merge --- .../blender/exp/gltf2_blender_gather_texture_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index 9b75e8c1b..a8a40b9e3 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -184,7 +184,7 @@ def __gather_texture_transform_and_tex_coord(primary_socket, export_settings): use_active_uvmap = True if node.node and node.node.type == 'UVMAP' and node.node.uv_map: # Try to gather map index. - node_tree = node.id_data + node_tree = node.node.id_data for mesh in bpy.data.meshes: for material in mesh.materials: if material.node_tree == node_tree: From 75bbeb15cca20f030eb2d21e6865e02cbda2bc50 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sun, 25 Sep 2022 17:21:36 +0200 Subject: [PATCH 30/43] More fix after merge --- .../blender/exp/gltf2_blender_gather_texture_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index a8a40b9e3..4a4dca942 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -188,7 +188,7 @@ def __gather_texture_transform_and_tex_coord(primary_socket, export_settings): for mesh in bpy.data.meshes: for material in mesh.materials: if material.node_tree == node_tree: - i = mesh.uv_layers.find(node.uv_map) + i = mesh.uv_layers.find(node.node.uv_map) if i >= 0: texcoord_idx = i use_active_uvmap = False From e1bbfef5cac90ccfc4a5c2c940f90d3b6874ac8d Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 12 Dec 2022 12:45:36 +0100 Subject: [PATCH 31/43] Missed in merge commit --- .../blender/exp/gltf2_blender_gather_texture_info.py | 8 ++++---- .../blender/exp/gltf2_blender_search_node_tree.py | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index f642db72a..a0218344f 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -140,10 +140,10 @@ def __gather_occlusion_strength(primary_socket, export_settings): # Look for a MixRGB node that mixes with pure white in front of # primary_socket. The mix factor gives the occlusion strength. node = previous_node(primary_socket) - if node and node.type == 'MIX' and node.blend_type == 'MIX': - fac = get_const_from_socket(NodeSocket(node.node.inputs['Fac'], node.group_path), kind='VALUE') - col1 = get_const_from_socket(NodeSocket(node.node.inputs['Color1'], node.group_path), kind='RGB') - col2 = get_const_from_socket(NodeSocket(node.node.inputs['Color2'], node.group_path), kind='RGB') + if node and node.node.type == 'MIX' and node.node.blend_type == 'MIX': + fac = get_const_from_socket(NodeSocket(node.node.inputs['Factor'], node.group_path), kind='VALUE') + col1 = get_const_from_socket(NodeSocket(node.node.inputs[6], node.group_path), kind='RGB') + col2 = get_const_from_socket(NodeSocket(node.node.inputs[7], node.group_path), kind='RGB') if fac is not None: if col1 == [1.0, 1.0, 1.0] and col2 is None: return fac diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index d9b93e1e9..2ba779547 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -162,7 +162,8 @@ def get_material_nodes(node_tree: bpy.types.NodeTree, group_path, type): for node in [n for n in node_tree.nodes if isinstance(n, type) and not n.mute]: nodes.append((node, group_path.copy())) - for node in [n for n in node_tree.nodes if n.type == "GROUP" and not n.mute and n.node_tree.name != get_gltf_old_group_node_name()]: # Do not enter the olf glTF node group + # Some weird node groups with missing datablock can have no node_tree, so checking n.node_tree (See #1797) + for node in [n for n in node_tree.nodes if n.type == "GROUP" and n.node_tree is not None and not n.mute and n.node_tree.name != get_gltf_old_group_node_name()]: # Do not enter the olf glTF node group new_group_path = group_path.copy() new_group_path.append(node) nodes.extend(get_material_nodes(node.node_tree, new_group_path, type)) @@ -180,7 +181,8 @@ def get_socket_from_gltf_material_node(blender_material: bpy.types.Material, nam gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_name().lower()] if blender_material.node_tree and blender_material.use_nodes: nodes = get_material_nodes(blender_material.node_tree, [blender_material], bpy.types.ShaderNodeGroup) - nodes = [n for n in nodes if n[0].node_tree.name.lower().startswith(get_gltf_old_group_node_name()) or n[0].node_tree.name.lower() in gltf_node_group_names] + # Some weird node groups with missing datablock can have no node_tree, so checking n.node_tree (See #1797) + nodes = [n for n in nodes if n[0].node_tree is not None and ( n[0].node_tree.name.lower().startswith(get_gltf_old_group_node_name()) or n[0].node_tree.name.lower() in gltf_node_group_names)] inputs = sum([[(input, node[1]) for input in node[0].inputs if input.name == name] for node in nodes], []) if inputs: return NodeSocket(inputs[0][0], inputs[0][1]) From 3d8a728eb559f6b8007240e647ec1468fe4a0c0a Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 12 Dec 2022 13:08:19 +0100 Subject: [PATCH 32/43] Fix bad merge --- .../exp/gltf2_blender_search_node_tree.py | 6 +++--- tests/scenes/01_factors.blend | Bin 1020412 -> 1022180 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 2ba779547..3d2984125 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -267,10 +267,10 @@ def get_factor_from_socket(socket, kind): if node.node is not None: x1, x2 = None, None if kind == 'RGB': - if node.node.type == 'MIX_RGB' and node.node.blend_type == 'MULTIPLY': + if node.node.type in 'MIX' and node.node.data_type == "RGBA" and node.node.blend_type == 'MULTIPLY': # TODO: handle factor in inputs[0]? - x1 = get_const_from_socket(NodeSocket(node.node.inputs[1], node.group_path), kind) - x2 = get_const_from_socket(NodeSocket(node.node.inputs[2], node.group_path), kind) + x1 = get_const_from_socket(NodeSocket(node.node.inputs[6], node.group_path), kind) + x2 = get_const_from_socket(NodeSocket(node.node.inputs[7], node.group_path), kind) if kind == 'VALUE': if node.node.type == 'MATH' and node.node.operation == 'MULTIPLY': x1 = get_const_from_socket(NodeSocket(node.node.inputs[0], node.group_path), kind) diff --git a/tests/scenes/01_factors.blend b/tests/scenes/01_factors.blend index 4c961c161632313c495292a7c19c436875efb57b..65db9404a42e436831f70aef1f376188b8dd47c2 100644 GIT binary patch delta 95732 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 From 6a73918145de69ffff869e7c1d50c0af68ae02a8 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 12 Dec 2022 14:11:57 +0100 Subject: [PATCH 33/43] fix recursivity list passing by value --- .../blender/exp/gltf2_blender_search_node_tree.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 3d2984125..3e7f27a0a 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -93,7 +93,7 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, group_output_node = [node for node in linked_node.node_tree.nodes if node.type == "GROUP_OUTPUT"][0] socket = [sock for sock in group_output_node.inputs if sock.name == link.from_socket.name][0] group_path.append(linked_node) - linked_results = __search_from_socket(socket, shader_node_filter, search_path + [link], group_path) + linked_results = __search_from_socket(socket, shader_node_filter, search_path + [link], group_path.copy()) if linked_results: # add the link to the current path search_path.append(link) @@ -114,7 +114,7 @@ def __search_from_socket(start_socket: bpy.types.NodeSocket, results.append(NodeTreeSearchResult(linked_node, search_path + [link], group_path)) # traverse into inputs of the node for input_socket in linked_node.inputs: - linked_results = __search_from_socket(input_socket, shader_node_filter, search_path + [link], group_path) + linked_results = __search_from_socket(input_socket, shader_node_filter, search_path + [link], group_path.copy()) if linked_results: # add the link to the current path search_path.append(link) From 052df850e1f1b1a356e1dbb4bbec230c7c57f942 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 9 Jan 2023 11:59:29 +0100 Subject: [PATCH 34/43] Fix merge --- .../blender/exp/gltf2_blender_search_node_tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py index 3e7f27a0a..06ea3642f 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_search_node_tree.py @@ -267,7 +267,7 @@ def get_factor_from_socket(socket, kind): if node.node is not None: x1, x2 = None, None if kind == 'RGB': - if node.node.type in 'MIX' and node.node.data_type == "RGBA" and node.node.blend_type == 'MULTIPLY': + if node.node.type == 'MIX' and node.node.data_type == "RGBA" and node.node.blend_type == 'MULTIPLY': # TODO: handle factor in inputs[0]? x1 = get_const_from_socket(NodeSocket(node.node.inputs[6], node.group_path), kind) x2 = get_const_from_socket(NodeSocket(node.node.inputs[7], node.group_path), kind) From 86bb1bbf9d27e511ed594e754b38833f530e42e9 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 4 Sep 2023 19:09:58 +0200 Subject: [PATCH 35/43] Fix merge --- .../blender/exp/material/gltf2_blender_search_node_tree.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py index 3f7743d3b..39e197f00 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py @@ -239,9 +239,9 @@ def get_socket(blender_material: bpy.types.Material, name: str, volume=False): type = bpy.types.ShaderNodeBackground name = "Color" elif name == "sheenColor": - return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Color") + return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfSheen, "Color") elif name == "sheenRoughness": - return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Sigma") + return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfSheen, "Roughness") else: if volume is False: type = bpy.types.ShaderNodeBsdfPrincipled From 346fd2d1199400b070fa8f841fe202d2767721ef Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 13 Sep 2023 20:30:41 +0200 Subject: [PATCH 36/43] cleanup --- .../blender/com/gltf2_blender_material_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py b/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py index 559364597..19de169c5 100644 --- a/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py +++ b/addons/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py @@ -17,7 +17,7 @@ # Get compatibility at export with old files def get_gltf_node_old_name(): return "glTF Settings" - + # Old group name def get_gltf_old_group_node_name(): return "glTF Metallic Roughness" From 76e0139830bb6c246ff55858307b89e94d1572c1 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 13 Sep 2023 20:30:46 +0200 Subject: [PATCH 37/43] Fix merge --- .../blender/exp/material/gltf2_blender_gather_image.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py index 7bf3d1ef6..f128d0980 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py @@ -238,7 +238,7 @@ def __get_image_data_mapping(sockets, default_sockets, results, export_settings) # some sockets need channel rewriting (gltf pbr defines fixed channels for some attributes) if socket.socket.name == 'Metallic': dst_chan = Channel.B - elif socket.socket.name == 'Roughness' and socket.node.type == "BSDF_PRINCIPLED": + elif socket.socket.name == 'Roughness' and socket.socket.node.type == "BSDF_PRINCIPLED": dst_chan = Channel.G elif socket.socket.name == 'Occlusion': dst_chan = Channel.R @@ -252,7 +252,7 @@ def __get_image_data_mapping(sockets, default_sockets, results, export_settings) dst_chan = Channel.G elif socket.socket.name == "Specular": # For original KHR_material_specular dst_chan = Channel.A - elif socket.socket.name == "Roughness" and socket.node.type == "BSDF_SHEEN": # For KHR_materials_sheen + elif socket.socket.name == "Roughness" and socket.socket.node.type == "BSDF_SHEEN": # For KHR_materials_sheen dst_chan = Channel.A if dst_chan is not None: From 1b4e82ebbe17782fafa4651d75ea0ca5591b0331 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 18 Sep 2023 15:35:50 +0200 Subject: [PATCH 38/43] comments --- .../blender/exp/material/gltf2_blender_search_node_tree.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py index 39e197f00..bac50350c 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py @@ -152,7 +152,8 @@ def get_const_from_default_value_socket(socket, kind): return socket.socket.default_value return None -#TODOSNode : @cached? +#TODOSNode : @cached? If yes, need to use id of node tree, has this is probably not fully hashable +# For now, not caching it. If we encounter performance issue, we will see later def get_material_nodes(node_tree: bpy.types.NodeTree, group_path, type): """ For a given tree, recursively return all nodes including node groups. From 598b93593618a15a7d2552010d198a07c37069fc Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 18 Sep 2023 16:48:17 +0200 Subject: [PATCH 39/43] traverse node group when search factors Still need to be fully tested --- .../gltf2_blender_search_node_tree.py | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py index bac50350c..3aa8108ad 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py @@ -309,13 +309,24 @@ def previous_socket(socket: NodeSocket): return NodeSocket(None, None) from_socket = soc.links[0].from_socket - from_node = soc.links[0].from_node - # if we entering a group - pass #TODOSNodes + # If we are entering a node group (from outputs) + if from_socket.node.type == "GROUP": + socket_name = from_socket.name + sockets = [n for n in from_socket.node.node_tree.nodes if n.type == "GROUP_OUTPUT"][0].inputs + socket = [s for s in sockets if s.name == socket_name][0] + group_path.append(from_socket.node) + soc = socket + continue - # if we exiting a group - pass #TODOSNodes + # If we are exiting a node group (from inputs) + if from_socket.node.type == "GROUP_INPUT": + socket_name = from_socket.name + sockets = group_path[-1].inputs + socket = [s for s in sockets if s.name == socket_name][0] + group_path = group_path[:-1] + soc = socket + continue # Skip over reroute nodes if from_socket.node.type == 'REROUTE': From f773da70fb596d45aa892fb28429f413b0a6337b Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Mon, 25 Sep 2023 13:23:27 +0200 Subject: [PATCH 40/43] Fix bad merge --- .../extensions/gltf2_blender_gather_materials_sheen.py | 4 ++-- .../extensions/gltf2_blender_gather_materials_specular.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_sheen.py b/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_sheen.py index 83ca140ae..0cdc84444 100644 --- a/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_sheen.py +++ b/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_sheen.py @@ -32,8 +32,8 @@ def export_sheen(blender_material, export_settings): uvmap_infos = {} - sheenColor_non_linked = isinstance(sheenColor_socket, bpy.types.NodeSocket) and not sheenColor_socket.is_linked - sheenRoughness_non_linked = isinstance(sheenRoughness_socket, bpy.types.NodeSocket) and not sheenRoughness_socket.is_linked + sheenColor_non_linked = isinstance(sheenColor_socket.socket, bpy.types.NodeSocket) and not sheenColor_socket.socket.is_linked + sheenRoughness_non_linked = isinstance(sheenRoughness_socket.socket, bpy.types.NodeSocket) and not sheenRoughness_socket.socket.is_linked if sheenColor_non_linked is True: color = sheenColor_socket.socket.default_value[:3] diff --git a/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_specular.py b/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_specular.py index d50785f58..dd70fc49e 100644 --- a/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_specular.py +++ b/addons/io_scene_gltf2/blender/exp/material/extensions/gltf2_blender_gather_materials_specular.py @@ -35,8 +35,8 @@ def export_original_specular(blender_material, export_settings): uvmap_infos = {} - specular_non_linked = isinstance(original_specular_socket, bpy.types.NodeSocket) and not original_specular_socket.is_linked - specularcolor_non_linked = isinstance(original_specularcolor_socket, bpy.types.NodeSocket) and not original_specularcolor_socket.is_linked + specular_non_linked = isinstance(original_specular_socket.socket, bpy.types.NodeSocket) and not original_specular_socket.socket.is_linked + specularcolor_non_linked = isinstance(original_specularcolor_socket.socket, bpy.types.NodeSocket) and not original_specularcolor_socket.socket.is_linked if specular_non_linked is True: fac = original_specular_socket.socket.default_value From 2c30ae658888b8e742e1cf8c317c63234b1d40e2 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 27 Sep 2023 12:03:45 +0200 Subject: [PATCH 41/43] Fix merge --- .../blender/exp/material/gltf2_blender_gather_image.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py index d95781b57..9ef3764e2 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_gather_image.py @@ -248,7 +248,7 @@ def __get_image_data_mapping(sockets, default_sockets, results, export_settings) # some sockets need channel rewriting (gltf pbr defines fixed channels for some attributes) if socket.socket.name == 'Metallic': dst_chan = Channel.B - elif socket.name == 'Roughness': + elif socket.socket.name == 'Roughness': dst_chan = Channel.G elif socket.socket.name == 'Occlusion': dst_chan = Channel.R @@ -262,7 +262,7 @@ def __get_image_data_mapping(sockets, default_sockets, results, export_settings) dst_chan = Channel.G elif socket.socket.name == "Specular IOR Level": # For KHR_material_specular dst_chan = Channel.A - elif socket.name == "Sheen Roughness": # For KHR_materials_sheen + elif socket.socket.name == "Sheen Roughness": # For KHR_materials_sheen dst_chan = Channel.A if dst_chan is not None: From 7aae805d99c9344ad56e36bd9bb8c56b6e0a16a7 Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 27 Sep 2023 12:16:46 +0200 Subject: [PATCH 42/43] Fix merge --- .../blender/exp/material/gltf2_blender_search_node_tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py index 4c0a43abc..0e76b863f 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py @@ -234,7 +234,7 @@ def get_socket(blender_material: bpy.types.Material, name: str, volume=False): if emissive_socket.socket is not None: return emissive_socket # If a dedicated Emission node was not found, fall back to the Principled BSDF Emission socket. - name = "Emission" + name = "Emission Color" type = bpy.types.ShaderNodeBsdfPrincipled elif name == "Background": type = bpy.types.ShaderNodeBackground From 4338c78fa66231113cbd5438aef385302d0042ca Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Wed, 27 Sep 2023 13:52:53 +0200 Subject: [PATCH 43/43] Fix merge --- .../gltf2_blender_search_node_tree.py | 4 ---- tests/scenes/01_factors.blend | Bin 1022180 -> 1039144 bytes 2 files changed, 4 deletions(-) diff --git a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py index 0e76b863f..de6387be1 100644 --- a/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py +++ b/addons/io_scene_gltf2/blender/exp/material/gltf2_blender_search_node_tree.py @@ -239,10 +239,6 @@ def get_socket(blender_material: bpy.types.Material, name: str, volume=False): elif name == "Background": type = bpy.types.ShaderNodeBackground name = "Color" - elif name == "sheenColor": - return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfSheen, "Color") - elif name == "sheenRoughness": - return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfSheen, "Roughness") else: if volume is False: type = bpy.types.ShaderNodeBsdfPrincipled diff --git a/tests/scenes/01_factors.blend b/tests/scenes/01_factors.blend index 65db9404a42e436831f70aef1f376188b8dd47c2..2781ff96ba542d0f654f1e5d42cfbc12879e828e 100644 GIT binary patch literal 1039144 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%0Ad_j*Ma7!di8kyI@(&zMV7M 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%0Aa2q&V=-oJB~*cNBBN8kn= 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ΜeN^wPZl#GF`rgdswaSDr2l5y>B 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 F{|26mwmSd- literal 1022180 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 z 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

5;Fp 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 E7m_P9H~;_u